11import { HookComp } from "comps/hooks/hookComp" ;
22import { EditorState } from "comps/editorState" ;
3+ import { singletonHookComp } from "comps/hooks/hookCompTypes" ;
34import { wrapActionExtraInfo , type Comp } from "lowcoder-core" ;
45import { messageInstance } from "lowcoder-design" ;
56import { trans } from "i18n" ;
67
7- type CopyableHookType = "modal" | "drawer" ;
8-
9- type CopyableHookComp = HookComp & {
10- children : HookComp [ "children" ] & {
11- compType : { getView : ( ) => CopyableHookType } ;
12- } ;
13- } ;
14-
15- const copyableHookTypes = new Set < CopyableHookType > ( [ "modal" , "drawer" ] ) ;
16-
178export class HookCompOperator {
18- private static copyHooks : CopyableHookComp [ ] = [ ] ;
9+ private static copyHooks : HookComp [ ] = [ ] ;
1910
2011 /**
21- * Copy modals/drawers by name from selectedCompNames.
12+ * Copy non-singleton hook components by name from selectedCompNames.
2213 */
2314 static copyComp ( editorState : EditorState , compRecords : Record < string , Comp > ) {
2415 const selectedNames = Array . from ( editorState . selectedCompNames ) ;
@@ -31,8 +22,8 @@ export class HookCompOperator {
3122 . filter ( ( comp : any ) => {
3223 const name = comp . children . name . getView ( ) ;
3324 const compType = comp . children . compType . getView ( ) ;
34- return selectedNames . includes ( name ) && copyableHookTypes . has ( compType ) ;
35- } ) as CopyableHookComp [ ] ;
25+ return selectedNames . includes ( name ) && ! singletonHookComp ( compType ) ;
26+ } ) as HookComp [ ] ;
3627
3728 if ( ! selectedHookComps . length ) {
3829 return false ;
@@ -48,7 +39,7 @@ export class HookCompOperator {
4839 }
4940
5041 /**
51- * Paste previously copied modals/drawers and re-generate nested component names.
42+ * Paste previously copied hook components and re-generate nested component names.
5243 */
5344 static pasteComp ( editorState : EditorState ) {
5445 if ( ! this . copyHooks . length ) {
0 commit comments