@domql/element 2.5.185 → 2.5.187
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.
- package/create.js +11 -11
- package/dist/cjs/create.js +11 -11
- package/dist/cjs/extend.js +1 -1
- package/dist/cjs/iterate.js +2 -2
- package/dist/cjs/methods/index.js +1 -1
- package/dist/cjs/methods/set.js +24 -24
- package/dist/cjs/mixins/attr.js +1 -1
- package/dist/cjs/mixins/content.js +1 -1
- package/dist/cjs/mixins/index.js +11 -11
- package/dist/cjs/mixins/registry.js +9 -9
- package/dist/cjs/mixins/text.js +1 -1
- package/dist/cjs/node.js +6 -6
- package/dist/cjs/props/create.js +2 -2
- package/dist/cjs/props/index.js +4 -4
- package/dist/cjs/props/update.js +2 -2
- package/dist/cjs/set.js +4 -4
- package/dist/cjs/update.js +8 -8
- package/dist/cjs/utils/component.js +1 -1
- package/dist/cjs/utils/index.js +3 -3
- package/dist/cjs/utils/object.js +1 -1
- package/dist/esm/cache/index.js +4 -0
- package/dist/esm/cache/options.js +6 -0
- package/dist/esm/create.js +334 -0
- package/dist/esm/define.js +14 -0
- package/dist/esm/extend.js +71 -0
- package/dist/esm/index.js +14 -0
- package/dist/esm/iterate.js +112 -0
- package/dist/esm/methods/index.js +333 -0
- package/dist/esm/methods/set.js +61 -0
- package/dist/esm/methods/v2.js +89 -0
- package/dist/esm/mixins/attr.js +26 -0
- package/dist/esm/mixins/classList.js +55 -0
- package/dist/esm/mixins/content.js +54 -0
- package/dist/esm/mixins/data.js +22 -0
- package/dist/esm/mixins/html.js +18 -0
- package/dist/esm/mixins/index.js +23 -0
- package/dist/esm/mixins/registry.js +105 -0
- package/dist/esm/mixins/scope.js +18 -0
- package/dist/esm/mixins/state.js +19 -0
- package/dist/esm/mixins/style.js +15 -0
- package/dist/esm/mixins/text.js +28 -0
- package/dist/esm/node.js +69 -0
- package/dist/esm/props/create.js +78 -0
- package/dist/esm/props/ignore.js +4 -0
- package/dist/esm/props/index.js +4 -0
- package/dist/esm/props/inherit.js +33 -0
- package/dist/esm/props/update.js +17 -0
- package/dist/esm/set.js +73 -0
- package/dist/esm/tree.js +11 -0
- package/dist/esm/update.js +255 -0
- package/dist/esm/utils/applyParam.js +25 -0
- package/dist/esm/utils/component.js +65 -0
- package/dist/esm/utils/extendUtils.js +122 -0
- package/dist/esm/utils/index.js +3 -0
- package/dist/esm/utils/object.js +159 -0
- package/dist/esm/utils/onlyResolveExtends.js +81 -0
- package/dist/esm/utils/propEvents.js +21 -0
- package/extend.js +1 -1
- package/iterate.js +2 -2
- package/methods/index.js +1 -1
- package/methods/set.js +18 -19
- package/mixins/attr.js +1 -1
- package/mixins/content.js +1 -1
- package/mixins/index.js +11 -11
- package/mixins/registry.js +9 -9
- package/mixins/text.js +1 -1
- package/node.js +6 -6
- package/package.json +7 -7
- package/props/create.js +2 -2
- package/props/index.js +4 -4
- package/props/update.js +2 -2
- package/set.js +4 -4
- package/update.js +8 -8
- package/utils/component.js +1 -1
- package/utils/index.js +3 -3
- package/utils/object.js +1 -1
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
import { triggerEventOn } from "@domql/event";
|
|
2
|
+
import { isDefined, isObject, isFunction, isObjectLike, isProduction, removeValueFromArray, deepClone } from "@domql/utils";
|
|
3
|
+
import { TREE } from "../tree.js";
|
|
4
|
+
import { parseFilters, REGISTRY } from "../mixins/index.js";
|
|
5
|
+
const ENV = "development";
|
|
6
|
+
function spotByPath(path) {
|
|
7
|
+
const element = this;
|
|
8
|
+
const arr = [].concat(path);
|
|
9
|
+
let active = TREE[arr[0]];
|
|
10
|
+
if (!arr || !arr.length)
|
|
11
|
+
return console.log(arr, "on", element.key, "is undefined");
|
|
12
|
+
while (active.key === arr[0]) {
|
|
13
|
+
arr.shift();
|
|
14
|
+
if (!arr.length)
|
|
15
|
+
break;
|
|
16
|
+
active = active[arr[0]];
|
|
17
|
+
if (!active)
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
return active;
|
|
21
|
+
}
|
|
22
|
+
function lookup(param) {
|
|
23
|
+
const el = this;
|
|
24
|
+
let { parent } = el;
|
|
25
|
+
if (isFunction(param)) {
|
|
26
|
+
if (parent.state && param(parent, parent.state, parent.context))
|
|
27
|
+
return parent;
|
|
28
|
+
else if (parent.parent)
|
|
29
|
+
return parent.lookup(param);
|
|
30
|
+
else
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (el[param])
|
|
34
|
+
return el[param];
|
|
35
|
+
while (parent.param !== param) {
|
|
36
|
+
if (parent[param])
|
|
37
|
+
return parent[param];
|
|
38
|
+
parent = parent.parent;
|
|
39
|
+
if (!parent)
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
return parent;
|
|
43
|
+
}
|
|
44
|
+
function lookdown(param) {
|
|
45
|
+
var _a;
|
|
46
|
+
const el = this;
|
|
47
|
+
const { __ref: ref } = el;
|
|
48
|
+
const children = ref.__children;
|
|
49
|
+
for (let i = 0; i < children.length; i++) {
|
|
50
|
+
const v = children[i];
|
|
51
|
+
const childElem = el[v];
|
|
52
|
+
if (v === param)
|
|
53
|
+
return childElem;
|
|
54
|
+
else if (isFunction(param)) {
|
|
55
|
+
const exec = param(childElem, childElem.state, childElem.context);
|
|
56
|
+
if (childElem.state && exec) {
|
|
57
|
+
return childElem;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const lookdown2 = (_a = childElem == null ? void 0 : childElem.lookdown) == null ? void 0 : _a.call(childElem, param);
|
|
61
|
+
if (lookdown2)
|
|
62
|
+
return lookdown2;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function lookdownAll(param, results = []) {
|
|
66
|
+
var _a;
|
|
67
|
+
const el = this;
|
|
68
|
+
const { __ref: ref } = el;
|
|
69
|
+
const children = ref.__children;
|
|
70
|
+
for (let i = 0; i < children.length; i++) {
|
|
71
|
+
const v = children[i];
|
|
72
|
+
const childElem = el[v];
|
|
73
|
+
if (v === param)
|
|
74
|
+
results.push(childElem);
|
|
75
|
+
else if (isFunction(param)) {
|
|
76
|
+
const exec = param(childElem, childElem.state, childElem.context);
|
|
77
|
+
if (childElem.state && exec)
|
|
78
|
+
results.push(childElem);
|
|
79
|
+
}
|
|
80
|
+
(_a = childElem == null ? void 0 : childElem.lookdownAll) == null ? void 0 : _a.call(childElem, param, results);
|
|
81
|
+
}
|
|
82
|
+
return results.length ? results : void 0;
|
|
83
|
+
}
|
|
84
|
+
function setNodeStyles(params = {}) {
|
|
85
|
+
var _a;
|
|
86
|
+
const el = this;
|
|
87
|
+
if (!((_a = el.node) == null ? void 0 : _a.style))
|
|
88
|
+
return;
|
|
89
|
+
for (const param in params) {
|
|
90
|
+
const value = params[param];
|
|
91
|
+
const childElem = el[param];
|
|
92
|
+
if (isObject(value) && childElem)
|
|
93
|
+
setNodeStyles.call(childElem, value);
|
|
94
|
+
else
|
|
95
|
+
el.node.style[param] = value;
|
|
96
|
+
}
|
|
97
|
+
return el;
|
|
98
|
+
}
|
|
99
|
+
function remove(opts) {
|
|
100
|
+
const element = this;
|
|
101
|
+
const beforeUpdateReturns = triggerEventOn("beforeRemove", element, opts);
|
|
102
|
+
if (beforeUpdateReturns === false)
|
|
103
|
+
return element;
|
|
104
|
+
if (isFunction(element.node.remove))
|
|
105
|
+
element.node.remove();
|
|
106
|
+
else if (!isProduction()) {
|
|
107
|
+
console.warn("This item cant be removed");
|
|
108
|
+
element.log();
|
|
109
|
+
}
|
|
110
|
+
delete element.parent[element.key];
|
|
111
|
+
if (element.parent.__ref)
|
|
112
|
+
element.parent.__ref.__children = removeValueFromArray(element.parent.__ref.__children, element.key);
|
|
113
|
+
triggerEventOn("remove", element, opts);
|
|
114
|
+
}
|
|
115
|
+
function get(param) {
|
|
116
|
+
const element = this;
|
|
117
|
+
return element[param];
|
|
118
|
+
}
|
|
119
|
+
function setProps(param, options) {
|
|
120
|
+
const element = this;
|
|
121
|
+
if (!param || !element.props)
|
|
122
|
+
return;
|
|
123
|
+
element.update({ props: param }, options);
|
|
124
|
+
return element;
|
|
125
|
+
}
|
|
126
|
+
function getRef() {
|
|
127
|
+
return this.__ref;
|
|
128
|
+
}
|
|
129
|
+
function getPath() {
|
|
130
|
+
return this.getRef().path;
|
|
131
|
+
}
|
|
132
|
+
const defineSetter = (element, key, get2, set) => Object.defineProperty(element, key, { get: get2, set });
|
|
133
|
+
function keys() {
|
|
134
|
+
const element = this;
|
|
135
|
+
const keys2 = [];
|
|
136
|
+
for (const param in element) {
|
|
137
|
+
if (REGISTRY[param] && !parseFilters.elementKeys.includes(param) || !Object.hasOwnProperty.call(element, param)) {
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
keys2.push(param);
|
|
141
|
+
}
|
|
142
|
+
return keys2;
|
|
143
|
+
}
|
|
144
|
+
function parse(excl = []) {
|
|
145
|
+
const element = this;
|
|
146
|
+
const obj = {};
|
|
147
|
+
const keyList = keys.call(element);
|
|
148
|
+
keyList.forEach((v) => {
|
|
149
|
+
if (excl.includes(v))
|
|
150
|
+
return;
|
|
151
|
+
const val = element[v];
|
|
152
|
+
if (v === "state") {
|
|
153
|
+
if (element.__ref && !element.__ref.__hasRootState)
|
|
154
|
+
return;
|
|
155
|
+
const parsedVal = isFunction(val && val.parse) ? val.parse() : val;
|
|
156
|
+
obj[v] = isFunction(parsedVal) ? parsedVal : JSON.parse(JSON.stringify(parsedVal || {}));
|
|
157
|
+
} else if (v === "scope") {
|
|
158
|
+
if (element.__ref && !element.__ref.__hasRootScope)
|
|
159
|
+
return;
|
|
160
|
+
obj[v] = JSON.parse(JSON.stringify(val || {}));
|
|
161
|
+
} else if (v === "props") {
|
|
162
|
+
const { __element, update, ...props } = element[v];
|
|
163
|
+
obj[v] = props;
|
|
164
|
+
} else if (isDefined(val) && Object.hasOwnProperty.call(element, v))
|
|
165
|
+
obj[v] = val;
|
|
166
|
+
});
|
|
167
|
+
return obj;
|
|
168
|
+
}
|
|
169
|
+
function parseDeep(excl = []) {
|
|
170
|
+
const element = this;
|
|
171
|
+
const obj = parse.call(element, excl);
|
|
172
|
+
for (const v in obj) {
|
|
173
|
+
if (excl.includes(v))
|
|
174
|
+
return;
|
|
175
|
+
if (isObjectLike(obj[v])) {
|
|
176
|
+
obj[v] = parseDeep.call(obj[v], excl);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return obj;
|
|
180
|
+
}
|
|
181
|
+
function verbose(...args) {
|
|
182
|
+
if (ENV !== "test" && ENV !== "development")
|
|
183
|
+
return;
|
|
184
|
+
const element = this;
|
|
185
|
+
const { __ref: ref } = element;
|
|
186
|
+
console.groupCollapsed(element.key);
|
|
187
|
+
if (args.length) {
|
|
188
|
+
args.forEach((v) => console.log(`%c${v}:
|
|
189
|
+
`, "font-weight: bold", element[v]));
|
|
190
|
+
} else {
|
|
191
|
+
console.log(ref.path);
|
|
192
|
+
const keys2 = element.keys();
|
|
193
|
+
keys2.forEach((v) => console.log(`%c${v}:`, "font-weight: bold", element[v]));
|
|
194
|
+
}
|
|
195
|
+
console.log(element);
|
|
196
|
+
console.groupEnd(element.key);
|
|
197
|
+
return element;
|
|
198
|
+
}
|
|
199
|
+
function log(...params) {
|
|
200
|
+
if (ENV === "test" || ENV === "development") {
|
|
201
|
+
console.log(...params);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function warn(...params) {
|
|
205
|
+
if (ENV === "test" || ENV === "development") {
|
|
206
|
+
console.warn(...params);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
function error(...params) {
|
|
210
|
+
var _a, _b;
|
|
211
|
+
if (ENV === "test" || ENV === "development") {
|
|
212
|
+
if ((_a = params[params.length - 1]) == null ? void 0 : _a.debugger)
|
|
213
|
+
debugger;
|
|
214
|
+
if ((_b = params[params.length - 1]) == null ? void 0 : _b.verbose)
|
|
215
|
+
verbose.call(this);
|
|
216
|
+
throw new Error(...params);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
function nextElement() {
|
|
220
|
+
const element = this;
|
|
221
|
+
const { key, parent } = element;
|
|
222
|
+
const { __children } = parent.__ref;
|
|
223
|
+
const currentIndex = __children.indexOf(key);
|
|
224
|
+
const nextChild = __children[currentIndex + 1];
|
|
225
|
+
return parent[nextChild];
|
|
226
|
+
}
|
|
227
|
+
function previousElement(el) {
|
|
228
|
+
const element = el || this;
|
|
229
|
+
const { key, parent } = element;
|
|
230
|
+
const { __children } = parent.__ref;
|
|
231
|
+
if (!__children)
|
|
232
|
+
return;
|
|
233
|
+
const currentIndex = __children.indexOf(key);
|
|
234
|
+
return parent[__children[currentIndex - 1]];
|
|
235
|
+
}
|
|
236
|
+
function variables(obj = {}) {
|
|
237
|
+
const element = this;
|
|
238
|
+
if (!element.data)
|
|
239
|
+
element.data = {};
|
|
240
|
+
if (!element.data.varCaches)
|
|
241
|
+
element.data.varCaches = {};
|
|
242
|
+
const varCaches = element.data.varCaches;
|
|
243
|
+
const changes = {};
|
|
244
|
+
let changed;
|
|
245
|
+
for (const key in obj) {
|
|
246
|
+
if (obj[key] !== varCaches[key]) {
|
|
247
|
+
changed = true;
|
|
248
|
+
changes[key] = obj[key];
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return {
|
|
252
|
+
changed: (cb) => {
|
|
253
|
+
if (!changed)
|
|
254
|
+
return;
|
|
255
|
+
const returns = cb(changes, deepClone(varCaches));
|
|
256
|
+
for (const key in changes) {
|
|
257
|
+
varCaches[key] = changes[key];
|
|
258
|
+
}
|
|
259
|
+
return returns;
|
|
260
|
+
},
|
|
261
|
+
timeout: (cb, timeout) => {
|
|
262
|
+
if (!changed)
|
|
263
|
+
return;
|
|
264
|
+
const t = setTimeout(() => {
|
|
265
|
+
cb(changes);
|
|
266
|
+
clearTimeout(t);
|
|
267
|
+
}, timeout);
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
function call(fnKey, ...args) {
|
|
272
|
+
var _a;
|
|
273
|
+
const context = this.context;
|
|
274
|
+
return (_a = context.utils[fnKey] || context.functions[fnKey] || context.methods[fnKey] || context.snippets[fnKey]) == null ? void 0 : _a.call(this, ...args);
|
|
275
|
+
}
|
|
276
|
+
const METHODS = [
|
|
277
|
+
"set",
|
|
278
|
+
"reset",
|
|
279
|
+
"update",
|
|
280
|
+
"remove",
|
|
281
|
+
"updateContent",
|
|
282
|
+
"removeContent",
|
|
283
|
+
"lookup",
|
|
284
|
+
"lookdown",
|
|
285
|
+
"lookdownAll",
|
|
286
|
+
"getRef",
|
|
287
|
+
"getPath",
|
|
288
|
+
"setNodeStyles",
|
|
289
|
+
"spotByPath",
|
|
290
|
+
"keys",
|
|
291
|
+
"parse",
|
|
292
|
+
"setProps",
|
|
293
|
+
"parseDeep",
|
|
294
|
+
"variables",
|
|
295
|
+
"if",
|
|
296
|
+
"log",
|
|
297
|
+
"verbose",
|
|
298
|
+
"warn",
|
|
299
|
+
"error",
|
|
300
|
+
"call",
|
|
301
|
+
"nextElement",
|
|
302
|
+
"previousElement"
|
|
303
|
+
];
|
|
304
|
+
function isMethod(param, element) {
|
|
305
|
+
var _a, _b;
|
|
306
|
+
return METHODS.includes(param) || ((_b = (_a = element == null ? void 0 : element.context) == null ? void 0 : _a.methods) == null ? void 0 : _b[param]);
|
|
307
|
+
}
|
|
308
|
+
export {
|
|
309
|
+
METHODS,
|
|
310
|
+
call,
|
|
311
|
+
defineSetter,
|
|
312
|
+
error,
|
|
313
|
+
get,
|
|
314
|
+
getPath,
|
|
315
|
+
getRef,
|
|
316
|
+
isMethod,
|
|
317
|
+
keys,
|
|
318
|
+
log,
|
|
319
|
+
lookdown,
|
|
320
|
+
lookdownAll,
|
|
321
|
+
lookup,
|
|
322
|
+
nextElement,
|
|
323
|
+
parse,
|
|
324
|
+
parseDeep,
|
|
325
|
+
previousElement,
|
|
326
|
+
remove,
|
|
327
|
+
setNodeStyles,
|
|
328
|
+
setProps,
|
|
329
|
+
spotByPath,
|
|
330
|
+
variables,
|
|
331
|
+
verbose,
|
|
332
|
+
warn
|
|
333
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { merge, overwrite } from "@domql/utils";
|
|
2
|
+
import { set, reset } from "../set.js";
|
|
3
|
+
import { update } from "../update.js";
|
|
4
|
+
import { removeContent, updateContent } from "../mixins/content.js";
|
|
5
|
+
import {
|
|
6
|
+
call,
|
|
7
|
+
error,
|
|
8
|
+
getPath,
|
|
9
|
+
getRef,
|
|
10
|
+
keys,
|
|
11
|
+
log,
|
|
12
|
+
lookdown,
|
|
13
|
+
lookdownAll,
|
|
14
|
+
lookup,
|
|
15
|
+
nextElement,
|
|
16
|
+
parse,
|
|
17
|
+
parseDeep,
|
|
18
|
+
previousElement,
|
|
19
|
+
remove,
|
|
20
|
+
setNodeStyles,
|
|
21
|
+
setProps,
|
|
22
|
+
spotByPath,
|
|
23
|
+
variables,
|
|
24
|
+
verbose,
|
|
25
|
+
warn
|
|
26
|
+
} from "./index.js";
|
|
27
|
+
const addMethods = (element, parent, options = {}) => {
|
|
28
|
+
const proto = {
|
|
29
|
+
set,
|
|
30
|
+
reset,
|
|
31
|
+
update,
|
|
32
|
+
variables,
|
|
33
|
+
remove,
|
|
34
|
+
updateContent,
|
|
35
|
+
removeContent,
|
|
36
|
+
setProps,
|
|
37
|
+
lookup,
|
|
38
|
+
lookdown,
|
|
39
|
+
lookdownAll,
|
|
40
|
+
getRef,
|
|
41
|
+
getPath,
|
|
42
|
+
setNodeStyles,
|
|
43
|
+
spotByPath,
|
|
44
|
+
parse,
|
|
45
|
+
parseDeep,
|
|
46
|
+
keys,
|
|
47
|
+
nextElement,
|
|
48
|
+
previousElement,
|
|
49
|
+
log,
|
|
50
|
+
verbose,
|
|
51
|
+
warn,
|
|
52
|
+
error,
|
|
53
|
+
call
|
|
54
|
+
};
|
|
55
|
+
if (element.context.methods)
|
|
56
|
+
(options.strict ? merge : overwrite)(proto, element.context.methods);
|
|
57
|
+
Object.setPrototypeOf(element, proto);
|
|
58
|
+
};
|
|
59
|
+
export {
|
|
60
|
+
addMethods
|
|
61
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { isDefined, isFunction, isObjectLike } from "@domql/utils";
|
|
2
|
+
import { parseFilters, REGISTRY } from "../mixins/index.js";
|
|
3
|
+
const defineSetter = (element, key, get, set) => Object.defineProperty(element, key, { get, set });
|
|
4
|
+
const keys = function() {
|
|
5
|
+
const element = this;
|
|
6
|
+
const keys2 = [];
|
|
7
|
+
for (const param in element) {
|
|
8
|
+
if (REGISTRY[param] && !parseFilters.elementKeys.includes(param)) {
|
|
9
|
+
continue;
|
|
10
|
+
}
|
|
11
|
+
keys2.push(param);
|
|
12
|
+
}
|
|
13
|
+
return keys2;
|
|
14
|
+
};
|
|
15
|
+
const parse = function(excl = []) {
|
|
16
|
+
const element = this;
|
|
17
|
+
const obj = {};
|
|
18
|
+
const keyList = keys.call(element);
|
|
19
|
+
keyList.forEach((v) => {
|
|
20
|
+
if (excl.includes(v))
|
|
21
|
+
return;
|
|
22
|
+
let val = element[v];
|
|
23
|
+
if (v === "state") {
|
|
24
|
+
if (element.__ref && element.__ref.__hasRootState)
|
|
25
|
+
return;
|
|
26
|
+
if (isFunction(val && val.parse))
|
|
27
|
+
val = val.parse();
|
|
28
|
+
} else if (v === "props") {
|
|
29
|
+
const { __element, update, ...props } = element[v];
|
|
30
|
+
obj[v] = props;
|
|
31
|
+
} else if (isDefined(val))
|
|
32
|
+
obj[v] = val;
|
|
33
|
+
});
|
|
34
|
+
return obj;
|
|
35
|
+
};
|
|
36
|
+
const parseDeep = function(excl = []) {
|
|
37
|
+
const element = this;
|
|
38
|
+
const obj = parse.call(element, excl);
|
|
39
|
+
for (const v in obj) {
|
|
40
|
+
if (excl.includes(v))
|
|
41
|
+
return;
|
|
42
|
+
if (isObjectLike(obj[v])) {
|
|
43
|
+
obj[v] = parseDeep.call(obj[v], excl);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return obj;
|
|
47
|
+
};
|
|
48
|
+
const log = function(...args) {
|
|
49
|
+
const element = this;
|
|
50
|
+
const { __ref } = element;
|
|
51
|
+
console.group(element.key);
|
|
52
|
+
if (args.length) {
|
|
53
|
+
args.forEach((v) => console.log(`%c${v}:
|
|
54
|
+
`, "font-weight: bold", element[v]));
|
|
55
|
+
} else {
|
|
56
|
+
console.log(__ref.path);
|
|
57
|
+
const keys2 = element.keys();
|
|
58
|
+
keys2.forEach((v) => console.log(`%c${v}:
|
|
59
|
+
`, "font-weight: bold", element[v]));
|
|
60
|
+
}
|
|
61
|
+
console.groupEnd(element.key);
|
|
62
|
+
return element;
|
|
63
|
+
};
|
|
64
|
+
const nextElement = function() {
|
|
65
|
+
const element = this;
|
|
66
|
+
const { key, parent } = element;
|
|
67
|
+
const { __children } = parent.__ref;
|
|
68
|
+
const currentIndex = __children.indexOf(key);
|
|
69
|
+
const nextChild = __children[currentIndex + 1];
|
|
70
|
+
return parent[nextChild];
|
|
71
|
+
};
|
|
72
|
+
const previousElement = function(el) {
|
|
73
|
+
const element = el || this;
|
|
74
|
+
const { key, parent } = element;
|
|
75
|
+
const { __children } = parent.__ref;
|
|
76
|
+
if (!__children)
|
|
77
|
+
return;
|
|
78
|
+
const currentIndex = __children.indexOf(key);
|
|
79
|
+
return parent[__children[currentIndex - 1]];
|
|
80
|
+
};
|
|
81
|
+
export {
|
|
82
|
+
defineSetter,
|
|
83
|
+
keys,
|
|
84
|
+
log,
|
|
85
|
+
nextElement,
|
|
86
|
+
parse,
|
|
87
|
+
parseDeep,
|
|
88
|
+
previousElement
|
|
89
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { exec, isNot, isNull, isUndefined } from "@domql/utils";
|
|
2
|
+
import { report } from "@domql/report";
|
|
3
|
+
import { deepMerge } from "../utils/index.js";
|
|
4
|
+
function attr(params, element, node) {
|
|
5
|
+
const { __ref: ref, props } = element;
|
|
6
|
+
const { __attr } = ref;
|
|
7
|
+
if (isNot("object"))
|
|
8
|
+
report("HTMLInvalidAttr", params);
|
|
9
|
+
if (params) {
|
|
10
|
+
if (props.attr)
|
|
11
|
+
deepMerge(params, props.attr);
|
|
12
|
+
for (const attr2 in params) {
|
|
13
|
+
const val = exec(params[attr2], element);
|
|
14
|
+
if (val !== false && !isUndefined(val) && !isNull(val) && node.setAttribute)
|
|
15
|
+
node.setAttribute(attr2, val);
|
|
16
|
+
else if (node.removeAttribute)
|
|
17
|
+
node.removeAttribute(attr2);
|
|
18
|
+
__attr[attr2] = val;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
var attr_default = attr;
|
|
23
|
+
export {
|
|
24
|
+
attr,
|
|
25
|
+
attr_default as default
|
|
26
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { exec, isObject, isString } from "@domql/utils";
|
|
2
|
+
const assignKeyAsClassname = (element) => {
|
|
3
|
+
const { key } = element;
|
|
4
|
+
if (element.class === true)
|
|
5
|
+
element.class = key;
|
|
6
|
+
else if (!element.class && typeof key === "string" && key.charAt(0) === "_" && key.charAt(1) !== "_") {
|
|
7
|
+
element.class = key.slice(1);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
const classify = (obj, element) => {
|
|
11
|
+
let className = "";
|
|
12
|
+
for (const item in obj) {
|
|
13
|
+
const param = obj[item];
|
|
14
|
+
if (typeof param === "boolean" && param)
|
|
15
|
+
className += ` ${item}`;
|
|
16
|
+
else if (typeof param === "string")
|
|
17
|
+
className += ` ${param}`;
|
|
18
|
+
else if (typeof param === "function") {
|
|
19
|
+
className += ` ${exec(param, element)}`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return className;
|
|
23
|
+
};
|
|
24
|
+
const classList = (params, element) => {
|
|
25
|
+
if (!params)
|
|
26
|
+
return;
|
|
27
|
+
const { key } = element;
|
|
28
|
+
if (params === true)
|
|
29
|
+
params = element.class = { key };
|
|
30
|
+
if (isString(params))
|
|
31
|
+
params = element.class = { default: params };
|
|
32
|
+
if (isObject(params))
|
|
33
|
+
params = classify(params, element);
|
|
34
|
+
const className = params.replace(/\s+/g, " ").trim();
|
|
35
|
+
if (element.ref)
|
|
36
|
+
element.ref.class = className;
|
|
37
|
+
return className;
|
|
38
|
+
};
|
|
39
|
+
const applyClassListOnNode = (params, element, node) => {
|
|
40
|
+
const className = classList(params, element);
|
|
41
|
+
node.classList = className;
|
|
42
|
+
return className;
|
|
43
|
+
};
|
|
44
|
+
function applyClasslist(params, element, node) {
|
|
45
|
+
applyClassListOnNode(params, element, node);
|
|
46
|
+
}
|
|
47
|
+
var classList_default = applyClasslist;
|
|
48
|
+
export {
|
|
49
|
+
applyClassListOnNode,
|
|
50
|
+
applyClasslist,
|
|
51
|
+
assignKeyAsClassname,
|
|
52
|
+
classList,
|
|
53
|
+
classify,
|
|
54
|
+
classList_default as default
|
|
55
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { isFunction, setContentKey } from "@domql/utils";
|
|
2
|
+
import { set } from "../set.js";
|
|
3
|
+
const updateContent = function(params, options) {
|
|
4
|
+
const element = this;
|
|
5
|
+
const ref = element.__ref;
|
|
6
|
+
const contentKey = ref.contentElementKey;
|
|
7
|
+
if (!element[contentKey])
|
|
8
|
+
return;
|
|
9
|
+
if (element[contentKey].update)
|
|
10
|
+
element[contentKey].update(params, options);
|
|
11
|
+
};
|
|
12
|
+
const removeContent = function(el, opts = {}) {
|
|
13
|
+
const element = el || this;
|
|
14
|
+
const { __ref: ref } = element;
|
|
15
|
+
const contentElementKey = setContentKey(element, opts);
|
|
16
|
+
if (opts.contentElementKey !== "content")
|
|
17
|
+
opts.contentElementKey = "content";
|
|
18
|
+
if (element[contentElementKey]) {
|
|
19
|
+
if (element[contentElementKey].node && element.node) {
|
|
20
|
+
if (element[contentElementKey].tag === "fragment")
|
|
21
|
+
element.node.innerHTML = "";
|
|
22
|
+
else {
|
|
23
|
+
const contentNode = element[contentElementKey].node;
|
|
24
|
+
if (contentNode.parentNode === element.node)
|
|
25
|
+
element.node.removeChild(element[contentElementKey].node);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const { __cached } = ref;
|
|
29
|
+
if (__cached && __cached[contentElementKey]) {
|
|
30
|
+
if (__cached[contentElementKey].tag === "fragment")
|
|
31
|
+
__cached[contentElementKey].parent.node.innerHTML = "";
|
|
32
|
+
else if (__cached[contentElementKey] && isFunction(__cached[contentElementKey].remove))
|
|
33
|
+
__cached[contentElementKey].remove();
|
|
34
|
+
}
|
|
35
|
+
delete element[contentElementKey];
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
function setContent(param, element, node, opts) {
|
|
39
|
+
const contentElementKey = setContentKey(element, opts);
|
|
40
|
+
if (param && element) {
|
|
41
|
+
if (element[contentElementKey].update) {
|
|
42
|
+
element[contentElementKey].update({}, opts);
|
|
43
|
+
} else {
|
|
44
|
+
set.call(element, param, opts);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
var content_default = setContent;
|
|
49
|
+
export {
|
|
50
|
+
content_default as default,
|
|
51
|
+
removeContent,
|
|
52
|
+
setContent,
|
|
53
|
+
updateContent
|
|
54
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { exec, isObject, deepMerge } from "@domql/utils";
|
|
2
|
+
import { report } from "@domql/report";
|
|
3
|
+
function data(params, element, node) {
|
|
4
|
+
if (params) {
|
|
5
|
+
if (element.props.data)
|
|
6
|
+
deepMerge(params, element.props.data);
|
|
7
|
+
if (params.showOnNode) {
|
|
8
|
+
if (!isObject(params))
|
|
9
|
+
report("HTMLInvalidData", params);
|
|
10
|
+
for (const dataset in params) {
|
|
11
|
+
if (dataset !== "showOnNode") {
|
|
12
|
+
node.dataset[dataset] = exec(params[dataset], element);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
var data_default = data;
|
|
19
|
+
export {
|
|
20
|
+
data,
|
|
21
|
+
data_default as default
|
|
22
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { exec } from "@domql/utils";
|
|
2
|
+
function html(param, element, node) {
|
|
3
|
+
var _a;
|
|
4
|
+
const prop = exec(param, element) || exec((_a = element == null ? void 0 : element.props) == null ? void 0 : _a.html, element);
|
|
5
|
+
const { __ref } = element;
|
|
6
|
+
if (prop !== __ref.__html) {
|
|
7
|
+
if (node.nodeName === "SVG")
|
|
8
|
+
node.textContent = prop;
|
|
9
|
+
else
|
|
10
|
+
node.innerHTML = prop;
|
|
11
|
+
__ref.__html = prop;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
var html_default = html;
|
|
15
|
+
export {
|
|
16
|
+
html_default as default,
|
|
17
|
+
html
|
|
18
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { attr } from "./attr.js";
|
|
2
|
+
import { applyClasslist } from "./classList.js";
|
|
3
|
+
import { setContent } from "./content.js";
|
|
4
|
+
import { data } from "./data.js";
|
|
5
|
+
import { html } from "./html.js";
|
|
6
|
+
import { style } from "./style.js";
|
|
7
|
+
import { text } from "./text.js";
|
|
8
|
+
import { state } from "./state.js";
|
|
9
|
+
import { scope } from "./scope.js";
|
|
10
|
+
import { REGISTRY } from "./registry.js";
|
|
11
|
+
export * from "./registry.js";
|
|
12
|
+
export {
|
|
13
|
+
attr,
|
|
14
|
+
applyClasslist as classList,
|
|
15
|
+
setContent as content,
|
|
16
|
+
data,
|
|
17
|
+
html,
|
|
18
|
+
REGISTRY as registry,
|
|
19
|
+
scope,
|
|
20
|
+
state,
|
|
21
|
+
style,
|
|
22
|
+
text
|
|
23
|
+
};
|