domql 1.5.136 → 1.6.0

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 (90) hide show
  1. package/dist/cjs/element/applyParam.js +41 -0
  2. package/dist/cjs/element/assign.js +35 -0
  3. package/dist/cjs/element/cache.js +74 -0
  4. package/dist/cjs/element/create.js +264 -0
  5. package/dist/cjs/element/define.js +34 -0
  6. package/dist/cjs/element/extend.js +75 -0
  7. package/dist/cjs/element/index.js +55 -0
  8. package/dist/cjs/element/iterate.js +105 -0
  9. package/dist/cjs/element/methods.js +166 -0
  10. package/dist/cjs/element/node.js +80 -0
  11. package/dist/cjs/element/nodes.js +158 -0
  12. package/dist/cjs/element/options.js +24 -0
  13. package/dist/cjs/element/parse.js +42 -0
  14. package/dist/cjs/element/props.js +114 -0
  15. package/dist/cjs/element/remove.js +44 -0
  16. package/dist/cjs/element/root.js +30 -0
  17. package/dist/cjs/element/set.js +55 -0
  18. package/dist/cjs/element/state.js +208 -0
  19. package/dist/cjs/element/tree.js +31 -0
  20. package/dist/cjs/element/update.js +158 -0
  21. package/dist/cjs/event/can.js +30 -0
  22. package/dist/cjs/event/index.js +34 -0
  23. package/dist/cjs/event/is.js +28 -0
  24. package/dist/cjs/event/on.js +34 -0
  25. package/dist/cjs/event/store.js +27 -0
  26. package/dist/cjs/event/wrappers.js +36 -0
  27. package/dist/cjs/index.js +35 -0
  28. package/dist/cjs/package.json +4 -0
  29. package/dist/cjs/utils/component.js +77 -0
  30. package/dist/cjs/utils/extendUtils.js +142 -0
  31. package/dist/cjs/utils/index.js +20 -0
  32. package/dist/cjs/utils/object.js +146 -0
  33. package/dist/esm/element/applyParam.js +2614 -0
  34. package/dist/esm/element/assign.js +16 -0
  35. package/dist/esm/element/cache.js +1134 -0
  36. package/dist/esm/element/create.js +2616 -0
  37. package/dist/esm/element/define.js +2623 -0
  38. package/dist/esm/element/extend.js +984 -0
  39. package/dist/esm/element/index.js +2667 -0
  40. package/dist/esm/element/iterate.js +1114 -0
  41. package/dist/esm/element/methods.js +2635 -0
  42. package/dist/esm/element/node.js +2617 -0
  43. package/dist/esm/element/nodes.js +139 -0
  44. package/dist/esm/element/options.js +5 -0
  45. package/dist/esm/element/parse.js +2629 -0
  46. package/dist/esm/element/props.js +958 -0
  47. package/dist/esm/element/remove.js +842 -0
  48. package/dist/esm/element/root.js +162 -0
  49. package/dist/esm/element/set.js +2616 -0
  50. package/dist/esm/element/state.js +1209 -0
  51. package/dist/esm/element/tree.js +165 -0
  52. package/dist/esm/element/update.js +2616 -0
  53. package/dist/esm/event/can.js +1058 -0
  54. package/dist/esm/event/index.js +1098 -0
  55. package/dist/esm/event/is.js +67 -0
  56. package/dist/esm/event/on.js +15 -0
  57. package/dist/esm/event/store.js +8 -0
  58. package/dist/esm/event/wrappers.js +75 -0
  59. package/dist/esm/index.js +2658 -0
  60. package/dist/esm/utils/component.js +875 -0
  61. package/dist/esm/utils/extendUtils.js +940 -0
  62. package/dist/esm/utils/index.js +1260 -0
  63. package/dist/esm/utils/object.js +1081 -0
  64. package/dist/iife/index.js +2658 -0
  65. package/package.json +9 -4
  66. package/src/element/create.js +16 -13
  67. package/src/element/index.js +4 -10
  68. package/src/element/iterate.js +7 -28
  69. package/src/element/methods.js +18 -81
  70. package/src/element/mixins/content.js +6 -4
  71. package/src/element/mixins/registry.js +3 -4
  72. package/src/element/node.js +5 -6
  73. package/src/element/parse.js +1 -1
  74. package/src/element/props.js +3 -1
  75. package/src/element/state.js +168 -81
  76. package/src/element/update.js +100 -77
  77. package/src/index.js +6 -5
  78. package/src/utils/component.js +0 -1
  79. package/src/utils/object.js +31 -25
  80. package/src/element/assign.js +0 -22
  81. package/src/element/cache.js +0 -56
  82. package/src/element/nodes.js +0 -141
  83. package/src/element/root.js +0 -11
  84. package/src/element/tree.js +0 -5
  85. package/src/event/can.js +0 -10
  86. package/src/event/index.js +0 -11
  87. package/src/event/is.js +0 -15
  88. package/src/event/on.js +0 -13
  89. package/src/event/store.js +0 -6
  90. package/src/event/wrappers.js +0 -16
@@ -1,9 +1,16 @@
1
1
  'use strict'
2
2
 
3
- import { TAGS } from '@domql/registry'
4
- import { isArray, isObject, isObjectLike } from '@domql/utils'
5
-
6
- export const isTagRegistered = arg => TAGS.body.indexOf(arg)
3
+ import { isArray, isObject, isObjectLike, joinArrays } from '@domql/utils'
4
+ import { IGNORE_STATE_PARAMS } from '../element/state'
5
+ import { IGNORE_PROPS_PARAMS } from '../element/props'
6
+ import { METHODS } from '../element/methods'
7
+
8
+ const METHODS_EXL = joinArrays(
9
+ ['node', 'state', 'context', 'extend'],
10
+ METHODS,
11
+ IGNORE_STATE_PARAMS,
12
+ IGNORE_PROPS_PARAMS
13
+ )
7
14
 
8
15
  export const merge = (element, obj) => {
9
16
  for (const e in obj) {
@@ -16,12 +23,11 @@ export const merge = (element, obj) => {
16
23
  return element
17
24
  }
18
25
 
19
- export const deepMerge = (element, extend) => {
26
+ export const deepMerge = (element, extend, exclude = METHODS_EXL) => {
20
27
  for (const e in extend) {
28
+ if (exclude.includes(e)) continue
21
29
  const elementProp = element[e]
22
30
  const extendProp = extend[e]
23
- // const cachedProps = cache.props
24
- if (e === 'parent' || e === 'props' || e === 'state') continue
25
31
  if (elementProp === undefined) {
26
32
  element[e] = extendProp
27
33
  } else if (isObjectLike(elementProp) && isObject(extendProp)) {
@@ -31,11 +37,11 @@ export const deepMerge = (element, extend) => {
31
37
  return element
32
38
  }
33
39
 
34
- export const clone = obj => {
40
+ export const clone = (obj, exclude = METHODS_EXL) => {
35
41
  const o = {}
36
- for (const prop in obj) {
37
- if (prop === 'node') continue
38
- o[prop] = obj[prop]
42
+ for (const e in obj) {
43
+ if (exclude.includes(e)) continue
44
+ o[e] = obj[e]
39
45
  }
40
46
  return o
41
47
  }
@@ -43,17 +49,17 @@ export const clone = obj => {
43
49
  /**
44
50
  * Deep cloning of object
45
51
  */
46
- export const deepClone = (obj, excluding = ['parent', 'node', '__element', 'state', 'context', 'extend', '__ref']) => {
52
+ export const deepClone = (obj, exclude = METHODS_EXL) => {
47
53
  const o = isArray(obj) ? [] : {}
48
- for (const prop in obj) {
49
- if (excluding.indexOf(prop) > -1) continue
50
- let objProp = obj[prop]
51
- if (prop === 'extend' && isArray(objProp)) {
52
- objProp = mergeArray(objProp, excluding)
54
+ for (const e in obj) {
55
+ if (exclude.includes(e)) continue
56
+ let objProp = obj[e]
57
+ if (e === 'extend' && isArray(objProp)) {
58
+ objProp = mergeArray(objProp, exclude)
53
59
  }
54
60
  if (isObjectLike(objProp)) {
55
- o[prop] = deepClone(objProp, excluding)
56
- } else o[prop] = objProp
61
+ o[e] = deepClone(objProp, exclude)
62
+ } else o[e] = objProp
57
63
  }
58
64
  return o
59
65
  }
@@ -83,9 +89,9 @@ export const overwrite = (element, params, options) => {
83
89
  return changes
84
90
  }
85
91
 
86
- export const overwriteShallow = (obj, params, excluding = ['node', '__ref']) => {
92
+ export const overwriteShallow = (obj, params, exclude = METHODS_EXL) => {
87
93
  for (const e in params) {
88
- if (excluding.indexOf(e) > -1) continue
94
+ if (exclude.includes(e)) continue
89
95
  obj[e] = params[e]
90
96
  }
91
97
  return obj
@@ -94,9 +100,9 @@ export const overwriteShallow = (obj, params, excluding = ['node', '__ref']) =>
94
100
  /**
95
101
  * Overwrites DEEPly object properties with another
96
102
  */
97
- export const overwriteDeep = (obj, params, excluding = ['node', '__ref']) => {
103
+ export const overwriteDeep = (obj, params, exclude = METHODS_EXL) => {
98
104
  for (const e in params) {
99
- if (excluding.indexOf(e) > -1) continue
105
+ if (exclude.includes(e)) continue
100
106
  const objProp = obj[e]
101
107
  const paramsProp = params[e]
102
108
  if (isObjectLike(objProp) && isObjectLike(paramsProp)) {
@@ -119,8 +125,8 @@ export const mergeIfExisted = (a, b) => {
119
125
  /**
120
126
  * Merges array extends
121
127
  */
122
- export const mergeArray = (arr, excluding = ['parent', 'node', '__element', 'state', 'context', '__ref']) => {
123
- return arr.reduce((a, c) => deepMerge(a, deepClone(c, excluding)), {})
128
+ export const mergeArray = (arr, exclude = ['parent', 'node', '__element', 'state', 'context', '__ref']) => {
129
+ return arr.reduce((a, c) => deepMerge(a, deepClone(c, exclude)), {})
124
130
  }
125
131
 
126
132
  /**
@@ -1,22 +0,0 @@
1
- 'use strict'
2
-
3
- /**
4
- * Receives child and parent nodes as parametes
5
- * and assigns them into real DOM tree
6
- */
7
- export const appendNode = (node, parentNode) => {
8
- parentNode.appendChild(node)
9
- return node
10
- }
11
-
12
- /**
13
- * Receives elements and assigns the first
14
- * parameter as a child of the second one
15
- */
16
- export const assignNode = (element, parent, key) => {
17
- parent[key || element.key] = element
18
- if (element.tag !== 'shadow') {
19
- appendNode(element.node, parent.node)
20
- }
21
- return element
22
- }
@@ -1,56 +0,0 @@
1
- 'use strict'
2
-
3
- import { document } from '@domql/globals'
4
- import { exec, isString } from '@domql/utils'
5
- import { report } from '@domql/report'
6
-
7
- import { can } from '../event'
8
- import { isTagRegistered } from '../utils'
9
-
10
- const cachedElements = {}
11
-
12
- const createNode = (element) => {
13
- const { tag } = element
14
- if (tag) {
15
- if (tag === 'string') return document.createTextNode(element.text)
16
- else if (tag === 'fragment') {
17
- return document.createDocumentFragment()
18
- } else if (tag === 'svg' || tag === 'path') { // change that
19
- return document.createElementNS('http://www.w3.org/2000/svg', tag)
20
- } else return document.createElement(tag)
21
- } else {
22
- return document.createElement('div')
23
- }
24
- }
25
-
26
- export const detectTag = element => {
27
- let { tag, key } = element
28
- tag = exec(tag, element)
29
-
30
- if (tag === true) tag = key
31
-
32
- if (isString(tag)) {
33
- const tagExists = isTagRegistered(tag) > -1
34
- if (tagExists) return tag
35
- } else {
36
- const isKeyATag = isTagRegistered(key) > -1
37
- if (isKeyATag) return key
38
- }
39
-
40
- return 'div'
41
- }
42
-
43
- export default (element) => {
44
- const tag = element.tag = detectTag(element)
45
-
46
- if (!can.render(element)) {
47
- return report('HTMLInvalidTag')
48
- }
49
-
50
- let cachedTag = cachedElements[tag]
51
- if (!cachedTag) cachedTag = cachedElements[tag] = createNode(element)
52
-
53
- const clonedNode = cachedTag.cloneNode(true)
54
- if (tag === 'string') clonedNode.nodeValue = element.text
55
- return clonedNode
56
- }
@@ -1,141 +0,0 @@
1
- 'use strict'
2
-
3
- export default {
4
- root: [
5
- 'body',
6
- 'html'
7
- ],
8
-
9
- head: [
10
- 'title',
11
- 'base',
12
- 'meta',
13
- 'style'
14
- ],
15
-
16
- body: [
17
- 'html',
18
- 'body',
19
- 'string',
20
- 'fragment',
21
- 'a',
22
- 'abbr',
23
- 'acronym',
24
- 'address',
25
- 'applet',
26
- 'area',
27
- 'article',
28
- 'aside',
29
- 'audio',
30
- 'b',
31
- 'basefont',
32
- 'bdi',
33
- 'bdo',
34
- 'big',
35
- 'blockquote',
36
- 'br',
37
- 'button',
38
- 'canvas',
39
- 'caption',
40
- 'center',
41
- 'cite',
42
- 'code',
43
- 'col',
44
- 'colgroup',
45
- 'data',
46
- 'datalist',
47
- 'dd',
48
- 'del',
49
- 'details',
50
- 'dfn',
51
- 'dialog',
52
- 'dir',
53
- 'div',
54
- 'dl',
55
- 'dt',
56
- 'em',
57
- 'embed',
58
- 'fieldset',
59
- 'figcaption',
60
- 'figure',
61
- 'font',
62
- 'footer',
63
- 'form',
64
- 'frame',
65
- 'frameset',
66
- 'h1',
67
- 'h2',
68
- 'h3',
69
- 'h4',
70
- 'h5',
71
- 'h6',
72
- 'head',
73
- 'header',
74
- 'hr',
75
- 'i',
76
- 'iframe',
77
- 'img',
78
- 'input',
79
- 'ins',
80
- 'kbd',
81
- 'label',
82
- 'legend',
83
- 'li',
84
- 'link',
85
- 'main',
86
- 'map',
87
- 'mark',
88
- 'meter',
89
- 'nav',
90
- 'noframes',
91
- 'noscript',
92
- 'object',
93
- 'ol',
94
- 'optgroup',
95
- 'option',
96
- 'output',
97
- 'p',
98
- 'param',
99
- 'picture',
100
- 'pre',
101
- 'progress',
102
- 'q',
103
- 'rp',
104
- 'rt',
105
- 'ruby',
106
- 's',
107
- 'samp',
108
- 'script',
109
- 'section',
110
- 'select',
111
- 'small',
112
- 'source',
113
- 'span',
114
- 'strike',
115
- 'strong',
116
- 'sub',
117
- 'summary',
118
- 'sup',
119
- 'table',
120
- 'tbody',
121
- 'td',
122
- 'template',
123
- 'textarea',
124
- 'tfoot',
125
- 'th',
126
- 'thead',
127
- 'time',
128
- 'tr',
129
- 'track',
130
- 'tt',
131
- 'u',
132
- 'ul',
133
- 'var',
134
- 'video',
135
- 'wbr',
136
-
137
- // SVG
138
- 'svg',
139
- 'path'
140
- ]
141
- }
@@ -1,11 +0,0 @@
1
- 'use strict'
2
-
3
- import { document } from '@domql/globals'
4
- import { report } from '@domql/report'
5
-
6
- const root = {
7
- key: ':root',
8
- node: document ? document.body : report('DocumentNotDefined', document)
9
- }
10
-
11
- export default root
@@ -1,5 +0,0 @@
1
- 'use strict'
2
-
3
- import root from './root'
4
-
5
- export default root
package/src/event/can.js DELETED
@@ -1,10 +0,0 @@
1
- 'use strict'
2
-
3
- import { TAGS } from '@domql/registry'
4
- import { report } from '@domql/report'
5
-
6
- export const render = (element) => {
7
- const tag = element.tag || 'div'
8
- const isValid = TAGS.body.indexOf(tag) > -1
9
- return isValid || report('HTMLInvalidTag')
10
- }
@@ -1,11 +0,0 @@
1
- 'use strict'
2
-
3
- import * as on from './on'
4
- import * as can from './can'
5
- import * as is from './is'
6
-
7
- export {
8
- on,
9
- can,
10
- is
11
- }
package/src/event/is.js DELETED
@@ -1,15 +0,0 @@
1
- 'use strict'
2
-
3
- import { window } from '@domql/globals'
4
-
5
- export const node = (node) => {
6
- const { Node } = window
7
- return (
8
- typeof Node === 'function'
9
- ? node instanceof Node
10
- : node &&
11
- typeof node === 'object' &&
12
- typeof node.nodeType === 'number' &&
13
- typeof node.tag === 'string'
14
- )
15
- }
package/src/event/on.js DELETED
@@ -1,13 +0,0 @@
1
- 'use strict'
2
-
3
- export const initUpdate = (param, element, state, changes) => {
4
- return param(element, state, changes)
5
- }
6
-
7
- export const initStateUpdated = (param, element, state, changes) => {
8
- return param(element, state, changes)
9
- }
10
-
11
- export const stateUpdated = (param, element, state, changes) => {
12
- return param(element, state, changes)
13
- }
@@ -1,6 +0,0 @@
1
- 'use strict'
2
-
3
- export default {
4
- click: [],
5
- render: []
6
- }
@@ -1,16 +0,0 @@
1
- 'use strict'
2
-
3
- import { document, window } from '@domql/globals'
4
-
5
- export const getScrollPositions = () => {
6
- if (global.pageYOffset !== undefined) {
7
- return [global.pageXOffset, window.pageYOffset]
8
- } else {
9
- const d = document
10
- const r = d.documentElement
11
- const b = d.body
12
- const sx = r.scrollLeft || b.scrollLeft || 0
13
- const sy = r.scrollTop || b.scrollTop || 0
14
- return [sx, sy]
15
- }
16
- }