jails-js 6.0.1-beta.6 → 6.0.1-beta.8
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/dist/index.js +25 -22
- package/dist/index.js.map +1 -1
- package/dist/jails.js +1 -1
- package/dist/jails.js.map +1 -1
- package/package.json +1 -1
- package/src/component.ts +17 -16
- package/src/element.ts +7 -6
- package/src/template-system.ts +5 -2
package/src/component.ts
CHANGED
@@ -14,6 +14,7 @@ export const Component = ({ name, module, dependencies, node, templates, signal
|
|
14
14
|
const state = Object.assign({}, scope, model, initialState)
|
15
15
|
const view = module.view? module.view : (data) => data
|
16
16
|
let preserve = []
|
17
|
+
let tick
|
17
18
|
|
18
19
|
const base = {
|
19
20
|
name,
|
@@ -61,7 +62,6 @@ export const Component = ({ name, module, dependencies, node, templates, signal
|
|
61
62
|
}
|
62
63
|
|
63
64
|
const newstate = Object.assign({}, state, scope)
|
64
|
-
|
65
65
|
render(newstate)
|
66
66
|
|
67
67
|
return Promise.resolve(newstate)
|
@@ -101,6 +101,7 @@ export const Component = ({ name, module, dependencies, node, templates, signal
|
|
101
101
|
}
|
102
102
|
node.addEventListener(ev, selectorOrCallback.handler, { signal })
|
103
103
|
}
|
104
|
+
|
104
105
|
},
|
105
106
|
|
106
107
|
off( ev, callback ) {
|
@@ -134,28 +135,28 @@ export const Component = ({ name, module, dependencies, node, templates, signal
|
|
134
135
|
const clone = element.cloneNode()
|
135
136
|
const html = html_? html_ : target
|
136
137
|
clone.innerHTML = html
|
137
|
-
|
138
|
-
rAF( _ => Idiomorph.morph(element, clone, IdiomorphOptions) )
|
138
|
+
Promise.resolve(() => Idiomorph.morph(element, clone, IdiomorphOptions))
|
139
139
|
}
|
140
140
|
}
|
141
141
|
|
142
142
|
const render = ( data ) => {
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
143
|
+
clearTimeout( tick )
|
144
|
+
tick = setTimeout(() => {
|
145
|
+
const html = tpl.render.call( view(data), node, safe, g )
|
146
|
+
Idiomorph.morph( node, html, IdiomorphOptions(node) )
|
147
|
+
Promise.resolve().then(() => {
|
148
|
+
node.querySelectorAll('[tplid]')
|
149
|
+
.forEach((element) => {
|
150
|
+
if(!element.base) return
|
151
|
+
element.base.state.protected().forEach( key => delete data[key] )
|
152
|
+
element.base.state.set(data)
|
153
|
+
})
|
154
|
+
Promise.resolve().then(() => g.scope = {})
|
155
|
+
})
|
155
156
|
})
|
156
|
-
|
157
157
|
}
|
158
158
|
|
159
|
+
render( state )
|
159
160
|
node.base = base
|
160
161
|
return module.default( base )
|
161
162
|
}
|
package/src/element.ts
CHANGED
@@ -3,7 +3,6 @@ import { Component } from './component'
|
|
3
3
|
export const Element = ({ component, templates, start }) => {
|
4
4
|
|
5
5
|
const { name, module, dependencies } = component
|
6
|
-
const abortController = new AbortController()
|
7
6
|
|
8
7
|
return class extends HTMLElement {
|
9
8
|
|
@@ -13,6 +12,8 @@ export const Element = ({ component, templates, start }) => {
|
|
13
12
|
|
14
13
|
connectedCallback() {
|
15
14
|
|
15
|
+
this.abortController = new AbortController()
|
16
|
+
|
16
17
|
if( !this.getAttribute('tplid') ) {
|
17
18
|
start( this.parentNode )
|
18
19
|
}
|
@@ -23,21 +24,21 @@ export const Element = ({ component, templates, start }) => {
|
|
23
24
|
module,
|
24
25
|
dependencies,
|
25
26
|
templates,
|
26
|
-
signal: abortController.signal
|
27
|
+
signal: this.abortController.signal
|
27
28
|
})
|
28
29
|
|
29
30
|
if ( rtrn && rtrn.constructor === Promise ) {
|
30
|
-
rtrn.then(() =>
|
31
|
+
rtrn.then(() => {
|
32
|
+
this.dispatchEvent( new CustomEvent(':mount') )
|
33
|
+
})
|
31
34
|
} else {
|
32
35
|
this.dispatchEvent( new CustomEvent(':mount') )
|
33
36
|
}
|
34
|
-
|
35
|
-
this.base.state.set({})
|
36
37
|
}
|
37
38
|
|
38
39
|
disconnectedCallback() {
|
39
40
|
this.dispatchEvent( new CustomEvent(':unmount') )
|
40
|
-
abortController.abort()
|
41
|
+
this.abortController.abort()
|
41
42
|
delete this.base
|
42
43
|
}
|
43
44
|
}
|
package/src/template-system.ts
CHANGED
@@ -12,7 +12,7 @@ export const templateConfig = (newconfig) => {
|
|
12
12
|
|
13
13
|
export const template = ( target, { components }) => {
|
14
14
|
|
15
|
-
tagElements( target, [...Object.keys( components ), 'template'] )
|
15
|
+
tagElements( target, [...Object.keys( components ), '[html-if]', 'template'] )
|
16
16
|
const clone = target.cloneNode( true )
|
17
17
|
|
18
18
|
transformTemplate( clone )
|
@@ -48,6 +48,9 @@ const tagElements = ( target, keys ) => {
|
|
48
48
|
return tagElements( node.content, keys )
|
49
49
|
}
|
50
50
|
node.setAttribute('tplid', uuid())
|
51
|
+
if( node.getAttribute('html-if') && !node.id ) {
|
52
|
+
node.id = uuid()
|
53
|
+
}
|
51
54
|
})
|
52
55
|
}
|
53
56
|
|
@@ -102,7 +105,7 @@ const transformTemplate = ( clone ) => {
|
|
102
105
|
if (htmlIf) {
|
103
106
|
element.removeAttribute('html-if')
|
104
107
|
const open = document.createTextNode(`%%_ if ( safe(function(){ return ${htmlIf} }) ){ _%%`)
|
105
|
-
const close = document.createTextNode(`%%_ }
|
108
|
+
const close = document.createTextNode(`%%_ } _%%`)
|
106
109
|
wrap(open, element, close)
|
107
110
|
}
|
108
111
|
|