@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 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 (!__ref.__exec) __ref.__exec = {}
293
- if (!__ref.__attr) __ref.__attr = {}
292
+ // if (!element.props) element.props = {}
294
293
 
295
- if (!element.props) element.props = {}
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
- throughInitialExec(element, options.propsExcludedFromExec)
302
-
303
- for (const param in element) {
304
- const prop = element[param]
305
- if (
306
- isUndefined(prop) ||
307
- isMethod(param) ||
308
- isObject(registry[param]) ||
309
- isVariant(param)
310
- ) continue
311
-
312
- const hasDefine = element.define && element.define[param]
313
- const contextHasDefine = element.context && element.context.define &&
314
- element.context.define[param]
315
- const optionsHasDefine = options.define && options.define[param]
316
-
317
- if (registry[param] && !optionsHasDefine) {
318
- continue
319
- } else if (element[param] && !hasDefine && !optionsHasDefine && !contextHasDefine) {
320
- create(exec(prop, element), element, param, options)
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
- delete element.props.update
331
- delete element.props.__element
332
-
333
- // added by createState
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
  }
@@ -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
- if (!__ref.__exec)
232
- __ref.__exec = {};
233
- if (!__ref.__attr)
234
- __ref.__attr = {};
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
- (0, import_iterate.throughInitialExec)(element, options.propsExcludedFromExec);
241
- for (const param in element) {
242
- const prop = element[param];
243
- if ((0, import_utils.isUndefined)(prop) || (0, import_methods.isMethod)(param) || (0, import_utils.isObject)(import_mixins.registry[param]) || (0, import_component.isVariant)(param))
244
- continue;
245
- const hasDefine = element.define && element.define[param];
246
- const contextHasDefine = element.context && element.context.define && element.context.define[param];
247
- const optionsHasDefine = options.define && options.define[param];
248
- if (import_mixins.registry[param] && !optionsHasDefine) {
249
- continue;
250
- } else if (element[param] && !hasDefine && !optionsHasDefine && !contextHasDefine) {
251
- create((0, import_utils.exec)(prop, element), element, param, options);
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
- delete element.props.update;
258
- delete element.props.__element;
259
- if (!options.keepRef)
260
- delete element.__ref;
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) === "@";
@@ -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
- const COMPONENTS = context && context.components || options.components;
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, COMPONENTS);
81
- let mergedExtend = (0, import_utils2.cloneAndMergeArrayExtend)(findAndReplaceStrings);
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
  };
@@ -40,6 +40,7 @@ var registry_default = {
40
40
  if: {},
41
41
  define: {},
42
42
  transform: {},
43
+ __name: {},
43
44
  __ref: {},
44
45
  __hash: {},
45
46
  __text: {},
@@ -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 replaceStringsWithComponents = (stack, components) => {
123
- return stack.map((v) => {
124
- if ((0, import_utils.isString)(v))
125
- return components[v];
126
- else
127
- return v;
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, isString } from '@domql/utils'
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
- const COMPONENTS = (context && context.components) || options.components
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, COMPONENTS)
81
- let mergedExtend = cloneAndMergeArrayExtend(findAndReplaceStrings)
82
-
83
- const component = exec(element.component || mergedExtend.component, element)
84
- if (component && COMPONENTS && COMPONENTS[component]) {
85
- const componentExtend = cloneAndMergeArrayExtend(getExtendStack(COMPONENTS[component]))
86
- mergedExtend = deepMergeExtend(componentExtend, mergedExtend)
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
  }
@@ -24,6 +24,7 @@ export default {
24
24
  if: {},
25
25
  define: {},
26
26
  transform: {},
27
+ __name: {},
27
28
  __ref: {},
28
29
  __hash: {},
29
30
  __text: {},
@@ -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.6",
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": "e05c05cdecb20e2b9e4d9ea728bb2707cb27912c",
34
+ "gitHead": "72ca0c34d453da80307f93c6e3b214c5cbf03a66",
35
35
  "devDependencies": {
36
36
  "@babel/core": "^7.12.0"
37
37
  }
@@ -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 replaceStringsWithComponents = (stack, components) => {
92
- return stack.map(v => {
93
- if (isString(v)) return components[v]
94
- else return v
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
+ }