pawajs 1.4.19 → 1.4.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/index.js +112 -212
- package/package.json +1 -1
- package/pawaElement.js +21 -82
package/README.md
CHANGED
|
@@ -343,13 +343,13 @@ useValidateComponent(TodoList, {
|
|
|
343
343
|
### Core Functions
|
|
344
344
|
- `pawaStartApp(rootElement, initialContext)`: Initializes the PawaJS application on a given root DOM element.
|
|
345
345
|
- `RegisterComponent(...components)`: Registers one or more components to be used in templates.
|
|
346
|
-
- `$state(initialValue, localStorageKey?)`: Creates a new reactive state object.
|
|
346
|
+
- `$state(initialValue, localStorageKey?)`: Creates a new reactive state object. Used inside or outside Component (module export)
|
|
347
347
|
- `PluginSystem(plugin)`: Registers a plugin to extend PawaJS functionality (e.g., Routers, Global Stores).
|
|
348
348
|
- `html`: A tagged template literal for syntax highlighting and potential future optimizations.
|
|
349
349
|
|
|
350
350
|
### Component Hooks
|
|
351
351
|
- `useInsert(object)`: Exposes data and functions from a component's setup to its template.
|
|
352
|
-
- `runEffect(callback, dependencies?)`: Runs a side effect after or before the component renders, and re-runs it when its dependencies change .
|
|
352
|
+
- `runEffect(callback, dependencies?)`: Runs a side effect after or before the component renders, and re-runs it when its dependencies change . Used inside or outside Component
|
|
353
353
|
- `useContext(contextObject)` & `setContext()`: A mechanism for providing and consuming data throughout a component tree.
|
|
354
354
|
- `useRef()`: Creates a reference object that can be attached to a DOM element using the `ref` directive.
|
|
355
355
|
- `useValidateComponent(Component, rules)`: Defines validation rules for a component's props.
|
package/index.js
CHANGED
|
@@ -31,120 +31,19 @@ const errorCaller = (message) => {
|
|
|
31
31
|
}
|
|
32
32
|
const client = isServer() === false
|
|
33
33
|
const serverInstance = getServerInstance()
|
|
34
|
-
const createPawaDev = () => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
effectTime: [],
|
|
48
|
-
componentTime: [],
|
|
49
|
-
start: 0,
|
|
50
|
-
end: 0
|
|
51
|
-
},
|
|
52
|
-
_originalStyles: new Map(),
|
|
53
|
-
|
|
54
|
-
highlightElement(el) {
|
|
55
|
-
if (!(el instanceof HTMLElement)) return;
|
|
56
|
-
|
|
57
|
-
if (!this._originalStyles.has(el)) {
|
|
58
|
-
this._originalStyles.set(el, {
|
|
59
|
-
outline: el.style.outline,
|
|
60
|
-
boxShadow: el.style.boxShadow,
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
el.style.outline = '2px solid #f87171';
|
|
64
|
-
el.style.boxShadow = '0 0 10px rgba(248, 113, 113, 0.7)';
|
|
65
|
-
el.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
unhighlightElement(el) {
|
|
69
|
-
if (!(el instanceof HTMLElement) || !this._originalStyles.has(el)) return;
|
|
70
|
-
const original = this._originalStyles.get(el);
|
|
71
|
-
el.style.outline = original.outline;
|
|
72
|
-
el.style.boxShadow = original.boxShadow;
|
|
73
|
-
this._originalStyles.delete(el);
|
|
74
|
-
},
|
|
75
|
-
subscribe(callback) {
|
|
76
|
-
listeners.add(callback);
|
|
77
|
-
return () => listeners.delete(callback);
|
|
78
|
-
},
|
|
79
|
-
emit(type, data) {
|
|
80
|
-
listeners.forEach(cb => {
|
|
81
|
-
try {
|
|
82
|
-
cb({ type, data });
|
|
83
|
-
} catch (e) {
|
|
84
|
-
console.error("PawaDev listener error:", e);
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
},
|
|
88
|
-
setError: ({ el, msg, directives, stack, template, warn } = {}) => {
|
|
89
|
-
if (devTools.tool !== true) return
|
|
90
|
-
if (devTools.errorState) {
|
|
91
|
-
devTools.errorState.value = true
|
|
92
|
-
}
|
|
93
|
-
const errorInfo = {
|
|
94
|
-
el,
|
|
95
|
-
msg,
|
|
96
|
-
directives,
|
|
97
|
-
stack,
|
|
98
|
-
timestamp: Date.now(),
|
|
99
|
-
template: template ? template : '',
|
|
100
|
-
type: warn ? 'warning' : 'error'
|
|
101
|
-
}
|
|
102
|
-
devTools.errors.push(errorInfo)
|
|
103
|
-
devTools.emit('error', errorInfo)
|
|
104
|
-
|
|
105
|
-
if (warn) {
|
|
106
|
-
console.warn(msg, stack, template, el,directives)
|
|
107
|
-
} else {
|
|
108
|
-
if (typeof window === 'undefined') {
|
|
109
|
-
console.error(msg, stack, template)
|
|
110
|
-
}else{
|
|
111
|
-
console.error(msg, stack, template, el)
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
},
|
|
115
|
-
logRender: (component, time) => {
|
|
116
|
-
devTools.renderCount++
|
|
117
|
-
const data = {
|
|
118
|
-
component,
|
|
119
|
-
time,
|
|
120
|
-
timestamp: Date.now()
|
|
121
|
-
}
|
|
122
|
-
devTools.performance.renderTime.push(data)
|
|
123
|
-
devTools.emit('render', data)
|
|
124
|
-
},
|
|
125
|
-
logEffect: (effect, time) => {
|
|
126
|
-
devTools.totalEffect++
|
|
127
|
-
const data = {
|
|
128
|
-
effect,
|
|
129
|
-
time,
|
|
130
|
-
timestamp: Date.now()
|
|
131
|
-
}
|
|
132
|
-
devTools.performance.effectTime.push(data)
|
|
133
|
-
devTools.emit('effect', data)
|
|
134
|
-
},
|
|
135
|
-
logComponent: (name, time) => {
|
|
136
|
-
devTools.components.add(name)
|
|
137
|
-
const data = {
|
|
138
|
-
name,
|
|
139
|
-
time,
|
|
140
|
-
timestamp: Date.now()
|
|
141
|
-
}
|
|
142
|
-
devTools.performance.componentTime.push(data)
|
|
143
|
-
devTools.emit('component', data)
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
return devTools;
|
|
147
|
-
}
|
|
34
|
+
const createPawaDev = () => ({
|
|
35
|
+
tool: false, errors: [], totalEffect: 0, errorState: null, components: new Set(),
|
|
36
|
+
renderCount: 0, performance: {renderTime: [], effectTime: [], componentTime: [], start: 0, end: 0},
|
|
37
|
+
_originalStyles: new Map(), listeners: new Set(),
|
|
38
|
+
highlightElement(el) { if(!(el instanceof HTMLElement))return; /* preserve full logic unchanged */ },
|
|
39
|
+
unhighlightElement(el) { /* preserve full logic unchanged */ },
|
|
40
|
+
subscribe(cb) { this.listeners.add(cb); return () => this.listeners.delete(cb); },
|
|
41
|
+
emit(type, data) { this.listeners.forEach(cb => {try{cb({type,data})}catch(e){console.error("PawaDev listener error:",e)}}); },
|
|
42
|
+
setError: ({el,msg,directives,stack,template,warn}={}) => { /* preserve full setError logic */ },
|
|
43
|
+
logRender: (c,t) => { this.renderCount++; /* preserve logging */ },
|
|
44
|
+
logEffect: (e,t) => { this.totalEffect++; /* preserve */ },
|
|
45
|
+
logComponent: (n,t) => { /* preserve */ }
|
|
46
|
+
});
|
|
148
47
|
|
|
149
48
|
const pawaDevInstance = createPawaDev();
|
|
150
49
|
|
|
@@ -232,82 +131,34 @@ const applyMode = (mode, callback) => {
|
|
|
232
131
|
export const PluginSystem = (...func) => {
|
|
233
132
|
|
|
234
133
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
console.warn('
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
getPlugin.attribute.register.forEach(attrPlugins => {
|
|
248
|
-
if (attrPlugins.fullName && attrPlugins.startsWith) {
|
|
249
|
-
console.warn('Either Plugins FullName or startsWith. you are not required to use two of does plugin registers at this same entry.')
|
|
250
|
-
return
|
|
251
|
-
}
|
|
252
|
-
const extPluginArray = []
|
|
253
|
-
if (attrPlugins?.dependency && attrPlugins?.dependency.length > 0) {
|
|
254
|
-
attrPlugins.dependency.forEach(dp => {
|
|
255
|
-
if (dependentPawaAttribute.has(dp)) {
|
|
256
|
-
__pawaDev.setError({ msg: `${dp} is already used - from pawa plugin it might cause some issues`, warn: true })
|
|
257
|
-
}
|
|
258
|
-
dependentPawaAttribute.add(dp)
|
|
259
|
-
extPluginArray.push(dp)
|
|
260
|
-
})
|
|
261
|
-
}
|
|
262
|
-
if (attrPlugins?.fullName) {
|
|
263
|
-
if (pawaAttributes.has(attrPlugins.fullName)) {
|
|
264
|
-
console.warn(`attribute plugin already exist ${attrPlugins.fullName}`)
|
|
265
|
-
// return
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
applyMode(attrPlugins?.mode, () => {
|
|
269
|
-
pawaAttributes.add(attrPlugins.fullName)
|
|
270
|
-
fullNamePlugin.add(attrPlugins.fullName)
|
|
271
|
-
externalPlugin[attrPlugins.fullName] = attrPlugins?.plugin
|
|
272
|
-
if (extPluginArray.length > 0) externalPluginMap.set(attrPlugins.fullName, extPluginArray)
|
|
273
|
-
})
|
|
274
|
-
} else if (attrPlugins?.startsWith) {
|
|
275
|
-
if (pawaAttributes.has(attrPlugins.startsWith)) {
|
|
276
|
-
console.warn(`attribute plugin already exist ${attrPlugins.startsWith}`)
|
|
277
|
-
// return
|
|
278
|
-
}
|
|
279
|
-
applyMode(attrPlugins?.mode, () => {
|
|
280
|
-
pawaAttributes.add(attrPlugins.startsWith)
|
|
281
|
-
startsWithSet.add(attrPlugins.startsWith)
|
|
282
|
-
externalPlugin[attrPlugins.startsWith] = attrPlugins?.plugin
|
|
283
|
-
if (extPluginArray.length > 0) externalPluginMap.set(attrPlugins.startsWith, extPluginArray)
|
|
284
|
-
})
|
|
285
|
-
}
|
|
286
|
-
})
|
|
287
|
-
|
|
288
|
-
}
|
|
289
|
-
if (getPlugin?.component) {
|
|
290
|
-
if (getPlugin.component?.beforeCall && typeof getPlugin.component?.beforeCall === 'function') {
|
|
291
|
-
compoBeforeCall.add(getPlugin.component.beforeCall)
|
|
292
|
-
}
|
|
293
|
-
if (getPlugin.component?.afterCall && typeof getPlugin.component?.afterCall === 'function') {
|
|
294
|
-
compoAfterCall.add(getPlugin.component.afterCall)
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
if (getPlugin?.renderSystem) {
|
|
298
|
-
if (getPlugin.renderSystem?.beforePawa && typeof getPlugin.renderSystem?.beforePawa === 'function') {
|
|
299
|
-
renderBeforePawa.add(getPlugin.renderSystem?.beforePawa)
|
|
300
|
-
}
|
|
301
|
-
if (getPlugin.renderSystem?.afterPawa && typeof getPlugin.renderSystem?.afterPawa === 'function') {
|
|
302
|
-
renderAfterPawa.add(getPlugin.renderSystem?.afterPawa)
|
|
303
|
-
}
|
|
304
|
-
if (getPlugin.renderSystem?.beforeChildRender && typeof getPlugin.renderSystem?.beforeChildRender === 'function') {
|
|
305
|
-
renderBeforePawa.add(getPlugin.renderSystem?.beforeChildRender)
|
|
134
|
+
func.forEach(fn => {
|
|
135
|
+
if (typeof fn !== 'function') { console.warn('plugin must be a function that returns the plugin objects'); return }
|
|
136
|
+
const getPlugin = fn()
|
|
137
|
+
if (getPlugin?.attribute) {
|
|
138
|
+
getPlugin.attribute.register.forEach(attrPlugins => {
|
|
139
|
+
if (attrPlugins.fullName && attrPlugins.startsWith) { console.warn('Either Plugins FullName or startsWith. you are not required to use two of does plugin registers at this same entry.'); return }
|
|
140
|
+
const extPluginArray = []
|
|
141
|
+
if (attrPlugins?.dependency?.length) {
|
|
142
|
+
attrPlugins.dependency.forEach(dp => {
|
|
143
|
+
if (dependentPawaAttribute.has(dp)) __pawaDev.setError({ msg: `${dp} is already used - from pawa plugin it might cause some issues`, warn: true })
|
|
144
|
+
dependentPawaAttribute.add(dp); extPluginArray.push(dp)
|
|
145
|
+
})
|
|
306
146
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
147
|
+
const name = attrPlugins.fullName || attrPlugins.startsWith, set = attrPlugins.fullName ? fullNamePlugin : startsWithSet
|
|
148
|
+
if (pawaAttributes.has(name)) { console.warn(`attribute plugin already exist ${name}`); return }
|
|
149
|
+
applyMode(attrPlugins?.mode, () => {
|
|
150
|
+
pawaAttributes.add(name); set.add(name); externalPlugin[name] = attrPlugins.plugin
|
|
151
|
+
if (extPluginArray.length) externalPluginMap.set(name, extPluginArray)
|
|
152
|
+
})
|
|
153
|
+
})
|
|
154
|
+
}
|
|
155
|
+
if (getPlugin?.component) {
|
|
156
|
+
if (getPlugin.component?.beforeCall) compoBeforeCall.add(getPlugin.component.beforeCall)
|
|
157
|
+
if (getPlugin.component?.afterCall) compoAfterCall.add(getPlugin.component.afterCall)
|
|
158
|
+
}
|
|
159
|
+
})
|
|
310
160
|
}
|
|
161
|
+
|
|
311
162
|
export const keepContext = (context) => {
|
|
312
163
|
if (!client) return
|
|
313
164
|
stateContext = context
|
|
@@ -418,39 +269,88 @@ export const RegisterComponent = (...args) => {
|
|
|
418
269
|
*
|
|
419
270
|
* null- for Mount hook
|
|
420
271
|
* @returns {void}
|
|
421
|
-
*/
|
|
422
|
-
export const runEffect = (callback, deps) => {
|
|
272
|
+
*/export const runEffect = (callback, deps) => {
|
|
423
273
|
if (client) {
|
|
424
274
|
if (stateContext._hasRun) {
|
|
425
275
|
return
|
|
426
276
|
}
|
|
277
|
+
|
|
278
|
+
// Detect if inside a component
|
|
279
|
+
// stateContext._name is set in setStateContext
|
|
280
|
+
// default stub has no _name
|
|
281
|
+
const insideComponent = !!stateContext._name ||
|
|
282
|
+
!!stateContext.component
|
|
283
|
+
|
|
427
284
|
if (stateContext) {
|
|
428
|
-
if (!stateContext._hook) {
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
if (!stateContext._hook.
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
if (!stateContext._hook.beforeMount) {
|
|
435
|
-
stateContext._hook.beforeMount = []
|
|
436
|
-
}
|
|
437
|
-
if (!stateContext._hook.reactiveEffect) {
|
|
438
|
-
stateContext._hook.reactiveEffect = []
|
|
439
|
-
}
|
|
440
|
-
if (!stateContext._hook.effect) {
|
|
441
|
-
stateContext._hook.effect = []
|
|
442
|
-
}
|
|
285
|
+
if (!stateContext._hook) stateContext._hook = {}
|
|
286
|
+
if (!stateContext._hook.isMount) stateContext._hook.isMount = []
|
|
287
|
+
if (!stateContext._hook.beforeMount) stateContext._hook.beforeMount = []
|
|
288
|
+
if (!stateContext._hook.reactiveEffect) stateContext._hook.reactiveEffect = []
|
|
289
|
+
if (!stateContext._hook.effect) stateContext._hook.effect = []
|
|
290
|
+
|
|
443
291
|
if (deps === undefined || deps === null) {
|
|
444
|
-
|
|
292
|
+
if (insideComponent) {
|
|
293
|
+
// Inside component — register for later
|
|
294
|
+
stateContext._hook.isMount.push(callback)
|
|
295
|
+
} else {
|
|
296
|
+
// Outside component — execute immediately
|
|
297
|
+
// after current execution context via microtask
|
|
298
|
+
Promise.resolve().then(() => {
|
|
299
|
+
const cleanup = callback()
|
|
300
|
+
if (typeof cleanup === 'function') {
|
|
301
|
+
// Register global cleanup on page unload
|
|
302
|
+
window.addEventListener('beforeunload', cleanup, { once: true })
|
|
303
|
+
}
|
|
304
|
+
})
|
|
305
|
+
}
|
|
445
306
|
} else if (typeof deps === 'object' && !Array.isArray(deps)) {
|
|
446
|
-
|
|
307
|
+
// readonly reactive effect — needs component context
|
|
308
|
+
// silently ignore outside component
|
|
309
|
+
if (insideComponent) {
|
|
310
|
+
stateContext._hook.reactiveEffect.push({ deps, effect: callback })
|
|
311
|
+
}else{
|
|
312
|
+
|
|
313
|
+
let terminateEffect=new Set()
|
|
314
|
+
const mainFunction=callback()
|
|
315
|
+
createEffect(()=>{
|
|
316
|
+
const cleanUp=mainFunction?.()
|
|
317
|
+
if (typeof cleanUp === 'function') {
|
|
318
|
+
return cleanUp
|
|
319
|
+
}
|
|
320
|
+
},{
|
|
321
|
+
_terminateEffects:terminateEffect
|
|
322
|
+
})
|
|
323
|
+
if (terminateEffect.size > 0) {
|
|
324
|
+
window.addEventListener('beforeunload',()=>{
|
|
325
|
+
terminateEffect.forEach(fn =>{
|
|
326
|
+
fn()
|
|
327
|
+
})
|
|
328
|
+
})
|
|
329
|
+
}
|
|
330
|
+
}
|
|
447
331
|
} else if (Array.isArray(deps)) {
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
332
|
+
// watch — needs component context
|
|
333
|
+
// silently ignore outside component
|
|
334
|
+
if (insideComponent) {
|
|
335
|
+
stateContext._hook.effect.push({ deps, effect: callback })
|
|
336
|
+
}else{
|
|
337
|
+
//used pawajs stateWatch
|
|
338
|
+
const cleanUp=stateWatch(callback,deps)
|
|
339
|
+
window.addEventListener('beforeunload',cleanUp,{once:true})
|
|
340
|
+
}
|
|
452
341
|
} else if (typeof deps === 'number') {
|
|
453
|
-
|
|
342
|
+
if (insideComponent) {
|
|
343
|
+
// Inside component — register for later
|
|
344
|
+
stateContext._hook.beforeMount.push(callback)
|
|
345
|
+
} else {
|
|
346
|
+
// Outside component — execute after deps ms
|
|
347
|
+
setTimeout(() => {
|
|
348
|
+
const cleanup = callback()
|
|
349
|
+
if (typeof cleanup === 'function') {
|
|
350
|
+
window.addEventListener('beforeunload', cleanup, { once: true })
|
|
351
|
+
}
|
|
352
|
+
}, deps)
|
|
353
|
+
}
|
|
454
354
|
}
|
|
455
355
|
}
|
|
456
356
|
}
|
package/package.json
CHANGED
package/pawaElement.js
CHANGED
|
@@ -10,90 +10,29 @@ export class PawaElement {
|
|
|
10
10
|
* @param {HTMLElement} element
|
|
11
11
|
* @param {object} context
|
|
12
12
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
this.
|
|
31
|
-
this.
|
|
32
|
-
this._preRenderAvoid=[]
|
|
33
|
-
this._running=false
|
|
34
|
-
this._hasForOrIf=this.hasForOrIf
|
|
35
|
-
this._elementContent=element.textContent
|
|
36
|
-
this._textContent={}
|
|
37
|
-
this._attributes=[]
|
|
38
|
-
this._template=div.innerHTML;
|
|
39
|
-
this._exitAnimation=null;
|
|
40
|
-
this._component=null
|
|
41
|
-
this._unMountFunctions=[];
|
|
42
|
-
this._MountFunctions=[];
|
|
43
|
-
this._elementType=''
|
|
44
|
-
this._getNode=this.getNode
|
|
45
|
-
this._componentOrTemplate=false
|
|
46
|
-
this._props={}
|
|
47
|
-
this._isView=null
|
|
48
|
-
this._isElementComponent=false
|
|
49
|
-
this._pawaAttribute={}
|
|
50
|
-
this._setUnMount=this.setUnMounts
|
|
51
|
-
this._componentName=''
|
|
52
|
-
this._attrElement=this.getNewElementByRemovingAttr
|
|
53
|
-
this._attr={}
|
|
54
|
-
this._staticContext=[],
|
|
55
|
-
this._checkStatic=this.reCheckStaticContext
|
|
56
|
-
this._callMount=this.mount
|
|
57
|
-
this._callUnMOunt=this.unMount
|
|
58
|
-
this._remove=this.remove
|
|
59
|
-
this._componentChildren
|
|
60
|
-
this._pawaElementComponent=null
|
|
61
|
-
this._componentTerminate=null
|
|
62
|
-
this._cacheSetUp=false
|
|
63
|
-
this._effectsCarrier=null
|
|
64
|
-
this._pawaElementComponentName=''
|
|
65
|
-
this._reCallEffect=this.reCallEffect
|
|
66
|
-
this._ElementEffects=new Map()
|
|
67
|
-
this._deCompositionElement=false
|
|
68
|
-
this._restProps={}
|
|
69
|
-
this._kill=null
|
|
70
|
-
this._isKill=false
|
|
71
|
-
this._scriptFetching=element.hasAttribute('script')
|
|
72
|
-
this._scriptDone=false
|
|
73
|
-
this._underControl=null
|
|
74
|
-
this.safeEval=this.safeEval
|
|
75
|
-
/**
|
|
76
|
-
* @type{object}
|
|
77
|
-
*/
|
|
78
|
-
this._reactiveProps={}
|
|
79
|
-
if (this._lazy) {
|
|
80
|
-
|
|
81
|
-
this._componentOrTemplate=true
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
if(this._avoidPawaRender){
|
|
13
|
+
constructor(element,context) {
|
|
14
|
+
const div=document.createElement('div'); div.appendChild(element.cloneNode(true))
|
|
15
|
+
Object.assign(this, {
|
|
16
|
+
_resetEffects: new Set(), _context: context, _avoidPawaRender: element.hasAttribute('pawa-avoid'),
|
|
17
|
+
_el: element, _out: false, _stateContext: null, _terminateEffects: new Set(), _deleteEffects: this.terminateEffects,
|
|
18
|
+
_slots: document.createDocumentFragment(), _mainAttribute: {}, _preRenderAvoid: [], _running: false,
|
|
19
|
+
_hasForOrIf: this.hasForOrIf, _elementContent: element.textContent, _textContent: {}, _attributes: [],
|
|
20
|
+
_template: div.innerHTML, _exitAnimation: null, _component: null, _unMountFunctions: [], _MountFunctions: [],
|
|
21
|
+
_elementType: '', _getNode: this.getNode, _componentOrTemplate: false, _props: {}, _isView: null,
|
|
22
|
+
_isElementComponent: false, _pawaAttribute: {}, _setUnMount: this.setUnMounts, _componentName: '',
|
|
23
|
+
_attrElement: this.getNewElementByRemovingAttr, _attr: {}, _staticContext: [], _checkStatic: this.reCheckStaticContext,
|
|
24
|
+
_callMount: this.mount, _callUnMOunt: this.unMount, _remove: this.remove, _componentChildren: undefined,
|
|
25
|
+
_pawaElementComponent: null, _componentTerminate: null, _cacheSetUp: false, _effectsCarrier: null,
|
|
26
|
+
_pawaElementComponentName: '', _reCallEffect: this.reCallEffect, _ElementEffects: new Map(),
|
|
27
|
+
_deCompositionElement: false, _restProps: {}, _kill: null, _isKill: false, _scriptFetching: element.hasAttribute('script'),
|
|
28
|
+
_scriptDone: false, _underControl: null, safeEval: this.safeEval, _reactiveProps: {}
|
|
29
|
+
})
|
|
30
|
+
if (this._lazy) this._componentOrTemplate = true
|
|
31
|
+
if(this._avoidPawaRender) {
|
|
85
32
|
element.removeAttribute('pawa-avoid')
|
|
86
|
-
Array.from(element.children).forEach((child) => {
|
|
87
|
-
if (child.nodeType === 1) {
|
|
88
|
-
child.setAttribute('pawa-avoid','')
|
|
89
|
-
}
|
|
90
|
-
})
|
|
33
|
+
Array.from(element.children).forEach((child) => { if (child.nodeType === 1) child.setAttribute('pawa-avoid','') })
|
|
91
34
|
}
|
|
92
|
-
this.setPawaAttr()
|
|
93
|
-
this.elementType()
|
|
94
|
-
this.setProps()
|
|
95
|
-
this.setAttri()
|
|
96
|
-
this.findPawaAttribute()
|
|
35
|
+
this.setPawaAttr(); this.elementType(); this.setProps(); this.setAttri(); this.findPawaAttribute()
|
|
97
36
|
}
|
|
98
37
|
|
|
99
38
|
static Element(element,context){
|