@domql/utils 3.0.0 → 3.0.6

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.
@@ -86,7 +86,7 @@ const createRoot = (element, parent) => {
86
86
  const { __ref: parentRef } = parent;
87
87
  const hasRoot = parent && parent.key === ":root";
88
88
  if (!(ref == null ? void 0 : ref.root)) {
89
- return hasRoot ? element : parentRef == null ? void 0 : parentRef.root;
89
+ ref.root = hasRoot ? element : parentRef == null ? void 0 : parentRef.root;
90
90
  }
91
91
  };
92
92
  const createPath = (element, parent, key) => {
@@ -113,7 +113,6 @@ const addCaching = (element, parent, key) => {
113
113
  if (!ref.__children) ref.__children = [];
114
114
  ref.__extends = (0, import_extends.createExtends)(element, parent, key);
115
115
  ref.path = createPath(element, parent, key);
116
- ref.root = createRoot(element, parent);
117
116
  return ref;
118
117
  };
119
118
  const createElement = (passedProps, parentEl, passedKey, opts, root) => {
@@ -161,7 +161,7 @@ const flattenExtend = (extend, stack, context, processed = /* @__PURE__ */ new S
161
161
  processed.add(extend);
162
162
  if (extend == null ? void 0 : extend.extends) {
163
163
  deepExtend(extend, stack, context, processed);
164
- } else {
164
+ } else if (extend) {
165
165
  stack.push(extend);
166
166
  }
167
167
  return stack;
@@ -169,21 +169,28 @@ const flattenExtend = (extend, stack, context, processed = /* @__PURE__ */ new S
169
169
  const deepMergeExtends = (element, extend) => {
170
170
  extend = (0, import_object.deepClone)(extend);
171
171
  for (const e in extend) {
172
- if (["parent", "node", "__ref"].indexOf(e) > -1) continue;
173
- if (e === "__proto__") continue;
172
+ if (["parent", "node", "__ref", "__proto__"].indexOf(e) > -1) continue;
174
173
  const elementProp = element[e];
175
174
  const extendProp = extend[e];
176
175
  if (extendProp === void 0) continue;
177
176
  if (Object.prototype.hasOwnProperty.call(extend, e) && !["__proto__", "constructor", "prototype"].includes(e)) {
178
177
  if (elementProp === void 0) {
179
- element[e] = (0, import_types.isObject)(extendProp) ? (0, import_object.deepClone)(extendProp) : extendProp;
178
+ element[e] = extendProp;
180
179
  } else if ((0, import_types.isObject)(elementProp) && (0, import_types.isObject)(extendProp)) {
181
180
  if ((0, import_component.matchesComponentNaming)(e)) {
182
- element[e] = deepMergeExtends(elementProp, (0, import_object.deepClone)(extendProp));
181
+ element[e] = deepMergeExtends(elementProp, extendProp);
183
182
  } else {
184
183
  deepMergeExtends(elementProp, extendProp);
185
184
  }
186
185
  }
186
+ if (e === "extends" || e === "childExtends" || e === "childExtendsRecursive") {
187
+ if ((0, import_types.isArray)(elementProp) && (0, import_types.isArray)(extendProp)) {
188
+ element[e] = elementProp.concat(extendProp);
189
+ } else if ((0, import_types.isArray)(elementProp) && (0, import_types.isObject)(extendProp)) {
190
+ const obj = deepMergeExtends({}, elementProp);
191
+ element[e] = deepMergeExtends(obj, extendProp);
192
+ }
193
+ }
187
194
  }
188
195
  }
189
196
  return element;
package/dist/cjs/keys.js CHANGED
@@ -30,12 +30,12 @@ __export(keys_exports, {
30
30
  module.exports = __toCommonJS(keys_exports);
31
31
  const DOMQ_PROPERTIES = [
32
32
  "attr",
33
- "style",
33
+ "styles",
34
34
  "text",
35
35
  "html",
36
36
  "content",
37
37
  "data",
38
- "class",
38
+ "classlist",
39
39
  "state",
40
40
  "scope",
41
41
  "deps",
@@ -74,7 +74,7 @@ const createRoot = (element, parent) => {
74
74
  const { __ref: parentRef } = parent;
75
75
  const hasRoot = parent && parent.key === ":root";
76
76
  if (!(ref == null ? void 0 : ref.root)) {
77
- return hasRoot ? element : parentRef == null ? void 0 : parentRef.root;
77
+ ref.root = hasRoot ? element : parentRef == null ? void 0 : parentRef.root;
78
78
  }
79
79
  };
80
80
  const createPath = (element, parent, key) => {
@@ -101,7 +101,6 @@ const addCaching = (element, parent, key) => {
101
101
  if (!ref.__children) ref.__children = [];
102
102
  ref.__extends = createExtends(element, parent, key);
103
103
  ref.path = createPath(element, parent, key);
104
- ref.root = createRoot(element, parent);
105
104
  return ref;
106
105
  };
107
106
  const createElement = (passedProps, parentEl, passedKey, opts, root) => {
@@ -20,7 +20,7 @@ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
20
  import { joinArrays, removeDuplicatesInArray } from "./array.js";
21
21
  import { matchesComponentNaming } from "./component.js";
22
22
  import { deepClone, exec } from "./object.js";
23
- import { isArray, isFunction, isObject, isString } from "./types.js";
23
+ import { isArray, isObject, isString } from "./types.js";
24
24
  const ENV = "development";
25
25
  const createExtendsFromKeys = (key) => {
26
26
  if (key.includes("+")) {
@@ -130,7 +130,7 @@ const flattenExtend = (extend, stack, context, processed = /* @__PURE__ */ new S
130
130
  processed.add(extend);
131
131
  if (extend == null ? void 0 : extend.extends) {
132
132
  deepExtend(extend, stack, context, processed);
133
- } else {
133
+ } else if (extend) {
134
134
  stack.push(extend);
135
135
  }
136
136
  return stack;
@@ -138,21 +138,28 @@ const flattenExtend = (extend, stack, context, processed = /* @__PURE__ */ new S
138
138
  const deepMergeExtends = (element, extend) => {
139
139
  extend = deepClone(extend);
140
140
  for (const e in extend) {
141
- if (["parent", "node", "__ref"].indexOf(e) > -1) continue;
142
- if (e === "__proto__") continue;
141
+ if (["parent", "node", "__ref", "__proto__"].indexOf(e) > -1) continue;
143
142
  const elementProp = element[e];
144
143
  const extendProp = extend[e];
145
144
  if (extendProp === void 0) continue;
146
145
  if (Object.prototype.hasOwnProperty.call(extend, e) && !["__proto__", "constructor", "prototype"].includes(e)) {
147
146
  if (elementProp === void 0) {
148
- element[e] = isObject(extendProp) ? deepClone(extendProp) : extendProp;
147
+ element[e] = extendProp;
149
148
  } else if (isObject(elementProp) && isObject(extendProp)) {
150
149
  if (matchesComponentNaming(e)) {
151
- element[e] = deepMergeExtends(elementProp, deepClone(extendProp));
150
+ element[e] = deepMergeExtends(elementProp, extendProp);
152
151
  } else {
153
152
  deepMergeExtends(elementProp, extendProp);
154
153
  }
155
154
  }
155
+ if (e === "extends" || e === "childExtends" || e === "childExtendsRecursive") {
156
+ if (isArray(elementProp) && isArray(extendProp)) {
157
+ element[e] = elementProp.concat(extendProp);
158
+ } else if (isArray(elementProp) && isObject(extendProp)) {
159
+ const obj = deepMergeExtends({}, elementProp);
160
+ element[e] = deepMergeExtends(obj, extendProp);
161
+ }
162
+ }
156
163
  }
157
164
  }
158
165
  return element;
package/dist/esm/keys.js CHANGED
@@ -1,11 +1,11 @@
1
1
  const DOMQ_PROPERTIES = [
2
2
  "attr",
3
- "style",
3
+ "styles",
4
4
  "text",
5
5
  "html",
6
6
  "content",
7
7
  "data",
8
- "class",
8
+ "classlist",
9
9
  "state",
10
10
  "scope",
11
11
  "deps",
package/element.js CHANGED
@@ -69,7 +69,7 @@ export const createRoot = (element, parent) => {
69
69
 
70
70
  const hasRoot = parent && parent.key === ':root'
71
71
  if (!ref?.root) {
72
- return hasRoot ? element : parentRef?.root
72
+ ref.root = hasRoot ? element : parentRef?.root
73
73
  }
74
74
  }
75
75
 
@@ -117,7 +117,6 @@ export const addCaching = (element, parent, key) => {
117
117
 
118
118
  ref.__extends = createExtends(element, parent, key)
119
119
  ref.path = createPath(element, parent, key)
120
- ref.root = createRoot(element, parent) // Call createRoot after addCaching
121
120
 
122
121
  return ref
123
122
  }
package/extends.js CHANGED
@@ -3,7 +3,7 @@
3
3
  import { joinArrays, removeDuplicatesInArray } from './array.js'
4
4
  import { matchesComponentNaming } from './component.js'
5
5
  import { deepClone, exec } from './object.js'
6
- import { isArray, isFunction, isObject, isString } from './types.js'
6
+ import { isArray, isObject, isString } from './types.js'
7
7
  const ENV = process.env.NODE_ENV
8
8
 
9
9
  export const createExtendsFromKeys = key => {
@@ -159,7 +159,7 @@ export const flattenExtend = (
159
159
 
160
160
  if (extend?.extends) {
161
161
  deepExtend(extend, stack, context, processed)
162
- } else {
162
+ } else if (extend) {
163
163
  stack.push(extend)
164
164
  }
165
165
 
@@ -171,8 +171,7 @@ export const deepMergeExtends = (element, extend) => {
171
171
  extend = deepClone(extend)
172
172
 
173
173
  for (const e in extend) {
174
- if (['parent', 'node', '__ref'].indexOf(e) > -1) continue
175
- if (e === '__proto__') continue
174
+ if (['parent', 'node', '__ref', '__proto__'].indexOf(e) > -1) continue
176
175
 
177
176
  const elementProp = element[e]
178
177
  const extendProp = extend[e]
@@ -187,21 +186,35 @@ export const deepMergeExtends = (element, extend) => {
187
186
  ) {
188
187
  if (elementProp === undefined) {
189
188
  // For undefined properties in element, copy from extend
190
- element[e] = isObject(extendProp) ? deepClone(extendProp) : extendProp
189
+ element[e] = extendProp
191
190
  } else if (isObject(elementProp) && isObject(extendProp)) {
192
191
  // For objects, merge based on type
193
192
  if (matchesComponentNaming(e)) {
194
193
  // For components, override base properties with extended ones
195
- element[e] = deepMergeExtends(elementProp, deepClone(extendProp))
194
+ element[e] = deepMergeExtends(elementProp, extendProp)
196
195
  } else {
197
196
  // For other objects, merge normally
198
197
  deepMergeExtends(elementProp, extendProp)
199
198
  }
200
199
  }
200
+
201
+ if (
202
+ e === 'extends' ||
203
+ e === 'childExtends' ||
204
+ e === 'childExtendsRecursive'
205
+ ) {
206
+ if (isArray(elementProp) && isArray(extendProp)) {
207
+ element[e] = elementProp.concat(extendProp)
208
+ } else if (isArray(elementProp) && isObject(extendProp)) {
209
+ const obj = deepMergeExtends({}, elementProp)
210
+ element[e] = deepMergeExtends(obj, extendProp)
211
+ }
212
+ }
201
213
  // If elementProp is defined and not an object, keep it (don't override)
202
214
  // This preserves properties from earlier in the extend chain
203
215
  }
204
216
  }
217
+
205
218
  return element
206
219
  }
207
220
 
package/keys.js CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  export const DOMQ_PROPERTIES = [
4
4
  'attr',
5
- 'style',
5
+ 'styles',
6
6
  'text',
7
7
  'html',
8
8
  'content',
9
9
  'data',
10
- 'class',
10
+ 'classlist',
11
11
  'state',
12
12
  'scope',
13
13
  'deps',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domql/utils",
3
- "version": "3.0.0",
3
+ "version": "3.0.6",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "index.js",
@@ -24,7 +24,7 @@
24
24
  "build": "rimraf -I dist; npm run build:cjs; npm run build:esm",
25
25
  "prepublish": "npm run build; npm run copy:package:cjs"
26
26
  },
27
- "gitHead": "bcbdc271a602b958de6a60ab387ea7715a935dc1",
27
+ "gitHead": "ef6f7abdb0a8cdaa28559e377bc10a12e76ef8f0",
28
28
  "devDependencies": {
29
29
  "@babel/core": "^7.12.0"
30
30
  }