@domql/element 2.4.0 → 2.4.2
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/cache/index.js +3 -0
- package/cache/options.js +3 -0
- package/dist/cjs/cache/index.js +24 -0
- package/dist/cjs/cache/options.js +24 -0
- package/dist/cjs/methods/index.js +186 -0
- package/dist/cjs/{set.js → methods/set.js} +24 -24
- package/dist/cjs/methods/v2.js +109 -0
- package/dist/cjs/mixins/attr.js +42 -0
- package/dist/cjs/mixins/classList.js +73 -0
- package/dist/cjs/mixins/content.js +75 -0
- package/dist/cjs/{define.js → mixins/data.js} +14 -12
- package/dist/cjs/mixins/html.js +35 -0
- package/dist/cjs/{index.js → mixins/index.js} +23 -15
- package/dist/cjs/mixins/registry.js +89 -0
- package/dist/cjs/mixins/state.js +40 -0
- package/dist/cjs/{tree.js → mixins/style.js} +11 -9
- package/dist/cjs/mixins/text.js +60 -0
- package/dist/cjs/props/create.js +77 -0
- package/dist/cjs/props/ignore.js +24 -0
- package/dist/cjs/props/index.js +21 -0
- package/dist/cjs/props/inherit.js +52 -0
- package/dist/cjs/props/update.js +37 -0
- package/dist/cjs/test/create.test.js +51 -0
- package/dist/cjs/test/set.test.js +9 -0
- package/dist/cjs/test/update.test.js +8 -0
- package/dist/cjs/utils/component.js +133 -0
- package/dist/cjs/utils/extendUtils.js +144 -0
- package/dist/cjs/utils/index.js +20 -0
- package/dist/cjs/utils/object.js +142 -0
- package/methods/index.js +165 -0
- package/methods/set.js +41 -0
- package/methods/v2.js +82 -0
- package/mixins/attr.js +23 -0
- package/mixins/classList.js +48 -0
- package/mixins/content.js +47 -0
- package/mixins/data.js +21 -0
- package/mixins/html.js +20 -0
- package/mixins/index.js +23 -0
- package/mixins/registry.js +66 -0
- package/mixins/state.js +20 -0
- package/mixins/style.js +14 -0
- package/mixins/text.js +41 -0
- package/package.json +5 -4
- package/props/create.js +60 -0
- package/props/ignore.js +3 -0
- package/props/index.js +6 -0
- package/props/inherit.js +34 -0
- package/props/update.js +17 -0
- package/test/create.test.js +61 -0
- package/test/set.test.js +13 -0
- package/test/update.test.js +13 -0
- package/utils/component.js +112 -0
- package/utils/extendUtils.js +118 -0
- package/utils/index.js +5 -0
- package/utils/object.js +141 -0
- package/dist/cjs/applyParam.js +0 -41
- package/dist/cjs/create.js +0 -262
- package/dist/cjs/extend.js +0 -87
- package/dist/cjs/iterate.js +0 -108
- package/dist/cjs/node.js +0 -85
- package/dist/cjs/update.js +0 -223
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import { exec, isArray, isFunction, isObject, isString, overwriteDeep } from '@domql/utils'
|
|
4
|
+
import { applyExtend } from '../extend'
|
|
5
|
+
const ENV = process.env.NODE_ENV
|
|
6
|
+
|
|
7
|
+
export const checkIfKeyIsComponent = (key) => {
|
|
8
|
+
const isFirstKeyString = isString(key)
|
|
9
|
+
if (!isFirstKeyString) return
|
|
10
|
+
const firstCharKey = key.slice(0, 1)
|
|
11
|
+
return /^[A-Z]*$/.test(firstCharKey)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const addAdditionalExtend = (newExtend, element) => {
|
|
15
|
+
const { extend } = element
|
|
16
|
+
const preserveExtend = isArray(extend) ? extend : [extend]
|
|
17
|
+
return {
|
|
18
|
+
...element,
|
|
19
|
+
extend: [newExtend].concat(preserveExtend)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const extendizeByKey = (element, parent, key) => {
|
|
24
|
+
const { tag, extend, props, state, childExtend, childProps, on } = element
|
|
25
|
+
const hasComponentAttrs = tag || extend || childExtend || props || state || on
|
|
26
|
+
const componentKey = key.includes('_')
|
|
27
|
+
? key.split('_')[0]
|
|
28
|
+
: key.includes('.') ? key.split('.')[0] : key
|
|
29
|
+
const extendKey = componentKey || key
|
|
30
|
+
|
|
31
|
+
if (!hasComponentAttrs || childProps) {
|
|
32
|
+
return {
|
|
33
|
+
extend: extendKey,
|
|
34
|
+
props: { ...element }
|
|
35
|
+
}
|
|
36
|
+
} else if (!extend || extend === true) {
|
|
37
|
+
return {
|
|
38
|
+
...element,
|
|
39
|
+
extend: extendKey
|
|
40
|
+
}
|
|
41
|
+
} else if (extend) {
|
|
42
|
+
addAdditionalExtend(extendKey, element)
|
|
43
|
+
} else if (isFunction(element)) {
|
|
44
|
+
return {
|
|
45
|
+
extend: extendKey,
|
|
46
|
+
props: { ...exec(element, parent) }
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const applyKeyComponentAsExtend = (element, parent, key) => {
|
|
52
|
+
return extendizeByKey(element, parent, key) || element
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export const applyComponentFromContext = (element, parent, options) => {
|
|
56
|
+
const { context } = element
|
|
57
|
+
const { components } = context
|
|
58
|
+
const { extend } = element
|
|
59
|
+
const execExtend = exec(extend, element)
|
|
60
|
+
if (isString(execExtend)) {
|
|
61
|
+
if (components[execExtend]) element.extend = components[execExtend]
|
|
62
|
+
else {
|
|
63
|
+
if ((ENV === 'test' || ENV === 'development') && options.verbose) {
|
|
64
|
+
console.warn(execExtend, 'is not in library', components, element)
|
|
65
|
+
console.warn('replacing with ', {})
|
|
66
|
+
}
|
|
67
|
+
element.extend = {}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export const isVariant = (param) => {
|
|
73
|
+
if (!isString(param)) return
|
|
74
|
+
const firstCharKey = param.slice(0, 1)
|
|
75
|
+
// return (firstCharKey === '.' || firstCharKey === '$')
|
|
76
|
+
return (firstCharKey === '.')
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export const hasVariantProp = (element) => {
|
|
80
|
+
const { props } = element
|
|
81
|
+
if (isObject(props) && isString(props.variant)) return true
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export const overwriteVariant = (element, variant, variantProps) => {
|
|
85
|
+
let variantElement = element[variant]
|
|
86
|
+
if (!variantElement) return
|
|
87
|
+
const props = isObject(variantProps) ? variantProps : {}
|
|
88
|
+
if (isString(variantElement)) {
|
|
89
|
+
variantElement = {
|
|
90
|
+
extend: [{ props }, variantElement]
|
|
91
|
+
}
|
|
92
|
+
} else if (variantElement.extend) {
|
|
93
|
+
variantElement = addAdditionalExtend({ props }, variantElement)
|
|
94
|
+
}
|
|
95
|
+
return overwriteDeep(element, applyExtend(variantElement)) // TODO: check why string is not working
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export const applyVariant = (element) => {
|
|
99
|
+
const { props } = element
|
|
100
|
+
if (!hasVariantProp(element)) return element
|
|
101
|
+
const { variant } = props
|
|
102
|
+
overwriteVariant(element, `.${variant}`)
|
|
103
|
+
|
|
104
|
+
const elKeys = Object.keys(element).filter((key) => isVariant(key))
|
|
105
|
+
elKeys.forEach((variant) => {
|
|
106
|
+
const slicedVariantElementKey = variant.slice(1)
|
|
107
|
+
const variantElementProps = props[slicedVariantElementKey]
|
|
108
|
+
if (variantElementProps) overwriteVariant(element, variant, variantElementProps)
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
return element
|
|
112
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import { isArray, isFunction, isObject, isString } from '@domql/utils'
|
|
4
|
+
|
|
5
|
+
export const generateHash = () => Math.random().toString(36).substring(2)
|
|
6
|
+
|
|
7
|
+
// hashing
|
|
8
|
+
export const extendStackRegistry = {}
|
|
9
|
+
export const extendCachedRegistry = {}
|
|
10
|
+
|
|
11
|
+
export const getHashedExtend = extend => {
|
|
12
|
+
return extendStackRegistry[extend.__hash]
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const setHashedExtend = (extend, stack) => {
|
|
16
|
+
const hash = generateHash()
|
|
17
|
+
if (!isString(extend)) { extend.__hash = hash }
|
|
18
|
+
extendStackRegistry[hash] = stack
|
|
19
|
+
return stack
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const getExtendStackRegistry = (extend, stack) => {
|
|
23
|
+
if (extend.__hash) { return stack.concat(getHashedExtend(extend)) }
|
|
24
|
+
return setHashedExtend(extend, stack) // stack .concat(hashedExtend)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// stacking
|
|
28
|
+
export const extractArrayExtend = (extend, stack) => {
|
|
29
|
+
extend.forEach(each => flattenExtend(each, stack))
|
|
30
|
+
return stack
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const deepExtend = (extend, stack) => {
|
|
34
|
+
const extendOflattenExtend = extend.extend
|
|
35
|
+
if (extendOflattenExtend) {
|
|
36
|
+
flattenExtend(extendOflattenExtend, stack)
|
|
37
|
+
}
|
|
38
|
+
return stack
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const flattenExtend = (extend, stack) => {
|
|
42
|
+
if (!extend) return stack
|
|
43
|
+
if (isArray(extend)) return extractArrayExtend(extend, stack)
|
|
44
|
+
stack.push(extend)
|
|
45
|
+
if (extend.extend) deepExtend(extend, stack)
|
|
46
|
+
return stack
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// merging
|
|
50
|
+
export const deepCloneExtend = obj => {
|
|
51
|
+
const o = {}
|
|
52
|
+
for (const prop in obj) {
|
|
53
|
+
if (['parent', 'node', '__element'].indexOf(prop) > -1) continue
|
|
54
|
+
const objProp = obj[prop]
|
|
55
|
+
if (isObject(objProp)) {
|
|
56
|
+
o[prop] = deepCloneExtend(objProp)
|
|
57
|
+
} else if (isArray(objProp)) {
|
|
58
|
+
o[prop] = objProp.map(x => x)
|
|
59
|
+
} else o[prop] = objProp
|
|
60
|
+
}
|
|
61
|
+
return o
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export const deepMergeExtend = (element, extend) => {
|
|
65
|
+
for (const e in extend) {
|
|
66
|
+
if (['parent', 'node', '__element'].indexOf(e) > -1) continue
|
|
67
|
+
const elementProp = element[e]
|
|
68
|
+
const extendProp = extend[e]
|
|
69
|
+
if (elementProp === undefined) {
|
|
70
|
+
element[e] = extendProp
|
|
71
|
+
} else if (isObject(elementProp) && isObject(extendProp)) {
|
|
72
|
+
deepMergeExtend(elementProp, extendProp)
|
|
73
|
+
} else if (isArray(elementProp) && isArray(extendProp)) {
|
|
74
|
+
element[e] = elementProp.concat(extendProp)
|
|
75
|
+
} else if (isArray(elementProp) && isObject(extendProp)) {
|
|
76
|
+
const obj = deepMergeExtend({}, elementProp)
|
|
77
|
+
element[e] = deepMergeExtend(obj, extendProp)
|
|
78
|
+
} else if (elementProp === undefined && isFunction(extendProp)) {
|
|
79
|
+
element[e] = extendProp
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return element
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export const cloneAndMergeArrayExtend = stack => {
|
|
86
|
+
return stack.reduce((a, c) => {
|
|
87
|
+
return deepMergeExtend(a, deepCloneExtend(c))
|
|
88
|
+
}, {})
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export const replaceStringsWithComponents = (stack, components) => {
|
|
92
|
+
return stack.map(v => {
|
|
93
|
+
if (isString(v)) return components[v]
|
|
94
|
+
else return v
|
|
95
|
+
})
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// joint stacks
|
|
99
|
+
export const jointStacks = (extendStack, childExtendStack) => {
|
|
100
|
+
return []
|
|
101
|
+
.concat(extendStack.slice(0, 1))
|
|
102
|
+
.concat(childExtendStack.slice(0, 1))
|
|
103
|
+
.concat(extendStack.slice(1))
|
|
104
|
+
.concat(childExtendStack.slice(1))
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// init
|
|
108
|
+
export const getExtendStack = extend => {
|
|
109
|
+
if (!extend) return []
|
|
110
|
+
if (extend.__hash) return getHashedExtend(extend) || []
|
|
111
|
+
const stack = flattenExtend(extend, [])
|
|
112
|
+
return getExtendStackRegistry(extend, stack)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export const getExtendMerged = extend => {
|
|
116
|
+
const stack = getExtendStack(extend)
|
|
117
|
+
return cloneAndMergeArrayExtend(stack)
|
|
118
|
+
}
|
package/utils/index.js
ADDED
package/utils/object.js
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import { isArray, isObject, isObjectLike, joinArrays } from '@domql/utils'
|
|
4
|
+
import { IGNORE_STATE_PARAMS } from '@domql/state'
|
|
5
|
+
import { IGNORE_PROPS_PARAMS } from '../props'
|
|
6
|
+
import { METHODS } from '../methods'
|
|
7
|
+
|
|
8
|
+
export const METHODS_EXL = joinArrays(
|
|
9
|
+
['node', 'state', 'context', 'extend'],
|
|
10
|
+
METHODS,
|
|
11
|
+
IGNORE_STATE_PARAMS,
|
|
12
|
+
IGNORE_PROPS_PARAMS
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
export const deepMerge = (element, extend, exclude = METHODS_EXL) => {
|
|
16
|
+
for (const e in extend) {
|
|
17
|
+
if (exclude.includes(e)) continue
|
|
18
|
+
const elementProp = element[e]
|
|
19
|
+
const extendProp = extend[e]
|
|
20
|
+
if (elementProp === undefined) {
|
|
21
|
+
element[e] = extendProp
|
|
22
|
+
} else if (isObjectLike(elementProp) && isObject(extendProp)) {
|
|
23
|
+
deepMerge(elementProp, extendProp)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return element
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const clone = (obj, exclude = METHODS_EXL) => {
|
|
30
|
+
const o = {}
|
|
31
|
+
for (const e in obj) {
|
|
32
|
+
if (exclude.includes(e)) continue
|
|
33
|
+
o[e] = obj[e]
|
|
34
|
+
}
|
|
35
|
+
return o
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Deep cloning of object
|
|
40
|
+
*/
|
|
41
|
+
export const deepClone = (obj, exclude = METHODS_EXL) => {
|
|
42
|
+
const o = isArray(obj) ? [] : {}
|
|
43
|
+
for (const e in obj) {
|
|
44
|
+
if (exclude.includes(e)) continue
|
|
45
|
+
let objProp = obj[e]
|
|
46
|
+
if (e === 'extend' && isArray(objProp)) {
|
|
47
|
+
objProp = mergeArray(objProp, exclude)
|
|
48
|
+
}
|
|
49
|
+
if (isObjectLike(objProp)) {
|
|
50
|
+
o[e] = deepClone(objProp, exclude)
|
|
51
|
+
} else o[e] = objProp
|
|
52
|
+
}
|
|
53
|
+
return o
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Overwrites object properties with another
|
|
58
|
+
*/
|
|
59
|
+
export const overwrite = (element, params, options) => {
|
|
60
|
+
const changes = {}
|
|
61
|
+
const { __ref } = element
|
|
62
|
+
const { __exec, __cached } = __ref
|
|
63
|
+
|
|
64
|
+
for (const e in params) {
|
|
65
|
+
if (e === 'props' || e === 'state' || e === '__ref') continue
|
|
66
|
+
|
|
67
|
+
const elementProp = element[e]
|
|
68
|
+
const paramsProp = params[e]
|
|
69
|
+
|
|
70
|
+
if (paramsProp !== undefined) {
|
|
71
|
+
__cached[e] = changes[e] = elementProp
|
|
72
|
+
element[e] = paramsProp
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (options.cleanExec) delete __exec[e]
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return changes
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export const overwriteShallow = (obj, params, exclude = METHODS_EXL) => {
|
|
82
|
+
for (const e in params) {
|
|
83
|
+
if (exclude.includes(e)) continue
|
|
84
|
+
obj[e] = params[e]
|
|
85
|
+
}
|
|
86
|
+
return obj
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Overwrites DEEPly object properties with another
|
|
91
|
+
*/
|
|
92
|
+
export const overwriteDeep = (obj, params, exclude = METHODS_EXL) => {
|
|
93
|
+
for (const e in params) {
|
|
94
|
+
if (exclude.includes(e)) continue
|
|
95
|
+
const objProp = obj[e]
|
|
96
|
+
const paramsProp = params[e]
|
|
97
|
+
if (isObjectLike(objProp) && isObjectLike(paramsProp)) {
|
|
98
|
+
overwriteDeep(objProp, paramsProp)
|
|
99
|
+
} else if (paramsProp !== undefined) {
|
|
100
|
+
obj[e] = paramsProp
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return obj
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Overwrites object properties with another
|
|
108
|
+
*/
|
|
109
|
+
export const mergeIfExisted = (a, b) => {
|
|
110
|
+
if (isObjectLike(a) && isObjectLike(b)) return deepMerge(a, b)
|
|
111
|
+
return a || b
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Merges array extends
|
|
116
|
+
*/
|
|
117
|
+
export const mergeArray = (arr, exclude = ['parent', 'node', '__element', 'state', 'context', '__ref']) => {
|
|
118
|
+
return arr.reduce((a, c) => deepMerge(a, deepClone(c, exclude)), {})
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Merges array extends
|
|
123
|
+
*/
|
|
124
|
+
export const mergeAndCloneIfArray = obj => {
|
|
125
|
+
return isArray(obj) ? mergeArray(obj) : deepClone(obj)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Overwrites object properties with another
|
|
130
|
+
*/
|
|
131
|
+
export const flattenRecursive = (param, prop, stack = []) => {
|
|
132
|
+
const objectized = mergeAndCloneIfArray(param)
|
|
133
|
+
stack.push(objectized)
|
|
134
|
+
|
|
135
|
+
const extendOfExtend = objectized[prop]
|
|
136
|
+
if (extendOfExtend) flattenRecursive(extendOfExtend, prop, stack)
|
|
137
|
+
|
|
138
|
+
delete objectized[prop]
|
|
139
|
+
|
|
140
|
+
return stack
|
|
141
|
+
}
|
package/dist/cjs/applyParam.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var applyParam_exports = {};
|
|
20
|
-
__export(applyParam_exports, {
|
|
21
|
-
applyParam: () => applyParam
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(applyParam_exports);
|
|
24
|
-
var import_utils = require("@domql/utils");
|
|
25
|
-
var import_mixins = require("./mixins");
|
|
26
|
-
const applyParam = (param, element, options) => {
|
|
27
|
-
const { node, context } = element;
|
|
28
|
-
const prop = element[param];
|
|
29
|
-
const DOMQLProperty = import_mixins.registry[param];
|
|
30
|
-
const DOMQLPropertyFromContext = context && context.registry && context.registry[param];
|
|
31
|
-
const isGlobalTransformer = DOMQLPropertyFromContext || DOMQLProperty;
|
|
32
|
-
const hasDefine = element.define && element.define[param];
|
|
33
|
-
const hasContextDefine = context && context.define && context.define[param];
|
|
34
|
-
if (isGlobalTransformer && !hasContextDefine) {
|
|
35
|
-
if ((0, import_utils.isFunction)(isGlobalTransformer)) {
|
|
36
|
-
isGlobalTransformer(prop, element, node, options);
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return { hasDefine, hasContextDefine };
|
|
41
|
-
};
|
package/dist/cjs/create.js
DELETED
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var create_exports = {};
|
|
30
|
-
__export(create_exports, {
|
|
31
|
-
default: () => create_default
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(create_exports);
|
|
34
|
-
var import_utils = require("@domql/utils");
|
|
35
|
-
var import_tree = require("./tree");
|
|
36
|
-
var import_registry = require("@domql/registry");
|
|
37
|
-
var import_event = require("@domql/event");
|
|
38
|
-
var import_render = require("@domql/render");
|
|
39
|
-
var import_classlist = require("@domql/classlist");
|
|
40
|
-
var import_node = require("@domql/node");
|
|
41
|
-
var import_state = require("@domql/state");
|
|
42
|
-
var import_methods = require("./methods");
|
|
43
|
-
var import_props = require("./props");
|
|
44
|
-
var import_node2 = __toESM(require("./node"), 1);
|
|
45
|
-
var import_extend = require("./extend");
|
|
46
|
-
var import_mixins = require("./mixins");
|
|
47
|
-
var import_iterate = require("./iterate");
|
|
48
|
-
var import_options = __toESM(require("./cache/options"), 1);
|
|
49
|
-
var import_component = require("./utils/component");
|
|
50
|
-
var import_set = require("./methods/set");
|
|
51
|
-
const ENV = "development";
|
|
52
|
-
const create = (element, parent, key, options = import_options.default.create || {}) => {
|
|
53
|
-
if (options && !import_options.default.create) {
|
|
54
|
-
import_options.default.create = options;
|
|
55
|
-
import_options.default.create.context = element.context || options.context;
|
|
56
|
-
}
|
|
57
|
-
if (element === void 0) {
|
|
58
|
-
if (ENV === "test" || ENV === "development") {
|
|
59
|
-
console.warn(key, "element is undefined in", parent && parent.__ref && parent.__ref.path);
|
|
60
|
-
}
|
|
61
|
-
element = {};
|
|
62
|
-
}
|
|
63
|
-
if ((0, import_utils.isString)(key) && key.slice(0, 2 === "__")) {
|
|
64
|
-
if (ENV === "test" || ENV === "development") {
|
|
65
|
-
console.warn(key, "seems like to be in __ref");
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (element === null)
|
|
69
|
-
return;
|
|
70
|
-
if (element === true)
|
|
71
|
-
element = { text: true };
|
|
72
|
-
if (element.__hash) {
|
|
73
|
-
element = { extend: element };
|
|
74
|
-
}
|
|
75
|
-
if (!parent)
|
|
76
|
-
parent = import_tree.ROOT;
|
|
77
|
-
if ((0, import_utils.isNode)(parent)) {
|
|
78
|
-
parent = import_tree.ROOT[`${key}_parent`] = { key: ":root", node: parent };
|
|
79
|
-
}
|
|
80
|
-
if (checkIfPrimitive(element)) {
|
|
81
|
-
element = applyValueAsText(element, parent, key);
|
|
82
|
-
}
|
|
83
|
-
const assignedKey = (element.key || key || (0, import_utils.createKey)()).toString();
|
|
84
|
-
if ((0, import_component.checkIfKeyIsComponent)(assignedKey)) {
|
|
85
|
-
element = (0, import_component.applyKeyComponentAsExtend)(element, parent, assignedKey);
|
|
86
|
-
}
|
|
87
|
-
if (checkIfMedia(assignedKey)) {
|
|
88
|
-
element = applyMediaProps(element, parent, assignedKey);
|
|
89
|
-
}
|
|
90
|
-
if (element.__ref)
|
|
91
|
-
element.__ref.origin = element;
|
|
92
|
-
else
|
|
93
|
-
element.__ref = { origin: element };
|
|
94
|
-
const __ref = element.__ref;
|
|
95
|
-
applyContext(element, parent, options);
|
|
96
|
-
const { context } = element;
|
|
97
|
-
if (context && context.components) {
|
|
98
|
-
(0, import_component.applyComponentFromContext)(element, parent, options);
|
|
99
|
-
}
|
|
100
|
-
(0, import_extend.applyExtend)(element, parent, options);
|
|
101
|
-
element.key = assignedKey;
|
|
102
|
-
if (options.onlyResolveExtends) {
|
|
103
|
-
return resolveExtends(element, parent, options);
|
|
104
|
-
}
|
|
105
|
-
if (Object.keys(options).length) {
|
|
106
|
-
import_mixins.registry.defaultOptions = options;
|
|
107
|
-
if (options.ignoreChildExtend)
|
|
108
|
-
delete options.ignoreChildExtend;
|
|
109
|
-
}
|
|
110
|
-
addCaching(element, parent);
|
|
111
|
-
(0, import_set.addMethods)(element, parent);
|
|
112
|
-
element.state = (0, import_state.createState)(element, parent);
|
|
113
|
-
checkIf(element, parent);
|
|
114
|
-
if (element.node && __ref.__if) {
|
|
115
|
-
return (0, import_render.assignNode)(element, parent, assignedKey);
|
|
116
|
-
}
|
|
117
|
-
if (__ref.__if)
|
|
118
|
-
(0, import_props.createProps)(element, parent);
|
|
119
|
-
(0, import_component.applyVariant)(element, parent);
|
|
120
|
-
const initReturns = (0, import_event.triggerEventOn)("init", element, options);
|
|
121
|
-
if (initReturns === false)
|
|
122
|
-
return element;
|
|
123
|
-
(0, import_event.triggerEventOn)("beforeClassAssign", element, options);
|
|
124
|
-
(0, import_classlist.assignClass)(element);
|
|
125
|
-
renderElement(element, parent, options);
|
|
126
|
-
if (parent.__ref && parent.__ref.__children)
|
|
127
|
-
parent.__ref.__children.push(element.key);
|
|
128
|
-
(0, import_event.triggerEventOn)("complete", element, options);
|
|
129
|
-
return element;
|
|
130
|
-
};
|
|
131
|
-
const renderElement = (element, parent, options) => {
|
|
132
|
-
const { __ref: ref, key } = element;
|
|
133
|
-
(0, import_node2.default)(element, options);
|
|
134
|
-
if (!ref.__if)
|
|
135
|
-
return element;
|
|
136
|
-
(0, import_render.assignNode)(element, parent, key);
|
|
137
|
-
(0, import_event.triggerEventOn)("renderRouter", element, options);
|
|
138
|
-
(0, import_event.triggerEventOn)("render", element, options);
|
|
139
|
-
};
|
|
140
|
-
const checkIfPrimitive = (element) => {
|
|
141
|
-
return (0, import_utils.is)(element)("string", "number");
|
|
142
|
-
};
|
|
143
|
-
const applyValueAsText = (element, parent, key) => {
|
|
144
|
-
const extendTag = element.extend && element.extend.tag;
|
|
145
|
-
const childExtendTag = parent.childExtend && parent.childExtend.tag;
|
|
146
|
-
const isKeyValidHTMLTag = import_registry.TAGS.body.indexOf(key) > -1 && key;
|
|
147
|
-
return {
|
|
148
|
-
text: element,
|
|
149
|
-
tag: extendTag || childExtendTag || isKeyValidHTMLTag || "string"
|
|
150
|
-
};
|
|
151
|
-
};
|
|
152
|
-
const applyContext = (element, parent, options) => {
|
|
153
|
-
if (options.context && !import_tree.ROOT.context && !element.context)
|
|
154
|
-
import_tree.ROOT.context = options.context;
|
|
155
|
-
if (!element.context)
|
|
156
|
-
element.context = parent.context || options.context || import_tree.ROOT.context;
|
|
157
|
-
};
|
|
158
|
-
const checkIf = (element, parent) => {
|
|
159
|
-
const { __ref: ref } = element;
|
|
160
|
-
if ((0, import_utils.isFunction)(element.if)) {
|
|
161
|
-
const ifPassed = element.if(element, element.state);
|
|
162
|
-
if (!ifPassed) {
|
|
163
|
-
const ifFragment = (0, import_node.cacheNode)({ tag: "fragment" });
|
|
164
|
-
ref.__ifFragment = (0, import_render.appendNode)(ifFragment, parent.node);
|
|
165
|
-
delete ref.__if;
|
|
166
|
-
} else
|
|
167
|
-
ref.__if = true;
|
|
168
|
-
} else
|
|
169
|
-
ref.__if = true;
|
|
170
|
-
};
|
|
171
|
-
const addCaching = (element, parent) => {
|
|
172
|
-
const { __ref: ref } = element;
|
|
173
|
-
let { __ref: parentRef } = parent;
|
|
174
|
-
if (!element.transform)
|
|
175
|
-
element.transform = {};
|
|
176
|
-
if (!ref.__cached)
|
|
177
|
-
ref.__cached = {};
|
|
178
|
-
if (!ref.__defineCache)
|
|
179
|
-
ref.__defineCache = {};
|
|
180
|
-
if (!ref.__exec)
|
|
181
|
-
ref.__exec = {};
|
|
182
|
-
if (!ref.__class)
|
|
183
|
-
ref.__class = {};
|
|
184
|
-
if (!ref.__classNames)
|
|
185
|
-
ref.__classNames = {};
|
|
186
|
-
if (!ref.__attr)
|
|
187
|
-
ref.__attr = {};
|
|
188
|
-
if (!ref.__changes)
|
|
189
|
-
ref.__changes = [];
|
|
190
|
-
if (!ref.__children)
|
|
191
|
-
ref.__children = [];
|
|
192
|
-
const hasRoot = parent && parent.key === ":root";
|
|
193
|
-
if (!ref.__root)
|
|
194
|
-
ref.__root = hasRoot ? element : parentRef.__root;
|
|
195
|
-
if (ENV === "test" || ENV === "development") {
|
|
196
|
-
if (!parentRef)
|
|
197
|
-
parentRef = parent.ref = {};
|
|
198
|
-
if (!parentRef.__path)
|
|
199
|
-
parentRef.__path = [];
|
|
200
|
-
ref.__path = parentRef.__path.concat(element.key);
|
|
201
|
-
}
|
|
202
|
-
};
|
|
203
|
-
const resolveExtends = (element, parent, options) => {
|
|
204
|
-
const { __ref } = element;
|
|
205
|
-
element.tag = (0, import_node.detectTag)(element);
|
|
206
|
-
if (!__ref.__exec)
|
|
207
|
-
__ref.__exec = {};
|
|
208
|
-
if (!__ref.__attr)
|
|
209
|
-
__ref.__attr = {};
|
|
210
|
-
if (!element.props)
|
|
211
|
-
element.props = {};
|
|
212
|
-
if (!element.state)
|
|
213
|
-
element.state = {};
|
|
214
|
-
(0, import_state.createState)(element, parent, { skipApplyMethods: true });
|
|
215
|
-
(0, import_props.createProps)(element, parent);
|
|
216
|
-
(0, import_component.applyVariant)(element, parent);
|
|
217
|
-
(0, import_iterate.throughInitialExec)(element, options.propsExcludedFromExec);
|
|
218
|
-
for (const param in element) {
|
|
219
|
-
const prop = element[param];
|
|
220
|
-
if ((0, import_utils.isUndefined)(prop) || (0, import_methods.isMethod)(param) || (0, import_utils.isObject)(import_mixins.registry[param]) || (0, import_component.isVariant)(param))
|
|
221
|
-
continue;
|
|
222
|
-
const hasDefined = element.define && element.define[param];
|
|
223
|
-
const ourParam = import_mixins.registry[param];
|
|
224
|
-
const hasOptionsDefine = options.define && options.define[param];
|
|
225
|
-
if (ourParam && !hasOptionsDefine)
|
|
226
|
-
continue;
|
|
227
|
-
else if (element[param] && !hasDefined && !hasOptionsDefine) {
|
|
228
|
-
create((0, import_utils.exec)(prop, element), element, param, options);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
delete element.parent;
|
|
232
|
-
delete element.update;
|
|
233
|
-
delete element.__element;
|
|
234
|
-
delete element.props.update;
|
|
235
|
-
delete element.props.__element;
|
|
236
|
-
delete element.state.__element;
|
|
237
|
-
delete element.state.__element;
|
|
238
|
-
if (!options.keepRef)
|
|
239
|
-
delete element.__ref;
|
|
240
|
-
return element;
|
|
241
|
-
};
|
|
242
|
-
const checkIfMedia = (key) => key.slice(0, 1) === "@";
|
|
243
|
-
const applyMediaProps = (element, parent, key) => {
|
|
244
|
-
const { props } = element;
|
|
245
|
-
if (props) {
|
|
246
|
-
props.display = "none";
|
|
247
|
-
if (props[key])
|
|
248
|
-
props[key].display = props.display;
|
|
249
|
-
else
|
|
250
|
-
props[key] = { display: props.display || "block" };
|
|
251
|
-
return element;
|
|
252
|
-
} else {
|
|
253
|
-
return {
|
|
254
|
-
...element,
|
|
255
|
-
props: {
|
|
256
|
-
display: "none",
|
|
257
|
-
[key]: { display: "block" }
|
|
258
|
-
}
|
|
259
|
-
};
|
|
260
|
-
}
|
|
261
|
-
};
|
|
262
|
-
var create_default = create;
|