@domql/element 2.5.112 → 2.5.114

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.
@@ -34,7 +34,8 @@ __export(methods_exports, {
34
34
  remove: () => remove,
35
35
  setNodeStyles: () => setNodeStyles,
36
36
  setProps: () => setProps,
37
- spotByPath: () => spotByPath
37
+ spotByPath: () => spotByPath,
38
+ variables: () => variables
38
39
  });
39
40
  module.exports = __toCommonJS(methods_exports);
40
41
  var import_utils = require("@domql/utils");
@@ -141,6 +142,8 @@ const remove = function() {
141
142
  element.log();
142
143
  }
143
144
  delete element.parent[element.key];
145
+ if (element.parent.__ref)
146
+ element.parent.__ref.__children = (0, import_utils.removeValueFromArray)(element.parent.__ref.__children, element.key);
144
147
  };
145
148
  const get = function(param) {
146
149
  const element = this;
@@ -235,6 +238,40 @@ const previousElement = function(el) {
235
238
  const currentIndex = __children.indexOf(key);
236
239
  return parent[__children[currentIndex - 1]];
237
240
  };
241
+ const variables = function(obj = {}) {
242
+ const element = this;
243
+ if (!element.data)
244
+ element.data = {};
245
+ if (!element.data.varCaches)
246
+ element.data.varCaches = {};
247
+ const varCaches = element.data.varCaches;
248
+ const changes = {};
249
+ let changed;
250
+ for (const key in obj) {
251
+ if (obj[key] !== varCaches[key]) {
252
+ changed = true;
253
+ changes[key] = obj[key];
254
+ }
255
+ }
256
+ return {
257
+ changed: (cb) => {
258
+ if (!changed)
259
+ return;
260
+ cb(changes, (0, import_utils.deepClone)(varCaches));
261
+ for (const key in changes) {
262
+ varCaches[key] = changes[key];
263
+ }
264
+ },
265
+ timeout: (cb, timeout) => {
266
+ if (!changed)
267
+ return;
268
+ const t = setTimeout(() => {
269
+ cb(changes);
270
+ clearTimeout(t);
271
+ }, timeout);
272
+ }
273
+ };
274
+ };
238
275
  const METHODS = [
239
276
  "set",
240
277
  "reset",
@@ -251,6 +288,7 @@ const METHODS = [
251
288
  "parse",
252
289
  "setProps",
253
290
  "parseDeep",
291
+ "variables",
254
292
  "if",
255
293
  "log",
256
294
  "nextElement",
@@ -41,6 +41,7 @@ const addMethods = (element, parent) => {
41
41
  set: import_set.default.bind(element),
42
42
  reset: import_set.reset.bind(element),
43
43
  update: import_update.default.bind(element),
44
+ variables: import__.variables.bind(element),
44
45
  remove: import__.remove.bind(element),
45
46
  updateContent: import_content.updateContent.bind(element),
46
47
  removeContent: import_content.removeContent.bind(element),
@@ -51,8 +51,11 @@ const removeContent = function(el, opts = {}) {
51
51
  if (element[contentElementKey].node && element.node) {
52
52
  if (element[contentElementKey].tag === "fragment")
53
53
  element.node.innerHTML = "";
54
- else
55
- element.node.removeChild(element[contentElementKey].node);
54
+ else {
55
+ const contentNode = element[contentElementKey].node;
56
+ if (contentNode.parentNode === element.node)
57
+ element.node.removeChild(element[contentElementKey].node);
58
+ }
56
59
  }
57
60
  const { __cached } = __ref;
58
61
  if (__cached && __cached[contentElementKey]) {
@@ -61,6 +61,7 @@ var registry_default = {
61
61
  remove: {},
62
62
  updateContent: {},
63
63
  removeContent: {},
64
+ variables: {},
64
65
  lookup: {},
65
66
  lookdown: {},
66
67
  lookdownAll: {},
package/dist/cjs/set.js CHANGED
@@ -66,6 +66,7 @@ const set = function(params, options = {}, el) {
66
66
  if (options.preventContentUpdate === true && !hasCollection)
67
67
  return;
68
68
  if (ref.__noCollectionDifference || __contentRef && __contentRef.__cached && (0, import_utils.deepContains)(params, content)) {
69
+ console.log((0, import_utils.deepContains)(params, content));
69
70
  if (content == null ? void 0 : content.update)
70
71
  content.update();
71
72
  return;
@@ -213,11 +213,11 @@ const checkIfOnUpdate = (element, parent, options) => {
213
213
  };
214
214
  delete element.__ref;
215
215
  delete element.parent;
216
- const created = (0, import_create.default)(element, parent, element.key, import_options.default.create, attachOptions);
216
+ const createdElement = (0, import_create.default)(element, parent, element.key, import_options.default.create, attachOptions);
217
217
  if (options.preventUpdate !== true && element.on && (0, import_utils.isFunction)(element.on.update)) {
218
- (0, import_event.applyEvent)(element.on.update, created, created.state);
218
+ (0, import_event.applyEvent)(element.on.update, createdElement, createdElement.state);
219
219
  }
220
- return created;
220
+ return createdElement;
221
221
  }
222
222
  } else if (element.node && !ifPassed) {
223
223
  element.node.remove();
package/methods/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict'
2
2
 
3
- import { isDefined, isObject, isFunction, isObjectLike, isProduction } from '@domql/utils'
3
+ import { isDefined, isObject, isFunction, isObjectLike, isProduction, removeValueFromArray, deepClone } from '@domql/utils'
4
4
  import { TREE } from '../tree'
5
5
  import { parseFilters, registry } from '../mixins'
6
6
 
@@ -107,6 +107,7 @@ export const remove = function () {
107
107
  element.log()
108
108
  }
109
109
  delete element.parent[element.key]
110
+ if (element.parent.__ref) element.parent.__ref.__children = removeValueFromArray(element.parent.__ref.__children, element.key)
110
111
  }
111
112
 
112
113
  export const get = function (param) {
@@ -209,6 +210,37 @@ export const previousElement = function (el) {
209
210
  return parent[__children[currentIndex - 1]]
210
211
  }
211
212
 
213
+ export const variables = function (obj = {}) {
214
+ const element = this
215
+ if (!element.data) element.data = {}
216
+ if (!element.data.varCaches) element.data.varCaches = {}
217
+ const varCaches = element.data.varCaches
218
+ const changes = {}
219
+ let changed
220
+ for (const key in obj) {
221
+ if (obj[key] !== varCaches[key]) {
222
+ changed = true
223
+ changes[key] = obj[key]
224
+ }
225
+ }
226
+ return {
227
+ changed: (cb) => {
228
+ if (!changed) return
229
+ cb(changes, deepClone(varCaches))
230
+ for (const key in changes) {
231
+ varCaches[key] = changes[key]
232
+ }
233
+ },
234
+ timeout: (cb, timeout) => {
235
+ if (!changed) return
236
+ const t = setTimeout(() => {
237
+ cb(changes)
238
+ clearTimeout(t)
239
+ }, timeout)
240
+ }
241
+ }
242
+ }
243
+
212
244
  export const METHODS = [
213
245
  'set',
214
246
  'reset',
@@ -225,6 +257,7 @@ export const METHODS = [
225
257
  'parse',
226
258
  'setProps',
227
259
  'parseDeep',
260
+ 'variables',
228
261
  'if',
229
262
  'log',
230
263
  'nextElement',
package/methods/set.js CHANGED
@@ -14,6 +14,7 @@ import {
14
14
  remove,
15
15
  spotByPath,
16
16
  log,
17
+ variables,
17
18
  keys,
18
19
  parse,
19
20
  parseDeep,
@@ -28,6 +29,7 @@ export const addMethods = (element, parent) => {
28
29
  set: set.bind(element),
29
30
  reset: reset.bind(element),
30
31
  update: update.bind(element),
32
+ variables: variables.bind(element),
31
33
  remove: remove.bind(element),
32
34
  updateContent: updateContent.bind(element),
33
35
  removeContent: removeContent.bind(element),
package/mixins/content.js CHANGED
@@ -18,7 +18,10 @@ export const removeContent = function (el, opts = {}) {
18
18
  if (element[contentElementKey]) {
19
19
  if (element[contentElementKey].node && element.node) {
20
20
  if (element[contentElementKey].tag === 'fragment') element.node.innerHTML = ''
21
- else element.node.removeChild(element[contentElementKey].node)
21
+ else {
22
+ const contentNode = element[contentElementKey].node
23
+ if (contentNode.parentNode === element.node) element.node.removeChild(element[contentElementKey].node)
24
+ }
22
25
  }
23
26
 
24
27
  const { __cached } = __ref
@@ -45,6 +45,7 @@ export default {
45
45
  remove: {},
46
46
  updateContent: {},
47
47
  removeContent: {},
48
+ variables: {},
48
49
  lookup: {},
49
50
  lookdown: {},
50
51
  lookdownAll: {},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domql/element",
3
- "version": "2.5.112",
3
+ "version": "2.5.114",
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": "8a59640e77bcd22114bdf64dfa4945604b5bfd1f",
34
+ "gitHead": "61b7ecee05aaf0d6682e5f3cdb11f0091e880f3d",
35
35
  "devDependencies": {
36
36
  "@babel/core": "^7.12.0"
37
37
  }
package/set.js CHANGED
@@ -37,6 +37,7 @@ const set = function (params, options = {}, el) {
37
37
  if (options.preventContentUpdate === true && !hasCollection) return
38
38
 
39
39
  if (ref.__noCollectionDifference || (__contentRef && __contentRef.__cached && deepContains(params, content))) {
40
+ console.log(deepContains(params, content))
40
41
  if (content?.update) content.update()
41
42
  return
42
43
  }
package/update.js CHANGED
@@ -223,12 +223,12 @@ const checkIfOnUpdate = (element, parent, options) => {
223
223
 
224
224
  delete element.__ref
225
225
  delete element.parent
226
- const created = create(element, parent, element.key, OPTIONS.create, attachOptions)
226
+ const createdElement = create(element, parent, element.key, OPTIONS.create, attachOptions)
227
227
  // check preventUpdate for an array (Line: 87)
228
228
  if (options.preventUpdate !== true && element.on && isFunction(element.on.update)) {
229
- applyEvent(element.on.update, created, created.state)
229
+ applyEvent(element.on.update, createdElement, createdElement.state)
230
230
  }
231
- return created
231
+ return createdElement
232
232
  }
233
233
  } else if (element.node && !ifPassed) {
234
234
  element.node.remove()