@domql/element 2.5.75 → 2.5.78

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"];
package/dist/cjs/set.js CHANGED
@@ -38,7 +38,6 @@ var import_options = __toESM(require("./cache/options"), 1);
38
38
  var import_mixins = require("./mixins");
39
39
  var import_content = require("./mixins/content");
40
40
  const resetElement = (params, element, options) => {
41
- const perf = performance.now();
42
41
  if (!options.preventRemove)
43
42
  (0, import_content.removeContent)(element, options);
44
43
  (0, import_create.default)(params, element, options.contentElementKey || "content", {
@@ -53,7 +53,8 @@ const UPDATE_DEFAULT_OPTIONS = {
53
53
  calleeElement: false,
54
54
  excludes: import_utils2.METHODS_EXL
55
55
  };
56
- const update = function(params = {}, options = UPDATE_DEFAULT_OPTIONS) {
56
+ const update = function(params = {}, opts = UPDATE_DEFAULT_OPTIONS) {
57
+ const options = (0, import_utils2.deepClone)((0, import_utils2.deepMerge)(opts, UPDATE_DEFAULT_OPTIONS));
57
58
  const element = this;
58
59
  const { parent, node, key } = element;
59
60
  const { excludes, preventInheritAtCurrentState } = options;
@@ -170,6 +171,7 @@ const captureSnapshot = (element, options) => {
170
171
  return [snapshotOnCallee, calleeElement];
171
172
  };
172
173
  const checkIfOnUpdate = (element, parent, options) => {
174
+ var _a;
173
175
  if (!(0, import_utils.isFunction)(element.if) || !parent)
174
176
  return;
175
177
  const ref = element.__ref;
@@ -179,6 +181,7 @@ const checkIfOnUpdate = (element, parent, options) => {
179
181
  ref.__if = true;
180
182
  if (itWasFalse) {
181
183
  delete element.__hash;
184
+ delete element.__text;
182
185
  delete element.extend;
183
186
  if (!ref.__hasRootState) {
184
187
  delete element.state;
@@ -188,15 +191,26 @@ const checkIfOnUpdate = (element, parent, options) => {
188
191
  } else if (!ref.__hasRootState) {
189
192
  delete element.state;
190
193
  }
191
- element.node && element.node.remove();
194
+ if (element.node) {
195
+ element.node.remove();
196
+ delete element.node;
197
+ }
198
+ if (element.$collection || element.$stateCollection || element.$propsCollection) {
199
+ element.removeContent();
200
+ } else if ((_a = element.content) == null ? void 0 : _a.parseDeep)
201
+ element.content = element.content.parseDeep();
192
202
  const previousElement = element.previousElement();
203
+ const previousNode = previousElement == null ? void 0 : previousElement.node;
204
+ const hasPrevious = previousNode == null ? void 0 : previousNode.parentNode;
193
205
  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) && {
206
+ const nextNode = nextElement == null ? void 0 : nextElement.node;
207
+ const hasNext = nextNode == null ? void 0 : nextNode.parentNode;
208
+ const attachOptions = (hasPrevious || hasNext) && {
197
209
  position: hasPrevious ? "after" : hasNext ? "before" : null,
198
- node: hasPrevious || hasNext
210
+ node: hasPrevious && previousNode || hasNext && nextNode
199
211
  };
212
+ delete element.__ref;
213
+ delete element.parent;
200
214
  const created = (0, import_create.default)(element, parent, element.key, import_options.default.create, attachOptions);
201
215
  if (options.preventUpdate !== true && element.on && (0, import_utils.isFunction)(element.on.update)) {
202
216
  (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.78",
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": "053f137856aad06574e99486357f486d6d724132",
35
35
  "devDependencies": {
36
36
  "@babel/core": "^7.12.0"
37
37
  }
package/set.js CHANGED
@@ -8,7 +8,6 @@ import { registry } from './mixins'
8
8
  import { removeContent } from './mixins/content'
9
9
 
10
10
  export const resetElement = (params, element, options) => {
11
- const perf = performance.now()
12
11
  if (!options.preventRemove) removeContent(element, options)
13
12
  create(params, element, options.contentElementKey || 'content', {
14
13
  ignoreChildExtend: true,
package/update.js CHANGED
@@ -19,7 +19,7 @@ import { isMethod } from './methods'
19
19
  import { updateProps } from './props'
20
20
  import { createState, findInheritedState } from '@domql/state'
21
21
 
22
- import { METHODS_EXL, isVariant } from './utils'
22
+ import { METHODS_EXL, deepClone, isVariant, deepMerge } from './utils'
23
23
  import create from './create'
24
24
  import { throughUpdatedDefine, throughUpdatedExec } from './iterate'
25
25
  import { registry } from './mixins'
@@ -39,7 +39,8 @@ const UPDATE_DEFAULT_OPTIONS = {
39
39
  excludes: METHODS_EXL
40
40
  }
41
41
 
42
- const update = function (params = {}, options = UPDATE_DEFAULT_OPTIONS) {
42
+ const update = function (params = {}, opts = UPDATE_DEFAULT_OPTIONS) {
43
+ const options = deepClone(deepMerge(opts, UPDATE_DEFAULT_OPTIONS))
43
44
  const element = this
44
45
  const { parent, node, key } = element
45
46
  const { excludes, preventInheritAtCurrentState } = options
@@ -183,6 +184,7 @@ const checkIfOnUpdate = (element, parent, options) => {
183
184
  ref.__if = true
184
185
  if (itWasFalse) {
185
186
  delete element.__hash
187
+ delete element.__text
186
188
  delete element.extend
187
189
  if (!ref.__hasRootState) {
188
190
  delete element.state
@@ -194,19 +196,31 @@ const checkIfOnUpdate = (element, parent, options) => {
194
196
  delete element.state
195
197
  }
196
198
 
197
- element.node && element.node.remove()
199
+ if (element.node) {
200
+ element.node.remove()
201
+ delete element.node
202
+ }
203
+
204
+ if (element.$collection || element.$stateCollection || element.$propsCollection) {
205
+ element.removeContent()
206
+ } else if (element.content?.parseDeep) element.content = element.content.parseDeep()
198
207
 
199
208
  const previousElement = element.previousElement()
200
- const nextElement = element.nextElement()
209
+ const previousNode = previousElement?.node // document.body.contains(previousElement.node)
210
+ const hasPrevious = previousNode?.parentNode // document.body.contains(previousElement.node)
201
211
 
202
- const hasPrevious = previousElement && previousElement.node
203
- const hasNext = nextElement && nextElement.node
212
+ const nextElement = element.nextElement()
213
+ const nextNode = nextElement?.node // document.body.contains(previousElement.node)
214
+ const hasNext = nextNode?.parentNode // && document.body.contains(nextElement.node)
215
+ // const hasNext = nextElement && document.body.contains(nextElement.node)
204
216
 
205
- const attachOptions = ((hasPrevious && hasPrevious.parentNode) || (hasNext && hasNext.parentNode)) && {
217
+ const attachOptions = (hasPrevious || hasNext) && {
206
218
  position: hasPrevious ? 'after' : hasNext ? 'before' : null,
207
- node: hasPrevious || hasNext
219
+ node: (hasPrevious && previousNode) || (hasNext && nextNode)
208
220
  }
209
221
 
222
+ delete element.__ref
223
+ delete element.parent
210
224
  const created = create(element, parent, element.key, OPTIONS.create, attachOptions)
211
225
  // check preventUpdate for an array (Line: 87)
212
226
  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