@domql/element 3.1.2 → 3.2.3
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 +4 -6
- package/__tests__/checkIfOnUpdate.test.js +12 -12
- package/__tests__/children.test.js +34 -38
- package/__tests__/inheritStateUpdates.test.js +12 -12
- package/__tests__/renderElement.test.js +11 -11
- package/__tests__/resetElement.test.js +6 -6
- package/__tests__/set.test.js +32 -36
- package/__tests__/throughExecProps.test.js +12 -12
- package/__tests__/throughInitialDefine.test.js +16 -16
- package/__tests__/throughInitialExec.test.js +16 -16
- package/__tests__/throughUpdatedDefine.test.js +14 -14
- package/__tests__/throughUpdatedExec.test.js +17 -16
- package/__tests__/update.test.js +54 -54
- package/children.js +5 -6
- package/create.js +18 -20
- package/dist/cjs/children.js +4 -2
- package/dist/cjs/create.js +16 -16
- package/dist/cjs/extend.js +88 -0
- package/dist/cjs/iterate.js +76 -20
- package/dist/cjs/mixins/content.js +73 -0
- package/dist/cjs/mixins/html.js +1 -1
- package/dist/cjs/mixins/registry.js +2 -2
- package/dist/cjs/mixins/scope.js +1 -1
- package/dist/cjs/mixins/state.js +2 -2
- package/dist/cjs/mixins/text.js +4 -4
- package/dist/cjs/node.js +15 -15
- package/dist/cjs/set.js +22 -27
- package/dist/cjs/update.js +24 -33
- package/dist/cjs/utils/applyParam.js +4 -4
- package/dist/cjs/utils/extendUtils.js +132 -0
- package/dist/cjs/utils/propEvents.js +39 -0
- package/dist/esm/children.js +5 -3
- package/dist/esm/create.js +16 -16
- package/dist/esm/extend.js +74 -0
- package/dist/esm/iterate.js +77 -22
- package/dist/esm/mixins/content.js +53 -0
- package/dist/esm/mixins/html.js +1 -1
- package/dist/esm/mixins/registry.js +1 -1
- package/dist/esm/mixins/scope.js +1 -1
- package/dist/esm/mixins/state.js +3 -3
- package/dist/esm/mixins/text.js +4 -4
- package/dist/esm/node.js +15 -15
- package/dist/esm/set.js +23 -28
- package/dist/esm/update.js +24 -33
- package/dist/esm/utils/applyParam.js +5 -5
- package/dist/esm/utils/extendUtils.js +119 -0
- package/dist/esm/utils/propEvents.js +19 -0
- package/extend.js +98 -0
- package/iterate.js +80 -25
- package/mixins/content.js +65 -0
- package/mixins/html.js +1 -1
- package/mixins/registry.js +1 -1
- package/mixins/scope.js +1 -1
- package/mixins/state.js +3 -3
- package/mixins/text.js +4 -4
- package/node.js +15 -15
- package/package.json +8 -8
- package/set.js +23 -28
- package/update.js +25 -34
- package/utils/applyParam.js +5 -5
- package/utils/extendUtils.js +149 -0
- package/utils/propEvents.js +19 -0
- package/dist/cjs/__tests__/checkIfOnUpdate.test.js +0 -73
- package/dist/cjs/__tests__/children.test.js +0 -177
- package/dist/cjs/__tests__/define.test.js +0 -75
- package/dist/cjs/__tests__/inheritStateUpdates.test.js +0 -62
- package/dist/cjs/__tests__/renderElement.test.js +0 -138
- package/dist/cjs/__tests__/resetElement.test.js +0 -35
- package/dist/cjs/__tests__/set.test.js +0 -256
- package/dist/cjs/__tests__/throughExecProps.test.js +0 -62
- package/dist/cjs/__tests__/throughInitialDefine.test.js +0 -79
- package/dist/cjs/__tests__/throughInitialExec.test.js +0 -73
- package/dist/cjs/__tests__/throughUpdatedDefine.test.js +0 -69
- package/dist/cjs/__tests__/throughUpdatedExec.test.js +0 -84
- package/dist/cjs/__tests__/tree.test.js +0 -11
- package/dist/cjs/__tests__/update.test.js +0 -222
- package/dist/esm/__tests__/checkIfOnUpdate.test.js +0 -73
- package/dist/esm/__tests__/children.test.js +0 -177
- package/dist/esm/__tests__/define.test.js +0 -53
- package/dist/esm/__tests__/inheritStateUpdates.test.js +0 -62
- package/dist/esm/__tests__/renderElement.test.js +0 -116
- package/dist/esm/__tests__/resetElement.test.js +0 -35
- package/dist/esm/__tests__/set.test.js +0 -256
- package/dist/esm/__tests__/throughExecProps.test.js +0 -62
- package/dist/esm/__tests__/throughInitialDefine.test.js +0 -79
- package/dist/esm/__tests__/throughInitialExec.test.js +0 -73
- package/dist/esm/__tests__/throughUpdatedDefine.test.js +0 -69
- package/dist/esm/__tests__/throughUpdatedExec.test.js +0 -84
- package/dist/esm/__tests__/tree.test.js +0 -11
- package/dist/esm/__tests__/update.test.js +0 -222
package/iterate.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
isObject,
|
|
5
|
-
exec,
|
|
6
5
|
isFunction,
|
|
7
6
|
isNumber,
|
|
8
7
|
isString,
|
|
@@ -10,17 +9,24 @@ import {
|
|
|
10
9
|
isContextComponent,
|
|
11
10
|
isMethod,
|
|
12
11
|
overwrite,
|
|
13
|
-
|
|
12
|
+
exec
|
|
14
13
|
} from '@domql/utils'
|
|
15
14
|
|
|
16
|
-
export const throughInitialExec =
|
|
15
|
+
export const throughInitialExec = (element, exclude = {}) => {
|
|
17
16
|
const { __ref: ref } = element
|
|
18
17
|
for (const param in element) {
|
|
19
18
|
if (exclude[param]) continue
|
|
20
19
|
const prop = element[param]
|
|
21
20
|
if (isFunction(prop) && !isMethod(param, element)) {
|
|
22
21
|
ref.__exec[param] = prop
|
|
23
|
-
|
|
22
|
+
const result = prop(element, element.state, element.context)
|
|
23
|
+
if (result && typeof result.then === 'function') {
|
|
24
|
+
result.then(resolved => {
|
|
25
|
+
element[param] = resolved
|
|
26
|
+
})
|
|
27
|
+
} else {
|
|
28
|
+
element[param] = result
|
|
29
|
+
}
|
|
24
30
|
}
|
|
25
31
|
}
|
|
26
32
|
}
|
|
@@ -36,6 +42,12 @@ export const throughUpdatedExec = (element, options = {}) => {
|
|
|
36
42
|
if (isDefinedParam) continue
|
|
37
43
|
|
|
38
44
|
const newExec = ref.__exec[param](element, element.state, element.context)
|
|
45
|
+
if (newExec && typeof newExec.then === 'function') {
|
|
46
|
+
newExec.then(resolved => {
|
|
47
|
+
element[param] = resolved
|
|
48
|
+
})
|
|
49
|
+
continue
|
|
50
|
+
}
|
|
39
51
|
const execReturnsString = isString(newExec) || isNumber(newExec)
|
|
40
52
|
// if (prop && prop.node && execReturnsString) {
|
|
41
53
|
if (prop && prop.node && execReturnsString) {
|
|
@@ -58,7 +70,7 @@ export const throughUpdatedExec = (element, options = {}) => {
|
|
|
58
70
|
return changes
|
|
59
71
|
}
|
|
60
72
|
|
|
61
|
-
export const throughExecProps =
|
|
73
|
+
export const throughExecProps = element => {
|
|
62
74
|
const { __ref: ref } = element
|
|
63
75
|
const { props } = element
|
|
64
76
|
for (const k in props) {
|
|
@@ -66,17 +78,31 @@ export const throughExecProps = async element => {
|
|
|
66
78
|
k.startsWith('is') || k.startsWith('has') || k.startsWith('use')
|
|
67
79
|
const cachedExecProp = ref.__execProps[k]
|
|
68
80
|
if (isFunction(cachedExecProp)) {
|
|
69
|
-
|
|
81
|
+
const result = exec(cachedExecProp, element)
|
|
82
|
+
if (result && typeof result.then === 'function') {
|
|
83
|
+
result.then(resolved => {
|
|
84
|
+
props[k] = resolved
|
|
85
|
+
})
|
|
86
|
+
} else {
|
|
87
|
+
props[k] = result
|
|
88
|
+
}
|
|
70
89
|
} else if (isDefine && isFunction(props[k])) {
|
|
71
90
|
ref.__execProps[k] = props[k]
|
|
72
|
-
|
|
91
|
+
const result = exec(props[k], element)
|
|
92
|
+
if (result && typeof result.then === 'function') {
|
|
93
|
+
result.then(resolved => {
|
|
94
|
+
props[k] = resolved
|
|
95
|
+
})
|
|
96
|
+
} else {
|
|
97
|
+
props[k] = result
|
|
98
|
+
}
|
|
73
99
|
}
|
|
74
100
|
}
|
|
75
101
|
}
|
|
76
102
|
|
|
77
103
|
export const isPropertyInDefines = (key, element) => {}
|
|
78
104
|
|
|
79
|
-
export const throughInitialDefine =
|
|
105
|
+
export const throughInitialDefine = element => {
|
|
80
106
|
const { define, context, __ref: ref } = element
|
|
81
107
|
|
|
82
108
|
let defineObj = {}
|
|
@@ -89,28 +115,42 @@ export const throughInitialDefine = async element => {
|
|
|
89
115
|
|
|
90
116
|
if (isFunction(elementProp) && !isMethod(param, element)) {
|
|
91
117
|
ref.__exec[param] = elementProp
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
118
|
+
let execParam = exec(elementProp, element)
|
|
119
|
+
if (execParam && typeof execParam.then === 'function') {
|
|
120
|
+
execParam.then(resolved => {
|
|
121
|
+
elementProp = element[param] =
|
|
122
|
+
resolved && resolved.parse ? resolved.parse() : resolved
|
|
123
|
+
if (resolved) {
|
|
124
|
+
ref.__defineCache[param] = elementProp
|
|
125
|
+
}
|
|
126
|
+
})
|
|
127
|
+
} else {
|
|
128
|
+
elementProp = element[param] =
|
|
129
|
+
execParam && execParam.parse ? execParam.parse() : execParam
|
|
130
|
+
if (execParam) {
|
|
131
|
+
ref.__defineCache[param] = elementProp
|
|
132
|
+
}
|
|
99
133
|
}
|
|
100
134
|
}
|
|
101
135
|
|
|
102
|
-
const execParam =
|
|
136
|
+
const execParam = defineObj[param](
|
|
103
137
|
elementProp,
|
|
104
138
|
element,
|
|
105
139
|
element.state,
|
|
106
140
|
element.context
|
|
107
141
|
)
|
|
108
|
-
if (execParam
|
|
142
|
+
if (execParam && typeof execParam.then === 'function') {
|
|
143
|
+
execParam.then(resolved => {
|
|
144
|
+
if (resolved) element[param] = resolved
|
|
145
|
+
})
|
|
146
|
+
} else if (execParam) {
|
|
147
|
+
element[param] = execParam
|
|
148
|
+
}
|
|
109
149
|
}
|
|
110
150
|
return element
|
|
111
151
|
}
|
|
112
152
|
|
|
113
|
-
export const throughUpdatedDefine =
|
|
153
|
+
export const throughUpdatedDefine = element => {
|
|
114
154
|
const { context, define, __ref: ref } = element
|
|
115
155
|
const changes = {}
|
|
116
156
|
|
|
@@ -121,18 +161,33 @@ export const throughUpdatedDefine = async element => {
|
|
|
121
161
|
for (const param in obj) {
|
|
122
162
|
const execParam = ref.__exec[param]
|
|
123
163
|
if (execParam) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
164
|
+
const result = execParam(element, element.state, element.context)
|
|
165
|
+
if (result && typeof result.then === 'function') {
|
|
166
|
+
result.then(resolved => {
|
|
167
|
+
ref.__defineCache[param] = resolved
|
|
168
|
+
})
|
|
169
|
+
} else {
|
|
170
|
+
ref.__defineCache[param] = result
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const cached = exec(ref.__defineCache[param], element)
|
|
174
|
+
if (cached && typeof cached.then === 'function') {
|
|
175
|
+
cached.then(resolved => {
|
|
176
|
+
// Optionally assign or use resolved value if needed
|
|
177
|
+
})
|
|
178
|
+
continue
|
|
129
179
|
}
|
|
130
|
-
const cached = await execPromise(ref.__defineCache[param], element)
|
|
131
180
|
const newExecParam =
|
|
132
181
|
typeof obj[param] === 'function'
|
|
133
182
|
? obj[param](cached, element, element.state, element.context)
|
|
134
183
|
: undefined
|
|
135
|
-
if (newExecParam
|
|
184
|
+
if (newExecParam && typeof newExecParam.then === 'function') {
|
|
185
|
+
newExecParam.then(resolved => {
|
|
186
|
+
element[param] = resolved
|
|
187
|
+
})
|
|
188
|
+
} else if (newExecParam) {
|
|
189
|
+
element[param] = newExecParam
|
|
190
|
+
}
|
|
136
191
|
}
|
|
137
192
|
return changes
|
|
138
193
|
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import { isFunction, setContentKey } from '@domql/utils'
|
|
4
|
+
import { set } from '../set.js'
|
|
5
|
+
|
|
6
|
+
export const updateContent = function (params, options) {
|
|
7
|
+
const element = this
|
|
8
|
+
const ref = element.__ref
|
|
9
|
+
|
|
10
|
+
const contentKey = ref.contentElementKey
|
|
11
|
+
|
|
12
|
+
if (!element[contentKey]) return
|
|
13
|
+
if (element[contentKey].update) element[contentKey].update(params, options)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const removeContent = function (el, opts = {}) {
|
|
17
|
+
const element = el || this
|
|
18
|
+
const { __ref: ref } = element
|
|
19
|
+
const contentElementKey = setContentKey(element, opts)
|
|
20
|
+
|
|
21
|
+
if (opts.contentElementKey !== 'content') opts.contentElementKey = 'content'
|
|
22
|
+
if (element[contentElementKey]) {
|
|
23
|
+
if (element[contentElementKey].node && element.node) {
|
|
24
|
+
if (element[contentElementKey].tag === 'fragment')
|
|
25
|
+
element.node.innerHTML = ''
|
|
26
|
+
else {
|
|
27
|
+
const contentNode = element[contentElementKey].node
|
|
28
|
+
if (contentNode.parentNode === element.node)
|
|
29
|
+
element.node.removeChild(element[contentElementKey].node)
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const { __cached } = ref
|
|
34
|
+
if (__cached && __cached[contentElementKey]) {
|
|
35
|
+
if (__cached[contentElementKey].tag === 'fragment')
|
|
36
|
+
__cached[contentElementKey].parent.node.innerHTML = ''
|
|
37
|
+
else if (
|
|
38
|
+
__cached[contentElementKey] &&
|
|
39
|
+
isFunction(__cached[contentElementKey].remove)
|
|
40
|
+
)
|
|
41
|
+
__cached[contentElementKey].remove()
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
ref.__children.splice(ref.__children.indexOf(element[contentElementKey]), 1)
|
|
45
|
+
|
|
46
|
+
delete element[contentElementKey]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Appends anything as content
|
|
52
|
+
* an original one as a child
|
|
53
|
+
*/
|
|
54
|
+
export function setContent (param, element, node, opts) {
|
|
55
|
+
const contentElementKey = setContentKey(element, opts)
|
|
56
|
+
if (param && element) {
|
|
57
|
+
if (element[contentElementKey]?.update) {
|
|
58
|
+
element[contentElementKey].update({}, opts)
|
|
59
|
+
} else {
|
|
60
|
+
set.call(element, param, opts)
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export default setContent
|
package/mixins/html.js
CHANGED
|
@@ -7,7 +7,7 @@ import { exec } from '@domql/utils'
|
|
|
7
7
|
* an original one as a child
|
|
8
8
|
*/
|
|
9
9
|
export function html (param, element, node) {
|
|
10
|
-
const prop = exec(
|
|
10
|
+
const prop = exec(element?.props?.html || param, element)
|
|
11
11
|
const { __ref } = element
|
|
12
12
|
if (prop !== __ref.__html) {
|
|
13
13
|
// const parser = new window.DOMParser()
|
package/mixins/registry.js
CHANGED
package/mixins/scope.js
CHANGED
|
@@ -6,7 +6,7 @@ import { isFunction, isObject } from '@domql/utils'
|
|
|
6
6
|
* Apply data parameters on the DOM nodes
|
|
7
7
|
* this should only work if `showOnNode: true` is passed
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
9
|
+
export function scope (params, element, node) {
|
|
10
10
|
if (!isObject(params)) return
|
|
11
11
|
|
|
12
12
|
// Apply data params on node
|
package/mixins/state.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { exec, isObject, STATE_METHODS } from '@domql/utils'
|
|
4
4
|
|
|
5
|
-
export
|
|
6
|
-
const state =
|
|
5
|
+
export function state (params, element, node) {
|
|
6
|
+
const state = exec(params, element)
|
|
7
7
|
|
|
8
8
|
if (isObject(state)) {
|
|
9
9
|
for (const param in state) {
|
package/mixins/text.js
CHANGED
|
@@ -7,10 +7,10 @@ import { exec, isString } from '@domql/utils'
|
|
|
7
7
|
* Creates a text node and appends into
|
|
8
8
|
* an original one as a child
|
|
9
9
|
*/
|
|
10
|
-
export
|
|
11
|
-
let prop = exec(
|
|
10
|
+
export function text (param, element, node) {
|
|
11
|
+
let prop = exec(element.props.text || param, element)
|
|
12
12
|
if (isString(prop) && prop.includes('{{')) {
|
|
13
|
-
prop = element.call('replaceLiteralsWithObjectFields', prop)
|
|
13
|
+
prop = element.call('replaceLiteralsWithObjectFields', prop, element.state)
|
|
14
14
|
}
|
|
15
15
|
if (element.tag === 'string') {
|
|
16
16
|
node.nodeValue = prop
|
|
@@ -19,7 +19,7 @@ export async function text (param, element, node) {
|
|
|
19
19
|
if (element.__text.text === prop) return
|
|
20
20
|
element.__text.text = prop
|
|
21
21
|
if (element.__text.node) element.__text.node.nodeValue = prop
|
|
22
|
-
} else
|
|
22
|
+
} else create({ tag: 'string', text: prop }, element, '__text')
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
package/node.js
CHANGED
|
@@ -18,7 +18,7 @@ import { setContent } from './set.js'
|
|
|
18
18
|
|
|
19
19
|
const ENV = process.env.NODE_ENV
|
|
20
20
|
|
|
21
|
-
export const createNode =
|
|
21
|
+
export const createNode = (element, opts) => {
|
|
22
22
|
// create and assign a node
|
|
23
23
|
let { node, tag, __ref: ref } = element
|
|
24
24
|
|
|
@@ -34,7 +34,7 @@ export const createNode = async (element, opts) => {
|
|
|
34
34
|
} else node = element.node = cacheNode(element)
|
|
35
35
|
|
|
36
36
|
// trigger `on.attachNode`
|
|
37
|
-
|
|
37
|
+
triggerEventOn('attachNode', element, opts)
|
|
38
38
|
}
|
|
39
39
|
// node.dataset // .key = element.key
|
|
40
40
|
|
|
@@ -44,15 +44,15 @@ export const createNode = async (element, opts) => {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
// iterate through exec props
|
|
47
|
-
|
|
47
|
+
throughExecProps(element)
|
|
48
48
|
|
|
49
49
|
// iterate through define
|
|
50
|
-
|
|
50
|
+
throughInitialDefine(element)
|
|
51
51
|
|
|
52
52
|
// iterate through exec
|
|
53
|
-
|
|
53
|
+
throughInitialExec(element)
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
applyEventsOnNode(element, { isNewNode, ...opts })
|
|
56
56
|
|
|
57
57
|
for (const param in element) {
|
|
58
58
|
const value = element[param]
|
|
@@ -66,34 +66,34 @@ export const createNode = async (element, opts) => {
|
|
|
66
66
|
continue
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
const isElement =
|
|
69
|
+
const isElement = applyParam(param, element, opts)
|
|
70
70
|
if (isElement) {
|
|
71
71
|
const { hasDefine, hasContextDefine } = isElement
|
|
72
72
|
if (element[param] && !hasDefine && !hasContextDefine) {
|
|
73
|
-
const createAsync =
|
|
74
|
-
|
|
73
|
+
const createAsync = () => {
|
|
74
|
+
create(value, element, param, opts)
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
// TODO: test this with promise
|
|
78
78
|
// handle lazy load
|
|
79
79
|
if ((element.props && element.props.lazyLoad) || opts.lazyLoad) {
|
|
80
|
-
window.requestAnimationFrame(
|
|
81
|
-
|
|
80
|
+
window.requestAnimationFrame(() => {
|
|
81
|
+
createAsync()
|
|
82
82
|
if (!opts.preventUpdateListener) {
|
|
83
|
-
|
|
83
|
+
triggerEventOn('lazyLoad', element, opts)
|
|
84
84
|
}
|
|
85
85
|
})
|
|
86
|
-
} else
|
|
86
|
+
} else createAsync()
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
const content = element.children
|
|
92
|
-
?
|
|
92
|
+
? setChildren(element.children, element, opts)
|
|
93
93
|
: element.content || element.content
|
|
94
94
|
|
|
95
95
|
if (content) {
|
|
96
|
-
|
|
96
|
+
setContent(content, element, opts)
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
// node.dataset.key = key
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@domql/element",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.3",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "index.js",
|
|
@@ -21,18 +21,18 @@
|
|
|
21
21
|
],
|
|
22
22
|
"scripts": {
|
|
23
23
|
"copy:package:cjs": "cp ../../build/package-cjs.json dist/cjs/package.json",
|
|
24
|
-
"build:esm": "npx esbuild *.js
|
|
25
|
-
"build:cjs": "npx esbuild *.js
|
|
24
|
+
"build:esm": "npx cross-env NODE_ENV=$NODE_ENV npx esbuild *.js methods/*.js mixins/*.js utils/*.js --target=es2019 --format=esm --outdir=dist/esm",
|
|
25
|
+
"build:cjs": "npx cross-env NODE_ENV=$NODE_ENV npx esbuild *.js methods/*.js mixins/*.js utils/*.js --target=node16 --format=cjs --outdir=dist/cjs",
|
|
26
26
|
"build": "npx rimraf -I dist; npm run build:cjs; npm run build:esm",
|
|
27
27
|
"prepublish": "npx rimraf -I dist && npm run build && npm run copy:package:cjs"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@domql/event": "^3.
|
|
31
|
-
"@domql/render": "^3.
|
|
32
|
-
"@domql/state": "^3.
|
|
33
|
-
"@domql/utils": "^3.
|
|
30
|
+
"@domql/event": "^3.2.3",
|
|
31
|
+
"@domql/render": "^3.2.3",
|
|
32
|
+
"@domql/state": "^3.2.3",
|
|
33
|
+
"@domql/utils": "^3.2.3"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "9fc1b79b41cdc725ca6b24aec64920a599634681",
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@babel/core": "^7.26.0"
|
|
38
38
|
}
|
package/set.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
import { deepContains,
|
|
3
|
+
import { deepContains, exec, isFunction, OPTIONS } from '@domql/utils'
|
|
4
4
|
import { create } from './create.js'
|
|
5
5
|
import { triggerEventOn, triggerEventOnUpdate } from '@domql/event'
|
|
6
6
|
|
|
@@ -13,9 +13,9 @@ export const setContentKey = (element, opts = {}) => {
|
|
|
13
13
|
return ref.contentElementKey
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
export const reset =
|
|
16
|
+
export const reset = options => {
|
|
17
17
|
const element = this
|
|
18
|
-
|
|
18
|
+
create(element, element.parent, undefined, {
|
|
19
19
|
ignoreChildExtends: true,
|
|
20
20
|
...OPTIONS.defaultOptions,
|
|
21
21
|
...OPTIONS.create,
|
|
@@ -23,30 +23,25 @@ export const reset = async options => {
|
|
|
23
23
|
})
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
export const resetContent =
|
|
26
|
+
export const resetContent = (params, element, opts) => {
|
|
27
27
|
const contentElementKey = setContentKey(element, opts)
|
|
28
28
|
if (element[contentElementKey]?.node) removeContent(element, opts)
|
|
29
|
-
const contentElem =
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
...OPTIONS.defaultOptions,
|
|
36
|
-
...OPTIONS.create,
|
|
37
|
-
...opts
|
|
38
|
-
}
|
|
39
|
-
)
|
|
29
|
+
const contentElem = create(params, element, contentElementKey || 'content', {
|
|
30
|
+
ignoreChildExtends: true,
|
|
31
|
+
...OPTIONS.defaultOptions,
|
|
32
|
+
...OPTIONS.create,
|
|
33
|
+
...opts
|
|
34
|
+
})
|
|
40
35
|
if (contentElementKey !== 'content') opts.contentElementKey = 'content' // reset to default
|
|
41
36
|
return contentElem
|
|
42
37
|
}
|
|
43
38
|
|
|
44
|
-
export const updateContent =
|
|
39
|
+
export const updateContent = function (params, opts) {
|
|
45
40
|
const element = this
|
|
46
41
|
const contentElementKey = setContentKey(element, opts)
|
|
47
42
|
if (!element[contentElementKey]) return
|
|
48
43
|
if (element[contentElementKey].update) {
|
|
49
|
-
|
|
44
|
+
element[contentElementKey].update(params, opts)
|
|
50
45
|
}
|
|
51
46
|
}
|
|
52
47
|
|
|
@@ -54,11 +49,11 @@ export const updateContent = async function (params, opts) {
|
|
|
54
49
|
* Appends anything as content
|
|
55
50
|
* an original one as a child
|
|
56
51
|
*/
|
|
57
|
-
export
|
|
58
|
-
const content =
|
|
52
|
+
export function setContent (param, element, opts) {
|
|
53
|
+
const content = exec(param, element)
|
|
59
54
|
|
|
60
55
|
if (content && element) {
|
|
61
|
-
|
|
56
|
+
set.call(element, content, opts)
|
|
62
57
|
}
|
|
63
58
|
}
|
|
64
59
|
|
|
@@ -98,7 +93,7 @@ export const removeContent = function (el, opts = {}) {
|
|
|
98
93
|
delete element[contentElementKey]
|
|
99
94
|
}
|
|
100
95
|
|
|
101
|
-
export const set =
|
|
96
|
+
export const set = function (params, options = {}, el) {
|
|
102
97
|
const element = el || this
|
|
103
98
|
const { __ref: ref } = element
|
|
104
99
|
|
|
@@ -119,7 +114,7 @@ export const set = async function (params, options = {}, el) {
|
|
|
119
114
|
|
|
120
115
|
if (content?.update && !childHasChanged && !childrenIsDifferentFromCache) {
|
|
121
116
|
if (!options.preventBeforeUpdateListener && !options.preventListeners) {
|
|
122
|
-
const beforeUpdateReturns =
|
|
117
|
+
const beforeUpdateReturns = triggerEventOnUpdate(
|
|
123
118
|
'beforeUpdate',
|
|
124
119
|
params,
|
|
125
120
|
element,
|
|
@@ -127,9 +122,9 @@ export const set = async function (params, options = {}, el) {
|
|
|
127
122
|
)
|
|
128
123
|
if (beforeUpdateReturns === false) return element
|
|
129
124
|
}
|
|
130
|
-
|
|
125
|
+
content.update(params)
|
|
131
126
|
if (!options.preventUpdateListener && !options.preventListeners) {
|
|
132
|
-
|
|
127
|
+
triggerEventOn('update', element, options)
|
|
133
128
|
}
|
|
134
129
|
return
|
|
135
130
|
}
|
|
@@ -152,15 +147,15 @@ export const set = async function (params, options = {}, el) {
|
|
|
152
147
|
}
|
|
153
148
|
|
|
154
149
|
if (lazyLoad) {
|
|
155
|
-
window.requestAnimationFrame(
|
|
156
|
-
|
|
150
|
+
window.requestAnimationFrame(() => {
|
|
151
|
+
resetContent(params, element, options)
|
|
157
152
|
// handle lazy load
|
|
158
153
|
if (!options.preventUpdateListener) {
|
|
159
|
-
|
|
154
|
+
triggerEventOn('lazyLoad', element, options)
|
|
160
155
|
}
|
|
161
156
|
})
|
|
162
157
|
} else {
|
|
163
|
-
|
|
158
|
+
resetContent(params, element, options)
|
|
164
159
|
}
|
|
165
160
|
}
|
|
166
161
|
|