@@ -2,11 +2,13 @@ import { Lexer } from './generators/lexer'
2
2
import { Events } from './entity/events'
3
3
import { Attributes } from './entity/attributes'
4
4
import { State } from './state'
5
+ import { Mini } from './main'
5
6
6
7
const IGNORED_IDS = [ '$' , 'this' ]
7
8
8
9
export class Entity {
9
10
constructor ( el , dynamicScripts = [ ] ) {
11
+ this . base = new Mini ( )
10
12
this . element = el
11
13
this . tagName = el . tagName
12
14
this . dynamicScripts = dynamicScripts
@@ -17,9 +19,9 @@ export class Entity {
17
19
this . state = { }
18
20
this . events = new Events ( this )
19
21
this . attributes = new Attributes ( this )
20
- MiniJS . state . addEntity ( this )
22
+ this . base . state . addEntity ( this )
21
23
22
- if ( MiniJS . debug ) this . element . dataset . entityId = this . id
24
+ if ( this . base . debug ) this . element . dataset . entityId = this . id
23
25
24
26
this . attributes . evaluateParent ( )
25
27
}
@@ -144,14 +146,14 @@ export class Entity {
144
146
this . setAsParent ( )
145
147
146
148
if ( window [ this . id ] == null ) {
147
- window [ this . id ] = MiniJS . state . create ( { } , this . id )
149
+ window [ this . id ] = this . base . state . create ( { } , this . id )
148
150
}
149
151
150
- MiniJS . state . addVariable ( this . id , this . id )
152
+ this . base . state . addVariable ( this . id , this . id )
151
153
152
154
if ( variable !== 'el' ) {
153
155
const [ _ , varName ] = variable . split ( '.' )
154
- MiniJS . state . addEntityVariable ( this . id , varName , this . id )
156
+ this . base . state . addEntityVariable ( this . id , varName , this . id )
155
157
}
156
158
} else if ( State . isParentState ( variable ) ) {
157
159
if ( ! this . parent ) this . parent = this . getParent ( )
@@ -161,26 +163,22 @@ export class Entity {
161
163
if ( this . parent == null ) return
162
164
163
165
if ( window [ this . parent . id ] == null ) {
164
- window [ this . parent . id ] = MiniJS . state . create ( { } , this . parent . id )
166
+ window [ this . parent . id ] = this . base . state . create ( { } , this . parent . id )
165
167
}
166
168
167
- MiniJS . state . addVariable ( this . parent . id , this . id )
169
+ this . base . state . addVariable ( this . parent . id , this . id )
168
170
169
171
if ( variable !== 'parent' ) {
170
172
const [ _ , varName ] = variable . split ( '.' )
171
- MiniJS . state . addEntityVariable ( this . parent . id , varName , this . id )
173
+ this . base . state . addEntityVariable ( this . parent . id , varName , this . id )
172
174
}
173
175
} else if ( typeof window [ variable ] === 'function' ) {
174
176
this . variables . splice ( this . variables . indexOf ( variable ) , 1 )
175
177
} else {
176
178
try {
177
179
const [ identifier ] = variable . split ( '.' )
178
-
179
- window [ identifier ] = variable . startsWith ( '$' )
180
- ? MiniJS . tryFromLocal ( identifier )
181
- : window [ identifier ]
182
-
183
- MiniJS . state . addVariable ( identifier , this . id )
180
+ window [ identifier ] = this . base . state . getState ( identifier )
181
+ this . base . state . addVariable ( identifier , this . id )
184
182
} catch ( error ) {
185
183
console . error ( 'Failed to initialize variable:' , variable , error )
186
184
}
@@ -194,7 +192,7 @@ export class Entity {
194
192
195
193
if ( parentNode == null ) return { id : 'EntityDocument' }
196
194
197
- const entities = Array . from ( MiniJS . state . entities . values ( ) )
195
+ const entities = Array . from ( this . base . state . entities . values ( ) )
198
196
const entity = entities . find (
199
197
( e ) => e . uuid == parentNode . dataset [ 'mini.uuid' ]
200
198
)
@@ -209,7 +207,7 @@ export class Entity {
209
207
async init ( ) {
210
208
const isScript = this . element . tagName === 'SCRIPT'
211
209
212
- if ( ! isScript ) await MiniJS . observer . waitForScripts ( this . dynamicScripts )
210
+ if ( ! isScript ) await this . base . observer . waitForScripts ( this . dynamicScripts )
213
211
214
212
this . getVariables ( )
215
213
this . events . apply ( )
@@ -258,20 +256,20 @@ export class Entity {
258
256
259
257
dispose ( ) {
260
258
const elements = [ this . element , ...this . element . querySelectorAll ( '*' ) ]
261
- const entities = Array . from ( MiniJS . state . entities . values ( ) )
259
+ const entities = Array . from ( this . base . state . entities . values ( ) )
262
260
const variables = [ ]
263
261
264
262
// Remove event bindings
265
263
for ( const element of elements ) {
266
264
if ( element . nodeType !== 1 ) continue
267
265
268
- const entity = MiniJS . state . getEntityByElement ( element , entities )
266
+ const entity = this . base . state . getEntityByElement ( element , entities )
269
267
270
268
if ( ! entity ) continue
271
269
272
270
variables . push ( ...entity . variables )
273
271
entity . events . dispose ( )
274
- MiniJS . state . removeEntity ( entity )
272
+ this . base . state . removeEntity ( entity )
275
273
}
276
274
277
275
// Clean up unused variables
@@ -283,6 +281,6 @@ export class Entity {
283
281
( variable ) => ! usedVariables . includes ( variable )
284
282
)
285
283
286
- MiniJS . state . disposeVariables ( this . id , unusedVariables )
284
+ this . base . state . disposeVariables ( this . id , unusedVariables )
287
285
}
288
286
}
0 commit comments