@domql/element 2.5.6 → 2.5.9
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/create.js +81 -31
- package/dist/cjs/create.js +53 -22
- package/dist/cjs/extend.js +3 -18
- package/dist/cjs/mixins/registry.js +1 -0
- package/dist/cjs/onlyResolveExtends.js +100 -0
- package/dist/cjs/utils/extendUtils.js +34 -7
- package/extend.js +12 -21
- package/mixins/registry.js +1 -0
- package/onlyResolveExtends.js +116 -0
- package/package.json +2 -2
- package/utils/extendUtils.js +35 -5
package/create.js
CHANGED
|
@@ -13,7 +13,7 @@ import { applyExtend } from './extend'
|
|
|
13
13
|
import { registry } from './mixins'
|
|
14
14
|
import { addMethods } from './methods/set'
|
|
15
15
|
import { assignKeyAsClassname } from './mixins/classList'
|
|
16
|
-
import { throughInitialExec } from './iterate'
|
|
16
|
+
import { throughInitialExec, throughInitialDefine } from './iterate'
|
|
17
17
|
|
|
18
18
|
import {
|
|
19
19
|
isObject,
|
|
@@ -289,49 +289,99 @@ const onlyResolveExtends = (element, parent, key, options) => {
|
|
|
289
289
|
const { __ref } = element
|
|
290
290
|
element.tag = detectTag(element)
|
|
291
291
|
|
|
292
|
-
if (!
|
|
293
|
-
if (!__ref.__attr) __ref.__attr = {}
|
|
292
|
+
// if (!element.props) element.props = {}
|
|
294
293
|
|
|
295
|
-
|
|
294
|
+
// Copy-paste of addCaching()
|
|
295
|
+
{
|
|
296
|
+
const { __ref: ref } = element
|
|
297
|
+
const { __ref: parentRef } = parent // eslint-disable-line
|
|
298
|
+
|
|
299
|
+
// enable TRANSFORM in data
|
|
300
|
+
// TODO: do we need this at all?
|
|
301
|
+
// if (!element.transform) element.transform = {}
|
|
302
|
+
|
|
303
|
+
// enable CACHING
|
|
304
|
+
if (!ref.__cached) ref.__cached = {}
|
|
305
|
+
if (!ref.__defineCache) ref.__defineCache = {}
|
|
306
|
+
|
|
307
|
+
// enable EXEC
|
|
308
|
+
if (!ref.__exec) ref.__exec = {}
|
|
309
|
+
|
|
310
|
+
// enable CLASS CACHING
|
|
311
|
+
if (!ref.__class) ref.__class = {}
|
|
312
|
+
if (!ref.__classNames) ref.__classNames = {}
|
|
313
|
+
|
|
314
|
+
// enable CLASS CACHING
|
|
315
|
+
if (!ref.__attr) ref.__attr = {}
|
|
316
|
+
|
|
317
|
+
// enable CHANGES storing
|
|
318
|
+
if (!ref.__changes) ref.__changes = []
|
|
319
|
+
|
|
320
|
+
// enable CHANGES storing
|
|
321
|
+
if (!ref.__children) ref.__children = []
|
|
322
|
+
|
|
323
|
+
// Add __root element property
|
|
324
|
+
// const hasRoot = parent && parent.key === ':root'
|
|
325
|
+
// if (!ref.__root) ref.__root = hasRoot ? element : parentRef.__root
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
addMethods(element, parent)
|
|
329
|
+
|
|
330
|
+
createState(element, parent)
|
|
331
|
+
|
|
332
|
+
// Borrowed from createIfConditionFlag()
|
|
333
|
+
const ref = __ref
|
|
334
|
+
if (isFunction(element.if)) {
|
|
335
|
+
const ifPassed = element.if(element, element.state)
|
|
336
|
+
if (!ifPassed) {
|
|
337
|
+
// const ifFragment = cacheNode({ tag: 'fragment' })
|
|
338
|
+
// ref.__ifFragment = appendNode(ifFragment, parent.node)
|
|
339
|
+
delete ref.__if
|
|
340
|
+
} else ref.__if = true
|
|
341
|
+
} else ref.__if = true
|
|
342
|
+
/// ///
|
|
343
|
+
|
|
344
|
+
if (element.node && ref.__if) { parent[key || element.key] = element } // Borrowed from assignNode()
|
|
296
345
|
|
|
297
|
-
createState(element, parent, { skipApplyMethods: true, ...options })
|
|
298
346
|
createProps(element, parent)
|
|
347
|
+
if (!element.props) element.props = {}
|
|
299
348
|
applyVariant(element, parent)
|
|
300
349
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
350
|
+
if (element.tag !== 'string' && element.tag !== 'fragment') {
|
|
351
|
+
throughInitialDefine(element)
|
|
352
|
+
throughInitialExec(element)
|
|
353
|
+
|
|
354
|
+
for (const k in element) {
|
|
355
|
+
if (
|
|
356
|
+
isUndefined(element[k]) ||
|
|
357
|
+
isMethod(k) ||
|
|
358
|
+
isObject(registry[k]) ||
|
|
359
|
+
isVariant(k)
|
|
360
|
+
) continue
|
|
361
|
+
|
|
362
|
+
const hasDefine = element.define && element.define[k]
|
|
363
|
+
const contextHasDefine = element.context && element.context.define &&
|
|
364
|
+
element.context.define[k]
|
|
365
|
+
const optionsHasDefine = options.define && options.define[k]
|
|
366
|
+
|
|
367
|
+
if (registry[k] && !optionsHasDefine) {
|
|
368
|
+
continue
|
|
369
|
+
} else if (element[k] && !hasDefine && !optionsHasDefine && !contextHasDefine) {
|
|
370
|
+
create(exec(element[k], element), element, k, options)
|
|
371
|
+
}
|
|
321
372
|
}
|
|
322
373
|
}
|
|
323
374
|
|
|
324
|
-
parent[key || element.key] = element
|
|
375
|
+
parent[key || element.key] = element // Borrowed from assignNode()
|
|
325
376
|
|
|
326
377
|
delete element.update
|
|
327
378
|
delete element.__element
|
|
328
379
|
|
|
329
380
|
// added by createProps
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
if (!options.keepRef) delete element.__ref
|
|
381
|
+
if (element.props) {
|
|
382
|
+
delete element.props.update
|
|
383
|
+
delete element.props.__element
|
|
384
|
+
}
|
|
335
385
|
|
|
336
386
|
return element
|
|
337
387
|
}
|
package/dist/cjs/create.js
CHANGED
|
@@ -228,36 +228,67 @@ const addCaching = (element, parent) => {
|
|
|
228
228
|
const onlyResolveExtends = (element, parent, key, options) => {
|
|
229
229
|
const { __ref } = element;
|
|
230
230
|
element.tag = (0, import_render.detectTag)(element);
|
|
231
|
-
|
|
232
|
-
__ref
|
|
233
|
-
|
|
234
|
-
|
|
231
|
+
{
|
|
232
|
+
const { __ref: ref2 } = element;
|
|
233
|
+
const { __ref: parentRef } = parent;
|
|
234
|
+
if (!ref2.__cached)
|
|
235
|
+
ref2.__cached = {};
|
|
236
|
+
if (!ref2.__defineCache)
|
|
237
|
+
ref2.__defineCache = {};
|
|
238
|
+
if (!ref2.__exec)
|
|
239
|
+
ref2.__exec = {};
|
|
240
|
+
if (!ref2.__class)
|
|
241
|
+
ref2.__class = {};
|
|
242
|
+
if (!ref2.__classNames)
|
|
243
|
+
ref2.__classNames = {};
|
|
244
|
+
if (!ref2.__attr)
|
|
245
|
+
ref2.__attr = {};
|
|
246
|
+
if (!ref2.__changes)
|
|
247
|
+
ref2.__changes = [];
|
|
248
|
+
if (!ref2.__children)
|
|
249
|
+
ref2.__children = [];
|
|
250
|
+
}
|
|
251
|
+
(0, import_set.addMethods)(element, parent);
|
|
252
|
+
(0, import_state.createState)(element, parent);
|
|
253
|
+
const ref = __ref;
|
|
254
|
+
if ((0, import_utils.isFunction)(element.if)) {
|
|
255
|
+
const ifPassed = element.if(element, element.state);
|
|
256
|
+
if (!ifPassed) {
|
|
257
|
+
delete ref.__if;
|
|
258
|
+
} else
|
|
259
|
+
ref.__if = true;
|
|
260
|
+
} else
|
|
261
|
+
ref.__if = true;
|
|
262
|
+
if (element.node && ref.__if) {
|
|
263
|
+
parent[key || element.key] = element;
|
|
264
|
+
}
|
|
265
|
+
(0, import_props.createProps)(element, parent);
|
|
235
266
|
if (!element.props)
|
|
236
267
|
element.props = {};
|
|
237
|
-
(0, import_state.createState)(element, parent, { skipApplyMethods: true, ...options });
|
|
238
|
-
(0, import_props.createProps)(element, parent);
|
|
239
268
|
(0, import_component.applyVariant)(element, parent);
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
269
|
+
if (element.tag !== "string" && element.tag !== "fragment") {
|
|
270
|
+
(0, import_iterate.throughInitialDefine)(element);
|
|
271
|
+
(0, import_iterate.throughInitialExec)(element);
|
|
272
|
+
for (const k in element) {
|
|
273
|
+
if ((0, import_utils.isUndefined)(element[k]) || (0, import_methods.isMethod)(k) || (0, import_utils.isObject)(import_mixins.registry[k]) || (0, import_component.isVariant)(k))
|
|
274
|
+
continue;
|
|
275
|
+
const hasDefine = element.define && element.define[k];
|
|
276
|
+
const contextHasDefine = element.context && element.context.define && element.context.define[k];
|
|
277
|
+
const optionsHasDefine = options.define && options.define[k];
|
|
278
|
+
if (import_mixins.registry[k] && !optionsHasDefine) {
|
|
279
|
+
continue;
|
|
280
|
+
} else if (element[k] && !hasDefine && !optionsHasDefine && !contextHasDefine) {
|
|
281
|
+
create((0, import_utils.exec)(element[k], element), element, k, options);
|
|
282
|
+
}
|
|
252
283
|
}
|
|
253
284
|
}
|
|
254
285
|
parent[key || element.key] = element;
|
|
255
286
|
delete element.update;
|
|
256
287
|
delete element.__element;
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
288
|
+
if (element.props) {
|
|
289
|
+
delete element.props.update;
|
|
290
|
+
delete element.props.__element;
|
|
291
|
+
}
|
|
261
292
|
return element;
|
|
262
293
|
};
|
|
263
294
|
const checkIfMedia = (key) => key.slice(0, 1) === "@";
|
package/dist/cjs/extend.js
CHANGED
|
@@ -28,17 +28,7 @@ const applyExtend = (element, parent, options = {}) => {
|
|
|
28
28
|
if ((0, import_utils.isFunction)(element))
|
|
29
29
|
element = (0, import_utils.exec)(element, parent);
|
|
30
30
|
let { extend, props, context, __ref } = element;
|
|
31
|
-
|
|
32
|
-
if ((0, import_utils.isString)(extend)) {
|
|
33
|
-
if (COMPONENTS && COMPONENTS[extend]) {
|
|
34
|
-
extend = COMPONENTS[extend];
|
|
35
|
-
} else {
|
|
36
|
-
if (ENV !== "test" || ENV !== "development") {
|
|
37
|
-
console.warn("Extend is string but component was not found:", extend);
|
|
38
|
-
}
|
|
39
|
-
extend = {};
|
|
40
|
-
}
|
|
41
|
-
}
|
|
31
|
+
extend = (0, import_utils2.fallbackStringExtend)(extend, context, options);
|
|
42
32
|
const extendStack = (0, import_utils2.getExtendStack)(extend);
|
|
43
33
|
if (ENV !== "test" || ENV !== "development")
|
|
44
34
|
delete element.extend;
|
|
@@ -77,12 +67,7 @@ const applyExtend = (element, parent, options = {}) => {
|
|
|
77
67
|
}
|
|
78
68
|
if (__ref)
|
|
79
69
|
__ref.__extend = stack;
|
|
80
|
-
const findAndReplaceStrings = (0, import_utils2.replaceStringsWithComponents)(stack,
|
|
81
|
-
|
|
82
|
-
const component = (0, import_utils.exec)(element.component || mergedExtend.component, element);
|
|
83
|
-
if (component && COMPONENTS && COMPONENTS[component]) {
|
|
84
|
-
const componentExtend = (0, import_utils2.cloneAndMergeArrayExtend)((0, import_utils2.getExtendStack)(COMPONENTS[component]));
|
|
85
|
-
mergedExtend = (0, import_utils2.deepMergeExtend)(componentExtend, mergedExtend);
|
|
86
|
-
}
|
|
70
|
+
const findAndReplaceStrings = (0, import_utils2.replaceStringsWithComponents)(stack, context, options);
|
|
71
|
+
const mergedExtend = (0, import_utils2.cloneAndMergeArrayExtend)(findAndReplaceStrings);
|
|
87
72
|
return (0, import_utils2.deepMergeExtend)(element, mergedExtend);
|
|
88
73
|
};
|
|
@@ -0,0 +1,100 @@
|
|
|
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 onlyResolveExtends_exports = {};
|
|
20
|
+
__export(onlyResolveExtends_exports, {
|
|
21
|
+
onlyResolveExtends: () => onlyResolveExtends
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(onlyResolveExtends_exports);
|
|
24
|
+
var import_utils = require("@domql/utils");
|
|
25
|
+
var import__ = require(".");
|
|
26
|
+
var import_mixins = require("./mixins");
|
|
27
|
+
var import_utils2 = require("./utils");
|
|
28
|
+
var import_methods = require("./methods");
|
|
29
|
+
var import_set = require("./methods/set");
|
|
30
|
+
var import_state = require("@domql/state");
|
|
31
|
+
var import_render = require("@domql/render");
|
|
32
|
+
var import_props = require("./props");
|
|
33
|
+
var import_iterate = require("./iterate");
|
|
34
|
+
const onlyResolveExtends = (element, parent, key, options) => {
|
|
35
|
+
const { __ref } = element;
|
|
36
|
+
element.tag = (0, import_render.detectTag)(element);
|
|
37
|
+
{
|
|
38
|
+
const { __ref: ref2 } = element;
|
|
39
|
+
const { __ref: parentRef } = parent;
|
|
40
|
+
if (!ref2.__cached)
|
|
41
|
+
ref2.__cached = {};
|
|
42
|
+
if (!ref2.__defineCache)
|
|
43
|
+
ref2.__defineCache = {};
|
|
44
|
+
if (!ref2.__exec)
|
|
45
|
+
ref2.__exec = {};
|
|
46
|
+
if (!ref2.__class)
|
|
47
|
+
ref2.__class = {};
|
|
48
|
+
if (!ref2.__classNames)
|
|
49
|
+
ref2.__classNames = {};
|
|
50
|
+
if (!ref2.__attr)
|
|
51
|
+
ref2.__attr = {};
|
|
52
|
+
if (!ref2.__changes)
|
|
53
|
+
ref2.__changes = [];
|
|
54
|
+
if (!ref2.__children)
|
|
55
|
+
ref2.__children = [];
|
|
56
|
+
}
|
|
57
|
+
(0, import_set.addMethods)(element, parent);
|
|
58
|
+
(0, import_state.createState)(element, parent);
|
|
59
|
+
const ref = __ref;
|
|
60
|
+
if ((0, import_utils.isFunction)(element.if)) {
|
|
61
|
+
const ifPassed = element.if(element, element.state);
|
|
62
|
+
if (!ifPassed) {
|
|
63
|
+
delete ref.__if;
|
|
64
|
+
} else
|
|
65
|
+
ref.__if = true;
|
|
66
|
+
} else
|
|
67
|
+
ref.__if = true;
|
|
68
|
+
if (element.node && ref.__if) {
|
|
69
|
+
parent[key || element.key] = element;
|
|
70
|
+
}
|
|
71
|
+
(0, import_props.createProps)(element, parent);
|
|
72
|
+
(0, import_utils2.applyVariant)(element, parent);
|
|
73
|
+
if (element.tag !== "string" && element.tag !== "fragment") {
|
|
74
|
+
(0, import_iterate.throughInitialDefine)(element);
|
|
75
|
+
(0, import_iterate.throughInitialExec)(element);
|
|
76
|
+
for (const param in element) {
|
|
77
|
+
const prop = element[param];
|
|
78
|
+
if ((0, import_utils.isUndefined)(prop) || (0, import_methods.isMethod)(param) || (0, import_utils.isObject)(import_mixins.registry[param]) || (0, import_utils2.isVariant)(param))
|
|
79
|
+
continue;
|
|
80
|
+
const hasDefine = element.define && element.define[param];
|
|
81
|
+
const contextHasDefine = element.context && element.context.define && element.context.define[param];
|
|
82
|
+
const optionsHasDefine = options.define && options.define[param];
|
|
83
|
+
if (import_mixins.registry[param] && !optionsHasDefine) {
|
|
84
|
+
continue;
|
|
85
|
+
} else if (element[param] && !hasDefine && !optionsHasDefine && !contextHasDefine) {
|
|
86
|
+
(0, import__.create)((0, import_utils.exec)(prop, element), element, param, options);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
parent[key || element.key] = element;
|
|
91
|
+
delete element.update;
|
|
92
|
+
delete element.__element;
|
|
93
|
+
if (element.props) {
|
|
94
|
+
delete element.props.update;
|
|
95
|
+
delete element.props.__element;
|
|
96
|
+
}
|
|
97
|
+
if (!options.keepRef)
|
|
98
|
+
delete element.__ref;
|
|
99
|
+
return element;
|
|
100
|
+
};
|
|
@@ -25,6 +25,7 @@ __export(extendUtils_exports, {
|
|
|
25
25
|
extendCachedRegistry: () => extendCachedRegistry,
|
|
26
26
|
extendStackRegistry: () => extendStackRegistry,
|
|
27
27
|
extractArrayExtend: () => extractArrayExtend,
|
|
28
|
+
fallbackStringExtend: () => fallbackStringExtend,
|
|
28
29
|
flattenExtend: () => flattenExtend,
|
|
29
30
|
generateHash: () => generateHash,
|
|
30
31
|
getExtendMerged: () => getExtendMerged,
|
|
@@ -37,6 +38,7 @@ __export(extendUtils_exports, {
|
|
|
37
38
|
});
|
|
38
39
|
module.exports = __toCommonJS(extendUtils_exports);
|
|
39
40
|
var import_utils = require("@domql/utils");
|
|
41
|
+
const ENV = "development";
|
|
40
42
|
const generateHash = () => Math.random().toString(36).substring(2);
|
|
41
43
|
const extendStackRegistry = {};
|
|
42
44
|
const extendCachedRegistry = {};
|
|
@@ -119,13 +121,21 @@ const cloneAndMergeArrayExtend = (stack) => {
|
|
|
119
121
|
return deepMergeExtend(a, deepCloneExtend(c));
|
|
120
122
|
}, {});
|
|
121
123
|
};
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
124
|
+
const fallbackStringExtend = (extend, context, options) => {
|
|
125
|
+
const COMPONENTS = context && context.components || options.components;
|
|
126
|
+
if ((0, import_utils.isString)(extend)) {
|
|
127
|
+
console.log("extend", extend);
|
|
128
|
+
console.log(COMPONENTS[extend]);
|
|
129
|
+
if (COMPONENTS && COMPONENTS[extend]) {
|
|
130
|
+
return COMPONENTS[extend];
|
|
131
|
+
} else {
|
|
132
|
+
if (ENV !== "test" || ENV !== "development") {
|
|
133
|
+
console.warn("Extend is string but component was not found:", extend);
|
|
134
|
+
}
|
|
135
|
+
return {};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return extend;
|
|
129
139
|
};
|
|
130
140
|
const jointStacks = (extendStack, childExtendStack) => {
|
|
131
141
|
return [].concat(extendStack.slice(0, 1)).concat(childExtendStack.slice(0, 1)).concat(extendStack.slice(1)).concat(childExtendStack.slice(1));
|
|
@@ -142,3 +152,20 @@ const getExtendMerged = (extend) => {
|
|
|
142
152
|
const stack = getExtendStack(extend);
|
|
143
153
|
return cloneAndMergeArrayExtend(stack);
|
|
144
154
|
};
|
|
155
|
+
const replaceStringsWithComponents = (stack, context, options) => {
|
|
156
|
+
const COMPONENTS = context && context.components || options.components;
|
|
157
|
+
return stack.map((v) => {
|
|
158
|
+
if ((0, import_utils.isString)(v)) {
|
|
159
|
+
const component = COMPONENTS[v];
|
|
160
|
+
console.warn("v", v);
|
|
161
|
+
console.log(COMPONENTS[v]);
|
|
162
|
+
console.warn("component", component);
|
|
163
|
+
return component;
|
|
164
|
+
}
|
|
165
|
+
if ((0, import_utils.isString)(v.extend)) {
|
|
166
|
+
v.extend = COMPONENTS[v.extend];
|
|
167
|
+
return { ...getExtendMerged(v.extend), ...v };
|
|
168
|
+
}
|
|
169
|
+
return v;
|
|
170
|
+
});
|
|
171
|
+
};
|
package/extend.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
import { isFunction, exec
|
|
3
|
+
import { isFunction, exec } from '@domql/utils'
|
|
4
4
|
import {
|
|
5
5
|
getExtendStack,
|
|
6
6
|
jointStacks,
|
|
7
7
|
cloneAndMergeArrayExtend,
|
|
8
8
|
deepMergeExtend,
|
|
9
|
-
replaceStringsWithComponents
|
|
9
|
+
replaceStringsWithComponents,
|
|
10
|
+
fallbackStringExtend
|
|
10
11
|
} from './utils'
|
|
11
12
|
|
|
12
13
|
const ENV = process.env.NODE_ENV
|
|
@@ -20,17 +21,7 @@ export const applyExtend = (element, parent, options = {}) => {
|
|
|
20
21
|
|
|
21
22
|
let { extend, props, context, __ref } = element
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
if (isString(extend)) {
|
|
25
|
-
if (COMPONENTS && COMPONENTS[extend]) {
|
|
26
|
-
extend = COMPONENTS[extend]
|
|
27
|
-
} else {
|
|
28
|
-
if (ENV !== 'test' || ENV !== 'development') {
|
|
29
|
-
console.warn('Extend is string but component was not found:', extend)
|
|
30
|
-
}
|
|
31
|
-
extend = {}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
24
|
+
extend = fallbackStringExtend(extend, context, options)
|
|
34
25
|
|
|
35
26
|
const extendStack = getExtendStack(extend)
|
|
36
27
|
|
|
@@ -77,14 +68,14 @@ export const applyExtend = (element, parent, options = {}) => {
|
|
|
77
68
|
}
|
|
78
69
|
|
|
79
70
|
if (__ref) __ref.__extend = stack
|
|
80
|
-
const findAndReplaceStrings = replaceStringsWithComponents(stack,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const component = exec(element.component || mergedExtend.component, element)
|
|
84
|
-
if (component && COMPONENTS && COMPONENTS[component]) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
71
|
+
const findAndReplaceStrings = replaceStringsWithComponents(stack, context, options)
|
|
72
|
+
const mergedExtend = cloneAndMergeArrayExtend(findAndReplaceStrings)
|
|
73
|
+
|
|
74
|
+
// const component = exec(element.component || mergedExtend.component, element)
|
|
75
|
+
// if (component && COMPONENTS && COMPONENTS[component]) {
|
|
76
|
+
// const componentExtend = cloneAndMergeArrayExtend(getExtendStack(COMPONENTS[component]))
|
|
77
|
+
// mergedExtend = deepMergeExtend(componentExtend, mergedExtend)
|
|
78
|
+
// }
|
|
88
79
|
|
|
89
80
|
return deepMergeExtend(element, mergedExtend)
|
|
90
81
|
}
|
package/mixins/registry.js
CHANGED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import { exec, isFunction, isObject, isUndefined } from '@domql/utils'
|
|
4
|
+
import { create } from '.'
|
|
5
|
+
import { registry } from './mixins'
|
|
6
|
+
import { applyVariant, isVariant } from './utils'
|
|
7
|
+
import { isMethod } from './methods'
|
|
8
|
+
import { addMethods } from './methods/set'
|
|
9
|
+
import { createState } from '@domql/state'
|
|
10
|
+
import { detectTag } from '@domql/render'
|
|
11
|
+
import { createProps } from './props'
|
|
12
|
+
import { throughInitialDefine, throughInitialExec } from './iterate'
|
|
13
|
+
|
|
14
|
+
export const onlyResolveExtends = (element, parent, key, options) => {
|
|
15
|
+
const { __ref } = element
|
|
16
|
+
element.tag = detectTag(element)
|
|
17
|
+
|
|
18
|
+
// if (!element.props) element.props = {}
|
|
19
|
+
|
|
20
|
+
// Copy-paste of addCaching()
|
|
21
|
+
{
|
|
22
|
+
const { __ref: ref } = element
|
|
23
|
+
const { __ref: parentRef } = parent
|
|
24
|
+
|
|
25
|
+
// enable TRANSFORM in data
|
|
26
|
+
// TODO: do we need this at all?
|
|
27
|
+
// if (!element.transform) element.transform = {}
|
|
28
|
+
|
|
29
|
+
// enable CACHING
|
|
30
|
+
if (!ref.__cached) ref.__cached = {}
|
|
31
|
+
if (!ref.__defineCache) ref.__defineCache = {}
|
|
32
|
+
|
|
33
|
+
// enable EXEC
|
|
34
|
+
if (!ref.__exec) ref.__exec = {}
|
|
35
|
+
|
|
36
|
+
// enable CLASS CACHING
|
|
37
|
+
if (!ref.__class) ref.__class = {}
|
|
38
|
+
if (!ref.__classNames) ref.__classNames = {}
|
|
39
|
+
|
|
40
|
+
// enable CLASS CACHING
|
|
41
|
+
if (!ref.__attr) ref.__attr = {}
|
|
42
|
+
|
|
43
|
+
// enable CHANGES storing
|
|
44
|
+
if (!ref.__changes) ref.__changes = []
|
|
45
|
+
|
|
46
|
+
// enable CHANGES storing
|
|
47
|
+
if (!ref.__children) ref.__children = []
|
|
48
|
+
|
|
49
|
+
// Add __root element property
|
|
50
|
+
// const hasRoot = parent && parent.key === ':root'
|
|
51
|
+
// if (!ref.__root) ref.__root = hasRoot ? element : parentRef.__root
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
addMethods(element, parent)
|
|
55
|
+
|
|
56
|
+
createState(element, parent)
|
|
57
|
+
|
|
58
|
+
// Borrowed from createIfConditionFlag()
|
|
59
|
+
const ref = __ref
|
|
60
|
+
if (isFunction(element.if)) {
|
|
61
|
+
const ifPassed = element.if(element, element.state)
|
|
62
|
+
if (!ifPassed) {
|
|
63
|
+
// const ifFragment = cacheNode({ tag: 'fragment' })
|
|
64
|
+
// ref.__ifFragment = appendNode(ifFragment, parent.node)
|
|
65
|
+
delete ref.__if
|
|
66
|
+
} else ref.__if = true
|
|
67
|
+
} else ref.__if = true
|
|
68
|
+
/// ///
|
|
69
|
+
|
|
70
|
+
if (element.node && ref.__if) { parent[key || element.key] = element } // Borrowed from assignNode()
|
|
71
|
+
|
|
72
|
+
createProps(element, parent)
|
|
73
|
+
applyVariant(element, parent)
|
|
74
|
+
|
|
75
|
+
if (element.tag !== 'string' && element.tag !== 'fragment') {
|
|
76
|
+
throughInitialDefine(element)
|
|
77
|
+
throughInitialExec(element)
|
|
78
|
+
|
|
79
|
+
for (const param in element) {
|
|
80
|
+
const prop = element[param]
|
|
81
|
+
if (
|
|
82
|
+
isUndefined(prop) ||
|
|
83
|
+
isMethod(param) ||
|
|
84
|
+
isObject(registry[param]) ||
|
|
85
|
+
isVariant(param)
|
|
86
|
+
) continue
|
|
87
|
+
|
|
88
|
+
const hasDefine = element.define && element.define[param]
|
|
89
|
+
const contextHasDefine = element.context && element.context.define &&
|
|
90
|
+
element.context.define[param]
|
|
91
|
+
const optionsHasDefine = options.define && options.define[param]
|
|
92
|
+
|
|
93
|
+
if (registry[param] && !optionsHasDefine) {
|
|
94
|
+
continue
|
|
95
|
+
} else if (element[param] && !hasDefine && !optionsHasDefine && !contextHasDefine) {
|
|
96
|
+
create(exec(prop, element), element, param, options)
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
parent[key || element.key] = element // Borrowed from assignNode()
|
|
102
|
+
|
|
103
|
+
delete element.update
|
|
104
|
+
delete element.__element
|
|
105
|
+
|
|
106
|
+
// added by createProps
|
|
107
|
+
if (element.props) {
|
|
108
|
+
delete element.props.update
|
|
109
|
+
delete element.props.__element
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// added by createState
|
|
113
|
+
if (!options.keepRef) delete element.__ref
|
|
114
|
+
|
|
115
|
+
return element
|
|
116
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@domql/element",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.9",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@domql/state": "latest",
|
|
32
32
|
"@domql/utils": "latest"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "72ca0c34d453da80307f93c6e3b214c5cbf03a66",
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@babel/core": "^7.12.0"
|
|
37
37
|
}
|
package/utils/extendUtils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
import { isArray, isFunction, isObject, isString } from '@domql/utils'
|
|
4
|
+
const ENV = process.env.NODE_ENV
|
|
4
5
|
|
|
5
6
|
export const generateHash = () => Math.random().toString(36).substring(2)
|
|
6
7
|
|
|
@@ -88,11 +89,21 @@ export const cloneAndMergeArrayExtend = stack => {
|
|
|
88
89
|
}, {})
|
|
89
90
|
}
|
|
90
91
|
|
|
91
|
-
export const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
export const fallbackStringExtend = (extend, context, options) => {
|
|
93
|
+
const COMPONENTS = (context && context.components) || options.components
|
|
94
|
+
if (isString(extend)) {
|
|
95
|
+
console.log('extend', extend)
|
|
96
|
+
console.log(COMPONENTS[extend])
|
|
97
|
+
if (COMPONENTS && COMPONENTS[extend]) {
|
|
98
|
+
return COMPONENTS[extend]
|
|
99
|
+
} else {
|
|
100
|
+
if (ENV !== 'test' || ENV !== 'development') {
|
|
101
|
+
console.warn('Extend is string but component was not found:', extend)
|
|
102
|
+
}
|
|
103
|
+
return {}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return extend
|
|
96
107
|
}
|
|
97
108
|
|
|
98
109
|
// joint stacks
|
|
@@ -116,3 +127,22 @@ export const getExtendMerged = extend => {
|
|
|
116
127
|
const stack = getExtendStack(extend)
|
|
117
128
|
return cloneAndMergeArrayExtend(stack)
|
|
118
129
|
}
|
|
130
|
+
|
|
131
|
+
export const replaceStringsWithComponents = (stack, context, options) => {
|
|
132
|
+
const COMPONENTS = (context && context.components) || options.components
|
|
133
|
+
return stack.map(v => {
|
|
134
|
+
// if (v === 'StatePage') debugger
|
|
135
|
+
if (isString(v)) {
|
|
136
|
+
const component = COMPONENTS[v]
|
|
137
|
+
console.warn('v', v)
|
|
138
|
+
console.log(COMPONENTS[v])
|
|
139
|
+
console.warn('component', component)
|
|
140
|
+
return component
|
|
141
|
+
}
|
|
142
|
+
if (isString(v.extend)) {
|
|
143
|
+
v.extend = COMPONENTS[v.extend]
|
|
144
|
+
return { ...getExtendMerged(v.extend), ...v }
|
|
145
|
+
}
|
|
146
|
+
return v
|
|
147
|
+
})
|
|
148
|
+
}
|