@domql/element 2.5.75 → 2.5.77

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.
@@ -105,12 +105,16 @@ const parse = function(excl = []) {
105
105
  keyList.forEach((v) => {
106
106
  if (excl.includes(v))
107
107
  return;
108
- let val = element[v];
108
+ const val = element[v];
109
109
  if (v === "state") {
110
- if (element.__ref && element.__ref.__hasRootState)
110
+ if (element.__ref && !element.__ref.__hasRootState)
111
111
  return;
112
- if ((0, import_utils.isFunction)(val && val.parse))
113
- val = val.parse();
112
+ const parsedVal = (0, import_utils.isFunction)(val && val.parse) ? val.parse() : val;
113
+ obj[v] = (0, import_utils.isFunction)(parsedVal) ? parsedVal : JSON.parse(JSON.stringify(parsedVal || {}));
114
+ } else if (v === "scope") {
115
+ if (element.__ref && !element.__ref.__hasRootScope)
116
+ return;
117
+ obj[v] = JSON.parse(JSON.stringify(val || {}));
114
118
  } else if (v === "props") {
115
119
  const { __element, update, ...props } = element[v];
116
120
  obj[v] = props;
@@ -47,7 +47,7 @@ const removeContent = function(el) {
47
47
  const element = el || this;
48
48
  const { __ref } = element;
49
49
  if (element.content) {
50
- if (element.content.node) {
50
+ if (element.content.node && element.node) {
51
51
  if (element.content.tag === "fragment")
52
52
  element.node.innerHTML = "";
53
53
  else
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var registry_exports = {};
20
20
  __export(registry_exports, {
21
+ collectionFilters: () => collectionFilters,
21
22
  default: () => registry_default,
22
23
  parseFilters: () => parseFilters
23
24
  });
@@ -88,8 +89,17 @@ const parseFilters = {
88
89
  "content",
89
90
  "html",
90
91
  "on",
91
- "key"
92
+ "key",
93
+ "extend",
94
+ "childExtend",
95
+ "childExtendRecursive",
96
+ "scope",
97
+ "query",
98
+ "$collection",
99
+ "$stateCollection",
100
+ "$propsCollection"
92
101
  ],
93
102
  propsKeys: ["__element", "update"],
94
103
  stateKeys: []
95
104
  };
105
+ const collectionFilters = ["$collection", "$stateCollection", "$propsCollection"];
@@ -170,6 +170,7 @@ const captureSnapshot = (element, options) => {
170
170
  return [snapshotOnCallee, calleeElement];
171
171
  };
172
172
  const checkIfOnUpdate = (element, parent, options) => {
173
+ var _a;
173
174
  if (!(0, import_utils.isFunction)(element.if) || !parent)
174
175
  return;
175
176
  const ref = element.__ref;
@@ -179,6 +180,7 @@ const checkIfOnUpdate = (element, parent, options) => {
179
180
  ref.__if = true;
180
181
  if (itWasFalse) {
181
182
  delete element.__hash;
183
+ delete element.__text;
182
184
  delete element.extend;
183
185
  if (!ref.__hasRootState) {
184
186
  delete element.state;
@@ -188,15 +190,26 @@ const checkIfOnUpdate = (element, parent, options) => {
188
190
  } else if (!ref.__hasRootState) {
189
191
  delete element.state;
190
192
  }
191
- element.node && element.node.remove();
193
+ if (element.node) {
194
+ element.node.remove();
195
+ delete element.node;
196
+ }
197
+ if (element.$collection || element.$stateCollection || element.$propsCollection) {
198
+ element.removeContent();
199
+ } else if ((_a = element.content) == null ? void 0 : _a.parseDeep)
200
+ element.content = element.content.parseDeep();
192
201
  const previousElement = element.previousElement();
202
+ const previousNode = previousElement == null ? void 0 : previousElement.node;
203
+ const hasPrevious = previousNode == null ? void 0 : previousNode.parentNode;
193
204
  const nextElement = element.nextElement();
194
- const hasPrevious = previousElement && previousElement.node;
195
- const hasNext = nextElement && nextElement.node;
196
- const attachOptions = (hasPrevious && hasPrevious.parentNode || hasNext && hasNext.parentNode) && {
205
+ const nextNode = nextElement == null ? void 0 : nextElement.node;
206
+ const hasNext = nextNode == null ? void 0 : nextNode.parentNode;
207
+ const attachOptions = (hasPrevious || hasNext) && {
197
208
  position: hasPrevious ? "after" : hasNext ? "before" : null,
198
- node: hasPrevious || hasNext
209
+ node: hasPrevious && previousNode || hasNext && nextNode
199
210
  };
211
+ delete element.__ref;
212
+ delete element.parent;
200
213
  const created = (0, import_create.default)(element, parent, element.key, import_options.default.create, attachOptions);
201
214
  if (options.preventUpdate !== true && element.on && (0, import_utils.isFunction)(element.on.update)) {
202
215
  (0, import_event.applyEvent)(element.on.update, created, created.state);
@@ -19,7 +19,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var extendUtils_exports = {};
20
20
  __export(extendUtils_exports, {
21
21
  cloneAndMergeArrayExtend: () => cloneAndMergeArrayExtend,
22
- deepCloneExtend: () => deepCloneExtend,
23
22
  deepExtend: () => deepExtend,
24
23
  deepMergeExtend: () => deepMergeExtend,
25
24
  extendCachedRegistry: () => extendCachedRegistry,
@@ -81,21 +80,6 @@ const flattenExtend = (extend, stack, context) => {
81
80
  deepExtend(extend, stack, context);
82
81
  return stack;
83
82
  };
84
- const deepCloneExtend = (obj) => {
85
- const o = {};
86
- for (const prop in obj) {
87
- if (["parent", "node", "__element"].indexOf(prop) > -1)
88
- continue;
89
- const objProp = obj[prop];
90
- if ((0, import_utils.isObject)(objProp)) {
91
- o[prop] = deepCloneExtend(objProp);
92
- } else if ((0, import_utils.isArray)(objProp)) {
93
- o[prop] = objProp.map((x) => x);
94
- } else
95
- o[prop] = objProp;
96
- }
97
- return o;
98
- };
99
83
  const deepMergeExtend = (element, extend) => {
100
84
  for (const e in extend) {
101
85
  if (["parent", "node", "__element"].indexOf(e) > -1)
@@ -119,7 +103,7 @@ const deepMergeExtend = (element, extend) => {
119
103
  };
120
104
  const cloneAndMergeArrayExtend = (stack) => {
121
105
  return stack.reduce((a, c) => {
122
- return deepMergeExtend(a, deepCloneExtend(c));
106
+ return deepMergeExtend(a, (0, import_utils.deepCloneWithExtend)(c));
123
107
  }, {});
124
108
  };
125
109
  const fallbackStringExtend = (extend, context, options = {}) => {
package/methods/index.js CHANGED
@@ -83,10 +83,14 @@ export const parse = function (excl = []) {
83
83
  const keyList = keys.call(element)
84
84
  keyList.forEach(v => {
85
85
  if (excl.includes(v)) return
86
- let val = element[v]
86
+ const val = element[v]
87
87
  if (v === 'state') {
88
- if (element.__ref && element.__ref.__hasRootState) return
89
- if (isFunction(val && val.parse)) val = val.parse()
88
+ if (element.__ref && !element.__ref.__hasRootState) return
89
+ const parsedVal = isFunction(val && val.parse) ? val.parse() : val
90
+ obj[v] = isFunction(parsedVal) ? parsedVal : JSON.parse(JSON.stringify(parsedVal || {}))
91
+ } else if (v === 'scope') {
92
+ if (element.__ref && !element.__ref.__hasRootScope) return
93
+ obj[v] = JSON.parse(JSON.stringify(val || {}))
90
94
  } else if (v === 'props') {
91
95
  const { __element, update, ...props } = element[v]
92
96
  obj[v] = props
package/mixins/content.js CHANGED
@@ -15,7 +15,7 @@ export const removeContent = function (el) {
15
15
  const { __ref } = element
16
16
 
17
17
  if (element.content) {
18
- if (element.content.node) {
18
+ if (element.content.node && element.node) {
19
19
  if (element.content.tag === 'fragment') element.node.innerHTML = ''
20
20
  else element.node.removeChild(element.content.node)
21
21
  }
@@ -66,8 +66,12 @@ export default {
66
66
  export const parseFilters = {
67
67
  elementKeys: [
68
68
  'tag', 'text', 'style', 'attr', 'class', 'state', 'props',
69
- 'data', 'content', 'html', 'on', 'key'
69
+ 'data', 'content', 'html', 'on', 'key', 'extend', 'childExtend',
70
+ 'childExtendRecursive', 'scope', 'query',
71
+ '$collection', '$stateCollection', '$propsCollection'
70
72
  ],
71
73
  propsKeys: ['__element', 'update'],
72
74
  stateKeys: []
73
75
  }
76
+
77
+ export const collectionFilters = ['$collection', '$stateCollection', '$propsCollection']
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domql/element",
3
- "version": "2.5.75",
3
+ "version": "2.5.77",
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": "aed026de97492c8c0e4da1f47cb027bc6db63362",
34
+ "gitHead": "20db0bd2a45b9f1037d8ca6a7fb3fd66197a3056",
35
35
  "devDependencies": {
36
36
  "@babel/core": "^7.12.0"
37
37
  }
package/update.js CHANGED
@@ -183,6 +183,7 @@ const checkIfOnUpdate = (element, parent, options) => {
183
183
  ref.__if = true
184
184
  if (itWasFalse) {
185
185
  delete element.__hash
186
+ delete element.__text
186
187
  delete element.extend
187
188
  if (!ref.__hasRootState) {
188
189
  delete element.state
@@ -194,19 +195,31 @@ const checkIfOnUpdate = (element, parent, options) => {
194
195
  delete element.state
195
196
  }
196
197
 
197
- element.node && element.node.remove()
198
+ if (element.node) {
199
+ element.node.remove()
200
+ delete element.node
201
+ }
202
+
203
+ if (element.$collection || element.$stateCollection || element.$propsCollection) {
204
+ element.removeContent()
205
+ } else if (element.content?.parseDeep) element.content = element.content.parseDeep()
198
206
 
199
207
  const previousElement = element.previousElement()
200
- const nextElement = element.nextElement()
208
+ const previousNode = previousElement?.node // document.body.contains(previousElement.node)
209
+ const hasPrevious = previousNode?.parentNode // document.body.contains(previousElement.node)
201
210
 
202
- const hasPrevious = previousElement && previousElement.node
203
- const hasNext = nextElement && nextElement.node
211
+ const nextElement = element.nextElement()
212
+ const nextNode = nextElement?.node // document.body.contains(previousElement.node)
213
+ const hasNext = nextNode?.parentNode // && document.body.contains(nextElement.node)
214
+ // const hasNext = nextElement && document.body.contains(nextElement.node)
204
215
 
205
- const attachOptions = ((hasPrevious && hasPrevious.parentNode) || (hasNext && hasNext.parentNode)) && {
216
+ const attachOptions = (hasPrevious || hasNext) && {
206
217
  position: hasPrevious ? 'after' : hasNext ? 'before' : null,
207
- node: hasPrevious || hasNext
218
+ node: (hasPrevious && previousNode) || (hasNext && nextNode)
208
219
  }
209
220
 
221
+ delete element.__ref
222
+ delete element.parent
210
223
  const created = create(element, parent, element.key, OPTIONS.create, attachOptions)
211
224
  // check preventUpdate for an array (Line: 87)
212
225
  if (options.preventUpdate !== true && element.on && isFunction(element.on.update)) {
@@ -1,6 +1,6 @@
1
1
  'use strict'
2
2
 
3
- import { isArray, isFunction, isObject, isString } from '@domql/utils'
3
+ import { isArray, isFunction, isObject, isString, deepCloneWithExtend } from '@domql/utils'
4
4
  const ENV = process.env.NODE_ENV
5
5
 
6
6
  export const generateHash = () => Math.random().toString(36).substring(2)
@@ -48,21 +48,6 @@ export const flattenExtend = (extend, stack, context) => {
48
48
  return stack
49
49
  }
50
50
 
51
- // merging
52
- export const deepCloneExtend = obj => {
53
- const o = {}
54
- for (const prop in obj) {
55
- if (['parent', 'node', '__element'].indexOf(prop) > -1) continue
56
- const objProp = obj[prop]
57
- if (isObject(objProp)) {
58
- o[prop] = deepCloneExtend(objProp)
59
- } else if (isArray(objProp)) {
60
- o[prop] = objProp.map(x => x)
61
- } else o[prop] = objProp
62
- }
63
- return o
64
- }
65
-
66
51
  export const deepMergeExtend = (element, extend) => {
67
52
  for (const e in extend) {
68
53
  if (['parent', 'node', '__element'].indexOf(e) > -1) continue
@@ -86,7 +71,7 @@ export const deepMergeExtend = (element, extend) => {
86
71
 
87
72
  export const cloneAndMergeArrayExtend = stack => {
88
73
  return stack.reduce((a, c) => {
89
- return deepMergeExtend(a, deepCloneExtend(c))
74
+ return deepMergeExtend(a, deepCloneWithExtend(c))
90
75
  }, {})
91
76
  }
92
77