@domql/element 2.5.7 → 2.5.10
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 +60 -25
- package/dist/cjs/create.js +41 -21
- 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 +2 -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,10 +289,43 @@ 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)
|
|
296
329
|
|
|
297
330
|
createState(element, parent)
|
|
298
331
|
|
|
@@ -306,47 +339,49 @@ const onlyResolveExtends = (element, parent, key, options) => {
|
|
|
306
339
|
delete ref.__if
|
|
307
340
|
} else ref.__if = true
|
|
308
341
|
} else ref.__if = true
|
|
309
|
-
|
|
342
|
+
/// ///
|
|
343
|
+
|
|
344
|
+
if (element.node && ref.__if) { parent[key || element.key] = element } // Borrowed from assignNode()
|
|
310
345
|
|
|
311
346
|
createProps(element, parent)
|
|
347
|
+
if (!element.props) element.props = {}
|
|
312
348
|
applyVariant(element, parent)
|
|
313
349
|
|
|
314
|
-
if (element.tag !== 'string'
|
|
315
|
-
|
|
350
|
+
if (element.tag !== 'string' && element.tag !== 'fragment') {
|
|
351
|
+
throughInitialDefine(element)
|
|
352
|
+
throughInitialExec(element)
|
|
316
353
|
|
|
317
|
-
for (const
|
|
318
|
-
const prop = element[param]
|
|
354
|
+
for (const k in element) {
|
|
319
355
|
if (
|
|
320
|
-
isUndefined(
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
356
|
+
isUndefined(element[k]) ||
|
|
357
|
+
isMethod(k) ||
|
|
358
|
+
isObject(registry[k]) ||
|
|
359
|
+
isVariant(k)
|
|
324
360
|
) continue
|
|
325
361
|
|
|
326
|
-
const hasDefine = element.define && element.define[
|
|
362
|
+
const hasDefine = element.define && element.define[k]
|
|
327
363
|
const contextHasDefine = element.context && element.context.define &&
|
|
328
|
-
element.context.define[
|
|
329
|
-
const optionsHasDefine = options.define && options.define[
|
|
364
|
+
element.context.define[k]
|
|
365
|
+
const optionsHasDefine = options.define && options.define[k]
|
|
330
366
|
|
|
331
|
-
if (registry[
|
|
367
|
+
if (registry[k] && !optionsHasDefine) {
|
|
332
368
|
continue
|
|
333
|
-
} else if (element[
|
|
334
|
-
create(exec(
|
|
369
|
+
} else if (element[k] && !hasDefine && !optionsHasDefine && !contextHasDefine) {
|
|
370
|
+
create(exec(element[k], element), element, k, options)
|
|
335
371
|
}
|
|
336
372
|
}
|
|
337
373
|
}
|
|
338
374
|
|
|
339
|
-
parent[key || element.key] = element
|
|
375
|
+
parent[key || element.key] = element // Borrowed from assignNode()
|
|
340
376
|
|
|
341
377
|
delete element.update
|
|
342
378
|
delete element.__element
|
|
343
379
|
|
|
344
380
|
// added by createProps
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
if (!options.keepRef) delete element.__ref
|
|
381
|
+
if (element.props) {
|
|
382
|
+
delete element.props.update
|
|
383
|
+
delete element.props.__element
|
|
384
|
+
}
|
|
350
385
|
|
|
351
386
|
return element
|
|
352
387
|
}
|
package/dist/cjs/create.js
CHANGED
|
@@ -228,12 +228,27 @@ 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
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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);
|
|
237
252
|
(0, import_state.createState)(element, parent);
|
|
238
253
|
const ref = __ref;
|
|
239
254
|
if ((0, import_utils.isFunction)(element.if)) {
|
|
@@ -244,31 +259,36 @@ const onlyResolveExtends = (element, parent, key, options) => {
|
|
|
244
259
|
ref.__if = true;
|
|
245
260
|
} else
|
|
246
261
|
ref.__if = true;
|
|
262
|
+
if (element.node && ref.__if) {
|
|
263
|
+
parent[key || element.key] = element;
|
|
264
|
+
}
|
|
247
265
|
(0, import_props.createProps)(element, parent);
|
|
266
|
+
if (!element.props)
|
|
267
|
+
element.props = {};
|
|
248
268
|
(0, import_component.applyVariant)(element, parent);
|
|
249
|
-
if (element.tag !== "string"
|
|
250
|
-
(0, import_iterate.
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
if ((0, import_utils.isUndefined)(
|
|
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))
|
|
254
274
|
continue;
|
|
255
|
-
const hasDefine = element.define && element.define[
|
|
256
|
-
const contextHasDefine = element.context && element.context.define && element.context.define[
|
|
257
|
-
const optionsHasDefine = options.define && options.define[
|
|
258
|
-
if (import_mixins.registry[
|
|
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) {
|
|
259
279
|
continue;
|
|
260
|
-
} else if (element[
|
|
261
|
-
create((0, import_utils.exec)(
|
|
280
|
+
} else if (element[k] && !hasDefine && !optionsHasDefine && !contextHasDefine) {
|
|
281
|
+
create((0, import_utils.exec)(element[k], element), element, k, options);
|
|
262
282
|
}
|
|
263
283
|
}
|
|
264
284
|
}
|
|
265
285
|
parent[key || element.key] = element;
|
|
266
286
|
delete element.update;
|
|
267
287
|
delete element.__element;
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
288
|
+
if (element.props) {
|
|
289
|
+
delete element.props.update;
|
|
290
|
+
delete element.props.__element;
|
|
291
|
+
}
|
|
272
292
|
return element;
|
|
273
293
|
};
|
|
274
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.10",
|
|
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": "c1a3e33d5c0375d9eaa745044e52678efdd420d5",
|
|
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
|
+
}
|