domql 1.5.108 → 1.5.110

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.
@@ -0,0 +1,2330 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp2 = Object.defineProperty;
4
+ var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
8
+ var __commonJS = (cb, mod) => function __require() {
9
+ return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
+ };
11
+ var __export2 = (target, all) => {
12
+ for (var name in all)
13
+ __defProp2(target, name, { get: all[name], enumerable: true });
14
+ };
15
+ var __copyProps2 = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames2(from))
18
+ if (!__hasOwnProp2.call(to, key) && key !== except)
19
+ __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
20
+ }
21
+ return to;
22
+ };
23
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps2(
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
28
+
29
+ // node_modules/@domql/utils/dist/index.cjs.js
30
+ var require_index_cjs = __commonJS({
31
+ "node_modules/@domql/utils/dist/index.cjs.js"(exports, module) {
32
+ "use strict";
33
+ var __defProp = Object.defineProperty;
34
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
35
+ var __getOwnPropNames = Object.getOwnPropertyNames;
36
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
37
+ var __export = (target, all) => {
38
+ for (var name in all)
39
+ __defProp(target, name, { get: all[name], enumerable: true });
40
+ };
41
+ var __copyProps = (to, from, except, desc) => {
42
+ if (from && typeof from === "object" || typeof from === "function") {
43
+ for (let key of __getOwnPropNames(from))
44
+ if (!__hasOwnProp.call(to, key) && key !== except)
45
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
46
+ }
47
+ return to;
48
+ };
49
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
50
+ var utils_exports = {};
51
+ __export(utils_exports, {
52
+ TYPES: () => TYPES,
53
+ cleanWithNode: () => cleanWithNode,
54
+ clone: () => clone,
55
+ createID: () => createID,
56
+ createSnapshotId: () => createSnapshotId,
57
+ debounce: () => debounce,
58
+ deepClone: () => deepClone,
59
+ deepCloneExclude: () => deepCloneExclude,
60
+ deepDestringify: () => deepDestringify,
61
+ deepMerge: () => deepMerge,
62
+ deepStringify: () => deepStringify,
63
+ diff: () => diff,
64
+ exec: () => exec,
65
+ flattenRecursive: () => flattenRecursive,
66
+ is: () => is,
67
+ isArray: () => isArray,
68
+ isBoolean: () => isBoolean,
69
+ isDefined: () => isDefined,
70
+ isEqualDeep: () => isEqualDeep,
71
+ isFunction: () => isFunction,
72
+ isHtmlElement: () => isHtmlElement,
73
+ isNode: () => isNode,
74
+ isNot: () => isNot,
75
+ isNull: () => isNull,
76
+ isNumber: () => isNumber,
77
+ isObject: () => isObject,
78
+ isObjectLike: () => isObjectLike,
79
+ isString: () => isString,
80
+ isUndefined: () => isUndefined,
81
+ isValidHtmlTag: () => isValidHtmlTag,
82
+ logGroupIf: () => logGroupIf,
83
+ logIf: () => logIf,
84
+ map: () => map,
85
+ memoize: () => memoize,
86
+ merge: () => merge,
87
+ mergeAndCloneIfArray: () => mergeAndCloneIfArray,
88
+ mergeArray: () => mergeArray,
89
+ mergeArrayExclude: () => mergeArrayExclude,
90
+ mergeIfExisted: () => mergeIfExisted,
91
+ overwrite: () => overwrite,
92
+ overwriteDeep: () => overwriteDeep,
93
+ overwriteObj: () => overwriteObj
94
+ });
95
+ module.exports = __toCommonJS(utils_exports);
96
+ var window = globalThis;
97
+ var document = window.document;
98
+ var HTML_TAGS = {
99
+ root: [
100
+ "body",
101
+ "html"
102
+ ],
103
+ head: [
104
+ "title",
105
+ "base",
106
+ "meta",
107
+ "style"
108
+ ],
109
+ body: [
110
+ "string",
111
+ "fragment",
112
+ "a",
113
+ "abbr",
114
+ "acronym",
115
+ "address",
116
+ "applet",
117
+ "area",
118
+ "article",
119
+ "aside",
120
+ "audio",
121
+ "b",
122
+ "basefont",
123
+ "bdi",
124
+ "bdo",
125
+ "big",
126
+ "blockquote",
127
+ "br",
128
+ "button",
129
+ "canvas",
130
+ "caption",
131
+ "center",
132
+ "cite",
133
+ "code",
134
+ "col",
135
+ "colgroup",
136
+ "data",
137
+ "datalist",
138
+ "dd",
139
+ "del",
140
+ "details",
141
+ "dfn",
142
+ "dialog",
143
+ "dir",
144
+ "div",
145
+ "dl",
146
+ "dt",
147
+ "em",
148
+ "embed",
149
+ "fieldset",
150
+ "figcaption",
151
+ "figure",
152
+ "font",
153
+ "footer",
154
+ "form",
155
+ "frame",
156
+ "frameset",
157
+ "h1",
158
+ "h2",
159
+ "h3",
160
+ "h4",
161
+ "h5",
162
+ "h6",
163
+ "head",
164
+ "header",
165
+ "hr",
166
+ "i",
167
+ "iframe",
168
+ "img",
169
+ "input",
170
+ "ins",
171
+ "kbd",
172
+ "label",
173
+ "legend",
174
+ "li",
175
+ "link",
176
+ "main",
177
+ "map",
178
+ "mark",
179
+ "meter",
180
+ "nav",
181
+ "noframes",
182
+ "noscript",
183
+ "object",
184
+ "ol",
185
+ "optgroup",
186
+ "option",
187
+ "output",
188
+ "p",
189
+ "param",
190
+ "picture",
191
+ "pre",
192
+ "progress",
193
+ "q",
194
+ "rp",
195
+ "rt",
196
+ "ruby",
197
+ "s",
198
+ "samp",
199
+ "script",
200
+ "section",
201
+ "select",
202
+ "small",
203
+ "source",
204
+ "span",
205
+ "strike",
206
+ "strong",
207
+ "sub",
208
+ "summary",
209
+ "sup",
210
+ "table",
211
+ "tbody",
212
+ "td",
213
+ "template",
214
+ "textarea",
215
+ "tfoot",
216
+ "th",
217
+ "thead",
218
+ "time",
219
+ "tr",
220
+ "track",
221
+ "tt",
222
+ "u",
223
+ "ul",
224
+ "var",
225
+ "video",
226
+ "wbr",
227
+ "svg",
228
+ "path"
229
+ ]
230
+ };
231
+ var isValidHtmlTag = (arg) => HTML_TAGS.body.indexOf(arg);
232
+ var isObject = (arg) => {
233
+ if (arg === null)
234
+ return false;
235
+ return typeof arg === "object" && arg.constructor === Object;
236
+ };
237
+ var isString = (arg) => typeof arg === "string";
238
+ var isNumber = (arg) => typeof arg === "number";
239
+ var isFunction = (arg) => typeof arg === "function";
240
+ var isBoolean = (arg) => arg === true || arg === false;
241
+ var isNull = (arg) => arg === null;
242
+ var isArray = (arg) => Array.isArray(arg);
243
+ var isObjectLike = (arg) => {
244
+ if (arg === null)
245
+ return false;
246
+ return typeof arg === "object";
247
+ };
248
+ var isNode = (obj2) => {
249
+ return typeof window.Node === "object" ? obj2 instanceof window.Node : obj2 && typeof obj2 === "object" && typeof obj2.nodeType === "number" && typeof obj2.nodeName === "string";
250
+ };
251
+ var isHtmlElement = (obj2) => {
252
+ return typeof window.HTMLElement === "object" ? obj2 instanceof window.HTMLElement : obj2 && typeof obj2 === "object" && obj2 !== null && obj2.nodeType === 1 && typeof obj2.nodeName === "string";
253
+ };
254
+ var isDefined = (arg) => {
255
+ return isObject(arg) || isObjectLike(arg) || isString(arg) || isNumber(arg) || isFunction(arg) || isArray(arg) || isObjectLike(arg) || isBoolean(arg) || isNull(arg);
256
+ };
257
+ var isUndefined = (arg) => {
258
+ return arg === void 0;
259
+ };
260
+ var TYPES = {
261
+ boolean: isBoolean,
262
+ array: isArray,
263
+ object: isObject,
264
+ string: isString,
265
+ number: isNumber,
266
+ null: isNull,
267
+ function: isFunction,
268
+ objectLike: isObjectLike,
269
+ node: isNode,
270
+ htmlElement: isHtmlElement,
271
+ defined: isDefined
272
+ };
273
+ var is = (arg) => {
274
+ return (...args) => {
275
+ return args.map((val) => TYPES[val](arg)).filter((v) => v).length > 0;
276
+ };
277
+ };
278
+ var isNot = (arg) => {
279
+ return (...args) => {
280
+ return args.map((val) => TYPES[val](arg)).filter((v) => v).length === 0;
281
+ };
282
+ };
283
+ var exec = (param, element, state) => {
284
+ if (isFunction(param))
285
+ return param(element, state || element.state);
286
+ return param;
287
+ };
288
+ var map = (obj2, extention, element) => {
289
+ for (const e in extention) {
290
+ obj2[e] = exec(extention[e], element);
291
+ }
292
+ };
293
+ var merge = (element, obj2) => {
294
+ for (const e in obj2) {
295
+ const elementProp = element[e];
296
+ const objProp2 = obj2[e];
297
+ if (elementProp === void 0) {
298
+ element[e] = objProp2;
299
+ }
300
+ }
301
+ return element;
302
+ };
303
+ var deepMerge = (element, extend) => {
304
+ for (const e in extend) {
305
+ const elementProp = element[e];
306
+ const extendProp = extend[e];
307
+ if (e === "parent" || e === "props")
308
+ continue;
309
+ if (elementProp === void 0) {
310
+ element[e] = extendProp;
311
+ } else if (isObjectLike(elementProp) && isObject(extendProp)) {
312
+ deepMerge(elementProp, extendProp);
313
+ }
314
+ }
315
+ return element;
316
+ };
317
+ var clone = (obj2) => {
318
+ const o = {};
319
+ for (const prop2 in obj2) {
320
+ if (prop2 === "node")
321
+ continue;
322
+ o[prop2] = obj2[prop2];
323
+ }
324
+ return o;
325
+ };
326
+ var deepCloneExclude = (obj2, exclude = []) => {
327
+ if (isArray(obj2)) {
328
+ return obj2.map((x) => deepCloneExclude(x, exclude));
329
+ }
330
+ const o = {};
331
+ for (const k in obj2) {
332
+ if (exclude.indexOf(k) > -1)
333
+ continue;
334
+ let v = obj2[k];
335
+ if (k === "extend" && isArray(v)) {
336
+ v = mergeArrayExclude(v, exclude);
337
+ }
338
+ if (isArray(v)) {
339
+ o[k] = v.map((x) => deepCloneExclude(x, exclude));
340
+ } else if (isObject(v)) {
341
+ o[k] = deepCloneExclude(v, exclude);
342
+ } else
343
+ o[k] = v;
344
+ }
345
+ return o;
346
+ };
347
+ var mergeArrayExclude = (arr, excl = []) => {
348
+ return arr.reduce((acc, curr) => deepMerge(acc, deepCloneExclude(curr, excl)), {});
349
+ };
350
+ var deepClone = (obj2) => {
351
+ if (isArray(obj2)) {
352
+ return obj2.map(deepClone);
353
+ }
354
+ const o = {};
355
+ for (const prop2 in obj2) {
356
+ let objProp2 = obj2[prop2];
357
+ if (prop2 === "extend" && isArray(objProp2)) {
358
+ objProp2 = mergeArray(objProp2);
359
+ }
360
+ if (isArray(objProp2)) {
361
+ o[prop2] = objProp2.map((v) => isObject(v) ? deepClone(v) : v);
362
+ } else if (isObject(objProp2)) {
363
+ o[prop2] = deepClone(objProp2);
364
+ } else
365
+ o[prop2] = objProp2;
366
+ }
367
+ return o;
368
+ };
369
+ var deepStringify = (obj2, stringified2 = {}) => {
370
+ for (const prop2 in obj2) {
371
+ const objProp2 = obj2[prop2];
372
+ if (isFunction(objProp2)) {
373
+ stringified2[prop2] = objProp2.toString();
374
+ } else if (isObject(objProp2)) {
375
+ stringified2[prop2] = {};
376
+ deepStringify(objProp2[prop2], stringified2[prop2]);
377
+ } else if (isArray(objProp2)) {
378
+ stringified2[prop2] = [];
379
+ objProp2.map((v, i) => deepStringify(v, stringified2[prop2][i]));
380
+ } else
381
+ stringified2[prop2] = objProp2;
382
+ }
383
+ return stringified2;
384
+ };
385
+ var deepDestringify = (obj, stringified = {}) => {
386
+ for (const prop in obj) {
387
+ const objProp = obj[prop];
388
+ if (isString(objProp)) {
389
+ if (objProp.includes("=>") || objProp.includes("function") || objProp[0] === "(") {
390
+ try {
391
+ const evalProp = eval(objProp);
392
+ stringified[prop] = evalProp;
393
+ } catch (e) {
394
+ if (e)
395
+ stringified[prop] = objProp;
396
+ }
397
+ }
398
+ } else
399
+ stringified[prop] = objProp;
400
+ if (isObject(objProp))
401
+ deepDestringify(stringified[prop], stringified[prop]);
402
+ }
403
+ return stringified;
404
+ };
405
+ var overwrite = (element, params, options) => {
406
+ const { ref } = element;
407
+ const changes = {};
408
+ for (const e in params) {
409
+ if (e === "props")
410
+ continue;
411
+ const elementProp = element[e];
412
+ const paramsProp = params[e];
413
+ if (paramsProp) {
414
+ ref.__cache[e] = changes[e] = elementProp;
415
+ ref[e] = paramsProp;
416
+ }
417
+ }
418
+ return changes;
419
+ };
420
+ var diff = (obj2, original, cache) => {
421
+ const changes = cache || {};
422
+ for (const e in obj2) {
423
+ if (e === "ref")
424
+ continue;
425
+ const originalProp = original[e];
426
+ const objProp2 = obj2[e];
427
+ if (isObjectLike(originalProp) && isObjectLike(objProp2)) {
428
+ changes[e] = {};
429
+ diff(originalProp, objProp2, changes[e]);
430
+ } else if (objProp2 !== void 0) {
431
+ changes[e] = objProp2;
432
+ }
433
+ }
434
+ return changes;
435
+ };
436
+ var overwriteObj = (params, obj2) => {
437
+ const changes = {};
438
+ for (const e in params) {
439
+ const objProp2 = obj2[e];
440
+ const paramsProp = params[e];
441
+ if (paramsProp) {
442
+ obj2[e] = changes[e] = objProp2;
443
+ }
444
+ }
445
+ return changes;
446
+ };
447
+ var overwriteDeep = (params, obj2) => {
448
+ for (const e in params) {
449
+ const objProp2 = obj2[e];
450
+ const paramsProp = params[e];
451
+ if (isObjectLike(objProp2) && isObjectLike(paramsProp)) {
452
+ overwriteDeep(objProp2, paramsProp);
453
+ } else if (paramsProp !== void 0) {
454
+ obj2[e] = paramsProp;
455
+ }
456
+ }
457
+ return obj2;
458
+ };
459
+ var mergeIfExisted = (a, b) => {
460
+ if (isObjectLike(a) && isObjectLike(b))
461
+ return deepMerge(a, b);
462
+ return a || b;
463
+ };
464
+ var mergeArray = (arr) => {
465
+ return arr.reduce((a, c) => deepMerge(a, deepClone(c)), {});
466
+ };
467
+ var mergeAndCloneIfArray = (obj2) => {
468
+ return isArray(obj2) ? mergeArray(obj2) : deepClone(obj2);
469
+ };
470
+ var flattenRecursive = (param, prop2, stack = []) => {
471
+ const objectized = mergeAndCloneIfArray(param);
472
+ stack.push(objectized);
473
+ const extendOfExtend = objectized[prop2];
474
+ if (extendOfExtend)
475
+ flattenRecursive(extendOfExtend, prop2, stack);
476
+ delete objectized[prop2];
477
+ return stack;
478
+ };
479
+ var isEqualDeep = (param, element) => {
480
+ if (param === element)
481
+ return true;
482
+ if (!param || !element)
483
+ return false;
484
+ for (const prop2 in param) {
485
+ const paramProp = param[prop2];
486
+ const elementProp = element[prop2];
487
+ if (isObjectLike(paramProp)) {
488
+ const isEqual = isEqualDeep(paramProp, elementProp);
489
+ if (!isEqual)
490
+ return false;
491
+ } else {
492
+ const isEqual = paramProp === elementProp;
493
+ if (!isEqual)
494
+ return false;
495
+ }
496
+ }
497
+ return true;
498
+ };
499
+ var debounce = (element, func, timeout = 300) => {
500
+ let timer;
501
+ return (...args) => {
502
+ clearTimeout(timer);
503
+ timer = setTimeout(() => {
504
+ func.apply(element, args);
505
+ }, timeout);
506
+ };
507
+ };
508
+ var memoize = (fn) => {
509
+ const cache = {};
510
+ return (...args) => {
511
+ const n = args[0];
512
+ if (n in cache) {
513
+ return cache[n];
514
+ } else {
515
+ const result = fn(n);
516
+ cache[n] = result;
517
+ return result;
518
+ }
519
+ };
520
+ };
521
+ var cleanWithNode = (extend) => delete extend.node && extend;
522
+ var createID = function() {
523
+ let index = 0;
524
+ function newId() {
525
+ index++;
526
+ return index;
527
+ }
528
+ return newId;
529
+ }();
530
+ var createSnapshotId = createID;
531
+ var logIf = (bool, ...arg) => {
532
+ if (bool)
533
+ arg.map((v) => console.log(v));
534
+ };
535
+ var logGroupIf = (bool, key, ...arg) => {
536
+ if (bool) {
537
+ console.group(key);
538
+ arg.map((v) => console.log(v));
539
+ console.groupEnd(key);
540
+ }
541
+ };
542
+ }
543
+ });
544
+
545
+ // src/index.js
546
+ var src_exports = {};
547
+ __export2(src_exports, {
548
+ default: () => src_default
549
+ });
550
+ module.exports = __toCommonJS2(src_exports);
551
+
552
+ // node_modules/@domql/globals/index.js
553
+ var window2 = globalThis;
554
+ var document2 = window2.document;
555
+
556
+ // node_modules/@domql/report/index.js
557
+ var ERRORS_REGISTRY = {
558
+ en: {
559
+ DocumentNotDefined: {
560
+ title: "Document is undefined",
561
+ description: "To tweak with DOM, you should use browser."
562
+ },
563
+ OverwriteToBuiltin: {
564
+ title: "Overwriting to builtin method",
565
+ description: "Overwriting a builtin method in the window define is not possible, please choose different name"
566
+ },
567
+ BrowserNotDefined: {
568
+ title: "Can't recognize environment",
569
+ description: "Environment should be browser application, that can run Javascript"
570
+ },
571
+ SetQuickPreferancesIsNotObject: {
572
+ title: "Quick preferances object is required",
573
+ description: 'Please pass a plain object with "lang", "culture" and "area" properties'
574
+ },
575
+ InvalidParams: {
576
+ title: "Params are invalid",
577
+ description: 'Please pass a plain object with "lang", "culture" and "area" properties'
578
+ },
579
+ CantCreateWithoutNode: {
580
+ title: "You must provide node",
581
+ description: "Can't create DOM element without setting node or text"
582
+ },
583
+ HTMLInvalidTag: {
584
+ title: "Element tag name (or DOM nodeName) is invalid",
585
+ description: "To create element, you must provide valid DOM node. See full list of them at here: http://www.w3schools.com/tags/"
586
+ },
587
+ HTMLInvalidAttr: {
588
+ title: "Attibutes object is invalid",
589
+ description: "Please pass a valid plain object to apply as an attributes for a DOM node"
590
+ },
591
+ HTMLInvalidData: {
592
+ title: "Data object is invalid",
593
+ description: "Please pass a valid plain object to apply as an dataset for a DOM node"
594
+ },
595
+ HTMLInvalidStyles: {
596
+ title: "Styles object is invalid",
597
+ description: "Please pass a valid plain object to apply as an style for a DOM node"
598
+ },
599
+ HTMLInvalidText: {
600
+ title: "Text string is invalid",
601
+ description: "Please pass a valid string to apply text to DOM node"
602
+ }
603
+ }
604
+ };
605
+ var report = (err, arg, element) => {
606
+ const currentLang = "en";
607
+ let errObj;
608
+ if (err && typeof err === "string")
609
+ errObj = ERRORS_REGISTRY[currentLang][err];
610
+ return new Error(
611
+ `"${err}", "${arg}"
612
+
613
+ `,
614
+ `${errObj.description}`,
615
+ element ? `
616
+
617
+ ${element}` : ""
618
+ );
619
+ };
620
+
621
+ // src/element/root.js
622
+ var root = {
623
+ key: ":root",
624
+ node: document2 ? document2.body : report("DocumentNotDefined", document2)
625
+ };
626
+ var root_default = root;
627
+
628
+ // src/element/tree.js
629
+ var tree_default = root_default;
630
+
631
+ // src/element/cache.js
632
+ var import_utils4 = __toESM(require_index_cjs());
633
+
634
+ // src/event/on.js
635
+ var on_exports = {};
636
+ __export2(on_exports, {
637
+ attachNode: () => attachNode,
638
+ beforeClassAssign: () => beforeClassAssign,
639
+ init: () => init,
640
+ initStateUpdated: () => initStateUpdated,
641
+ initUpdate: () => initUpdate,
642
+ render: () => render,
643
+ stateCreated: () => stateCreated,
644
+ stateInit: () => stateInit,
645
+ stateUpdated: () => stateUpdated,
646
+ update: () => update
647
+ });
648
+ var beforeClassAssign = (param, element, state) => {
649
+ return param(element, state);
650
+ };
651
+ var init = (param, element, state) => {
652
+ return param(element, state);
653
+ };
654
+ var render = (param, element, state) => {
655
+ return param(element, state);
656
+ };
657
+ var initUpdate = (param, element, state) => {
658
+ return param(element, state);
659
+ };
660
+ var attachNode = (param, element, state) => {
661
+ return param(element, state);
662
+ };
663
+ var stateInit = (param, element, state) => {
664
+ return param(element, state);
665
+ };
666
+ var stateCreated = (param, element, state) => {
667
+ return param(element, state);
668
+ };
669
+ var initStateUpdated = (param, element, state, changes) => {
670
+ return param(element, state, changes);
671
+ };
672
+ var stateUpdated = (param, element, state, changes) => {
673
+ return param(element, state, changes);
674
+ };
675
+ var update = (param, element, state) => {
676
+ return param(element, state);
677
+ };
678
+
679
+ // src/event/can.js
680
+ var can_exports = {};
681
+ __export2(can_exports, {
682
+ render: () => render2
683
+ });
684
+
685
+ // node_modules/@domql/registry/methods.js
686
+ var import_utils = __toESM(require_index_cjs());
687
+
688
+ // node_modules/@domql/registry/tags.js
689
+ var TAGS = {
690
+ root: [
691
+ "body",
692
+ "html"
693
+ ],
694
+ head: [
695
+ "title",
696
+ "base",
697
+ "meta",
698
+ "style"
699
+ ],
700
+ body: [
701
+ "string",
702
+ "fragment",
703
+ "a",
704
+ "abbr",
705
+ "acronym",
706
+ "address",
707
+ "applet",
708
+ "area",
709
+ "article",
710
+ "aside",
711
+ "audio",
712
+ "b",
713
+ "basefont",
714
+ "bdi",
715
+ "bdo",
716
+ "big",
717
+ "blockquote",
718
+ "br",
719
+ "button",
720
+ "canvas",
721
+ "caption",
722
+ "center",
723
+ "cite",
724
+ "code",
725
+ "col",
726
+ "colgroup",
727
+ "data",
728
+ "datalist",
729
+ "dd",
730
+ "del",
731
+ "details",
732
+ "dfn",
733
+ "dialog",
734
+ "dir",
735
+ "div",
736
+ "dl",
737
+ "dt",
738
+ "em",
739
+ "embed",
740
+ "fieldset",
741
+ "figcaption",
742
+ "figure",
743
+ "font",
744
+ "footer",
745
+ "form",
746
+ "frame",
747
+ "frameset",
748
+ "h1",
749
+ "h2",
750
+ "h3",
751
+ "h4",
752
+ "h5",
753
+ "h6",
754
+ "head",
755
+ "header",
756
+ "hr",
757
+ "i",
758
+ "iframe",
759
+ "img",
760
+ "input",
761
+ "ins",
762
+ "kbd",
763
+ "label",
764
+ "legend",
765
+ "li",
766
+ "link",
767
+ "main",
768
+ "map",
769
+ "mark",
770
+ "meter",
771
+ "nav",
772
+ "noframes",
773
+ "noscript",
774
+ "object",
775
+ "ol",
776
+ "optgroup",
777
+ "option",
778
+ "output",
779
+ "p",
780
+ "param",
781
+ "picture",
782
+ "pre",
783
+ "progress",
784
+ "q",
785
+ "rp",
786
+ "rt",
787
+ "ruby",
788
+ "s",
789
+ "samp",
790
+ "script",
791
+ "section",
792
+ "select",
793
+ "small",
794
+ "source",
795
+ "span",
796
+ "strike",
797
+ "strong",
798
+ "sub",
799
+ "summary",
800
+ "sup",
801
+ "table",
802
+ "tbody",
803
+ "td",
804
+ "template",
805
+ "textarea",
806
+ "tfoot",
807
+ "th",
808
+ "thead",
809
+ "time",
810
+ "tr",
811
+ "track",
812
+ "tt",
813
+ "u",
814
+ "ul",
815
+ "var",
816
+ "video",
817
+ "wbr",
818
+ "svg",
819
+ "path"
820
+ ]
821
+ };
822
+
823
+ // src/event/can.js
824
+ var render2 = (element) => {
825
+ const tag = element.tag || "div";
826
+ const isValid = TAGS.body.indexOf(tag) > -1;
827
+ return isValid || report("HTMLInvalidTag");
828
+ };
829
+
830
+ // src/utils/object.js
831
+ var import_utils2 = __toESM(require_index_cjs());
832
+ var isTagRegistered = (arg) => TAGS.body.indexOf(arg);
833
+ var merge2 = (element, obj2) => {
834
+ for (const e in obj2) {
835
+ const elementProp = element[e];
836
+ const objProp2 = obj2[e];
837
+ if (elementProp === void 0) {
838
+ element[e] = objProp2;
839
+ }
840
+ }
841
+ return element;
842
+ };
843
+ var deepMerge2 = (element, extend) => {
844
+ for (const e in extend) {
845
+ const elementProp = element[e];
846
+ const extendProp = extend[e];
847
+ if (e === "parent" || e === "props" || e === "state")
848
+ continue;
849
+ if (elementProp === void 0) {
850
+ element[e] = extendProp;
851
+ } else if ((0, import_utils2.isObjectLike)(elementProp) && (0, import_utils2.isObject)(extendProp)) {
852
+ deepMerge2(elementProp, extendProp);
853
+ }
854
+ }
855
+ return element;
856
+ };
857
+ var deepClone2 = (obj2, excluding = ["parent", "node", "__element", "state", "context", "extend", "__ref"]) => {
858
+ const o = (0, import_utils2.isArray)(obj2) ? [] : {};
859
+ for (const prop2 in obj2) {
860
+ if (excluding.indexOf(prop2) > -1)
861
+ continue;
862
+ let objProp2 = obj2[prop2];
863
+ if (prop2 === "extend" && (0, import_utils2.isArray)(objProp2)) {
864
+ objProp2 = mergeArray2(objProp2, excluding);
865
+ }
866
+ if ((0, import_utils2.isObjectLike)(objProp2)) {
867
+ o[prop2] = deepClone2(objProp2, excluding);
868
+ } else
869
+ o[prop2] = objProp2;
870
+ }
871
+ return o;
872
+ };
873
+ var overwrite2 = (element, params, options) => {
874
+ const changes = {};
875
+ const { __ref } = element;
876
+ const { __exec, __cached } = __ref;
877
+ for (const e in params) {
878
+ if (e === "props" || e === "state" || e === "__ref")
879
+ continue;
880
+ const elementProp = element[e];
881
+ const paramsProp = params[e];
882
+ if (paramsProp !== void 0) {
883
+ __cached[e] = changes[e] = elementProp;
884
+ element[e] = paramsProp;
885
+ }
886
+ if (options.cleanExec)
887
+ delete __exec[e];
888
+ }
889
+ return changes;
890
+ };
891
+ var overwriteShallow = (obj2, params, excluding = ["node", "__ref"]) => {
892
+ for (const e in params) {
893
+ if (excluding.indexOf(e) > -1)
894
+ continue;
895
+ obj2[e] = params[e];
896
+ }
897
+ return obj2;
898
+ };
899
+ var overwriteDeep2 = (obj2, params, excluding = ["node", "__ref"]) => {
900
+ for (const e in params) {
901
+ if (excluding.indexOf(e) > -1)
902
+ continue;
903
+ const objProp2 = obj2[e];
904
+ const paramsProp = params[e];
905
+ if ((0, import_utils2.isObjectLike)(objProp2) && (0, import_utils2.isObjectLike)(paramsProp)) {
906
+ overwriteDeep2(objProp2, paramsProp);
907
+ } else if (paramsProp !== void 0) {
908
+ obj2[e] = paramsProp;
909
+ }
910
+ }
911
+ return obj2;
912
+ };
913
+ var mergeArray2 = (arr, excluding = ["parent", "node", "__element", "state", "context", "__ref"]) => {
914
+ return arr.reduce((a, c) => deepMerge2(a, deepClone2(c, excluding)), {});
915
+ };
916
+
917
+ // src/utils/extendUtils.js
918
+ var import_utils3 = __toESM(require_index_cjs());
919
+ var generateHash = () => Math.random().toString(36).substring(2);
920
+ var extendStackRegistry = {};
921
+ var getHashedExtend = (extend) => {
922
+ return extendStackRegistry[extend.__hash];
923
+ };
924
+ var setHashedExtend = (extend, stack) => {
925
+ const hash = generateHash();
926
+ extend.__hash = hash;
927
+ extendStackRegistry[hash] = stack;
928
+ return stack;
929
+ };
930
+ var getExtendStackRegistry = (extend, stack) => {
931
+ if (extend.__hash) {
932
+ return stack.concat(getHashedExtend(extend));
933
+ }
934
+ return setHashedExtend(extend, stack);
935
+ };
936
+ var extractArrayExtend = (extend, stack) => {
937
+ extend.forEach((each) => flattenExtend(each, stack));
938
+ return stack;
939
+ };
940
+ var deepExtend = (extend, stack) => {
941
+ const extendOflattenExtend = extend.extend;
942
+ if (extendOflattenExtend) {
943
+ flattenExtend(extendOflattenExtend, stack);
944
+ }
945
+ return stack;
946
+ };
947
+ var flattenExtend = (extend, stack) => {
948
+ if (!extend)
949
+ return stack;
950
+ if ((0, import_utils3.isArray)(extend))
951
+ return extractArrayExtend(extend, stack);
952
+ stack.push(extend);
953
+ if (extend.extend)
954
+ deepExtend(extend, stack);
955
+ return stack;
956
+ };
957
+ var deepCloneExtend = (obj2) => {
958
+ const o = {};
959
+ for (const prop2 in obj2) {
960
+ if (["parent", "node", "__element"].indexOf(prop2) > -1)
961
+ continue;
962
+ const objProp2 = obj2[prop2];
963
+ if ((0, import_utils3.isObject)(objProp2)) {
964
+ o[prop2] = deepCloneExtend(objProp2);
965
+ } else if ((0, import_utils3.isArray)(objProp2)) {
966
+ o[prop2] = objProp2.map((x) => x);
967
+ } else
968
+ o[prop2] = objProp2;
969
+ }
970
+ return o;
971
+ };
972
+ var deepMergeExtend = (element, extend) => {
973
+ for (const e in extend) {
974
+ if (["parent", "node", "__element"].indexOf(e) > -1)
975
+ continue;
976
+ const elementProp = element[e];
977
+ const extendProp = extend[e];
978
+ if (elementProp === void 0) {
979
+ element[e] = extendProp;
980
+ } else if ((0, import_utils3.isObject)(elementProp) && (0, import_utils3.isObject)(extendProp)) {
981
+ deepMergeExtend(elementProp, extendProp);
982
+ } else if ((0, import_utils3.isArray)(elementProp) && (0, import_utils3.isArray)(extendProp)) {
983
+ element[e] = elementProp.concat(extendProp);
984
+ } else if ((0, import_utils3.isArray)(elementProp) && (0, import_utils3.isObject)(extendProp)) {
985
+ const obj2 = deepMergeExtend({}, elementProp);
986
+ element[e] = deepMergeExtend(obj2, extendProp);
987
+ } else if (elementProp === void 0 && (0, import_utils3.isFunction)(extendProp)) {
988
+ element[e] = extendProp;
989
+ }
990
+ }
991
+ return element;
992
+ };
993
+ var cloneAndMergeArrayExtend = (stack) => {
994
+ return stack.reduce((a, c) => {
995
+ return deepMergeExtend(a, deepCloneExtend(c));
996
+ }, {});
997
+ };
998
+ var jointStacks = (extendStack, childExtendStack) => {
999
+ return [].concat(extendStack.slice(0, 1)).concat(childExtendStack.slice(0, 1)).concat(extendStack.slice(1)).concat(childExtendStack.slice(1));
1000
+ };
1001
+ var getExtendStack = (extend) => {
1002
+ if (!extend)
1003
+ return [];
1004
+ if (extend.__hash)
1005
+ return getHashedExtend(extend) || [];
1006
+ const stack = flattenExtend(extend, []);
1007
+ return getExtendStackRegistry(extend, stack);
1008
+ };
1009
+
1010
+ // src/element/cache.js
1011
+ var cachedElements = {};
1012
+ var createNode = (element) => {
1013
+ const { tag } = element;
1014
+ if (tag) {
1015
+ if (tag === "string")
1016
+ return document2.createTextNode(element.text);
1017
+ else if (tag === "fragment") {
1018
+ return document2.createDocumentFragment();
1019
+ } else if (tag === "svg" || tag === "path") {
1020
+ return document2.createElementNS("http://www.w3.org/2000/svg", tag);
1021
+ } else
1022
+ return document2.createElement(tag);
1023
+ } else {
1024
+ return document2.createElement("div");
1025
+ }
1026
+ };
1027
+ var detectTag = (element) => {
1028
+ let { tag, key } = element;
1029
+ tag = (0, import_utils4.exec)(tag, element);
1030
+ if (tag === true)
1031
+ tag = key;
1032
+ if ((0, import_utils4.isString)(tag)) {
1033
+ const tagExists = isTagRegistered(tag) > -1;
1034
+ if (tagExists)
1035
+ return tag;
1036
+ } else {
1037
+ const isKeyATag = isTagRegistered(key) > -1;
1038
+ if (isKeyATag)
1039
+ return key;
1040
+ }
1041
+ return "div";
1042
+ };
1043
+ var cache_default = (element) => {
1044
+ const tag = element.tag = detectTag(element);
1045
+ if (!can_exports.render(element)) {
1046
+ return report("HTMLInvalidTag");
1047
+ }
1048
+ let cachedTag = cachedElements[tag];
1049
+ if (!cachedTag)
1050
+ cachedTag = cachedElements[tag] = createNode(element);
1051
+ const clonedNode = cachedTag.cloneNode(true);
1052
+ if (tag === "string")
1053
+ clonedNode.nodeValue = element.text;
1054
+ return clonedNode;
1055
+ };
1056
+
1057
+ // src/element/create.js
1058
+ var import_utils26 = __toESM(require_index_cjs());
1059
+
1060
+ // src/element/node.js
1061
+ var import_utils19 = __toESM(require_index_cjs());
1062
+
1063
+ // src/element/iterate.js
1064
+ var import_utils17 = __toESM(require_index_cjs());
1065
+
1066
+ // src/element/methods.js
1067
+ var import_utils16 = __toESM(require_index_cjs());
1068
+
1069
+ // src/element/mixins/attr.js
1070
+ var import_utils6 = __toESM(require_index_cjs());
1071
+ var attr_default = (params, element, node) => {
1072
+ const { __ref } = element;
1073
+ const { __attr } = __ref;
1074
+ if ((0, import_utils6.isNot)("object"))
1075
+ report("HTMLInvalidAttr", params);
1076
+ if (params) {
1077
+ for (const attr in params) {
1078
+ const val = (0, import_utils6.exec)(params[attr], element);
1079
+ if (val && node.setAttribute)
1080
+ node.setAttribute(attr, val);
1081
+ else if (node.removeAttribute)
1082
+ node.removeAttribute(attr);
1083
+ __attr[attr] = val;
1084
+ }
1085
+ }
1086
+ console.groupEnd(params, __attr);
1087
+ };
1088
+
1089
+ // src/element/mixins/classList.js
1090
+ var import_utils7 = __toESM(require_index_cjs());
1091
+ var assignClass = (element) => {
1092
+ const { key } = element;
1093
+ if (element.class === true)
1094
+ element.class = key;
1095
+ else if (!element.class && typeof key === "string" && key.charAt(0) === "_" && key.charAt(1) !== "_") {
1096
+ element.class = key.slice(1);
1097
+ }
1098
+ };
1099
+ var classify = (obj2, element) => {
1100
+ let className = "";
1101
+ for (const item in obj2) {
1102
+ const param = obj2[item];
1103
+ if (typeof param === "boolean" && param)
1104
+ className += ` ${item}`;
1105
+ else if (typeof param === "string")
1106
+ className += ` ${param}`;
1107
+ else if (typeof param === "function") {
1108
+ className += ` ${(0, import_utils7.exec)(param, element)}`;
1109
+ }
1110
+ }
1111
+ return className;
1112
+ };
1113
+ var classList_default = (params, element, node, live) => {
1114
+ if (!params)
1115
+ return;
1116
+ const { key } = element;
1117
+ if (params === true)
1118
+ params = element.class = { key };
1119
+ if ((0, import_utils7.isString)(params))
1120
+ params = element.class = { default: params };
1121
+ if ((0, import_utils7.isObject)(params))
1122
+ params = classify(params, element);
1123
+ const className = params.replace(/\s+/g, " ").trim();
1124
+ node.classList = className;
1125
+ return className;
1126
+ };
1127
+
1128
+ // src/element/set.js
1129
+ var import_utils8 = __toESM(require_index_cjs());
1130
+
1131
+ // src/element/options.js
1132
+ var options_default = {};
1133
+
1134
+ // src/element/set.js
1135
+ var removeContentElement = function(el) {
1136
+ const element = el || this;
1137
+ const { __ref } = element;
1138
+ if (element.content) {
1139
+ if (element.content.node) {
1140
+ if (element.content.tag === "fragment")
1141
+ element.node.innerHTML = "";
1142
+ else
1143
+ element.node.removeChild(element.content.node);
1144
+ }
1145
+ const { __cached } = __ref;
1146
+ if (__cached && __cached.content) {
1147
+ if (__cached.content.tag === "fragment")
1148
+ __cached.content.parent.node.innerHTML = "";
1149
+ else if (__cached.content && (0, import_utils8.isFunction)(__cached.content.remove))
1150
+ __cached.content.remove();
1151
+ }
1152
+ delete element.content;
1153
+ }
1154
+ };
1155
+ var set = function(params, options = {}, el) {
1156
+ const element = el || this;
1157
+ const __contentRef = element.content && element.content.__ref;
1158
+ const isEqual = (0, import_utils8.isEqualDeep)(params, element.content);
1159
+ if (isEqual && __contentRef && __contentRef.__cached)
1160
+ return element;
1161
+ removeContentElement(element);
1162
+ if (params) {
1163
+ const { childExtend } = params;
1164
+ if (!childExtend && element.childExtend)
1165
+ params.childExtend = element.childExtend;
1166
+ create_default(params, element, "content", {
1167
+ ignoreChildExtend: true,
1168
+ ...registry_default.defaultOptions,
1169
+ ...options_default.create,
1170
+ ...options
1171
+ });
1172
+ }
1173
+ return element;
1174
+ };
1175
+ var set_default = set;
1176
+
1177
+ // src/element/mixins/content.js
1178
+ var content_default = (param, element, node, options) => {
1179
+ if (param && element) {
1180
+ if (param.__hash === element.content.__hash && element.content.update) {
1181
+ if (!element.content.__ref)
1182
+ element.content.__ref = {};
1183
+ element.content.update(param);
1184
+ } else {
1185
+ set_default.call(element, param, options);
1186
+ }
1187
+ }
1188
+ };
1189
+
1190
+ // src/element/mixins/data.js
1191
+ var import_utils9 = __toESM(require_index_cjs());
1192
+ var data_default = (params, element, node) => {
1193
+ if (params && params.showOnNode) {
1194
+ if (!(0, import_utils9.isObject)(params))
1195
+ report("HTMLInvalidData", params);
1196
+ for (const dataset in params) {
1197
+ if (dataset !== "showOnNode") {
1198
+ node.dataset[dataset] = (0, import_utils9.exec)(params[dataset], element);
1199
+ }
1200
+ }
1201
+ }
1202
+ };
1203
+
1204
+ // src/element/mixins/html.js
1205
+ var import_utils10 = __toESM(require_index_cjs());
1206
+ var html_default = (param, element, node) => {
1207
+ const prop2 = (0, import_utils10.exec)(param, element);
1208
+ const { __ref } = element;
1209
+ if (prop2 !== __ref.__html) {
1210
+ if (node.nodeName === "SVG")
1211
+ node.textContent = prop2;
1212
+ else
1213
+ node.innerHTML = prop2;
1214
+ __ref.__html = prop2;
1215
+ }
1216
+ };
1217
+
1218
+ // src/element/mixins/style.js
1219
+ var import_utils11 = __toESM(require_index_cjs());
1220
+ var style_default = (params, element, node) => {
1221
+ if (params) {
1222
+ if ((0, import_utils11.isObject)(params))
1223
+ (0, import_utils11.map)(node.style, params, element);
1224
+ else
1225
+ report("HTMLInvalidStyles", params);
1226
+ }
1227
+ };
1228
+
1229
+ // src/element/mixins/text.js
1230
+ var import_utils12 = __toESM(require_index_cjs());
1231
+ var text_default = (param, element, node) => {
1232
+ const prop2 = (0, import_utils12.exec)(param, element);
1233
+ if (element.tag === "string") {
1234
+ if (element.text === prop2)
1235
+ return;
1236
+ node.nodeValue = prop2;
1237
+ } else if (param !== void 0 || param !== null) {
1238
+ if (element.__text) {
1239
+ if (element.__text.text === prop2)
1240
+ return;
1241
+ element.__text.text = prop2;
1242
+ if (element.__text.node)
1243
+ element.__text.node.nodeValue = prop2;
1244
+ } else
1245
+ create_default({ tag: "string", text: prop2 }, element, "__text");
1246
+ }
1247
+ };
1248
+
1249
+ // src/element/mixins/state.js
1250
+ var import_utils15 = __toESM(require_index_cjs());
1251
+
1252
+ // src/element/state.js
1253
+ var import_utils13 = __toESM(require_index_cjs());
1254
+ var IGNORE_STATE_PARAMS = [
1255
+ "update",
1256
+ "parse",
1257
+ "clean",
1258
+ "create",
1259
+ "parent",
1260
+ "__element",
1261
+ "__depends",
1262
+ "__ref",
1263
+ "__root",
1264
+ "__components",
1265
+ "__projectSystem",
1266
+ "__projectState",
1267
+ "__projectComponents",
1268
+ "__projectPages",
1269
+ "__projectSnippets",
1270
+ "projectStateUpdate",
1271
+ "projectSystemUpdate"
1272
+ ];
1273
+ var parseState = function() {
1274
+ const state = this;
1275
+ const parseState2 = {};
1276
+ for (const param in state) {
1277
+ if (!IGNORE_STATE_PARAMS.includes(param)) {
1278
+ parseState2[param] = state[param];
1279
+ }
1280
+ }
1281
+ return parseState2;
1282
+ };
1283
+ var cleanState = function() {
1284
+ const state = this;
1285
+ for (const param in state) {
1286
+ if (!IGNORE_STATE_PARAMS.includes(param)) {
1287
+ delete state[param];
1288
+ }
1289
+ }
1290
+ return state;
1291
+ };
1292
+ var projectSystemUpdate = function(obj2, options = {}) {
1293
+ const state = this;
1294
+ if (!state)
1295
+ return;
1296
+ const rootState = (state.__element.__ref.__root || state.__element).state;
1297
+ rootState.update({ PROJECT_SYSTEM: obj2 }, options);
1298
+ return state;
1299
+ };
1300
+ var projectStateUpdate = function(obj2, options = {}) {
1301
+ const state = this;
1302
+ if (!state)
1303
+ return;
1304
+ const rootState = (state.__element.__ref.__root || state.__element).state;
1305
+ rootState.update({ PROJECT_STATE: obj2 }, options);
1306
+ return state;
1307
+ };
1308
+ var updateState = function(obj2, options = {}) {
1309
+ const state = this;
1310
+ const element = state.__element;
1311
+ const __elementRef = element.__ref;
1312
+ state.parent = element.parent.state;
1313
+ if (!state.__element)
1314
+ createState(element, element.parent);
1315
+ if (element.on && (0, import_utils13.isFunction)(element.on.initStateUpdated)) {
1316
+ const initReturns = on_exports.initStateUpdated(element.on.initStateUpdated, element, state, obj2);
1317
+ if (initReturns === false)
1318
+ return;
1319
+ }
1320
+ const stateKey = __elementRef.__state;
1321
+ if (stateKey) {
1322
+ if (state.parent && state.parent[stateKey]) {
1323
+ const keyInParentState = state.parent[stateKey];
1324
+ if (keyInParentState && !options.stopStatePropogation) {
1325
+ if (__elementRef.__stateType === "string") {
1326
+ return state.parent.update({ [stateKey]: obj2.value }, options);
1327
+ }
1328
+ return state.parent.update({ [stateKey]: obj2 }, options);
1329
+ }
1330
+ }
1331
+ } else {
1332
+ if (options && options.shallow) {
1333
+ overwriteShallow(state, obj2, IGNORE_STATE_PARAMS);
1334
+ } else {
1335
+ overwriteDeep2(state, obj2, IGNORE_STATE_PARAMS);
1336
+ }
1337
+ }
1338
+ if (!options.preventUpdate) {
1339
+ element.update({}, options);
1340
+ } else if (options.preventUpdate === "recursive") {
1341
+ element.update({}, { ...options, preventUpdate: true });
1342
+ }
1343
+ if (state.__depends) {
1344
+ for (const el in state.__depends) {
1345
+ const findElement = state.__depends[el];
1346
+ findElement.clean().update(state.parse(), options);
1347
+ }
1348
+ }
1349
+ if (!options.preventUpdateListener && element.on && (0, import_utils13.isFunction)(element.on.stateUpdated)) {
1350
+ on_exports.stateUpdated(element.on.stateUpdated, element, state, obj2);
1351
+ }
1352
+ };
1353
+ var createState = function(element, parent, opts) {
1354
+ const skip = opts && opts.skip ? opts.skip : false;
1355
+ let { state, __ref: __elementRef } = element;
1356
+ if ((0, import_utils13.isFunction)(state))
1357
+ state = (0, import_utils13.exec)(state, element);
1358
+ if ((0, import_utils13.is)(state)("string", "number")) {
1359
+ __elementRef.__state = state;
1360
+ state = {};
1361
+ }
1362
+ if (state === true) {
1363
+ __elementRef.__state = element.key;
1364
+ state = {};
1365
+ }
1366
+ if (!state) {
1367
+ if (parent && parent.state)
1368
+ return parent.state;
1369
+ return {};
1370
+ } else {
1371
+ __elementRef.__hasRootState = true;
1372
+ }
1373
+ if (element.on && (0, import_utils13.isFunction)(element.on.stateInit)) {
1374
+ on_exports.stateInit(element.on.stateInit, element, element.state);
1375
+ }
1376
+ let stateKey = __elementRef.__state;
1377
+ if (stateKey) {
1378
+ let parentState = parent.state;
1379
+ const parentKeysArr = stateKey.split("../");
1380
+ for (let i = 1; i < parentKeysArr.length; i++) {
1381
+ stateKey = parentKeysArr[i];
1382
+ parentState = parentState.parent;
1383
+ }
1384
+ const childrenKeysArr = stateKey.split(".");
1385
+ for (let i = 0; i < childrenKeysArr.length; i++) {
1386
+ const childKey = childrenKeysArr[i];
1387
+ const grandChildKey = childrenKeysArr[i + 1];
1388
+ const childInParent = parentState[childKey];
1389
+ if (childInParent && childInParent[grandChildKey]) {
1390
+ stateKey = grandChildKey;
1391
+ parentState = childInParent;
1392
+ }
1393
+ }
1394
+ if (parentState && parentState[stateKey]) {
1395
+ const keyInParentState = parentState[stateKey];
1396
+ if ((0, import_utils13.is)(keyInParentState)("object", "array")) {
1397
+ state = deepClone2(keyInParentState);
1398
+ } else if ((0, import_utils13.is)(keyInParentState)("string", "number")) {
1399
+ state = { value: keyInParentState };
1400
+ __elementRef.__stateType = "string";
1401
+ } else if ((0, import_utils13.isUndefined)(keyInParentState)) {
1402
+ console.warn(stateKey, "is not in present", "replacing with ", {});
1403
+ state = {};
1404
+ }
1405
+ }
1406
+ }
1407
+ const { __ref } = state;
1408
+ if (__ref) {
1409
+ state = deepClone2(__ref, IGNORE_STATE_PARAMS);
1410
+ if ((0, import_utils13.isObject)(__ref.__depends)) {
1411
+ __ref.__depends[element.key] = state;
1412
+ } else
1413
+ __ref.__depends = { [element.key]: state };
1414
+ } else {
1415
+ state = deepClone2(state, IGNORE_STATE_PARAMS);
1416
+ }
1417
+ element.state = state;
1418
+ if (skip)
1419
+ return state;
1420
+ state.clean = cleanState;
1421
+ state.parse = parseState;
1422
+ state.update = updateState;
1423
+ state.create = createState;
1424
+ state.parent = element.parent.state;
1425
+ state.__element = element;
1426
+ state.__root = __elementRef.__root ? __elementRef.__root.state : state;
1427
+ state.projectSystemUpdate = projectSystemUpdate;
1428
+ state.projectStateUpdate = projectStateUpdate;
1429
+ state.__components = state.__root.COMPONENTS;
1430
+ state.__projectSystem = state.__root.PROJECT_SYSTEM;
1431
+ state.__projectState = state.__root.PROJECT_STATE;
1432
+ state.__projectComponents = state.__root.PROJECT_COMPONENTS;
1433
+ state.__projectPages = state.__root.PROJECT_PAGES;
1434
+ state.__projectSnippets = state.__root.PROJECT_SNIPPETS;
1435
+ if (element.on && (0, import_utils13.isFunction)(element.on.stateCreated)) {
1436
+ on_exports.stateCreated(element.on.stateCreated, element, state);
1437
+ }
1438
+ return state;
1439
+ };
1440
+ var state_default = createState;
1441
+
1442
+ // src/element/mixins/state.js
1443
+ var state_default2 = (params, element, node) => {
1444
+ const state = (0, import_utils15.exec)(params, element);
1445
+ if ((0, import_utils15.isObject)(state)) {
1446
+ for (const param in state) {
1447
+ if (IGNORE_STATE_PARAMS.includes(param))
1448
+ continue;
1449
+ element.state[param] = (0, import_utils15.exec)(state[param], element);
1450
+ }
1451
+ }
1452
+ return element;
1453
+ };
1454
+
1455
+ // src/element/mixins/registry.js
1456
+ var registry_default = {
1457
+ attr: attr_default,
1458
+ style: style_default,
1459
+ text: text_default,
1460
+ html: html_default,
1461
+ content: content_default,
1462
+ data: data_default,
1463
+ class: classList_default,
1464
+ state: state_default2,
1465
+ extend: {},
1466
+ childExtend: {},
1467
+ childExtendRecursive: {},
1468
+ props: {},
1469
+ path: {},
1470
+ if: {},
1471
+ define: {},
1472
+ transform: {},
1473
+ __ref: {},
1474
+ __hash: {},
1475
+ __text: {},
1476
+ nextElement: {},
1477
+ previousElement: {},
1478
+ key: {},
1479
+ tag: {},
1480
+ query: {},
1481
+ parent: {},
1482
+ node: {},
1483
+ set: {},
1484
+ update: {},
1485
+ setProps: {},
1486
+ remove: {},
1487
+ removeContent: {},
1488
+ lookup: {},
1489
+ spotByPath: {},
1490
+ keys: {},
1491
+ log: {},
1492
+ parse: {},
1493
+ parseDeep: {},
1494
+ on: {},
1495
+ component: {},
1496
+ context: {}
1497
+ };
1498
+ var parseFilters = {
1499
+ elementKeys: [
1500
+ "tag",
1501
+ "text",
1502
+ "style",
1503
+ "attr",
1504
+ "class",
1505
+ "state",
1506
+ "class",
1507
+ "data",
1508
+ "content",
1509
+ "html",
1510
+ "on"
1511
+ ],
1512
+ propsKeys: ["__element"],
1513
+ stateKeys: []
1514
+ };
1515
+
1516
+ // src/element/methods.js
1517
+ var ENV = "development";
1518
+ var lookup = function(key) {
1519
+ const element = this;
1520
+ let { parent } = element;
1521
+ while (parent.key !== key) {
1522
+ if (parent[key])
1523
+ return parent[key];
1524
+ parent = parent.parent;
1525
+ if (!parent)
1526
+ return;
1527
+ }
1528
+ return parent;
1529
+ };
1530
+ var spotByPath = function(path) {
1531
+ const element = this;
1532
+ const arr = [].concat(path);
1533
+ let active = root_default[arr[0]];
1534
+ if (!arr || !arr.length)
1535
+ return console.log(arr, "on", element.key, "is undefined");
1536
+ while (active.key === arr[0]) {
1537
+ arr.shift();
1538
+ if (!arr.length)
1539
+ break;
1540
+ active = active[arr[0]];
1541
+ if (!active)
1542
+ return;
1543
+ }
1544
+ return active;
1545
+ };
1546
+ var remove = function(params) {
1547
+ const element = this;
1548
+ if ((0, import_utils16.isFunction)(element.node.remove))
1549
+ element.node.remove();
1550
+ else if (ENV === "test" || ENV === "development") {
1551
+ console.warn("This item cant be removed");
1552
+ element.log();
1553
+ }
1554
+ delete element.parent[element.key];
1555
+ };
1556
+ var setProps = function(param, options) {
1557
+ const element = this;
1558
+ if (!param || !element.props)
1559
+ return;
1560
+ element.update({ props: param }, options);
1561
+ return element;
1562
+ };
1563
+ var keys = function() {
1564
+ const element = this;
1565
+ const keys2 = [];
1566
+ for (const param in element) {
1567
+ if (registry_default[param] && !parseFilters.elementKeys.includes(param)) {
1568
+ continue;
1569
+ }
1570
+ keys2.push(param);
1571
+ }
1572
+ return keys2;
1573
+ };
1574
+ var parse = function() {
1575
+ const element = this;
1576
+ const obj2 = {};
1577
+ const keyList = keys.call(element);
1578
+ keyList.forEach((v) => obj2[v] = element[v]);
1579
+ return obj2;
1580
+ };
1581
+ var parseDeep = function() {
1582
+ const element = this;
1583
+ const obj2 = parse.call(element);
1584
+ for (const k in obj2) {
1585
+ if ((0, import_utils16.isObjectLike)(obj2[k])) {
1586
+ obj2[k] = parseDeep.call(obj2[k]);
1587
+ }
1588
+ }
1589
+ return obj2;
1590
+ };
1591
+ var log = function(...args) {
1592
+ const element = this;
1593
+ const { __ref } = element;
1594
+ console.group(element.key);
1595
+ if (args.length) {
1596
+ args.forEach((v) => console.log(`%c${v}:
1597
+ `, "font-weight: bold", element[v]));
1598
+ } else {
1599
+ console.log(__ref.path);
1600
+ const keys2 = element.keys();
1601
+ keys2.forEach((v) => console.log(`%c${v}:
1602
+ `, "font-weight: bold", element[v]));
1603
+ }
1604
+ console.groupEnd(element.key);
1605
+ return element;
1606
+ };
1607
+ var isMethod = function(param) {
1608
+ return param === "set" || param === "update" || param === "remove" || param === "removeContent" || param === "lookup" || param === "spotByPath" || param === "keys" || param === "parse" || param === "setProps" || param === "parseDeep" || param === "if" || param === "log" || param === "nextElement" || param === "previousElement";
1609
+ };
1610
+ var nextElement = function() {
1611
+ const element = this;
1612
+ const { key, parent } = element;
1613
+ const { __children } = parent.__ref;
1614
+ const currentIndex = __children.indexOf(key);
1615
+ const nextChild = __children[currentIndex + 1];
1616
+ console.log(nextChild);
1617
+ return parent[nextChild];
1618
+ };
1619
+ var previousElement = function(el) {
1620
+ const element = el || this;
1621
+ const { key, parent } = element;
1622
+ const { __children } = parent.__ref;
1623
+ if (!__children)
1624
+ return;
1625
+ const currentIndex = __children.indexOf(key);
1626
+ return parent[__children[currentIndex - 1]];
1627
+ };
1628
+
1629
+ // src/element/iterate.js
1630
+ var applyEvents = (element) => {
1631
+ const { node, on } = element;
1632
+ for (const param in on) {
1633
+ if (param === "init" || param === "render" || param === "update")
1634
+ continue;
1635
+ const appliedFunction = element.on[param];
1636
+ if ((0, import_utils17.isFunction)(appliedFunction)) {
1637
+ node.addEventListener(
1638
+ param,
1639
+ (event) => appliedFunction(event, element, element.state),
1640
+ true
1641
+ );
1642
+ }
1643
+ }
1644
+ };
1645
+ var throughInitialExec = (element) => {
1646
+ const { __ref } = element;
1647
+ const { __exec } = __ref;
1648
+ for (const param in element) {
1649
+ const prop2 = element[param];
1650
+ if ((0, import_utils17.isFunction)(prop2) && !isMethod(param)) {
1651
+ __exec[param] = prop2;
1652
+ element[param] = prop2(element, element.state);
1653
+ }
1654
+ }
1655
+ };
1656
+ var throughUpdatedExec = (element, options) => {
1657
+ const { __ref } = element;
1658
+ const { __exec, __cached } = __ref;
1659
+ const changes = {};
1660
+ for (const param in __exec) {
1661
+ const prop2 = element[param];
1662
+ const newExec = __exec[param](element, element.state);
1663
+ if (prop2 && prop2.node && ((0, import_utils17.isString)(newExec) || (0, import_utils17.isNumber)(newExec))) {
1664
+ overwrite2(prop2, { text: newExec }, options);
1665
+ } else if (newExec !== prop2) {
1666
+ __cached[param] = changes[param] = prop2;
1667
+ element[param] = newExec;
1668
+ }
1669
+ }
1670
+ return changes;
1671
+ };
1672
+ var throughInitialDefine = (element) => {
1673
+ const { define, context, __ref } = element;
1674
+ const { __exec, __cached } = __ref;
1675
+ let obj2 = {};
1676
+ if ((0, import_utils17.isObject)(define))
1677
+ obj2 = { ...define };
1678
+ if (context && (0, import_utils17.isObject)(context.define))
1679
+ obj2 = { ...obj2, ...context.define };
1680
+ for (const param in obj2) {
1681
+ let prop2 = element[param];
1682
+ if ((0, import_utils17.isFunction)(prop2) && !isMethod(param)) {
1683
+ __exec[param] = prop2;
1684
+ element[param] = prop2 = (0, import_utils17.exec)(prop2, element);
1685
+ }
1686
+ __cached[param] = prop2;
1687
+ element[param] = obj2[param](prop2, element, element.state);
1688
+ }
1689
+ return element;
1690
+ };
1691
+ var throughUpdatedDefine = (element) => {
1692
+ const { context, define, __ref } = element;
1693
+ const { __exec, __cached } = __ref;
1694
+ const changes = {};
1695
+ let obj2 = {};
1696
+ if ((0, import_utils17.isObject)(define))
1697
+ obj2 = { ...define };
1698
+ if ((0, import_utils17.isObject)(context && context.define))
1699
+ obj2 = { ...obj2, ...context.define };
1700
+ for (const param in obj2) {
1701
+ const execParam = __exec[param];
1702
+ if (execParam)
1703
+ __cached[param] = execParam(element, element.state);
1704
+ const cached = (0, import_utils17.exec)(__cached[param], element);
1705
+ element[param] = obj2[param](cached, element, element.state);
1706
+ }
1707
+ return changes;
1708
+ };
1709
+
1710
+ // src/element/node.js
1711
+ var ENV2 = "development";
1712
+ var createNode2 = (element, options) => {
1713
+ let { node, tag, context, __ref } = element;
1714
+ let isNewNode;
1715
+ if (!node) {
1716
+ isNewNode = true;
1717
+ if (!__ref.__if)
1718
+ return element;
1719
+ if (tag === "shadow") {
1720
+ node = element.node = element.parent.node.attachShadow({ mode: "open" });
1721
+ } else
1722
+ node = element.node = cache_default(element);
1723
+ if (element.on && (0, import_utils19.isFunction)(element.on.attachNode)) {
1724
+ attachNode(element.on.attachNode, element, element.state);
1725
+ }
1726
+ }
1727
+ if (ENV2 === "test" || ENV2 === "development") {
1728
+ node.ref = element;
1729
+ if ((0, import_utils19.isFunction)(node.setAttribute))
1730
+ node.setAttribute("key", element.key);
1731
+ }
1732
+ if (!__ref.__if)
1733
+ return element;
1734
+ if (element.tag !== "string" || element.tag !== "fragment") {
1735
+ throughInitialDefine(element);
1736
+ throughInitialExec(element);
1737
+ if (isNewNode && (0, import_utils19.isObject)(element.on))
1738
+ applyEvents(element);
1739
+ for (const param in element) {
1740
+ const prop2 = element[param];
1741
+ if (isMethod(param) || (0, import_utils19.isObject)(registry_default[param]) || prop2 === void 0)
1742
+ continue;
1743
+ const DOMQLProperty = registry_default[param];
1744
+ const DOMQLPropertyFromContext = context && context.registry && context.registry[param];
1745
+ const isGlobalTransformer = DOMQLPropertyFromContext || DOMQLProperty;
1746
+ const hasDefine = element.define && element.define[param];
1747
+ const hasContextDefine = context && context.define && context.define[param];
1748
+ if (isGlobalTransformer && !hasContextDefine) {
1749
+ if ((0, import_utils19.isFunction)(isGlobalTransformer))
1750
+ isGlobalTransformer(prop2, element, node, options);
1751
+ } else if (element[param] && !hasDefine && !hasContextDefine) {
1752
+ create_default((0, import_utils19.exec)(prop2, element), element, param, options);
1753
+ }
1754
+ }
1755
+ }
1756
+ return element;
1757
+ };
1758
+ var node_default = createNode2;
1759
+
1760
+ // src/element/assign.js
1761
+ var appendNode = (node, parentNode) => {
1762
+ parentNode.appendChild(node);
1763
+ return node;
1764
+ };
1765
+ var assignNode = (element, parent, key) => {
1766
+ parent[key || element.key] = element;
1767
+ if (element.tag !== "shadow") {
1768
+ appendNode(element.node, parent.node);
1769
+ }
1770
+ return element;
1771
+ };
1772
+
1773
+ // src/element/extend.js
1774
+ var import_utils20 = __toESM(require_index_cjs());
1775
+ var ENV3 = "development";
1776
+ var applyExtend = (element, parent, options = {}) => {
1777
+ if ((0, import_utils20.isFunction)(element))
1778
+ element = (0, import_utils20.exec)(element, parent);
1779
+ let { extend, props, context, __ref } = element;
1780
+ const COMPONENTS = context && context.components || options.components;
1781
+ if ((0, import_utils20.isString)(extend))
1782
+ extend = COMPONENTS[extend];
1783
+ const extendStack = getExtendStack(extend);
1784
+ if (ENV3 !== "test" || ENV3 !== "development")
1785
+ delete element.extend;
1786
+ let childExtendStack = [];
1787
+ if (parent) {
1788
+ element.parent = parent;
1789
+ if (!options.ignoreChildExtend) {
1790
+ if (props && props.ignoreChildExtend)
1791
+ return;
1792
+ childExtendStack = getExtendStack(parent.childExtend);
1793
+ if (parent.childExtendRecursive) {
1794
+ const childExtendRecursiveStack = getExtendStack(parent.childExtendRecursive);
1795
+ childExtendStack = childExtendStack.concat(childExtendRecursiveStack);
1796
+ element.childExtendRecursive = parent.childExtendRecursive;
1797
+ }
1798
+ }
1799
+ }
1800
+ const extendLength = extendStack.length;
1801
+ const childExtendLength = childExtendStack.length;
1802
+ let stack = [];
1803
+ if (extendLength && childExtendLength) {
1804
+ stack = jointStacks(extendStack, childExtendStack);
1805
+ } else if (extendLength) {
1806
+ stack = extendStack;
1807
+ } else if (childExtendLength) {
1808
+ stack = childExtendStack;
1809
+ } else if (!options.extend)
1810
+ return element;
1811
+ if (options.extend) {
1812
+ const defaultOptionsExtend = getExtendStack(options.extend);
1813
+ stack = [].concat(stack, defaultOptionsExtend);
1814
+ }
1815
+ __ref.__extend = stack;
1816
+ let mergedExtend = cloneAndMergeArrayExtend(stack);
1817
+ const component = (0, import_utils20.exec)(element.component || mergedExtend.component, element);
1818
+ if (component && COMPONENTS && COMPONENTS[component]) {
1819
+ const componentExtend = cloneAndMergeArrayExtend(getExtendStack(COMPONENTS[component]));
1820
+ mergedExtend = deepMergeExtend(componentExtend, mergedExtend);
1821
+ }
1822
+ return deepMergeExtend(element, mergedExtend);
1823
+ };
1824
+
1825
+ // src/element/props.js
1826
+ var import_utils22 = __toESM(require_index_cjs());
1827
+ var createPropsStack = (element, parent) => {
1828
+ const { props, __ref } = element;
1829
+ const propsStack = __ref.propsStack = [];
1830
+ const isMatch = (0, import_utils22.isString)(props) && props.indexOf("match") > -1;
1831
+ const matchParent = parent.props && parent.props[element.key];
1832
+ const matchParentChild = parent.props && parent.props.childProps;
1833
+ const objectizeStringProperty = (propValue) => {
1834
+ if ((0, import_utils22.isString)(propValue))
1835
+ return { inheritedString: propValue };
1836
+ return propValue;
1837
+ };
1838
+ if (matchParent && props !== "match")
1839
+ propsStack.push(matchParent);
1840
+ if (matchParentChild)
1841
+ propsStack.push(matchParentChild);
1842
+ if ((0, import_utils22.isObject)(props)) {
1843
+ propsStack.push(props);
1844
+ }
1845
+ if (props === "inherit") {
1846
+ if (parent.props)
1847
+ propsStack.push(parent.props);
1848
+ } else if (isMatch) {
1849
+ const hasArg = props.split(" ");
1850
+ let matchParentValue;
1851
+ if (hasArg[1] && parent.props[hasArg[1]]) {
1852
+ const secondArgasParentMatchProp = parent.props[hasArg[1]];
1853
+ propsStack.push(
1854
+ objectizeStringProperty(secondArgasParentMatchProp)
1855
+ );
1856
+ } else if (matchParent) {
1857
+ propsStack.push(
1858
+ objectizeStringProperty(matchParent)
1859
+ );
1860
+ }
1861
+ propsStack.push(matchParentValue);
1862
+ } else if (props)
1863
+ propsStack.push(props);
1864
+ if ((0, import_utils22.isArray)(__ref.__extend)) {
1865
+ __ref.__extend.map((extend) => {
1866
+ if (extend.props)
1867
+ propsStack.push(extend.props);
1868
+ return extend.props;
1869
+ });
1870
+ }
1871
+ return propsStack;
1872
+ };
1873
+ var inheritProps = (element, parent) => {
1874
+ element.props = parent && parent.props || { update: update2, __element: element };
1875
+ };
1876
+ var syncProps = (props, element) => {
1877
+ element.props = {};
1878
+ const mergedProps = { update: update2, __element: element };
1879
+ props.forEach((v) => {
1880
+ if (v === "update" || v === "__element")
1881
+ return;
1882
+ const execProps = (0, import_utils22.exec)(v, element);
1883
+ if ((0, import_utils22.isObject)(execProps) && execProps.__element)
1884
+ return;
1885
+ element.props = deepMerge2(mergedProps, deepClone2(execProps));
1886
+ });
1887
+ element.props = mergedProps;
1888
+ return element.props;
1889
+ };
1890
+ var createProps = function(element, parent, cached) {
1891
+ const propsStack = cached || createPropsStack(element, parent);
1892
+ const { __ref } = element;
1893
+ if (propsStack.length) {
1894
+ __ref.__props = propsStack;
1895
+ syncProps(propsStack, element);
1896
+ element.props.update = update2;
1897
+ } else
1898
+ inheritProps(element, parent);
1899
+ return element;
1900
+ };
1901
+ var updateProps = (newProps, element, parent) => {
1902
+ const { __ref } = element;
1903
+ let propsStack = __ref.__props;
1904
+ if (newProps)
1905
+ propsStack = __ref.__props = [].concat(newProps, propsStack);
1906
+ if (propsStack)
1907
+ syncProps(propsStack, element);
1908
+ else
1909
+ inheritProps(element, parent);
1910
+ return element;
1911
+ };
1912
+ function update2(props, options) {
1913
+ const element = this.__element;
1914
+ element.update({ props }, options);
1915
+ }
1916
+ var props_default = createProps;
1917
+
1918
+ // src/element/update.js
1919
+ var import_utils24 = __toESM(require_index_cjs());
1920
+ var snapshot = {
1921
+ snapshotId: import_utils24.createSnapshotId
1922
+ };
1923
+ var UPDATE_DEFAULT_OPTIONS = {
1924
+ stackChanges: false,
1925
+ cleanExec: true,
1926
+ preventRecursive: false,
1927
+ currentSnapshot: false,
1928
+ calleeElement: false
1929
+ };
1930
+ var update3 = function(params = {}, options = UPDATE_DEFAULT_OPTIONS) {
1931
+ const element = this;
1932
+ const { parent, node, context } = element;
1933
+ let __ref = element.__ref;
1934
+ if (!__ref)
1935
+ __ref = element.__ref = {};
1936
+ const { currentSnapshot, calleeElement } = options;
1937
+ if (!calleeElement) {
1938
+ __ref.__currentSnapshot = snapshot.snapshotId();
1939
+ }
1940
+ const snapshotOnCallee = __ref.__currentSnapshot || calleeElement && calleeElement.__ref && calleeElement.__currentSnapshot;
1941
+ if (snapshotOnCallee && currentSnapshot < snapshotOnCallee) {
1942
+ }
1943
+ if ((0, import_utils24.isString)(params) || (0, import_utils24.isNumber)(params)) {
1944
+ params = { text: params };
1945
+ }
1946
+ if ((0, import_utils24.isFunction)(element.if)) {
1947
+ const ifPassed = element.if(element, element.state);
1948
+ const itWasFalse = !__ref.__if;
1949
+ if (ifPassed)
1950
+ __ref.__if = true;
1951
+ if (itWasFalse && ifPassed) {
1952
+ delete element.__hash;
1953
+ if (!__ref.__hasRootState)
1954
+ delete element.state;
1955
+ if (__ref.__state)
1956
+ element.state = __ref.__state;
1957
+ const created = create_default(element, element.parent, element.key);
1958
+ if (!options.preventUpdate && element.on && (0, import_utils24.isFunction)(element.on.update)) {
1959
+ on_exports.update(element.on.update, created, created.state);
1960
+ }
1961
+ return created;
1962
+ } else if (element.node && !ifPassed) {
1963
+ element.node.remove();
1964
+ delete __ref.__if;
1965
+ }
1966
+ }
1967
+ if (__ref.__state) {
1968
+ const keyInParentState = parent.state[__ref.__state];
1969
+ if (keyInParentState) {
1970
+ const newState = __ref.__stateType === "string" ? state_default(element, parent) : state_default(element, parent);
1971
+ const changes = (0, import_utils24.diff)(newState.parse(), element.state.parse());
1972
+ if (element.on && (0, import_utils24.isFunction)(element.on.initStateUpdated)) {
1973
+ const initReturns = on_exports.initStateUpdated(element.on.initStateUpdated, element, element.state, changes);
1974
+ if (initReturns === false)
1975
+ return;
1976
+ }
1977
+ element.state = newState;
1978
+ if (!options.preventUpdateListener && element.on && (0, import_utils24.isFunction)(element.on.stateUpdated)) {
1979
+ on_exports.stateUpdated(element.on.stateUpdated, element, element.state, changes);
1980
+ }
1981
+ }
1982
+ } else if (!__ref.__hasRootState)
1983
+ element.state = parent && parent.state || {};
1984
+ if (__ref.__if && !options.preventPropsUpdate)
1985
+ updateProps(params.props, element, parent);
1986
+ if (element.on && (0, import_utils24.isFunction)(element.on.initUpdate) && !options.ignoreInitUpdate) {
1987
+ const whatinitreturns = on_exports.initUpdate(element.on.initUpdate, element, element.state);
1988
+ if (whatinitreturns === false)
1989
+ return;
1990
+ }
1991
+ const overwriteChanges = overwrite2(element, params, UPDATE_DEFAULT_OPTIONS);
1992
+ const execChanges = throughUpdatedExec(element, UPDATE_DEFAULT_OPTIONS);
1993
+ const definedChanges = throughUpdatedDefine(element);
1994
+ if (options.stackChanges && element.__stackChanges) {
1995
+ const stackChanges = merge2(definedChanges, merge2(execChanges, overwriteChanges));
1996
+ element.__stackChanges.push(stackChanges);
1997
+ }
1998
+ if (!__ref.__if)
1999
+ return false;
2000
+ if (!node) {
2001
+ return;
2002
+ }
2003
+ for (const param in element) {
2004
+ const prop2 = element[param];
2005
+ if (options.preventDefineUpdate === true || options.preventDefineUpdate === param || options.preventContentUpdate && param === "content" || (options.preventStateUpdate && param) === "state" || isMethod(param) || (0, import_utils24.isObject)(registry_default[param]) || prop2 === void 0)
2006
+ continue;
2007
+ if (options.preventStateUpdate === "once")
2008
+ options.preventStateUpdate = false;
2009
+ const DOMQLProperty = registry_default[param];
2010
+ const DOMQLPropertyFromContext = context && context.registry && context.registry[param];
2011
+ const isGlobalTransformer = DOMQLPropertyFromContext || DOMQLProperty;
2012
+ const hasDefine = element.define && element.define[param];
2013
+ const hasContextDefine = context && context.define && context.define[param];
2014
+ if (isGlobalTransformer && !hasContextDefine) {
2015
+ if ((0, import_utils24.isFunction)(isGlobalTransformer))
2016
+ isGlobalTransformer(prop2, element, node, options);
2017
+ } else if (prop2 && (0, import_utils24.isObject)(prop2) && !hasDefine && !hasContextDefine) {
2018
+ if (!options.preventRecursive) {
2019
+ const childUpdateCall = () => update3.call(prop2, params[prop2], {
2020
+ ...options,
2021
+ currentSnapshot: snapshotOnCallee,
2022
+ calleeElement: element
2023
+ });
2024
+ if (element.props.lazyLoad || options.lazyLoad) {
2025
+ window2.requestAnimationFrame(() => childUpdateCall());
2026
+ } else
2027
+ childUpdateCall();
2028
+ }
2029
+ }
2030
+ }
2031
+ if (!options.preventUpdate && element.on && (0, import_utils24.isFunction)(element.on.update)) {
2032
+ on_exports.update(element.on.update, element, element.state);
2033
+ }
2034
+ };
2035
+ var update_default = update3;
2036
+
2037
+ // src/element/create.js
2038
+ var ENV4 = "development";
2039
+ var create = (element, parent, key, options = options_default.create || {}) => {
2040
+ if (options && !options_default.create)
2041
+ options_default.create = options;
2042
+ if (element === void 0) {
2043
+ if (ENV4 === "test" || ENV4 === "development") {
2044
+ console.warn(key, "element is undefined in", parent && parent.__ref && parent.__ref.path);
2045
+ }
2046
+ element = {};
2047
+ }
2048
+ if ((0, import_utils26.isString)(key) && key.slice(0, 2 === "__")) {
2049
+ if (ENV4 === "test" || ENV4 === "development") {
2050
+ console.warn(key, "seems like to be in __ref");
2051
+ }
2052
+ }
2053
+ if (element === null)
2054
+ return;
2055
+ if (element === true)
2056
+ element = { text: true };
2057
+ if (element.__hash) {
2058
+ element = { extend: element };
2059
+ }
2060
+ if (!parent)
2061
+ parent = root_default;
2062
+ if ((0, import_utils26.isNode)(parent))
2063
+ parent = root_default[`${key}_parent`] = { key: ":root", node: parent };
2064
+ if (checkIfPrimitive(element)) {
2065
+ element = applyValueAsText(element, parent, key);
2066
+ }
2067
+ const assignedKey = (element.key || key || (0, import_utils26.createID)()).toString();
2068
+ if (checkIfKeyIsComponent(assignedKey)) {
2069
+ element = applyKeyComponentAsExtend(element, parent, assignedKey);
2070
+ }
2071
+ if (checkIfMedia(assignedKey)) {
2072
+ element = applyMediaProps(element, parent, assignedKey);
2073
+ }
2074
+ if (element.__ref)
2075
+ element.__ref.origin = element;
2076
+ else
2077
+ element.__ref = { origin: element };
2078
+ const __ref = element.__ref;
2079
+ applyContext(element, parent, options);
2080
+ const { context } = element;
2081
+ if (context && context.components)
2082
+ applyComponentFromContext(element, parent, options);
2083
+ applyExtend(element, parent, options);
2084
+ element.key = assignedKey;
2085
+ if (options.onlyResolveExtends)
2086
+ return resolveExtends(element, parent, options);
2087
+ if (Object.keys(options).length) {
2088
+ registry_default.defaultOptions = options;
2089
+ if (options.ignoreChildExtend)
2090
+ delete options.ignoreChildExtend;
2091
+ }
2092
+ addCaching(element, parent);
2093
+ addMethods(element, parent);
2094
+ element.state = state_default(element, parent);
2095
+ checkIf(element, parent);
2096
+ if (element.node && __ref.__if) {
2097
+ return assignNode(element, parent, assignedKey);
2098
+ }
2099
+ if (__ref.__if)
2100
+ props_default(element, parent);
2101
+ if (element.on && (0, import_utils26.isFunction)(element.on.init)) {
2102
+ on_exports.init(element.on.init, element, element.state);
2103
+ }
2104
+ if (element.on && (0, import_utils26.isFunction)(element.on.beforeClassAssign)) {
2105
+ on_exports.beforeClassAssign(element.on.beforeClassAssign, element, element.state);
2106
+ }
2107
+ assignClass(element);
2108
+ node_default(element, options);
2109
+ if (!__ref.__if)
2110
+ return element;
2111
+ assignNode(element, parent, key);
2112
+ if (element.on && (0, import_utils26.isFunction)(element.on.render)) {
2113
+ on_exports.render(element.on.render, element, element.state);
2114
+ }
2115
+ if (parent.__ref && parent.__ref.__children)
2116
+ parent.__ref.__children.push(element.key);
2117
+ return element;
2118
+ };
2119
+ var checkIfPrimitive = (element) => {
2120
+ return (0, import_utils26.is)(element)("string", "number");
2121
+ };
2122
+ var applyValueAsText = (element, parent, key) => {
2123
+ const extendTag = element.extend && element.extend.tag;
2124
+ const childExtendTag = parent.childExtend && parent.childExtend.tag;
2125
+ const isKeyValidHTMLTag = TAGS.body.indexOf(key) > -1 && key;
2126
+ return {
2127
+ text: element,
2128
+ tag: extendTag || childExtendTag || isKeyValidHTMLTag || "string"
2129
+ };
2130
+ };
2131
+ var addMethods = (element, parent) => {
2132
+ element.set = set_default;
2133
+ element.update = update_default;
2134
+ element.remove = remove;
2135
+ element.removeContent = removeContentElement;
2136
+ element.setProps = setProps;
2137
+ element.lookup = lookup;
2138
+ element.spotByPath = spotByPath;
2139
+ element.parse = parse;
2140
+ element.parseDeep = parseDeep;
2141
+ element.keys = keys;
2142
+ element.nextElement = nextElement;
2143
+ element.previousElement = previousElement;
2144
+ if (ENV4 === "test" || ENV4 === "development") {
2145
+ element.log = log;
2146
+ }
2147
+ };
2148
+ var applyContext = (element, parent, options) => {
2149
+ if (options.context && !root_default.context && !element.context)
2150
+ root_default.context = options.context;
2151
+ if (!element.context)
2152
+ element.context = parent.context || options.context || root_default.context;
2153
+ };
2154
+ var checkIf = (element, parent) => {
2155
+ const { __ref } = element;
2156
+ if ((0, import_utils26.isFunction)(element.if)) {
2157
+ const ifPassed = element.if(element, element.state);
2158
+ if (!ifPassed) {
2159
+ const ifFragment = cache_default({ tag: "fragment" });
2160
+ __ref.__ifFragment = appendNode(ifFragment, parent.node);
2161
+ delete __ref.__if;
2162
+ } else
2163
+ __ref.__if = true;
2164
+ } else
2165
+ __ref.__if = true;
2166
+ };
2167
+ var addCaching = (element, parent) => {
2168
+ const { __ref } = element;
2169
+ let { __ref: __parentRef } = parent;
2170
+ if (!element.transform)
2171
+ element.transform = {};
2172
+ if (!__ref.__cached)
2173
+ __ref.__cached = {};
2174
+ if (!__ref.__exec)
2175
+ __ref.__exec = {};
2176
+ if (!__ref.__class)
2177
+ __ref.__class = {};
2178
+ if (!__ref.__classNames)
2179
+ __ref.__classNames = {};
2180
+ if (!__ref.__attr)
2181
+ __ref.__attr = {};
2182
+ if (!__ref.__changes)
2183
+ __ref.__changes = [];
2184
+ if (!__ref.__children)
2185
+ __ref.__children = [];
2186
+ const hasRoot = parent && parent.key === ":root";
2187
+ if (!__ref.__root)
2188
+ __ref.__root = hasRoot ? element : parent.__ref.__root;
2189
+ if (ENV4 === "test" || ENV4 === "development") {
2190
+ if (!__parentRef)
2191
+ __parentRef = parent.__ref = {};
2192
+ if (!__parentRef.__path)
2193
+ __parentRef.__path = [];
2194
+ __ref.__path = __parentRef.__path.concat(element.key);
2195
+ }
2196
+ };
2197
+ var resolveExtends = (element, parent, options) => {
2198
+ const { __ref } = element;
2199
+ element.tag = detectTag(element);
2200
+ if (!__ref.__exec)
2201
+ __ref.__exec = {};
2202
+ if (!__ref.__attr)
2203
+ __ref.__attr = {};
2204
+ element.props = props_default(element, parent);
2205
+ element.state = state_default(element, parent, { skip: true });
2206
+ throughInitialExec(element);
2207
+ for (const param in element) {
2208
+ const prop2 = element[param];
2209
+ if (isMethod(param) || (0, import_utils26.isObject)(registry_default[param]) || prop2 === void 0)
2210
+ continue;
2211
+ const hasDefined = element.define && element.define[param];
2212
+ const ourParam = registry_default[param];
2213
+ const hasOptionsDefine = options.define && options.define[param];
2214
+ if (ourParam && !hasOptionsDefine) {
2215
+ continue;
2216
+ } else if (element[param] && !hasDefined && !hasOptionsDefine) {
2217
+ create((0, import_utils26.exec)(prop2, element), element, param, options);
2218
+ }
2219
+ }
2220
+ delete element.parent;
2221
+ delete element.update;
2222
+ delete element.__element;
2223
+ delete element.__props;
2224
+ delete element.props.props;
2225
+ delete element.state.__element;
2226
+ delete element.state.__element;
2227
+ delete element.__hasRootState;
2228
+ delete element.__ref;
2229
+ return element;
2230
+ };
2231
+ var checkIfKeyIsComponent = (key) => {
2232
+ const isFirstKeyString = (0, import_utils26.isString)(key);
2233
+ if (!isFirstKeyString)
2234
+ return;
2235
+ const firstCharKey = key.slice(0, 1);
2236
+ return /^[A-Z]*$/.test(firstCharKey);
2237
+ };
2238
+ var extendizeByKey = (element, parent, key) => {
2239
+ const { extend, props, state, childExtend, childProps } = element;
2240
+ const hasComponentAttrs = extend || childExtend || props || state || element.on;
2241
+ const componentKey = key.split("_")[0];
2242
+ if (!hasComponentAttrs || childProps) {
2243
+ return {
2244
+ extend: componentKey || key,
2245
+ props: { ...element }
2246
+ };
2247
+ } else if (!extend || extend === true) {
2248
+ return {
2249
+ ...element,
2250
+ extend: componentKey || key
2251
+ };
2252
+ }
2253
+ };
2254
+ var applyKeyComponentAsExtend = (element, parent, key) => {
2255
+ return extendizeByKey(element, parent, key) || element;
2256
+ };
2257
+ var applyComponentFromContext = (element, parent, options) => {
2258
+ const { context } = element;
2259
+ const { components } = context;
2260
+ const { extend } = element;
2261
+ const execExtend = (0, import_utils26.exec)(extend, element);
2262
+ if ((0, import_utils26.isString)(execExtend)) {
2263
+ if (components[execExtend])
2264
+ element.extend = components[execExtend];
2265
+ else {
2266
+ if ((ENV4 === "test" || ENV4 === "development") && options.verbose) {
2267
+ console.warn(execExtend, "is not in library", components, element);
2268
+ console.warn("replacing with ", {});
2269
+ }
2270
+ element.extend = {};
2271
+ }
2272
+ }
2273
+ };
2274
+ var checkIfMedia = (key) => key.slice(0, 1) === "@";
2275
+ var applyMediaProps = (element, parent, key) => {
2276
+ const { props } = element;
2277
+ if (props) {
2278
+ props.display = "none";
2279
+ if (props[key])
2280
+ props[key].display = props.display;
2281
+ else
2282
+ props[key] = { display: props.display || "block" };
2283
+ return element;
2284
+ } else {
2285
+ return {
2286
+ ...element,
2287
+ props: {
2288
+ display: "none",
2289
+ [key]: { display: "block" }
2290
+ }
2291
+ };
2292
+ }
2293
+ };
2294
+ var create_default = create;
2295
+
2296
+ // src/element/define.js
2297
+ var define_default = (params, options = {}) => {
2298
+ const { overwrite: overwrite3 } = options;
2299
+ for (const param in params) {
2300
+ if (registry_default[param] && !overwrite3) {
2301
+ report("OverwriteToBuiltin", param);
2302
+ } else
2303
+ registry_default[param] = params[param];
2304
+ }
2305
+ };
2306
+
2307
+ // src/element/parse.js
2308
+ var parse2 = (element) => {
2309
+ const virtualTree = {
2310
+ node: document.createElement("div")
2311
+ };
2312
+ if (element && element.node)
2313
+ assignNode(element, virtualTree);
2314
+ else
2315
+ create_default(element, virtualTree);
2316
+ return virtualTree.node.innerHTML;
2317
+ };
2318
+ var parse_default = parse2;
2319
+
2320
+ // src/index.js
2321
+ var ENV5 = "development";
2322
+ if (ENV5 === "test" || ENV5 === "development")
2323
+ window2.tree = tree_default;
2324
+ var src_default = {
2325
+ create: create_default,
2326
+ parse: parse_default,
2327
+ set: set_default,
2328
+ define: define_default,
2329
+ tree: tree_default
2330
+ };