@@ -4,6 +4,7 @@ import type { InternalOwner } from '@ember/-internals/owner';
4
4
import { getOwner } from '@ember/-internals/owner' ;
5
5
import { guidFor } from '@ember/-internals/utils' ;
6
6
import { getViewElement , getViewId } from '@ember/-internals/views' ;
7
+ import { renderComponent , runDestructors } from '@lifeart/gxt' ;
7
8
import { assert } from '@ember/debug' ;
8
9
import { _backburner , _getCurrentRunLoop } from '@ember/runloop' ;
9
10
import { destroy } from '@glimmer/destroyable' ;
@@ -31,14 +32,14 @@ import { createConstRef, UNDEFINED_REFERENCE, valueForRef } from '@glimmer/refer
31
32
import type { CurriedValue } from '@glimmer/runtime' ;
32
33
import {
33
34
clientBuilder ,
34
- curry ,
35
+ // curry,
35
36
DOMChanges ,
36
37
DOMTreeConstruction ,
37
38
inTransaction ,
38
39
renderMain ,
39
40
runtimeContext ,
40
41
} from '@glimmer/runtime' ;
41
- import { unwrapTemplate } from '@glimmer/util ' ;
42
+ import { unwrapTemplate } from '@glimmer/utils ' ;
42
43
import { CURRENT_TAG , validateTag , valueForTag } from '@glimmer/validator' ;
43
44
import type { SimpleDocument , SimpleElement , SimpleNode } from '@simple-dom/interface' ;
44
45
import RSVP from 'rsvp' ;
@@ -64,6 +65,23 @@ export interface View {
64
65
[ BOUNDS ] : Bounds | null ;
65
66
}
66
67
68
+ function curry (
69
+ type : T ,
70
+ spec : object | string | any ,
71
+ owner : any ,
72
+ args : any | null ,
73
+ resolved = false
74
+ ) {
75
+ console . log ( 'curry' ) ;
76
+ return {
77
+ type,
78
+ spec,
79
+ owner,
80
+ args,
81
+ resolved,
82
+ } ;
83
+ }
84
+
67
85
export class DynamicScope implements GlimmerDynamicScope {
68
86
constructor ( public view : View | null , public outletState : Reference < OutletState | undefined > ) { }
69
87
@@ -129,13 +147,13 @@ class RootState {
129
147
constructor (
130
148
public root : Component | OutletView ,
131
149
public runtime : RuntimeContext ,
132
- context : CompileTimeCompilationContext ,
150
+ _context : CompileTimeCompilationContext ,
133
151
owner : InternalOwner ,
134
152
template : Template ,
135
153
self : Reference < unknown > ,
136
154
parentElement : SimpleElement ,
137
- dynamicScope : DynamicScope ,
138
- builder : IBuilder
155
+ _dynamicScope : DynamicScope ,
156
+ _builder : IBuilder
139
157
) {
140
158
assert (
141
159
`You cannot render \`${ valueForRef ( self ) } \` without a template.` ,
@@ -146,23 +164,16 @@ class RootState {
146
164
this . result = undefined ;
147
165
this . destroyed = false ;
148
166
149
- this . render = errorLoopTransaction ( ( ) => {
150
- let layout = unwrapTemplate ( template ) . asLayout ( ) ;
151
-
152
- let iterator = renderMain (
153
- runtime ,
154
- context ,
155
- owner ,
156
- self ,
157
- builder ( runtime . env , { element : parentElement , nextSibling : null } ) ,
158
- layout ,
159
- dynamicScope
160
- ) ;
161
-
162
- let result = ( this . result = iterator . sync ( ) ) ;
167
+ // console.log(layout);
163
168
164
- // override .render function after initial render
165
- this . render = errorLoopTransaction ( ( ) => result . rerender ( { alwaysRevalidate : false } ) ) ;
169
+ this . render = errorLoopTransaction ( ( ) => {
170
+ let layout = unwrapTemplate ( template ) . asLayout ( ) . compile ( ) ;
171
+ const layoutInstance = new layout ( this ) ;
172
+ // @ts -expect-error fine
173
+ this . result = renderComponent ( layoutInstance , parentElement , owner ) ;
174
+ this . render = errorLoopTransaction ( ( ) => {
175
+ // fine
176
+ } ) ;
166
177
} ) ;
167
178
}
168
179
@@ -195,7 +206,11 @@ class RootState {
195
206
196
207
*/
197
208
198
- inTransaction ( env , ( ) => destroy ( result ! ) ) ;
209
+ inTransaction ( env , ( ) => {
210
+ // @ts -expect-error foo-bar
211
+ runDestructors ( result . ctx ) ;
212
+ destroy ( result ! ) ;
213
+ } ) ;
199
214
}
200
215
}
201
216
}
@@ -370,6 +385,7 @@ export class Renderer {
370
385
// renderer HOOKS
371
386
372
387
appendOutletView ( view : OutletView , target : SimpleElement ) : void {
388
+ console . log ( 'appendOutletView' , view , target ) ;
373
389
let definition = createRootOutlet ( view ) ;
374
390
this . _appendDefinition (
375
391
view ,
0 commit comments