1
- import captureRenderTree from " ./capture-render-tree" ;
2
- import { guidFor } from " ember-debug/utils/ember/object/internals" ;
3
- import { EmberLoader } from " ember-debug/utils/ember/loader" ;
1
+ import captureRenderTree from ' ./capture-render-tree' ;
2
+ import { guidFor } from ' ember-debug/utils/ember/object/internals' ;
3
+ import { EmberLoader } from ' ember-debug/utils/ember/loader' ;
4
4
5
5
class InElementSupportProvider {
6
6
constructor ( owner ) {
7
+ this . owner = owner ;
7
8
this . nodeMap = new Map ( ) ;
8
9
this . remoteRoots = [ ] ;
9
10
this . runtime = this . require ( '@glimmer/runtime' ) ;
@@ -32,6 +33,7 @@ class InElementSupportProvider {
32
33
33
34
const NewElementBuilder = this . NewElementBuilder ;
34
35
const remoteStack = [ ] ;
36
+ const modifierStack = [ ] ;
35
37
36
38
const didAppendNode = NewElementBuilder . prototype . didAppendNode ;
37
39
NewElementBuilder . prototype . didAppendNode = function ( ...args ) {
@@ -71,6 +73,29 @@ class InElementSupportProvider {
71
73
return pushRemoteElement . call ( this , ...args ) ;
72
74
} ;
73
75
76
+ const pushModifiers = NewElementBuilder . prototype . pushModifiers ;
77
+ NewElementBuilder . prototype . pushModifiers = function ( modifiers ) {
78
+ if ( ! modifiers ) return pushModifiers . call ( this , modifiers ) ;
79
+ for ( const modifier of modifiers ) {
80
+ const state = { } ;
81
+ const name = modifier . definition . resolvedName ;
82
+ const delegate = modifier . manager . componentManagerDelegates . get ( self . owner ) ;
83
+ const element = modifier . state . element ;
84
+ this . env . debugRenderTree ?. create ( state , {
85
+ type : 'modifier' ,
86
+ name,
87
+ args : modifier . state . args ,
88
+ instance : delegate
89
+ } ) ;
90
+ this . env . debugRenderTree ?. didRender ( state , {
91
+ parentElement : ( ) => element . parentElement ,
92
+ firstNode : ( ) => element ,
93
+ lastNode : ( ) => element ,
94
+ } ) ;
95
+ }
96
+ return pushModifiers . call ( this , modifiers ) ;
97
+ } ;
98
+
74
99
const popRemoteElement = NewElementBuilder . prototype . popRemoteElement ;
75
100
NewElementBuilder . prototype . popRemoteElement = function ( ...args ) {
76
101
this . env . debugRenderTree ?. didRender ( remoteStack . at ( - 1 ) , {
@@ -80,7 +105,7 @@ class InElementSupportProvider {
80
105
} ) ;
81
106
remoteStack . pop ( ) ;
82
107
return popRemoteElement . call ( this , ...args ) ;
83
- }
108
+ } ;
84
109
85
110
this . NewElementBuilderFunctions = {
86
111
pushElement,
@@ -161,91 +186,9 @@ export default class RenderTree {
161
186
build ( ) {
162
187
this . _reset ( ) ;
163
188
164
- const manager = requirejs ( '@glimmer/manager' ) ;
165
- const didInsertDefinition = requirejs ( '@ember/render-modifiers/modifiers/did-insert' ) ?. default ;
166
- if ( didInsertDefinition ) {
167
- const delegate = manager . getInternalModifierManager ( didInsertDefinition ) . componentManagerDelegates . get ( this . owner ) ;
168
- if ( delegate ) {
169
- delegate . name = 'did-insert' ;
170
- }
171
- }
172
-
173
- const willRemoveDefinition = requirejs ( '@ember/render-modifiers/modifiers/will-destroy' ) ?. default ;
174
- if ( willRemoveDefinition ) {
175
- const delegate = manager . getInternalModifierManager ( willRemoveDefinition ) . componentManagerDelegates . get ( this . owner ) ;
176
- if ( delegate ) {
177
- delegate . name = 'will-remove' ;
178
- }
179
- }
180
-
181
- const didUpdateDefinition = requirejs ( '@ember/render-modifiers/modifiers/did-update' ) ?. default ;
182
- if ( didUpdateDefinition ) {
183
- const delegate = manager . getInternalModifierManager ( didUpdateDefinition ) . componentManagerDelegates . get ( this . owner ) ;
184
- if ( delegate ) {
185
- delegate . name = 'will-remove' ;
186
- }
187
- }
188
-
189
189
this . tree = captureRenderTree ( this . owner ) ;
190
-
191
- const self = this ;
192
- let idx = Object . keys ( self . nodes ) . length ;
193
-
194
- function buildModifierNode ( options ) {
195
- const obj = Object . create ( null ) ;
196
- obj . index = idx ++ ;
197
- obj . id = obj . index . toString ( ) ;
198
- obj . name =
199
- options . modifier ?. name || options . delegate ?. name || 'unknown-modifier' ;
200
- obj . type = 'modifier' ;
201
- obj . template = null ;
202
- obj . isRemote = false ;
203
- obj . args = options . args ;
204
- obj . instance = {
205
- args : options . args ,
206
- modifier : options . modifier ,
207
- } ;
208
- obj . bounds = {
209
- firstNode : options . element ,
210
- lastNode : options . element ,
211
- parentElement : options . element . parentElement ,
212
- } ;
213
- obj . children = [ ] ;
214
- return obj ;
215
- }
216
-
217
- function buildTagNode ( node , options ) {
218
- const obj = Object . create ( null ) ;
219
- obj . index = idx ++ ;
220
- obj . id = obj . index . toString ( ) ;
221
- obj . name = node . localName ;
222
- obj . type = 'htmlTag' ;
223
- obj . template = null ;
224
- obj . isRemote = false ;
225
- obj . instance = { } ;
226
- obj . args = {
227
- named : { } ,
228
- positional : [ ] ,
229
- } ;
230
- obj . bounds = {
231
- firstNode : node ,
232
- lastNode : node ,
233
- parentElement : node . parentElement ,
234
- } ;
235
- obj . children = options . map ( ( m ) => buildModifierNode ( m ) ) ;
236
- return obj ;
237
- }
238
-
239
190
let serialized = this . _serializeRenderNodes ( this . tree ) ;
240
191
241
- for ( const modifiersForNode of this . modifiersForNodes . entries ( ) ) {
242
- const component = this . findNearest ( modifiersForNode [ 0 ] ) ;
243
- if ( ! component ) continue ;
244
- this . serialized [ component . id ] . children . push (
245
- this . _serializeRenderNode ( buildTagNode ( ...modifiersForNode ) )
246
- ) ;
247
- }
248
-
249
192
this . _releaseStaleObjects ( ) ;
250
193
251
194
return serialized ;
@@ -466,7 +409,10 @@ export default class RenderTree {
466
409
this . inElementSupport ?. remoteRoots . push ( node ) ;
467
410
}
468
411
469
- if ( this . inElementSupport ?. Wormhole && node . instance instanceof this . inElementSupport ?. Wormhole . default ) {
412
+ if (
413
+ this . inElementSupport ?. Wormhole &&
414
+ node . instance instanceof this . inElementSupport . Wormhole . default
415
+ ) {
470
416
this . inElementSupport ?. remoteRoots . push ( node ) ;
471
417
const bounds = node . bounds ;
472
418
Object . defineProperty ( node , 'bounds' , {
0 commit comments