@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.
Files changed (61) hide show
  1. package/cache/index.js +3 -0
  2. package/cache/options.js +3 -0
  3. package/dist/cjs/cache/index.js +24 -0
  4. package/dist/cjs/cache/options.js +24 -0
  5. package/dist/cjs/methods/index.js +186 -0
  6. package/dist/cjs/{set.js → methods/set.js} +24 -24
  7. package/dist/cjs/methods/v2.js +109 -0
  8. package/dist/cjs/mixins/attr.js +42 -0
  9. package/dist/cjs/mixins/classList.js +73 -0
  10. package/dist/cjs/mixins/content.js +75 -0
  11. package/dist/cjs/{define.js → mixins/data.js} +14 -12
  12. package/dist/cjs/mixins/html.js +35 -0
  13. package/dist/cjs/{index.js → mixins/index.js} +23 -15
  14. package/dist/cjs/mixins/registry.js +89 -0
  15. package/dist/cjs/mixins/state.js +40 -0
  16. package/dist/cjs/{tree.js → mixins/style.js} +11 -9
  17. package/dist/cjs/mixins/text.js +60 -0
  18. package/dist/cjs/props/create.js +77 -0
  19. package/dist/cjs/props/ignore.js +24 -0
  20. package/dist/cjs/props/index.js +21 -0
  21. package/dist/cjs/props/inherit.js +52 -0
  22. package/dist/cjs/props/update.js +37 -0
  23. package/dist/cjs/test/create.test.js +51 -0
  24. package/dist/cjs/test/set.test.js +9 -0
  25. package/dist/cjs/test/update.test.js +8 -0
  26. package/dist/cjs/utils/component.js +133 -0
  27. package/dist/cjs/utils/extendUtils.js +144 -0
  28. package/dist/cjs/utils/index.js +20 -0
  29. package/dist/cjs/utils/object.js +142 -0
  30. package/methods/index.js +165 -0
  31. package/methods/set.js +41 -0
  32. package/methods/v2.js +82 -0
  33. package/mixins/attr.js +23 -0
  34. package/mixins/classList.js +48 -0
  35. package/mixins/content.js +47 -0
  36. package/mixins/data.js +21 -0
  37. package/mixins/html.js +20 -0
  38. package/mixins/index.js +23 -0
  39. package/mixins/registry.js +66 -0
  40. package/mixins/state.js +20 -0
  41. package/mixins/style.js +14 -0
  42. package/mixins/text.js +41 -0
  43. package/package.json +5 -4
  44. package/props/create.js +60 -0
  45. package/props/ignore.js +3 -0
  46. package/props/index.js +6 -0
  47. package/props/inherit.js +34 -0
  48. package/props/update.js +17 -0
  49. package/test/create.test.js +61 -0
  50. package/test/set.test.js +13 -0
  51. package/test/update.test.js +13 -0
  52. package/utils/component.js +112 -0
  53. package/utils/extendUtils.js +118 -0
  54. package/utils/index.js +5 -0
  55. package/utils/object.js +141 -0
  56. package/dist/cjs/applyParam.js +0 -41
  57. package/dist/cjs/create.js +0 -262
  58. package/dist/cjs/extend.js +0 -87
  59. package/dist/cjs/iterate.js +0 -108
  60. package/dist/cjs/node.js +0 -85
  61. 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
@@ -0,0 +1,5 @@
1
+ 'use strict'
2
+
3
+ export * from './object'
4
+ export * from './extendUtils'
5
+ export * from './component'
@@ -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
+ }
@@ -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
- };
@@ -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;