domql 1.5.134 → 1.5.136

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 (70) hide show
  1. package/package.json +1 -1
  2. package/src/element/create.js +8 -49
  3. package/src/element/props.js +30 -23
  4. package/src/element/remove.js +23 -0
  5. package/src/element/set.js +3 -21
  6. package/src/element/update.js +6 -2
  7. package/src/utils/component.js +56 -0
  8. package/src/utils/index.js +1 -0
  9. package/dist/cjs/element/applyParam.js +0 -41
  10. package/dist/cjs/element/assign.js +0 -35
  11. package/dist/cjs/element/cache.js +0 -74
  12. package/dist/cjs/element/create.js +0 -300
  13. package/dist/cjs/element/define.js +0 -34
  14. package/dist/cjs/element/extend.js +0 -75
  15. package/dist/cjs/element/index.js +0 -55
  16. package/dist/cjs/element/iterate.js +0 -109
  17. package/dist/cjs/element/methods.js +0 -166
  18. package/dist/cjs/element/node.js +0 -80
  19. package/dist/cjs/element/nodes.js +0 -158
  20. package/dist/cjs/element/options.js +0 -24
  21. package/dist/cjs/element/parse.js +0 -42
  22. package/dist/cjs/element/props.js +0 -110
  23. package/dist/cjs/element/root.js +0 -30
  24. package/dist/cjs/element/set.js +0 -75
  25. package/dist/cjs/element/state.js +0 -217
  26. package/dist/cjs/element/tree.js +0 -31
  27. package/dist/cjs/element/update.js +0 -155
  28. package/dist/cjs/event/can.js +0 -30
  29. package/dist/cjs/event/index.js +0 -34
  30. package/dist/cjs/event/is.js +0 -28
  31. package/dist/cjs/event/on.js +0 -34
  32. package/dist/cjs/event/store.js +0 -27
  33. package/dist/cjs/event/wrappers.js +0 -36
  34. package/dist/cjs/index.js +0 -35
  35. package/dist/cjs/package.json +0 -4
  36. package/dist/cjs/utils/extendUtils.js +0 -142
  37. package/dist/cjs/utils/index.js +0 -19
  38. package/dist/cjs/utils/object.js +0 -146
  39. package/dist/esm/element/applyParam.js +0 -21
  40. package/dist/esm/element/assign.js +0 -15
  41. package/dist/esm/element/cache.js +0 -54
  42. package/dist/esm/element/create.js +0 -274
  43. package/dist/esm/element/define.js +0 -14
  44. package/dist/esm/element/extend.js +0 -55
  45. package/dist/esm/element/index.js +0 -29
  46. package/dist/esm/element/iterate.js +0 -89
  47. package/dist/esm/element/methods.js +0 -140
  48. package/dist/esm/element/node.js +0 -58
  49. package/dist/esm/element/nodes.js +0 -138
  50. package/dist/esm/element/options.js +0 -4
  51. package/dist/esm/element/parse.js +0 -16
  52. package/dist/esm/element/props.js +0 -90
  53. package/dist/esm/element/root.js +0 -10
  54. package/dist/esm/element/set.js +0 -49
  55. package/dist/esm/element/state.js +0 -197
  56. package/dist/esm/element/tree.js +0 -5
  57. package/dist/esm/element/update.js +0 -129
  58. package/dist/esm/event/can.js +0 -10
  59. package/dist/esm/event/index.js +0 -8
  60. package/dist/esm/event/is.js +0 -8
  61. package/dist/esm/event/on.js +0 -14
  62. package/dist/esm/event/store.js +0 -7
  63. package/dist/esm/event/wrappers.js +0 -16
  64. package/dist/esm/index.js +0 -15
  65. package/dist/esm/utils/extendUtils.js +0 -122
  66. package/dist/esm/utils/index.js +0 -2
  67. package/dist/esm/utils/object.js +0 -126
  68. package/dist/iife/index.js +0 -2652
  69. package/packages/router/dist/cjs/index.js +0 -81
  70. package/packages/router/dist/cjs/package.json +0 -4
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "domql",
3
3
  "description": "DOM rendering Javascript framework at early stage.",
4
4
  "author": "symbo.ls",
5
- "version": "1.5.134",
5
+ "version": "1.5.136",
6
6
  "repository": "https://github.com/domql/domql",
7
7
  "publishConfig": {
8
8
  "registry": "https://registry.npmjs.org"
@@ -8,7 +8,7 @@ import root from './root'
8
8
  import createNode from './node'
9
9
  import { appendNode, assignNode } from './assign'
10
10
  import { applyExtend } from './extend'
11
- import set, { removeContentElement } from './set'
11
+ import set from './set'
12
12
  import createState from './state'
13
13
  import createProps from './props'
14
14
  import update from './update'
@@ -18,6 +18,13 @@ import cacheNode, { detectTag } from './cache'
18
18
  import { registry } from './mixins'
19
19
  import { throughInitialExec } from './iterate'
20
20
  import OPTIONS from './options'
21
+
22
+ import {
23
+ applyComponentFromContext,
24
+ applyKeyComponentAsExtend,
25
+ checkIfKeyIsComponent
26
+ } from '../utils/component'
27
+ import { removeContentElement } from './remove'
21
28
  // import { overwrite, clone, fillTheRest } from '../utils'
22
29
 
23
30
  const ENV = process.env.NODE_ENV
@@ -276,54 +283,6 @@ const resolveExtends = (element, parent, options) => {
276
283
  return element
277
284
  }
278
285
 
279
- const checkIfKeyIsComponent = (key) => {
280
- const isFirstKeyString = isString(key)
281
- if (!isFirstKeyString) return
282
-
283
- const firstCharKey = key.slice(0, 1)
284
-
285
- return /^[A-Z]*$/.test(firstCharKey)
286
- }
287
-
288
- const extendizeByKey = (element, parent, key) => {
289
- const { extend, props, state, childExtend, childProps } = element
290
- const hasComponentAttrs = extend || childExtend || props || state || element.on
291
- const componentKey = key.split('_')[0]
292
-
293
- if (!hasComponentAttrs || childProps) {
294
- return {
295
- extend: componentKey || key,
296
- props: { ...element }
297
- }
298
- } else if (!extend || extend === true) {
299
- return {
300
- ...element,
301
- extend: componentKey || key
302
- }
303
- }
304
- }
305
-
306
- const applyKeyComponentAsExtend = (element, parent, key) => {
307
- return extendizeByKey(element, parent, key) || element
308
- }
309
-
310
- const applyComponentFromContext = (element, parent, options) => {
311
- const { context } = element
312
- const { components } = context
313
- const { extend } = element
314
- const execExtend = exec(extend, element)
315
- if (isString(execExtend)) {
316
- if (components[execExtend]) element.extend = components[execExtend]
317
- else {
318
- if ((ENV === 'test' || ENV === 'development') && options.verbose) {
319
- console.warn(execExtend, 'is not in library', components, element)
320
- console.warn('replacing with ', {})
321
- }
322
- element.extend = {}
323
- }
324
- }
325
- }
326
-
327
286
  const checkIfMedia = (key) => key.slice(0, 1) === '@'
328
287
 
329
288
  const applyMediaProps = (element, parent, key) => {
@@ -8,16 +8,34 @@ const objectizeStringProperty = propValue => {
8
8
  return propValue
9
9
  }
10
10
 
11
- const createPropsStack = (element, parent) => {
12
- const { props, __ref } = element
13
- const propsStack = __ref.propsStack = []
14
-
15
- const matchParent = parent.props && parent.props[element.key]
16
- const matchParentChildProps = parent.props && parent.props.childProps
11
+ const inheritParentProps = (element, parent) => {
12
+ let propsStack = []
13
+ const parentProps = exec(parent, parent.state).props
17
14
 
18
- if (matchParent) propsStack.push(objectizeStringProperty(matchParent))
15
+ const matchParent = parent.props && parentProps[element.key]
16
+ const matchParentIsString = isString(matchParent)
17
+ const matchParentChildProps = parentProps && parentProps.childProps
18
+
19
+ if (matchParent) {
20
+ if (matchParentIsString) {
21
+ const inheritedStringExists = propsStack.filter(v => v.inheritedString)[0]
22
+ if (inheritedStringExists) inheritedStringExists.inheritedString = matchParent
23
+ else {
24
+ propsStack = [].concat(objectizeStringProperty(matchParent), propsStack)
25
+ }
26
+ } else {
27
+ propsStack.push(objectizeStringProperty(matchParent))
28
+ }
29
+ }
19
30
  if (matchParentChildProps) propsStack.push(matchParentChildProps)
20
31
 
32
+ return propsStack
33
+ }
34
+
35
+ const createPropsStack = (element, parent) => {
36
+ const { props, __ref } = element
37
+ const propsStack = __ref.__props = inheritParentProps(element, parent)
38
+
21
39
  if (isObject(props)) propsStack.push(props)
22
40
  else if (props === 'inherit' && parent.props) propsStack.push(parent.props)
23
41
  else if (props) propsStack.push(props)
@@ -29,11 +47,9 @@ const createPropsStack = (element, parent) => {
29
47
  })
30
48
  }
31
49
 
32
- return propsStack
33
- }
50
+ __ref.__props = propsStack
34
51
 
35
- const inheritProps = (element, parent) => {
36
- element.props = (parent && parent.props) || { update, __element: element }
52
+ return propsStack
37
53
  }
38
54
 
39
55
  export const syncProps = (props, element) => {
@@ -57,7 +73,7 @@ const createProps = function (element, parent, cached) {
57
73
  __ref.__props = propsStack
58
74
  syncProps(propsStack, element)
59
75
  element.props.update = update
60
- } else inheritProps(element, parent)
76
+ }
61
77
 
62
78
  return element
63
79
  }
@@ -66,19 +82,11 @@ export const updateProps = (newProps, element, parent) => {
66
82
  const { __ref } = element
67
83
  let propsStack = __ref.__props
68
84
 
69
- const matchParent = parent.props && parent.props[element.key]
70
- const matchParentIsString = isString(matchParent)
71
- if (matchParentIsString) {
72
- const inheritedStringExists = propsStack.filter(v => v.inheritedString)[0]
73
- if (inheritedStringExists) inheritedStringExists.inheritedString = matchParent
74
- else {
75
- propsStack = __ref.__props = [].concat(objectizeStringProperty(matchParent), propsStack)
76
- }
77
- }
85
+ const parentProps = inheritParentProps(element, parent)
86
+ if (parentProps) propsStack = __ref.__props = [].concat(parentProps, propsStack)
78
87
  if (newProps) propsStack = __ref.__props = [].concat(newProps, propsStack)
79
88
 
80
89
  if (propsStack) syncProps(propsStack, element)
81
- else inheritProps(element, parent)
82
90
 
83
91
  // console.log(cachedProps)
84
92
  return element
@@ -86,7 +94,6 @@ export const updateProps = (newProps, element, parent) => {
86
94
 
87
95
  function update (props, options) {
88
96
  const element = this.__element
89
- // element.update({ props })
90
97
  element.update({ props }, options)
91
98
  }
92
99
 
@@ -0,0 +1,23 @@
1
+ 'use strict'
2
+
3
+ import { isFunction } from '@domql/utils'
4
+
5
+ export const removeContentElement = function (el) {
6
+ const element = el || this
7
+ const { __ref } = element
8
+
9
+ if (element.content) {
10
+ if (element.content.node) {
11
+ if (element.content.tag === 'fragment') element.node.innerHTML = ''
12
+ else element.node.removeChild(element.content.node)
13
+ }
14
+
15
+ const { __cached } = __ref
16
+ if (__cached && __cached.content) {
17
+ if (__cached.content.tag === 'fragment') __cached.content.parent.node.innerHTML = ''
18
+ else if (__cached.content && isFunction(__cached.content.remove)) __cached.content.remove()
19
+ }
20
+
21
+ delete element.content
22
+ }
23
+ }
@@ -1,30 +1,12 @@
1
1
  'use strict'
2
2
 
3
- import { isEqualDeep, isFunction } from '@domql/utils'
3
+ import { isEqualDeep } from '@domql/utils'
4
+ import { removeContentElement } from './remove'
5
+
4
6
  import create from './create'
5
7
  import { registry } from './mixins'
6
8
  import OPTIONS from './options'
7
9
 
8
- export const removeContentElement = function (el) {
9
- const element = el || this
10
- const { __ref } = element
11
-
12
- if (element.content) {
13
- if (element.content.node) {
14
- if (element.content.tag === 'fragment') element.node.innerHTML = ''
15
- else element.node.removeChild(element.content.node)
16
- }
17
-
18
- const { __cached } = __ref
19
- if (__cached && __cached.content) {
20
- if (__cached.content.tag === 'fragment') __cached.content.parent.node.innerHTML = ''
21
- else if (__cached.content && isFunction(__cached.content.remove)) __cached.content.remove()
22
- }
23
-
24
- delete element.content
25
- }
26
- }
27
-
28
10
  const set = function (params, options = {}, el) {
29
11
  const element = el || this
30
12
  const __contentRef = element.content && element.content.__ref
@@ -28,7 +28,7 @@ const UPDATE_DEFAULT_OPTIONS = {
28
28
 
29
29
  const update = function (params = {}, options = UPDATE_DEFAULT_OPTIONS) {
30
30
  const element = this
31
- const { parent, node } = element
31
+ const { parent, node, key } = element
32
32
 
33
33
  let __ref = element.__ref
34
34
  if (!__ref) __ref = element.__ref = {}
@@ -94,7 +94,11 @@ const update = function (params = {}, options = UPDATE_DEFAULT_OPTIONS) {
94
94
  }
95
95
  } else if (!__ref.__hasRootState) element.state = (parent && parent.state) || {}
96
96
 
97
- if (__ref.__if && !options.preventPropsUpdate) updateProps(params.props, element, parent)
97
+ if (__ref.__if && !options.preventPropsUpdate) {
98
+ const hasParentProps = parent.props && (parent.props[key] || parent.props.childProps)
99
+ // if (hasParentProps) console.log(hasParentProps.value)
100
+ updateProps(params.props || (hasParentProps && {}), element, parent)
101
+ }
98
102
 
99
103
  if (element.on && isFunction(element.on.initUpdate) && !options.ignoreInitUpdate) {
100
104
  const whatinitreturns = on.initUpdate(element.on.initUpdate, element, element.state)
@@ -0,0 +1,56 @@
1
+ 'use strict'
2
+
3
+ import { exec, isFunction, isString } from '@domql/utils'
4
+ const ENV = process.env.NODE_ENV
5
+
6
+ export const checkIfKeyIsComponent = (key) => {
7
+ const isFirstKeyString = isString(key)
8
+ if (!isFirstKeyString) return
9
+ const firstCharKey = key.slice(0, 1)
10
+ return /^[A-Z]*$/.test(firstCharKey)
11
+ }
12
+
13
+ export const extendizeByKey = (element, parent, key) => {
14
+ const { extend, props, state, childExtend, childProps } = element
15
+ const hasComponentAttrs = extend || childExtend || props || state || element.on
16
+ const componentKey = key.split('_')[0]
17
+
18
+ if (!hasComponentAttrs || childProps) {
19
+ return {
20
+ extend: componentKey || key,
21
+ props: { ...element }
22
+ }
23
+ } else if (!extend || extend === true) {
24
+ return {
25
+ ...element,
26
+ extend: componentKey || key
27
+ }
28
+ } else if (isFunction(element)) {
29
+ console.log(element)
30
+ return {
31
+ extend: componentKey || key,
32
+ props: { ...element }
33
+ }
34
+ }
35
+ }
36
+
37
+ export const applyKeyComponentAsExtend = (element, parent, key) => {
38
+ return extendizeByKey(element, parent, key) || element
39
+ }
40
+
41
+ export const applyComponentFromContext = (element, parent, options) => {
42
+ const { context } = element
43
+ const { components } = context
44
+ const { extend } = element
45
+ const execExtend = exec(extend, element)
46
+ if (isString(execExtend)) {
47
+ if (components[execExtend]) element.extend = components[execExtend]
48
+ else {
49
+ if ((ENV === 'test' || ENV === 'development') && options.verbose) {
50
+ console.warn(execExtend, 'is not in library', components, element)
51
+ console.warn('replacing with ', {})
52
+ }
53
+ element.extend = {}
54
+ }
55
+ }
56
+ }
@@ -2,3 +2,4 @@
2
2
 
3
3
  export * from './object'
4
4
  export * from './extendUtils'
5
+ export * from './component'
@@ -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,35 +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 assign_exports = {};
20
- __export(assign_exports, {
21
- appendNode: () => appendNode,
22
- assignNode: () => assignNode
23
- });
24
- module.exports = __toCommonJS(assign_exports);
25
- const appendNode = (node, parentNode) => {
26
- parentNode.appendChild(node);
27
- return node;
28
- };
29
- const assignNode = (element, parent, key) => {
30
- parent[key || element.key] = element;
31
- if (element.tag !== "shadow") {
32
- appendNode(element.node, parent.node);
33
- }
34
- return element;
35
- };
@@ -1,74 +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 cache_exports = {};
20
- __export(cache_exports, {
21
- default: () => cache_default,
22
- detectTag: () => detectTag
23
- });
24
- module.exports = __toCommonJS(cache_exports);
25
- var import_globals = require("@domql/globals");
26
- var import_utils = require("@domql/utils");
27
- var import_report = require("@domql/report");
28
- var import_event = require("../event");
29
- var import_utils2 = require("../utils");
30
- const cachedElements = {};
31
- const createNode = (element) => {
32
- const { tag } = element;
33
- if (tag) {
34
- if (tag === "string")
35
- return import_globals.document.createTextNode(element.text);
36
- else if (tag === "fragment") {
37
- return import_globals.document.createDocumentFragment();
38
- } else if (tag === "svg" || tag === "path") {
39
- return import_globals.document.createElementNS("http://www.w3.org/2000/svg", tag);
40
- } else
41
- return import_globals.document.createElement(tag);
42
- } else {
43
- return import_globals.document.createElement("div");
44
- }
45
- };
46
- const detectTag = (element) => {
47
- let { tag, key } = element;
48
- tag = (0, import_utils.exec)(tag, element);
49
- if (tag === true)
50
- tag = key;
51
- if ((0, import_utils.isString)(tag)) {
52
- const tagExists = (0, import_utils2.isTagRegistered)(tag) > -1;
53
- if (tagExists)
54
- return tag;
55
- } else {
56
- const isKeyATag = (0, import_utils2.isTagRegistered)(key) > -1;
57
- if (isKeyATag)
58
- return key;
59
- }
60
- return "div";
61
- };
62
- var cache_default = (element) => {
63
- const tag = element.tag = detectTag(element);
64
- if (!import_event.can.render(element)) {
65
- return (0, import_report.report)("HTMLInvalidTag");
66
- }
67
- let cachedTag = cachedElements[tag];
68
- if (!cachedTag)
69
- cachedTag = cachedElements[tag] = createNode(element);
70
- const clonedNode = cachedTag.cloneNode(true);
71
- if (tag === "string")
72
- clonedNode.nodeValue = element.text;
73
- return clonedNode;
74
- };