@@ -37,7 +37,7 @@ type Lifetimes = {
37
37
type PageLifetimes = {
38
38
show : ( ) => void
39
39
hide : ( ) => void
40
- resize : ( size : { width : number ; height : number } ) => void
40
+ resize : ( size : WechatMiniprogram . Page . IResizeOption ) => void
41
41
}
42
42
43
43
export type GeneralComponent = Component < any , any , any , any >
@@ -83,9 +83,18 @@ class ChainingPolyfillMetadata {
83
83
observers : { [ key : string ] : FuncArr < GeneralFuncType > }
84
84
85
85
constructor ( init : ChainingPolyfillInitData ) {
86
- this . lifetimes = init . lifetimes
87
- this . pageLifetimes = init . pageLifetimes
88
- this . observers = init . observers
86
+ const cloneMap = ( src : { [ k : string ] : FuncArr < any > } ) => {
87
+ const dest = { } as typeof src
88
+ const keys = Object . keys ( src )
89
+ for ( let i = 0 ; i < keys . length ; i += 1 ) {
90
+ const key = keys [ i ] !
91
+ dest [ key ] = src [ key ] . clone ( )
92
+ }
93
+ return dest
94
+ }
95
+ this . lifetimes = cloneMap ( init . lifetimes )
96
+ this . pageLifetimes = cloneMap ( init . pageLifetimes )
97
+ this . observers = cloneMap ( init . observers )
89
98
}
90
99
91
100
setInitDone ( ) {
@@ -170,55 +179,50 @@ const getChainingPolyfillMetadata = (comp: GeneralComponent): ChainingPolyfillMe
170
179
return comp . _$chainingPolyfill
171
180
}
172
181
173
- const takeChainingPolyfillInitData = (
174
- comp : GeneralComponent ,
175
- ) : ChainingPolyfillInitData | undefined => {
176
- const id = comp . data . _$chainingPolyfillId
177
- if ( ! ( id >= 0 ) ) return undefined
178
- comp . data . _$chainingPolyfillId = - 1
179
- const initData = initDataMap [ id ]
180
- const cloneMap = ( src : { [ k : string ] : FuncArr < any > } ) => {
181
- const dest = { } as typeof src
182
- const keys = Object . keys ( src )
183
- for ( let i = 0 ; i < keys . length ; i += 1 ) {
184
- const key = keys [ i ] !
185
- dest [ key ] = src [ key ] . clone ( )
186
- }
187
- return dest
188
- }
189
- return {
190
- lifetimes : cloneMap ( initData . lifetimes ) ,
191
- pageLifetimes : cloneMap ( initData . lifetimes ) ,
192
- observers : cloneMap ( initData . observers ) ,
193
- initFuncs : initData . initFuncs . clone ( ) ,
194
- }
195
- }
196
-
197
- const chainingPolyfillBehavior = Behavior ( {
198
- lifetimes : {
199
- created ( ) {
200
- const self = this as any
201
- const initData = takeChainingPolyfillInitData ( self )
202
- if ( initData ) {
182
+ // const takeChainingPolyfillInitData = (
183
+ // comp: GeneralComponent,
184
+ // ): ChainingPolyfillInitData | undefined => {
185
+ // const id = comp.data._$chainingPolyfillId
186
+ // if (!(id >= 0)) return undefined
187
+ // comp.data._$chainingPolyfillId = -1
188
+ // const initData = initDataMap[id]
189
+ // const cloneMap = (src: { [k: string]: FuncArr<any> }) => {
190
+ // const dest = {} as typeof src
191
+ // const keys = Object.keys(src)
192
+ // for (let i = 0; i < keys.length; i += 1) {
193
+ // const key = keys[i]!
194
+ // dest[key] = src[key].clone()
195
+ // }
196
+ // return dest
197
+ // }
198
+ // return {
199
+ // lifetimes: cloneMap(initData.lifetimes),
200
+ // pageLifetimes: cloneMap(initData.pageLifetimes),
201
+ // observers: cloneMap(initData.observers),
202
+ // initFuncs: initData.initFuncs.clone(),
203
+ // }
204
+ // }
205
+
206
+ const generateChainingPolyfillBehavior = ( initData : ChainingPolyfillInitData ) => {
207
+ return Behavior ( {
208
+ lifetimes : {
209
+ created ( ) {
203
210
const chainingPolyfillMetadata = new ChainingPolyfillMetadata ( initData )
204
- self . _$chainingPolyfill = chainingPolyfillMetadata
205
- const ctx = chainingPolyfillMetadata . generateBuilderContext ( self )
206
- initData . initFuncs . call ( self , [ ctx , chainingPolyfillMetadata ] )
211
+ ; ( this as any ) . _$chainingPolyfill = chainingPolyfillMetadata
212
+ const ctx = chainingPolyfillMetadata . generateBuilderContext ( this as any )
213
+ initData . initFuncs . call ( this , [ ctx , chainingPolyfillMetadata ] )
207
214
chainingPolyfillMetadata . setInitDone ( )
208
- }
215
+ } ,
209
216
} ,
210
- } ,
211
- methods : {
212
- traitBehavior < TOut extends { [ x : string ] : any } > (
213
- traitBehavior : TraitBehavior < any , TOut > ,
214
- ) : TOut | undefined {
215
- return getChainingPolyfillMetadata ( this ) . traitGroup . get ( traitBehavior )
217
+ methods : {
218
+ traitBehavior < TOut extends { [ x : string ] : any } > (
219
+ traitBehavior : TraitBehavior < any , TOut > ,
220
+ ) : TOut | undefined {
221
+ return getChainingPolyfillMetadata ( this ) . traitGroup . get ( traitBehavior )
222
+ } ,
216
223
} ,
217
- } ,
218
- } )
219
-
220
- let behaviorIdInc = 1
221
- const initDataMap : { [ id : number ] : ChainingPolyfillInitData } = { }
224
+ } )
225
+ }
222
226
223
227
export class BaseBehaviorBuilder <
224
228
TPrevData extends DataList = Empty ,
@@ -230,7 +234,6 @@ export class BaseBehaviorBuilder<
230
234
TComponentExport = never ,
231
235
TExtraThisFields extends DataList = Empty ,
232
236
> {
233
- behaviorId : number
234
237
private _$initData = {
235
238
lifetimes : { } ,
236
239
pageLifetimes : { } ,
@@ -241,7 +244,7 @@ export class BaseBehaviorBuilder<
241
244
data : { } as DataList ,
242
245
properties : { } as WechatMiniprogram . Behavior . PropertyOption ,
243
246
methods : { } as MethodList ,
244
- behaviors : [ chainingPolyfillBehavior ] ,
247
+ behaviors : [ generateChainingPolyfillBehavior ( this . _$initData ) ] ,
245
248
lifetimes : {
246
249
created ( ) {
247
250
getChainingPolyfillMetadata ( this ) . callLifetime ( this , 'created' )
@@ -278,10 +281,8 @@ export class BaseBehaviorBuilder<
278
281
}
279
282
280
283
constructor ( ) {
281
- this . behaviorId = behaviorIdInc
282
- behaviorIdInc += 1
283
- this . _$definition . data . _$chainingPolyfillId = this . behaviorId
284
- initDataMap [ this . behaviorId ] = this . _$initData
284
+ // make observer '**' automatically available
285
+ this . observer ( '**' , ( ) => { } )
285
286
}
286
287
287
288
/** Add external classes */
@@ -292,7 +293,6 @@ export class BaseBehaviorBuilder<
292
293
return this
293
294
}
294
295
295
- /** Set the export value when the component is being selected */
296
296
export < TNewComponentExport > (
297
297
f : ( ) => TNewComponentExport ,
298
298
) : ResolveBehaviorBuilder <
@@ -337,7 +337,7 @@ export class BaseBehaviorBuilder<
337
337
BaseBehaviorBuilder <
338
338
TPrevData ,
339
339
TData ,
340
- TProperty & Record < N , PropertyToData < T > > ,
340
+ TProperty & Record < N , T > ,
341
341
TMethod ,
342
342
TChainingFilter ,
343
343
TPendingChainingFilter ,
0 commit comments