@domql/element 3.0.6 → 3.1.1

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 (50) hide show
  1. package/__tests__/inheritStateUpdates.test.js +1 -1
  2. package/__tests__/throughExecProps.test.js +12 -12
  3. package/__tests__/throughInitialDefine.test.js +16 -16
  4. package/__tests__/throughInitialExec.test.js +16 -16
  5. package/__tests__/throughUpdatedDefine.test.js +14 -14
  6. package/__tests__/update.test.js +11 -8
  7. package/create.js +1 -10
  8. package/dist/cjs/__tests__/checkIfOnUpdate.test.js +73 -0
  9. package/dist/cjs/__tests__/children.test.js +177 -0
  10. package/dist/cjs/__tests__/define.test.js +75 -0
  11. package/dist/cjs/__tests__/inheritStateUpdates.test.js +62 -0
  12. package/dist/cjs/__tests__/renderElement.test.js +138 -0
  13. package/dist/cjs/__tests__/resetElement.test.js +35 -0
  14. package/dist/cjs/__tests__/set.test.js +256 -0
  15. package/dist/cjs/__tests__/throughExecProps.test.js +62 -0
  16. package/dist/cjs/__tests__/throughInitialDefine.test.js +79 -0
  17. package/dist/cjs/__tests__/throughInitialExec.test.js +73 -0
  18. package/dist/cjs/__tests__/throughUpdatedDefine.test.js +69 -0
  19. package/dist/cjs/__tests__/throughUpdatedExec.test.js +84 -0
  20. package/dist/cjs/__tests__/tree.test.js +11 -0
  21. package/dist/cjs/__tests__/update.test.js +222 -0
  22. package/dist/cjs/create.js +2 -11
  23. package/dist/cjs/iterate.js +11 -11
  24. package/dist/cjs/mixins/registry.js +1 -1
  25. package/dist/cjs/update.js +3 -2
  26. package/dist/esm/__tests__/checkIfOnUpdate.test.js +73 -0
  27. package/dist/esm/__tests__/children.test.js +177 -0
  28. package/dist/esm/__tests__/define.test.js +53 -0
  29. package/dist/esm/__tests__/inheritStateUpdates.test.js +62 -0
  30. package/dist/esm/__tests__/renderElement.test.js +116 -0
  31. package/dist/esm/__tests__/resetElement.test.js +35 -0
  32. package/dist/esm/__tests__/set.test.js +256 -0
  33. package/dist/esm/__tests__/throughExecProps.test.js +62 -0
  34. package/dist/esm/__tests__/throughInitialDefine.test.js +79 -0
  35. package/dist/esm/__tests__/throughInitialExec.test.js +73 -0
  36. package/dist/esm/__tests__/throughUpdatedDefine.test.js +69 -0
  37. package/dist/esm/__tests__/throughUpdatedExec.test.js +84 -0
  38. package/dist/esm/__tests__/tree.test.js +11 -0
  39. package/dist/esm/__tests__/update.test.js +222 -0
  40. package/dist/esm/create.js +2 -11
  41. package/dist/esm/iterate.js +13 -12
  42. package/dist/esm/mixins/registry.js +2 -2
  43. package/dist/esm/update.js +5 -4
  44. package/iterate.js +13 -12
  45. package/mixins/registry.js +2 -2
  46. package/package.json +11 -12
  47. package/update.js +6 -4
  48. package/dist/cjs/utils/onlyResolveExtends.js +0 -85
  49. package/dist/esm/utils/onlyResolveExtends.js +0 -72
  50. package/utils/onlyResolveExtends.js +0 -128
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domql/element",
3
- "version": "3.0.6",
3
+ "version": "3.1.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "index.js",
@@ -21,20 +21,19 @@
21
21
  ],
22
22
  "scripts": {
23
23
  "copy:package:cjs": "cp ../../build/package-cjs.json dist/cjs/package.json",
24
- "build:esm": "npx esbuild \"*.js\" \"utils/**/*.js\" \"mixins/**/*.js\" \"methods/**/*.js\" --target=es2019 --format=esm --outdir=dist/esm",
25
- "build:cjs": "npx esbuild \"*.js\" \"utils/**/*.js\" \"mixins/**/*.js\" \"methods/**/*.js\" --target=node16 --format=cjs --outdir=dist/cjs",
26
- "build": "rimraf -I dist; npm run build:cjs; npm run build:esm",
27
- "prepublish": "rimraf -I dist && npm run build && npm run copy:package:cjs"
24
+ "build:esm": "npx esbuild *.js **/*.js --target=es2019 --format=esm --outdir=dist/esm",
25
+ "build:cjs": "npx esbuild *.js **/*.js --target=node16 --format=cjs --outdir=dist/cjs",
26
+ "build": "npx rimraf -I dist; npm run build:cjs; npm run build:esm",
27
+ "prepublish": "npx rimraf -I dist && npm run build && npm run copy:package:cjs"
28
28
  },
29
29
  "dependencies": {
30
- "@domql/event": "^3.0.6",
31
- "@domql/render": "^3.0.6",
32
- "@domql/report": "^3.0.0",
33
- "@domql/state": "^3.0.6",
34
- "@domql/utils": "^3.0.6"
30
+ "@domql/event": "^3.1.1",
31
+ "@domql/render": "^3.1.1",
32
+ "@domql/state": "^3.1.1",
33
+ "@domql/utils": "^3.1.1"
35
34
  },
36
- "gitHead": "ef6f7abdb0a8cdaa28559e377bc10a12e76ef8f0",
35
+ "gitHead": "39fb7a8c07355468ccce79e2f787ca3fa0715692",
37
36
  "devDependencies": {
38
- "@babel/core": "^7.12.0"
37
+ "@babel/core": "^7.26.0"
39
38
  }
40
39
  }
package/update.js CHANGED
@@ -12,13 +12,13 @@ import {
12
12
  merge,
13
13
  overwriteDeep,
14
14
  deepClone,
15
- propertizeElement,
16
15
  isMethod,
17
16
  findInheritedState,
18
17
  deepMerge,
19
18
  OPTIONS,
20
19
  updateProps,
21
- captureSnapshot
20
+ captureSnapshot,
21
+ propertizeUpdate
22
22
  } from '@domql/utils'
23
23
 
24
24
  import { applyEvent, triggerEventOn, triggerEventOnUpdate } from '@domql/event'
@@ -84,7 +84,8 @@ export const update = async function (params = {}, opts) {
84
84
  params = { text: params }
85
85
  }
86
86
 
87
- params = propertizeElement(params)
87
+ // apply new updates
88
+ params = propertizeUpdate.call(element, params)
88
89
 
89
90
  const inheritState = await inheritStateUpdates(element, options)
90
91
  if (inheritState === false) return
@@ -101,10 +102,11 @@ export const update = async function (params = {}, opts) {
101
102
  }
102
103
 
103
104
  if (!options.preventBeforeUpdateListener && !options.preventListeners) {
105
+ const simulate = { ...params, ...element }
104
106
  const beforeUpdateReturns = await triggerEventOnUpdate(
105
107
  'beforeUpdate',
106
108
  params,
107
- element,
109
+ simulate,
108
110
  options
109
111
  )
110
112
  if (beforeUpdateReturns === false) return element
@@ -1,85 +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 onlyResolveExtends_exports = {};
20
- __export(onlyResolveExtends_exports, {
21
- onlyResolveExtends: () => onlyResolveExtends
22
- });
23
- module.exports = __toCommonJS(onlyResolveExtends_exports);
24
- var import_utils = require("@domql/utils");
25
- var import__ = require("..");
26
- var import_mixins = require("../mixins/index.js");
27
- var import_set = require("../methods/set");
28
- var import_state = require("@domql/state");
29
- var import_render = require("@domql/render");
30
- var import_iterate = require("../iterate");
31
- const onlyResolveExtends = (element, parent, key, options) => {
32
- const { __ref } = element;
33
- element.tag = (0, import_render.detectTag)(element);
34
- {
35
- const { __ref: ref2 } = element;
36
- if (!ref2.__defineCache) ref2.__defineCache = {};
37
- if (!ref2.__exec) ref2.__exec = {};
38
- if (!ref2.__execProps) ref2.__execProps = {};
39
- if (!ref2.__class) ref2.__class = {};
40
- if (!ref2.__classNames) ref2.__classNames = {};
41
- if (!ref2.__attr) ref2.__attr = {};
42
- if (!ref2.__changes) ref2.__changes = [];
43
- if (!ref2.__children) ref2.__children = [];
44
- }
45
- (0, import_set.addMethods)(element, parent, options);
46
- (0, import_state.createState)(element, parent);
47
- const ref = __ref;
48
- if ((0, import_utils.isFunction)(element.if)) {
49
- const ifPassed = element.if(element, element.state, element.context);
50
- if (!ifPassed) {
51
- delete ref.__if;
52
- } else ref.__if = true;
53
- } else ref.__if = true;
54
- if (element.node && ref.__if) {
55
- parent[key || element.key] = element;
56
- }
57
- (0, import_utils.initProps)(element, parent, options);
58
- if (element.tag !== "string" && element.tag !== "fragment") {
59
- (0, import_iterate.throughInitialDefine)(element);
60
- (0, import_iterate.throughInitialExec)(element);
61
- for (const param in element) {
62
- const prop = element[param];
63
- if ((0, import_utils.isUndefined)(prop) || (0, import_utils.isMethod)(param, element) || (0, import_utils.isObject)(import_mixins.REGISTRY[param])) {
64
- continue;
65
- }
66
- const hasDefine = element.define && element.define[param];
67
- const contextHasDefine = element.context && element.context.define && element.context.define[param];
68
- const optionsHasDefine = options.define && options.define[param];
69
- if (import_mixins.REGISTRY[param] && !optionsHasDefine) {
70
- continue;
71
- } else if (element[param] && !hasDefine && !optionsHasDefine && !contextHasDefine) {
72
- (0, import__.create)((0, import_utils.exec)(prop, element), element, param, options);
73
- }
74
- }
75
- }
76
- parent[key || element.key] = element;
77
- delete element.update;
78
- delete element.__element;
79
- if (element.props) {
80
- delete element.props.update;
81
- delete element.props.__element;
82
- }
83
- if (!options.keepRef) delete element.__ref;
84
- return element;
85
- };
@@ -1,72 +0,0 @@
1
- import {
2
- exec,
3
- initProps,
4
- isFunction,
5
- isMethod,
6
- isObject,
7
- isUndefined
8
- } from "@domql/utils";
9
- import { create } from "..";
10
- import { REGISTRY } from "../mixins/index.js";
11
- import { addMethods } from "../methods/set";
12
- import { createState } from "@domql/state";
13
- import { detectTag } from "@domql/render";
14
- import { throughInitialDefine, throughInitialExec } from "../iterate";
15
- const onlyResolveExtends = (element, parent, key, options) => {
16
- const { __ref } = element;
17
- element.tag = detectTag(element);
18
- {
19
- const { __ref: ref2 } = element;
20
- if (!ref2.__defineCache) ref2.__defineCache = {};
21
- if (!ref2.__exec) ref2.__exec = {};
22
- if (!ref2.__execProps) ref2.__execProps = {};
23
- if (!ref2.__class) ref2.__class = {};
24
- if (!ref2.__classNames) ref2.__classNames = {};
25
- if (!ref2.__attr) ref2.__attr = {};
26
- if (!ref2.__changes) ref2.__changes = [];
27
- if (!ref2.__children) ref2.__children = [];
28
- }
29
- addMethods(element, parent, options);
30
- createState(element, parent);
31
- const ref = __ref;
32
- if (isFunction(element.if)) {
33
- const ifPassed = element.if(element, element.state, element.context);
34
- if (!ifPassed) {
35
- delete ref.__if;
36
- } else ref.__if = true;
37
- } else ref.__if = true;
38
- if (element.node && ref.__if) {
39
- parent[key || element.key] = element;
40
- }
41
- initProps(element, parent, options);
42
- if (element.tag !== "string" && element.tag !== "fragment") {
43
- throughInitialDefine(element);
44
- throughInitialExec(element);
45
- for (const param in element) {
46
- const prop = element[param];
47
- if (isUndefined(prop) || isMethod(param, element) || isObject(REGISTRY[param])) {
48
- continue;
49
- }
50
- const hasDefine = element.define && element.define[param];
51
- const contextHasDefine = element.context && element.context.define && element.context.define[param];
52
- const optionsHasDefine = options.define && options.define[param];
53
- if (REGISTRY[param] && !optionsHasDefine) {
54
- continue;
55
- } else if (element[param] && !hasDefine && !optionsHasDefine && !contextHasDefine) {
56
- create(exec(prop, element), element, param, options);
57
- }
58
- }
59
- }
60
- parent[key || element.key] = element;
61
- delete element.update;
62
- delete element.__element;
63
- if (element.props) {
64
- delete element.props.update;
65
- delete element.props.__element;
66
- }
67
- if (!options.keepRef) delete element.__ref;
68
- return element;
69
- };
70
- export {
71
- onlyResolveExtends
72
- };
@@ -1,128 +0,0 @@
1
- 'use strict'
2
-
3
- import {
4
- exec,
5
- initProps,
6
- isFunction,
7
- isMethod,
8
- isObject,
9
- isUndefined
10
- } from '@domql/utils'
11
- import { create } from '..'
12
- import { REGISTRY } from '../mixins/index.js'
13
- import { addMethods } from '../methods/set'
14
- import { createState } from '@domql/state'
15
- import { detectTag } from '@domql/render'
16
- import { throughInitialDefine, throughInitialExec } from '../iterate'
17
-
18
- export const onlyResolveExtends = (element, parent, key, options) => {
19
- const { __ref } = element
20
- element.tag = detectTag(element)
21
-
22
- // if (!element.props) element.props = {}
23
-
24
- // Copy-paste of addCaching()
25
- {
26
- const { __ref: ref } = element
27
- // const { __ref: parentRef } = parent
28
-
29
- // enable TRANSFORM in data
30
- // TODO: do we need this at all?
31
-
32
- // enable CACHING
33
- if (!ref.__defineCache) ref.__defineCache = {}
34
-
35
- // enable EXEC
36
- if (!ref.__exec) ref.__exec = {}
37
- if (!ref.__execProps) ref.__execProps = {}
38
-
39
- // enable CLASS CACHING
40
- if (!ref.__class) ref.__class = {}
41
- if (!ref.__classNames) ref.__classNames = {}
42
-
43
- // enable CLASS CACHING
44
- if (!ref.__attr) ref.__attr = {}
45
-
46
- // enable CHANGES storing
47
- if (!ref.__changes) ref.__changes = []
48
-
49
- // enable CHANGES storing
50
- if (!ref.__children) ref.__children = []
51
-
52
- // Add root element property
53
- // const hasRoot = parent && parent.key === ':root'
54
- // if (!ref.root) ref.root = hasRoot ? element : parentRef.root
55
- }
56
-
57
- addMethods(element, parent, options)
58
-
59
- createState(element, parent)
60
-
61
- // Borrowed from createIfConditionFlag()
62
- const ref = __ref
63
- if (isFunction(element.if)) {
64
- const ifPassed = element.if(element, element.state, element.context)
65
- if (!ifPassed) {
66
- // const ifFragment = cacheNode({ tag: 'fragment' })
67
- // ref.__ifFragment = appendNode(ifFragment, parent.node)
68
- delete ref.__if
69
- } else ref.__if = true
70
- } else ref.__if = true
71
- /// ///
72
-
73
- if (element.node && ref.__if) {
74
- parent[key || element.key] = element
75
- } // Borrowed from assignNode()
76
-
77
- initProps(element, parent, options)
78
-
79
- if (element.tag !== 'string' && element.tag !== 'fragment') {
80
- throughInitialDefine(element)
81
- throughInitialExec(element)
82
-
83
- for (const param in element) {
84
- const prop = element[param]
85
- if (
86
- isUndefined(prop) ||
87
- isMethod(param, element) ||
88
- isObject(REGISTRY[param])
89
- ) {
90
- continue
91
- }
92
-
93
- const hasDefine = element.define && element.define[param]
94
- const contextHasDefine =
95
- element.context &&
96
- element.context.define &&
97
- element.context.define[param]
98
- const optionsHasDefine = options.define && options.define[param]
99
-
100
- if (REGISTRY[param] && !optionsHasDefine) {
101
- continue
102
- } else if (
103
- element[param] &&
104
- !hasDefine &&
105
- !optionsHasDefine &&
106
- !contextHasDefine
107
- ) {
108
- create(exec(prop, element), element, param, options)
109
- }
110
- }
111
- }
112
-
113
- parent[key || element.key] = element // Borrowed from assignNode()
114
-
115
- delete element.update
116
- delete element.__element
117
-
118
- // added by initProps
119
- if (element.props) {
120
- delete element.props.update
121
- delete element.props.__element
122
- }
123
-
124
- // added by createState
125
- if (!options.keepRef) delete element.__ref
126
-
127
- return element
128
- }