11import { withDefault } from "comps/generators" ;
2- import { list } from "comps/generators/list" ;
2+ import { list , ListDataType } from "comps/generators/list" ;
33import { NameAndExposingInfo } from "comps/utils/exposingTypes" ;
44import {
55 CompTree ,
@@ -9,13 +9,36 @@ import {
99} from "comps/comps/containerBase/utils" ;
1010import { HookComp } from "./hookComp" ;
1111import { hookCompCategory } from "./hookCompTypes" ;
12+ import { CompParams } from "openblocks-core" ;
13+
14+ const defaultHookListValue = [
15+ // { compType: "title", name: "title" },
16+ // { compType: "windowSize", name: "windowSize" },
17+ { compType : "urlParams" , name : "url" } ,
18+ { compType : "momentJsLib" , name : "moment" } ,
19+ { compType : "lodashJsLib" , name : "_" } ,
20+ { compType : "utils" , name : "utils" } ,
21+ { compType : "message" , name : "message" } ,
22+ { compType : "localStorage" , name : "localStorage" } ,
23+ { compType : "currentUser" , name : "currentUser" } ,
24+ { compType : "theme" , name : "theme" } ,
25+ ] as const ;
1226
1327const HookListTmpComp = list ( HookComp ) ;
1428const HookListTmp2Comp = class extends HookListTmpComp {
1529 getAllCompItems ( ) {
1630 return getAllCompItems ( this . getCompTree ( ) ) ;
1731 }
1832
33+ override parseChildrenFromValue ( params : CompParams < ListDataType < typeof HookComp > > ) {
34+ const existed = ( params . value || [ ] ) . map ( ( i ) => i . compType ) ;
35+ const lostItems = defaultHookListValue . filter ( ( i ) => ! existed . includes ( i . compType ) ) ;
36+ return super . parseChildrenFromValue ( {
37+ ...params ,
38+ value : [ ...( params . value || [ ] ) , ...lostItems ] ,
39+ } ) ;
40+ }
41+
1942 private getCompTree ( ) : CompTree {
2043 const compMap = Object . values ( this . children ) . reduce < Record < string , HookComp > > ( ( res , cur ) => {
2144 res [ cur . children . name . getView ( ) ] = cur ;
@@ -71,16 +94,8 @@ const HookListTmp2Comp = class extends HookListTmpComp {
7194 }
7295} ;
7396
74- const HookListTmp3Comp = withDefault ( HookListTmp2Comp , [
75- // { compType: "title", name: "title" },
76- // { compType: "windowSize", name: "windowSize" },
77- { compType : "urlParams" , name : "url" } ,
78- { compType : "momentJsLib" , name : "moment" } ,
79- { compType : "lodashJsLib" , name : "_" } ,
80- { compType : "utils" , name : "utils" } ,
81- { compType : "message" , name : "message" } ,
82- { compType : "localStorage" , name : "localStorage" } ,
83- { compType : "currentUser" , name : "currentUser" } ,
84- { compType : "theme" , name : "theme" } ,
85- ] ) ;
97+ const HookListTmp3Comp = withDefault (
98+ HookListTmp2Comp ,
99+ defaultHookListValue as unknown as ListDataType < typeof HookComp >
100+ ) ;
86101export const HookListComp = HookListTmp3Comp ;
0 commit comments