@symbo.ls/scratch 2.11.429 → 2.11.438

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.
@@ -166,6 +166,7 @@ var require_node = __commonJS({
166
166
  var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
167
167
  var node_exports = {};
168
168
  __export2(node_exports, {
169
+ isDOMNode: () => isDOMNode,
169
170
  isHtmlElement: () => isHtmlElement,
170
171
  isNode: () => isNode
171
172
  });
@@ -177,6 +178,9 @@ var require_node = __commonJS({
177
178
  var isHtmlElement = (obj) => {
178
179
  return (typeof HTMLElement === "object" ? obj instanceof import_globals.window.HTMLElement : obj && typeof obj === "object" && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === "string") || false;
179
180
  };
181
+ var isDOMNode = (obj) => {
182
+ return typeof import_globals.window !== "undefined" && (obj instanceof import_globals.window.Node || obj instanceof import_globals.window.Window || obj === import_globals.window || obj === document);
183
+ };
180
184
  }
181
185
  });
182
186
 
@@ -296,7 +300,6 @@ var require_array = __commonJS({
296
300
  addItemAfterEveryElement: () => addItemAfterEveryElement,
297
301
  arrayContainsOtherArray: () => arrayContainsOtherArray,
298
302
  arraysEqual: () => arraysEqual,
299
- createNestedObject: () => createNestedObject,
300
303
  cutArrayAfterValue: () => cutArrayAfterValue,
301
304
  cutArrayBeforeValue: () => cutArrayBeforeValue,
302
305
  getFrequencyInArray: () => getFrequencyInArray,
@@ -363,22 +366,6 @@ var require_array = __commonJS({
363
366
  }
364
367
  return arr;
365
368
  };
366
- var createNestedObject = (arr, lastValue) => {
367
- const nestedObject = {};
368
- if (arr.length === 0) {
369
- return lastValue;
370
- }
371
- arr.reduce((obj, value, index) => {
372
- if (!obj[value]) {
373
- obj[value] = {};
374
- }
375
- if (index === arr.length - 1 && lastValue) {
376
- obj[value] = lastValue;
377
- }
378
- return obj[value];
379
- }, nestedObject);
380
- return nestedObject;
381
- };
382
369
  var removeValueFromArray = (arr, value) => {
383
370
  const index = arr.indexOf(value);
384
371
  if (index > -1) {
@@ -599,8 +586,8 @@ var require_object = __commonJS({
599
586
  var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
600
587
  var object_exports = {};
601
588
  __export2(object_exports, {
602
- checkIfKeyIsComponent: () => checkIfKeyIsComponent,
603
589
  clone: () => clone,
590
+ createNestedObject: () => createNestedObject,
604
591
  createObjectWithoutPrototype: () => createObjectWithoutPrototype,
605
592
  deepClone: () => deepClone2,
606
593
  deepCloneExclude: () => deepCloneExclude,
@@ -611,13 +598,12 @@ var require_object = __commonJS({
611
598
  deepMerge: () => deepMerge2,
612
599
  deepStringify: () => deepStringify,
613
600
  detachFunctionsFromObject: () => detachFunctionsFromObject,
601
+ detectInfiniteLoop: () => detectInfiniteLoop,
614
602
  diff: () => diff,
615
603
  diffArrays: () => diffArrays,
616
604
  diffObjects: () => diffObjects,
617
605
  exec: () => exec,
618
606
  flattenRecursive: () => flattenRecursive,
619
- getChildrenComponentsByKey: () => getChildrenComponentsByKey,
620
- getExtendsInElement: () => getExtendsInElement,
621
607
  hasOwnProperty: () => hasOwnProperty,
622
608
  isEmpty: () => isEmpty,
623
609
  isEmptyObject: () => isEmptyObject,
@@ -632,6 +618,7 @@ var require_object = __commonJS({
632
618
  overwriteDeep: () => overwriteDeep,
633
619
  overwriteShallow: () => overwriteShallow,
634
620
  removeFromObject: () => removeFromObject,
621
+ removeNestedKeyByPath: () => removeNestedKeyByPath,
635
622
  stringToObject: () => stringToObject
636
623
  });
637
624
  module2.exports = __toCommonJS2(object_exports);
@@ -639,6 +626,8 @@ var require_object = __commonJS({
639
626
  var import_types = require_types();
640
627
  var import_array = require_array();
641
628
  var import_string = require_string();
629
+ var import_node = require_node();
630
+ var ENV = "development";
642
631
  var exec = (param, element, state, context) => {
643
632
  if ((0, import_types.isFunction)(param)) {
644
633
  return param(
@@ -717,27 +706,28 @@ var require_object = __commonJS({
717
706
  var mergeArrayExclude = (arr, excl = []) => {
718
707
  return arr.reduce((acc, curr) => deepMerge2(acc, deepCloneExclude(curr, excl)), {});
719
708
  };
720
- var deepClone2 = (obj, excludeFrom = [], cleanUndefined = false) => {
721
- const o = (0, import_types.isArray)(obj) ? [] : {};
722
- for (const prop in obj) {
723
- if (!Object.prototype.hasOwnProperty.call(obj, prop))
724
- continue;
725
- if (prop === "__proto__")
726
- continue;
727
- if (excludeFrom.includes(prop) || prop.startsWith("__"))
728
- continue;
729
- let objProp = obj[prop];
730
- if (cleanUndefined && (0, import_types.isUndefined)(objProp))
731
- continue;
732
- if (prop === "extend" && (0, import_types.isArray)(objProp)) {
733
- objProp = (0, import_array.mergeArray)(objProp);
709
+ var deepClone2 = (obj, exclude = [], cleanUndefined = false, visited = /* @__PURE__ */ new WeakMap()) => {
710
+ if (!(0, import_types.isObjectLike)(obj) || (0, import_node.isDOMNode)(obj))
711
+ return obj;
712
+ if (visited.has(obj))
713
+ return visited.get(obj);
714
+ const clone2 = (0, import_types.isArray)(obj) ? [] : {};
715
+ visited.set(obj, clone2);
716
+ for (const key in obj) {
717
+ if (Object.prototype.hasOwnProperty.call(obj, key) && !exclude.includes(key)) {
718
+ const value = obj[key];
719
+ if ((0, import_node.isDOMNode)(value)) {
720
+ clone2[key] = value;
721
+ } else if (key === "extend" && (0, import_types.isArray)(value)) {
722
+ clone2[key] = (0, import_array.mergeArray)(value, exclude);
723
+ } else if ((0, import_types.isObjectLike)(value)) {
724
+ clone2[key] = deepClone2(value, exclude, cleanUndefined, visited);
725
+ } else {
726
+ clone2[key] = value;
727
+ }
734
728
  }
735
- if ((0, import_types.isObjectLike)(objProp)) {
736
- o[prop] = deepClone2(objProp, excludeFrom, cleanUndefined);
737
- } else
738
- o[prop] = objProp;
739
729
  }
740
- return o;
730
+ return clone2;
741
731
  };
742
732
  var deepCloneWithExtend = (obj, excludeFrom = ["node"], options = {}) => {
743
733
  const o = options.window ? (0, import_types.isArray)(obj) ? new options.window.Array([]) : new options.window.Object({}) : (0, import_types.isArray)(obj) ? [] : {};
@@ -749,6 +739,8 @@ var require_object = __commonJS({
749
739
  continue;
750
740
  if ((0, import_types.isObjectLike)(objProp)) {
751
741
  o[prop] = deepCloneWithExtend(objProp, excludeFrom, options);
742
+ } else if ((0, import_types.isFunction)(objProp) && options.window) {
743
+ o[prop] = (options.window || import_globals.window).eval("(" + objProp.toString() + ")");
752
744
  } else
753
745
  o[prop] = objProp;
754
746
  }
@@ -992,16 +984,23 @@ var require_object = __commonJS({
992
984
  }
993
985
  return obj;
994
986
  };
995
- var overwriteDeep = (obj, params, excludeFrom = []) => {
987
+ var overwriteDeep = (obj, params, excludeFrom = [], visited = /* @__PURE__ */ new WeakMap()) => {
988
+ if (!(0, import_types.isObjectLike)(obj) || !(0, import_types.isObjectLike)(params) || (0, import_node.isDOMNode)(obj) || (0, import_node.isDOMNode)(params)) {
989
+ return params;
990
+ }
991
+ if (visited.has(obj)) {
992
+ return visited.get(obj);
993
+ }
994
+ visited.set(obj, obj);
996
995
  for (const e in params) {
997
- if (e === "__ref")
998
- continue;
999
- if (excludeFrom.includes(e) || e.startsWith("__"))
996
+ if (e === "__ref" || excludeFrom.includes(e) || e.startsWith("__"))
1000
997
  continue;
1001
998
  const objProp = obj[e];
1002
999
  const paramsProp = params[e];
1003
- if ((0, import_types.isObjectLike)(objProp) && (0, import_types.isObjectLike)(paramsProp)) {
1004
- overwriteDeep(objProp, paramsProp);
1000
+ if ((0, import_node.isDOMNode)(paramsProp)) {
1001
+ obj[e] = paramsProp;
1002
+ } else if ((0, import_types.isObjectLike)(objProp) && (0, import_types.isObjectLike)(paramsProp)) {
1003
+ obj[e] = overwriteDeep(objProp, paramsProp, excludeFrom, visited);
1005
1004
  } else if (paramsProp !== void 0) {
1006
1005
  obj[e] = paramsProp;
1007
1006
  }
@@ -1048,30 +1047,40 @@ var require_object = __commonJS({
1048
1047
  }
1049
1048
  return true;
1050
1049
  };
1051
- var deepContains = (obj1, obj2) => {
1052
- if (typeof obj1 !== typeof obj2) {
1050
+ var deepContains = (obj1, obj2, ignoredKeys = ["node", "__ref"]) => {
1051
+ if (obj1 === obj2)
1052
+ return true;
1053
+ if (!(0, import_types.isObjectLike)(obj1) || !(0, import_types.isObjectLike)(obj2))
1053
1054
  return false;
1054
- }
1055
- if ((0, import_types.isObjectLike)(obj1)) {
1056
- if (Array.isArray(obj1) && Array.isArray(obj2)) {
1057
- if (obj1.length !== obj2.length) {
1055
+ if ((0, import_node.isDOMNode)(obj1) || (0, import_node.isDOMNode)(obj2))
1056
+ return obj1 === obj2;
1057
+ const stack = [[obj1, obj2]];
1058
+ const visited = /* @__PURE__ */ new WeakSet();
1059
+ while (stack.length > 0) {
1060
+ const [current1, current2] = stack.pop();
1061
+ if (visited.has(current1))
1062
+ continue;
1063
+ visited.add(current1);
1064
+ const keys1 = Object.keys(current1).filter((key) => !ignoredKeys.includes(key));
1065
+ const keys2 = Object.keys(current2).filter((key) => !ignoredKeys.includes(key));
1066
+ if (keys1.length !== keys2.length)
1067
+ return false;
1068
+ for (const key of keys1) {
1069
+ if (!Object.prototype.hasOwnProperty.call(current2, key))
1058
1070
  return false;
1059
- }
1060
- for (let i = 0; i < obj1.length; i++) {
1061
- if (!deepContains(obj1[i], obj2[i])) {
1062
- return false;
1063
- }
1064
- }
1065
- } else if ((0, import_types.isObjectLike)(obj1) && obj2 !== null) {
1066
- for (const key in obj1) {
1067
- const hasOwnProperty2 = Object.prototype.hasOwnProperty.call(obj2, key);
1068
- if (!hasOwnProperty2 || !deepContains(obj1[key], obj2[key])) {
1071
+ const value1 = current1[key];
1072
+ const value2 = current2[key];
1073
+ if ((0, import_node.isDOMNode)(value1) || (0, import_node.isDOMNode)(value2)) {
1074
+ if (value1 !== value2)
1069
1075
  return false;
1076
+ } else if ((0, import_types.isObjectLike)(value1) && (0, import_types.isObjectLike)(value2)) {
1077
+ if (value1 !== value2) {
1078
+ stack.push([value1, value2]);
1070
1079
  }
1080
+ } else if (value1 !== value2) {
1081
+ return false;
1071
1082
  }
1072
1083
  }
1073
- } else {
1074
- return obj2 === obj1;
1075
1084
  }
1076
1085
  return true;
1077
1086
  };
@@ -1099,53 +1108,60 @@ var require_object = __commonJS({
1099
1108
  }
1100
1109
  return newObj;
1101
1110
  };
1102
- var checkIfKeyIsComponent = (key) => {
1103
- const isFirstKeyString = (0, import_types.isString)(key);
1104
- if (!isFirstKeyString)
1105
- return;
1106
- const firstCharKey = key.slice(0, 1);
1107
- return /^[A-Z]*$/.test(firstCharKey);
1111
+ var createNestedObject = (arr, lastValue) => {
1112
+ const nestedObject = {};
1113
+ if (arr.length === 0) {
1114
+ return lastValue;
1115
+ }
1116
+ arr.reduce((obj, value, index) => {
1117
+ if (!obj[value]) {
1118
+ obj[value] = {};
1119
+ }
1120
+ if (index === arr.length - 1 && lastValue) {
1121
+ obj[value] = lastValue;
1122
+ }
1123
+ return obj[value];
1124
+ }, nestedObject);
1125
+ return nestedObject;
1108
1126
  };
1109
- var getChildrenComponentsByKey = (key, el) => {
1110
- if (key === el.key || el.__ref.__componentKey === key) {
1111
- return el;
1127
+ var removeNestedKeyByPath = (obj, path) => {
1128
+ if (!Array.isArray(path)) {
1129
+ throw new Error("Path must be an array.");
1112
1130
  }
1113
- if (el.extend) {
1114
- const foundString = (0, import_types.isString)(el.extend) && el.extend === key;
1115
- const foundInArray = (0, import_types.isArray)(el.extend) && el.extend.filter((v) => v === key).length;
1116
- if (foundString || foundInArray)
1117
- return el;
1131
+ let current = obj;
1132
+ for (let i = 0; i < path.length - 1; i++) {
1133
+ if (current[path[i]] === void 0) {
1134
+ return;
1135
+ }
1136
+ current = current[path[i]];
1118
1137
  }
1119
- if (el.parent && el.parent.childExtend) {
1120
- const foundString = (0, import_types.isString)(el.parent.childExtend) && el.parent.childExtend === key;
1121
- const foundInArray = (0, import_types.isArray)(el.parent.childExtend) && el.parent.childExtend.filter((v) => v === key).length;
1122
- if (foundString || foundInArray)
1123
- return el;
1138
+ const lastKey = path[path.length - 1];
1139
+ if (current && Object.hasOwnProperty.call(current, lastKey)) {
1140
+ delete current[lastKey];
1124
1141
  }
1125
1142
  };
1126
- var getExtendsInElement = (obj) => {
1127
- let result = [];
1128
- function traverse(o) {
1129
- for (const key in o) {
1130
- if (Object.hasOwnProperty.call(o, key)) {
1131
- if (checkIfKeyIsComponent(key)) {
1132
- result.push(key);
1133
- }
1134
- if (key === "extend") {
1135
- if (typeof o[key] === "string") {
1136
- result.push(o[key]);
1137
- } else if (Array.isArray(o[key])) {
1138
- result = result.concat(o[key]);
1139
- }
1140
- }
1141
- if (typeof o[key] === "object" && o[key] !== null) {
1142
- traverse(o[key]);
1143
+ var detectInfiniteLoop = (arr) => {
1144
+ const maxRepeats = 10;
1145
+ let pattern = [];
1146
+ let repeatCount = 0;
1147
+ for (let i = 0; i < arr.length; i++) {
1148
+ if (pattern.length < 2) {
1149
+ pattern.push(arr[i]);
1150
+ } else {
1151
+ if (arr[i] === pattern[i % 2]) {
1152
+ repeatCount++;
1153
+ } else {
1154
+ pattern = [arr[i - 1], arr[i]];
1155
+ repeatCount = 1;
1156
+ }
1157
+ if (repeatCount >= maxRepeats * 2) {
1158
+ if (ENV === "test" || ENV === "development") {
1159
+ console.warn("Warning: Potential infinite loop detected due to repeated sequence:", pattern);
1143
1160
  }
1161
+ return true;
1144
1162
  }
1145
1163
  }
1146
1164
  }
1147
- traverse(obj);
1148
- return result;
1149
1165
  };
1150
1166
  }
1151
1167
  });
@@ -1173,6 +1189,7 @@ var require_function = __commonJS({
1173
1189
  var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
1174
1190
  var function_exports = {};
1175
1191
  __export2(function_exports, {
1192
+ cloneFunction: () => cloneFunction,
1176
1193
  debounce: () => debounce,
1177
1194
  debounceOnContext: () => debounceOnContext,
1178
1195
  isStringFunction: () => isStringFunction,
@@ -1222,6 +1239,17 @@ var require_function = __commonJS({
1222
1239
  const functionRegex = /^((function\s*\([^)]*\)\s*\{[^}]*\})|(\([^)]*\)\s*=>))/;
1223
1240
  return functionRegex.test(inputString);
1224
1241
  };
1242
+ function cloneFunction(fn, win = window) {
1243
+ const temp = function() {
1244
+ return fn.apply(win, arguments);
1245
+ };
1246
+ for (const key in fn) {
1247
+ if (Object.hasOwnProperty.call(fn, key)) {
1248
+ temp[key] = fn[key];
1249
+ }
1250
+ }
1251
+ return temp;
1252
+ }
1225
1253
  }
1226
1254
  });
1227
1255
 
@@ -1491,6 +1519,172 @@ var require_tags = __commonJS({
1491
1519
  }
1492
1520
  });
1493
1521
 
1522
+ // ../../../domql/packages/utils/dist/cjs/component.js
1523
+ var require_component = __commonJS({
1524
+ "../../../domql/packages/utils/dist/cjs/component.js"(exports, module2) {
1525
+ "use strict";
1526
+ var __defProp2 = Object.defineProperty;
1527
+ var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
1528
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
1529
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
1530
+ var __export2 = (target, all) => {
1531
+ for (var name in all)
1532
+ __defProp2(target, name, { get: all[name], enumerable: true });
1533
+ };
1534
+ var __copyProps2 = (to, from, except, desc) => {
1535
+ if (from && typeof from === "object" || typeof from === "function") {
1536
+ for (let key of __getOwnPropNames2(from))
1537
+ if (!__hasOwnProp2.call(to, key) && key !== except)
1538
+ __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
1539
+ }
1540
+ return to;
1541
+ };
1542
+ var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
1543
+ var component_exports = {};
1544
+ __export2(component_exports, {
1545
+ addAdditionalExtend: () => addAdditionalExtend,
1546
+ applyComponentFromContext: () => applyComponentFromContext,
1547
+ applyKeyComponentAsExtend: () => applyKeyComponentAsExtend,
1548
+ checkIfKeyIsComponent: () => checkIfKeyIsComponent,
1549
+ checkIfKeyIsProperty: () => checkIfKeyIsProperty,
1550
+ extendizeByKey: () => extendizeByKey,
1551
+ getChildrenComponentsByKey: () => getChildrenComponentsByKey,
1552
+ getExtendsInElement: () => getExtendsInElement,
1553
+ hasVariantProp: () => hasVariantProp,
1554
+ isVariant: () => isVariant
1555
+ });
1556
+ module2.exports = __toCommonJS2(component_exports);
1557
+ var import__ = require_cjs();
1558
+ var ENV = "development";
1559
+ var checkIfKeyIsComponent = (key) => {
1560
+ const isFirstKeyString = (0, import__.isString)(key);
1561
+ if (!isFirstKeyString)
1562
+ return;
1563
+ const firstCharKey = key.slice(0, 1);
1564
+ return /^[A-Z]*$/.test(firstCharKey);
1565
+ };
1566
+ var checkIfKeyIsProperty = (key) => {
1567
+ const isFirstKeyString = (0, import__.isString)(key);
1568
+ if (!isFirstKeyString)
1569
+ return;
1570
+ const firstCharKey = key.slice(0, 1);
1571
+ return /^[a-z]*$/.test(firstCharKey);
1572
+ };
1573
+ var addAdditionalExtend = (newExtend, element) => {
1574
+ const { extend: elementExtend } = element;
1575
+ const originalArray = (0, import__.isArray)(elementExtend) ? elementExtend : [elementExtend];
1576
+ const receivedArray = (0, import__.isArray)(newExtend) ? newExtend : [newExtend];
1577
+ const extend = (0, import__.joinArrays)(receivedArray, originalArray);
1578
+ return { ...element, extend };
1579
+ };
1580
+ var extendizeByKey = (element, parent, key) => {
1581
+ const { context } = parent;
1582
+ const { tag, extend, props, attr, state, childExtend, childProps, on, if: condition, data } = element;
1583
+ const hasComponentAttrs = extend || childExtend || props || state || on || condition || attr || data;
1584
+ const extendFromKey = key.includes("+") ? key.split("+") : key.includes("_") ? [key.split("_")[0]] : key.includes(".") && !checkIfKeyIsComponent(key.split(".")[1]) ? [key.split(".")[0]] : [key];
1585
+ const isExtendKeyComponent = context && context.components[extendFromKey];
1586
+ if (element === isExtendKeyComponent)
1587
+ return element;
1588
+ else if (!hasComponentAttrs || childProps) {
1589
+ return {
1590
+ extend: extendFromKey,
1591
+ tag,
1592
+ props: { ...element }
1593
+ };
1594
+ } else if (!extend || extend === true) {
1595
+ return {
1596
+ ...element,
1597
+ tag,
1598
+ extend: extendFromKey
1599
+ };
1600
+ } else if (extend) {
1601
+ return addAdditionalExtend(extendFromKey, element);
1602
+ } else if ((0, import__.isFunction)(element)) {
1603
+ return {
1604
+ extend: extendFromKey,
1605
+ tag,
1606
+ props: { ...(0, import__.exec)(element, parent) }
1607
+ };
1608
+ }
1609
+ };
1610
+ var applyKeyComponentAsExtend = (element, parent, key) => {
1611
+ return extendizeByKey(element, parent, key) || element;
1612
+ };
1613
+ var applyComponentFromContext = (element, parent, options) => {
1614
+ const { context } = element;
1615
+ if (!context || !context.components)
1616
+ return;
1617
+ const { components } = context;
1618
+ const { extend } = element;
1619
+ const execExtend = (0, import__.exec)(extend, element);
1620
+ if ((0, import__.isString)(execExtend)) {
1621
+ const componentExists = components[execExtend] || components["smbls." + execExtend];
1622
+ if (componentExists)
1623
+ element.extend = componentExists;
1624
+ else {
1625
+ if ((ENV === "test" || ENV === "development") && options.verbose) {
1626
+ console.warn(execExtend, "is not in library", components, element);
1627
+ console.warn("replacing with ", {});
1628
+ }
1629
+ element.extend = {};
1630
+ }
1631
+ }
1632
+ };
1633
+ var isVariant = (param) => {
1634
+ if (!(0, import__.isString)(param))
1635
+ return;
1636
+ const firstCharKey = param.slice(0, 1);
1637
+ return firstCharKey === ".";
1638
+ };
1639
+ var hasVariantProp = (element) => {
1640
+ const { props } = element;
1641
+ if ((0, import__.isObject)(props) && (0, import__.isString)(props.variant))
1642
+ return true;
1643
+ };
1644
+ var getChildrenComponentsByKey = (key, el) => {
1645
+ if (key === el.key || el.__ref.__componentKey === key) {
1646
+ return el;
1647
+ }
1648
+ if (el.extend) {
1649
+ const foundString = (0, import__.isString)(el.extend) && el.extend === key;
1650
+ const foundInArray = (0, import__.isArray)(el.extend) && el.extend.filter((v) => v === key).length;
1651
+ if (foundString || foundInArray)
1652
+ return el;
1653
+ }
1654
+ if (el.parent && el.parent.childExtend) {
1655
+ const foundString = (0, import__.isString)(el.parent.childExtend) && el.parent.childExtend === key;
1656
+ const foundInArray = (0, import__.isArray)(el.parent.childExtend) && el.parent.childExtend.filter((v) => v === key).length;
1657
+ if (foundString || foundInArray)
1658
+ return el;
1659
+ }
1660
+ };
1661
+ var getExtendsInElement = (obj) => {
1662
+ let result = [];
1663
+ function traverse(o) {
1664
+ for (const key in o) {
1665
+ if (Object.hasOwnProperty.call(o, key)) {
1666
+ if (checkIfKeyIsComponent(key)) {
1667
+ result.push(key);
1668
+ }
1669
+ if (key === "extend") {
1670
+ if (typeof o[key] === "string") {
1671
+ result.push(o[key]);
1672
+ } else if (Array.isArray(o[key])) {
1673
+ result = result.concat(o[key]);
1674
+ }
1675
+ }
1676
+ if (typeof o[key] === "object" && o[key] !== null) {
1677
+ traverse(o[key]);
1678
+ }
1679
+ }
1680
+ }
1681
+ }
1682
+ traverse(obj);
1683
+ return result;
1684
+ };
1685
+ }
1686
+ });
1687
+
1494
1688
  // ../../../domql/packages/utils/dist/cjs/index.js
1495
1689
  var require_cjs = __commonJS({
1496
1690
  "../../../domql/packages/utils/dist/cjs/index.js"(exports, module2) {
@@ -1523,6 +1717,7 @@ var require_cjs = __commonJS({
1523
1717
  __reExport(utils_exports, require_globals(), module2.exports);
1524
1718
  __reExport(utils_exports, require_cookie(), module2.exports);
1525
1719
  __reExport(utils_exports, require_tags(), module2.exports);
1720
+ __reExport(utils_exports, require_component(), module2.exports);
1526
1721
  }
1527
1722
  });
1528
1723
 
@@ -1689,6 +1884,7 @@ var require_cjs2 = __commonJS({
1689
1884
  var __toCommonJS22 = (mod) => __copyProps22(__defProp22({}, "__esModule", { value: true }), mod);
1690
1885
  var node_exports = {};
1691
1886
  __export22(node_exports, {
1887
+ isDOMNode: () => isDOMNode,
1692
1888
  isHtmlElement: () => isHtmlElement,
1693
1889
  isNode: () => isNode
1694
1890
  });
@@ -1700,6 +1896,9 @@ var require_cjs2 = __commonJS({
1700
1896
  var isHtmlElement = (obj) => {
1701
1897
  return (typeof HTMLElement === "object" ? obj instanceof import_globals.window.HTMLElement : obj && typeof obj === "object" && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === "string") || false;
1702
1898
  };
1899
+ var isDOMNode = (obj) => {
1900
+ return typeof import_globals.window !== "undefined" && (obj instanceof import_globals.window.Node || obj instanceof import_globals.window.Window || obj === import_globals.window || obj === document);
1901
+ };
1703
1902
  }
1704
1903
  });
1705
1904
  var require_types2 = __commonJS2({
@@ -1815,7 +2014,6 @@ var require_cjs2 = __commonJS({
1815
2014
  addItemAfterEveryElement: () => addItemAfterEveryElement,
1816
2015
  arrayContainsOtherArray: () => arrayContainsOtherArray,
1817
2016
  arraysEqual: () => arraysEqual,
1818
- createNestedObject: () => createNestedObject,
1819
2017
  cutArrayAfterValue: () => cutArrayAfterValue,
1820
2018
  cutArrayBeforeValue: () => cutArrayBeforeValue,
1821
2019
  getFrequencyInArray: () => getFrequencyInArray,
@@ -1861,10 +2059,10 @@ var require_cjs2 = __commonJS({
1861
2059
  return [].concat(...arrays);
1862
2060
  };
1863
2061
  var mergeArray = (arr, excludeFrom = []) => {
1864
- return arr.reduce((a, c) => (0, import_object.deepMerge)(a, (0, import_object.deepClone)(c, excludeFrom), excludeFrom), {});
2062
+ return arr.reduce((a, c) => (0, import_object.deepMerge)(a, (0, import_object.deepCloneWithExtend)(c, excludeFrom), excludeFrom), {});
1865
2063
  };
1866
2064
  var mergeAndCloneIfArray = (obj) => {
1867
- return (0, import_types.isArray)(obj) ? mergeArray(obj) : (0, import_object.deepClone)(obj);
2065
+ return (0, import_types.isArray)(obj) ? mergeArray(obj) : (0, import_object.deepCloneWithExtend)(obj);
1868
2066
  };
1869
2067
  var cutArrayBeforeValue = (arr, value) => {
1870
2068
  const index = arr.indexOf(value);
@@ -1882,22 +2080,6 @@ var require_cjs2 = __commonJS({
1882
2080
  }
1883
2081
  return arr;
1884
2082
  };
1885
- var createNestedObject = (arr, lastValue) => {
1886
- const nestedObject = {};
1887
- if (arr.length === 0) {
1888
- return lastValue;
1889
- }
1890
- arr.reduce((obj, value, index) => {
1891
- if (!obj[value]) {
1892
- obj[value] = {};
1893
- }
1894
- if (index === arr.length - 1 && lastValue) {
1895
- obj[value] = lastValue;
1896
- }
1897
- return obj[value];
1898
- }, nestedObject);
1899
- return nestedObject;
1900
- };
1901
2083
  var removeValueFromArray = (arr, value) => {
1902
2084
  const index = arr.indexOf(value);
1903
2085
  if (index > -1) {
@@ -1968,6 +2150,8 @@ var require_cjs2 = __commonJS({
1968
2150
  __export22(string_exports, {
1969
2151
  customDecodeURIComponent: () => customDecodeURIComponent,
1970
2152
  customEncodeURIComponent: () => customEncodeURIComponent,
2153
+ decodeNewlines: () => decodeNewlines,
2154
+ encodeNewlines: () => encodeNewlines,
1971
2155
  findKeyPosition: () => findKeyPosition,
1972
2156
  lowercaseFirstLetter: () => lowercaseFirstLetter,
1973
2157
  replaceLiteralsWithObjectFields: () => replaceLiteralsWithObjectFields,
@@ -2071,6 +2255,12 @@ var require_cjs2 = __commonJS({
2071
2255
  return char;
2072
2256
  });
2073
2257
  };
2258
+ var encodeNewlines = (str) => {
2259
+ return str.split("\n").join("/////n").split("`").join("/////tilde").split("$").join("/////dlrsgn");
2260
+ };
2261
+ var decodeNewlines = (encodedStr) => {
2262
+ return encodedStr.split("/////n").join("\n").split("/////tilde").join("`").split("/////dlrsgn").join("$");
2263
+ };
2074
2264
  var customEncodeURIComponent = (str) => {
2075
2265
  return str.split("").map((char) => {
2076
2266
  if (/[^a-zA-Z0-9\s]/.test(char)) {
@@ -2106,8 +2296,8 @@ var require_cjs2 = __commonJS({
2106
2296
  var __toCommonJS22 = (mod) => __copyProps22(__defProp22({}, "__esModule", { value: true }), mod);
2107
2297
  var object_exports = {};
2108
2298
  __export22(object_exports, {
2109
- checkIfKeyIsComponent: () => checkIfKeyIsComponent,
2110
2299
  clone: () => clone,
2300
+ createNestedObject: () => createNestedObject,
2111
2301
  createObjectWithoutPrototype: () => createObjectWithoutPrototype,
2112
2302
  deepClone: () => deepClone2,
2113
2303
  deepCloneExclude: () => deepCloneExclude,
@@ -2118,13 +2308,12 @@ var require_cjs2 = __commonJS({
2118
2308
  deepMerge: () => deepMerge2,
2119
2309
  deepStringify: () => deepStringify,
2120
2310
  detachFunctionsFromObject: () => detachFunctionsFromObject,
2311
+ detectInfiniteLoop: () => detectInfiniteLoop,
2121
2312
  diff: () => diff,
2122
2313
  diffArrays: () => diffArrays,
2123
2314
  diffObjects: () => diffObjects,
2124
2315
  exec: () => exec,
2125
2316
  flattenRecursive: () => flattenRecursive,
2126
- getChildrenComponentsByKey: () => getChildrenComponentsByKey,
2127
- getExtendsInElement: () => getExtendsInElement,
2128
2317
  hasOwnProperty: () => hasOwnProperty,
2129
2318
  isEmpty: () => isEmpty,
2130
2319
  isEmptyObject: () => isEmptyObject,
@@ -2139,6 +2328,7 @@ var require_cjs2 = __commonJS({
2139
2328
  overwriteDeep: () => overwriteDeep,
2140
2329
  overwriteShallow: () => overwriteShallow,
2141
2330
  removeFromObject: () => removeFromObject,
2331
+ removeNestedKeyByPath: () => removeNestedKeyByPath,
2142
2332
  stringToObject: () => stringToObject
2143
2333
  });
2144
2334
  module22.exports = __toCommonJS22(object_exports);
@@ -2146,6 +2336,8 @@ var require_cjs2 = __commonJS({
2146
2336
  var import_types = require_types2();
2147
2337
  var import_array = require_array2();
2148
2338
  var import_string = require_string2();
2339
+ var import_node = require_node2();
2340
+ var ENV = "development";
2149
2341
  var exec = (param, element, state, context) => {
2150
2342
  if ((0, import_types.isFunction)(param)) {
2151
2343
  return param(
@@ -2224,27 +2416,28 @@ var require_cjs2 = __commonJS({
2224
2416
  var mergeArrayExclude = (arr, excl = []) => {
2225
2417
  return arr.reduce((acc, curr) => deepMerge2(acc, deepCloneExclude(curr, excl)), {});
2226
2418
  };
2227
- var deepClone2 = (obj, excludeFrom = [], cleanUndefined = false) => {
2228
- const o = (0, import_types.isArray)(obj) ? [] : {};
2229
- for (const prop in obj) {
2230
- if (!Object.prototype.hasOwnProperty.call(obj, prop))
2231
- continue;
2232
- if (prop === "__proto__")
2233
- continue;
2234
- if (excludeFrom.includes(prop) || prop.startsWith("__"))
2235
- continue;
2236
- let objProp = obj[prop];
2237
- if (cleanUndefined && (0, import_types.isUndefined)(objProp))
2238
- continue;
2239
- if (prop === "extend" && (0, import_types.isArray)(objProp)) {
2240
- objProp = (0, import_array.mergeArray)(objProp);
2419
+ var deepClone2 = (obj, exclude = [], cleanUndefined = false, visited = /* @__PURE__ */ new WeakMap()) => {
2420
+ if (!(0, import_types.isObjectLike)(obj) || (0, import_node.isDOMNode)(obj))
2421
+ return obj;
2422
+ if (visited.has(obj))
2423
+ return visited.get(obj);
2424
+ const clone2 = (0, import_types.isArray)(obj) ? [] : {};
2425
+ visited.set(obj, clone2);
2426
+ for (const key in obj) {
2427
+ if (Object.prototype.hasOwnProperty.call(obj, key) && !exclude.includes(key)) {
2428
+ const value = obj[key];
2429
+ if ((0, import_node.isDOMNode)(value)) {
2430
+ clone2[key] = value;
2431
+ } else if (key === "extend" && (0, import_types.isArray)(value)) {
2432
+ clone2[key] = (0, import_array.mergeArray)(value, exclude);
2433
+ } else if ((0, import_types.isObjectLike)(value)) {
2434
+ clone2[key] = deepClone2(value, exclude, cleanUndefined, visited);
2435
+ } else {
2436
+ clone2[key] = value;
2437
+ }
2241
2438
  }
2242
- if ((0, import_types.isObjectLike)(objProp)) {
2243
- o[prop] = deepClone2(objProp, excludeFrom, cleanUndefined);
2244
- } else
2245
- o[prop] = objProp;
2246
2439
  }
2247
- return o;
2440
+ return clone2;
2248
2441
  };
2249
2442
  var deepCloneWithExtend = (obj, excludeFrom = ["node"], options = {}) => {
2250
2443
  const o = options.window ? (0, import_types.isArray)(obj) ? new options.window.Array([]) : new options.window.Object({}) : (0, import_types.isArray)(obj) ? [] : {};
@@ -2256,6 +2449,8 @@ var require_cjs2 = __commonJS({
2256
2449
  continue;
2257
2450
  if ((0, import_types.isObjectLike)(objProp)) {
2258
2451
  o[prop] = deepCloneWithExtend(objProp, excludeFrom, options);
2452
+ } else if ((0, import_types.isFunction)(objProp) && options.window) {
2453
+ o[prop] = (options.window || import_globals.window).eval("(" + objProp.toString() + ")");
2259
2454
  } else
2260
2455
  o[prop] = objProp;
2261
2456
  }
@@ -2499,16 +2694,23 @@ var require_cjs2 = __commonJS({
2499
2694
  }
2500
2695
  return obj;
2501
2696
  };
2502
- var overwriteDeep = (obj, params, excludeFrom = []) => {
2697
+ var overwriteDeep = (obj, params, excludeFrom = [], visited = /* @__PURE__ */ new WeakMap()) => {
2698
+ if (!(0, import_types.isObjectLike)(obj) || !(0, import_types.isObjectLike)(params) || (0, import_node.isDOMNode)(obj) || (0, import_node.isDOMNode)(params)) {
2699
+ return params;
2700
+ }
2701
+ if (visited.has(obj)) {
2702
+ return visited.get(obj);
2703
+ }
2704
+ visited.set(obj, obj);
2503
2705
  for (const e in params) {
2504
- if (e === "__proto__")
2505
- continue;
2506
- if (excludeFrom.includes(e) || e.startsWith("__"))
2706
+ if (e === "__ref" || excludeFrom.includes(e) || e.startsWith("__"))
2507
2707
  continue;
2508
2708
  const objProp = obj[e];
2509
2709
  const paramsProp = params[e];
2510
- if ((0, import_types.isObjectLike)(objProp) && (0, import_types.isObjectLike)(paramsProp)) {
2511
- overwriteDeep(objProp, paramsProp);
2710
+ if ((0, import_node.isDOMNode)(paramsProp)) {
2711
+ obj[e] = paramsProp;
2712
+ } else if ((0, import_types.isObjectLike)(objProp) && (0, import_types.isObjectLike)(paramsProp)) {
2713
+ obj[e] = overwriteDeep(objProp, paramsProp, excludeFrom, visited);
2512
2714
  } else if (paramsProp !== void 0) {
2513
2715
  obj[e] = paramsProp;
2514
2716
  }
@@ -2555,30 +2757,40 @@ var require_cjs2 = __commonJS({
2555
2757
  }
2556
2758
  return true;
2557
2759
  };
2558
- var deepContains = (obj1, obj2) => {
2559
- if (typeof obj1 !== typeof obj2) {
2760
+ var deepContains = (obj1, obj2, ignoredKeys = ["node", "__ref"]) => {
2761
+ if (obj1 === obj2)
2762
+ return true;
2763
+ if (!(0, import_types.isObjectLike)(obj1) || !(0, import_types.isObjectLike)(obj2))
2560
2764
  return false;
2561
- }
2562
- if ((0, import_types.isObjectLike)(obj1)) {
2563
- if (Array.isArray(obj1) && Array.isArray(obj2)) {
2564
- if (obj1.length !== obj2.length) {
2765
+ if ((0, import_node.isDOMNode)(obj1) || (0, import_node.isDOMNode)(obj2))
2766
+ return obj1 === obj2;
2767
+ const stack = [[obj1, obj2]];
2768
+ const visited = /* @__PURE__ */ new WeakSet();
2769
+ while (stack.length > 0) {
2770
+ const [current1, current2] = stack.pop();
2771
+ if (visited.has(current1))
2772
+ continue;
2773
+ visited.add(current1);
2774
+ const keys1 = Object.keys(current1).filter((key) => !ignoredKeys.includes(key));
2775
+ const keys2 = Object.keys(current2).filter((key) => !ignoredKeys.includes(key));
2776
+ if (keys1.length !== keys2.length)
2777
+ return false;
2778
+ for (const key of keys1) {
2779
+ if (!Object.prototype.hasOwnProperty.call(current2, key))
2565
2780
  return false;
2566
- }
2567
- for (let i = 0; i < obj1.length; i++) {
2568
- if (!deepContains(obj1[i], obj2[i])) {
2569
- return false;
2570
- }
2571
- }
2572
- } else if ((0, import_types.isObjectLike)(obj1) && obj2 !== null) {
2573
- for (const key in obj1) {
2574
- const hasOwnProperty2 = Object.prototype.hasOwnProperty.call(obj2, key);
2575
- if (!hasOwnProperty2 || !deepContains(obj1[key], obj2[key])) {
2781
+ const value1 = current1[key];
2782
+ const value2 = current2[key];
2783
+ if ((0, import_node.isDOMNode)(value1) || (0, import_node.isDOMNode)(value2)) {
2784
+ if (value1 !== value2)
2576
2785
  return false;
2786
+ } else if ((0, import_types.isObjectLike)(value1) && (0, import_types.isObjectLike)(value2)) {
2787
+ if (value1 !== value2) {
2788
+ stack.push([value1, value2]);
2577
2789
  }
2790
+ } else if (value1 !== value2) {
2791
+ return false;
2578
2792
  }
2579
2793
  }
2580
- } else {
2581
- return obj2 === obj1;
2582
2794
  }
2583
2795
  return true;
2584
2796
  };
@@ -2606,53 +2818,60 @@ var require_cjs2 = __commonJS({
2606
2818
  }
2607
2819
  return newObj;
2608
2820
  };
2609
- var checkIfKeyIsComponent = (key) => {
2610
- const isFirstKeyString = (0, import_types.isString)(key);
2611
- if (!isFirstKeyString)
2612
- return;
2613
- const firstCharKey = key.slice(0, 1);
2614
- return /^[A-Z]*$/.test(firstCharKey);
2821
+ var createNestedObject = (arr, lastValue) => {
2822
+ const nestedObject = {};
2823
+ if (arr.length === 0) {
2824
+ return lastValue;
2825
+ }
2826
+ arr.reduce((obj, value, index) => {
2827
+ if (!obj[value]) {
2828
+ obj[value] = {};
2829
+ }
2830
+ if (index === arr.length - 1 && lastValue) {
2831
+ obj[value] = lastValue;
2832
+ }
2833
+ return obj[value];
2834
+ }, nestedObject);
2835
+ return nestedObject;
2615
2836
  };
2616
- var getChildrenComponentsByKey = (key, el) => {
2617
- if (key === el.key || el.__ref.__componentKey === key) {
2618
- return el;
2837
+ var removeNestedKeyByPath = (obj, path) => {
2838
+ if (!Array.isArray(path)) {
2839
+ throw new Error("Path must be an array.");
2619
2840
  }
2620
- if (el.extend) {
2621
- const foundString = (0, import_types.isString)(el.extend) && el.extend === key;
2622
- const foundInArray = (0, import_types.isArray)(el.extend) && el.extend.filter((v) => v === key).length;
2623
- if (foundString || foundInArray)
2624
- return el;
2841
+ let current = obj;
2842
+ for (let i = 0; i < path.length - 1; i++) {
2843
+ if (current[path[i]] === void 0) {
2844
+ return;
2845
+ }
2846
+ current = current[path[i]];
2625
2847
  }
2626
- if (el.parent && el.parent.childExtend) {
2627
- const foundString = (0, import_types.isString)(el.parent.childExtend) && el.parent.childExtend === key;
2628
- const foundInArray = (0, import_types.isArray)(el.parent.childExtend) && el.parent.childExtend.filter((v) => v === key).length;
2629
- if (foundString || foundInArray)
2630
- return el;
2848
+ const lastKey = path[path.length - 1];
2849
+ if (current && Object.hasOwnProperty.call(current, lastKey)) {
2850
+ delete current[lastKey];
2631
2851
  }
2632
2852
  };
2633
- var getExtendsInElement = (obj) => {
2634
- let result = [];
2635
- function traverse(o) {
2636
- for (const key in o) {
2637
- if (Object.hasOwnProperty.call(o, key)) {
2638
- if (checkIfKeyIsComponent(key)) {
2639
- result.push(key);
2640
- }
2641
- if (key === "extend") {
2642
- if (typeof o[key] === "string") {
2643
- result.push(o[key]);
2644
- } else if (Array.isArray(o[key])) {
2645
- result = result.concat(o[key]);
2646
- }
2647
- }
2648
- if (typeof o[key] === "object" && o[key] !== null) {
2649
- traverse(o[key]);
2853
+ var detectInfiniteLoop = (arr) => {
2854
+ const maxRepeats = 10;
2855
+ let pattern = [];
2856
+ let repeatCount = 0;
2857
+ for (let i = 0; i < arr.length; i++) {
2858
+ if (pattern.length < 2) {
2859
+ pattern.push(arr[i]);
2860
+ } else {
2861
+ if (arr[i] === pattern[i % 2]) {
2862
+ repeatCount++;
2863
+ } else {
2864
+ pattern = [arr[i - 1], arr[i]];
2865
+ repeatCount = 1;
2866
+ }
2867
+ if (repeatCount >= maxRepeats * 2) {
2868
+ if (ENV === "test" || ENV === "development") {
2869
+ console.warn("Warning: Potential infinite loop detected due to repeated sequence:", pattern);
2650
2870
  }
2871
+ return true;
2651
2872
  }
2652
2873
  }
2653
2874
  }
2654
- traverse(obj);
2655
- return result;
2656
2875
  };
2657
2876
  }
2658
2877
  });
@@ -2678,6 +2897,7 @@ var require_cjs2 = __commonJS({
2678
2897
  var __toCommonJS22 = (mod) => __copyProps22(__defProp22({}, "__esModule", { value: true }), mod);
2679
2898
  var function_exports = {};
2680
2899
  __export22(function_exports, {
2900
+ cloneFunction: () => cloneFunction,
2681
2901
  debounce: () => debounce,
2682
2902
  debounceOnContext: () => debounceOnContext,
2683
2903
  isStringFunction: () => isStringFunction,
@@ -2727,6 +2947,17 @@ var require_cjs2 = __commonJS({
2727
2947
  const functionRegex = /^((function\s*\([^)]*\)\s*\{[^}]*\})|(\([^)]*\)\s*=>))/;
2728
2948
  return functionRegex.test(inputString);
2729
2949
  };
2950
+ function cloneFunction(fn, win = window) {
2951
+ const temp = function() {
2952
+ return fn.apply(win, arguments);
2953
+ };
2954
+ for (const key in fn) {
2955
+ if (Object.hasOwnProperty.call(fn, key)) {
2956
+ temp[key] = fn[key];
2957
+ }
2958
+ }
2959
+ return temp;
2960
+ }
2730
2961
  }
2731
2962
  });
2732
2963
  var require_log2 = __commonJS2({
@@ -2989,6 +3220,170 @@ var require_cjs2 = __commonJS({
2989
3220
  var isValidHtmlTag = (arg) => HTML_TAGS.body.includes(arg);
2990
3221
  }
2991
3222
  });
3223
+ var require_component2 = __commonJS2({
3224
+ "../../../domql/packages/utils/dist/cjs/component.js"(exports2, module22) {
3225
+ "use strict";
3226
+ var __defProp22 = Object.defineProperty;
3227
+ var __getOwnPropDesc22 = Object.getOwnPropertyDescriptor;
3228
+ var __getOwnPropNames22 = Object.getOwnPropertyNames;
3229
+ var __hasOwnProp22 = Object.prototype.hasOwnProperty;
3230
+ var __export22 = (target, all) => {
3231
+ for (var name in all)
3232
+ __defProp22(target, name, { get: all[name], enumerable: true });
3233
+ };
3234
+ var __copyProps22 = (to, from, except, desc) => {
3235
+ if (from && typeof from === "object" || typeof from === "function") {
3236
+ for (let key of __getOwnPropNames22(from))
3237
+ if (!__hasOwnProp22.call(to, key) && key !== except)
3238
+ __defProp22(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc22(from, key)) || desc.enumerable });
3239
+ }
3240
+ return to;
3241
+ };
3242
+ var __toCommonJS22 = (mod) => __copyProps22(__defProp22({}, "__esModule", { value: true }), mod);
3243
+ var component_exports = {};
3244
+ __export22(component_exports, {
3245
+ addAdditionalExtend: () => addAdditionalExtend,
3246
+ applyComponentFromContext: () => applyComponentFromContext,
3247
+ applyKeyComponentAsExtend: () => applyKeyComponentAsExtend,
3248
+ checkIfKeyIsComponent: () => checkIfKeyIsComponent,
3249
+ checkIfKeyIsProperty: () => checkIfKeyIsProperty,
3250
+ extendizeByKey: () => extendizeByKey,
3251
+ getChildrenComponentsByKey: () => getChildrenComponentsByKey,
3252
+ getExtendsInElement: () => getExtendsInElement,
3253
+ hasVariantProp: () => hasVariantProp,
3254
+ isVariant: () => isVariant
3255
+ });
3256
+ module22.exports = __toCommonJS22(component_exports);
3257
+ var import__ = require_cjs3();
3258
+ var ENV = "development";
3259
+ var checkIfKeyIsComponent = (key) => {
3260
+ const isFirstKeyString = (0, import__.isString)(key);
3261
+ if (!isFirstKeyString)
3262
+ return;
3263
+ const firstCharKey = key.slice(0, 1);
3264
+ return /^[A-Z]*$/.test(firstCharKey);
3265
+ };
3266
+ var checkIfKeyIsProperty = (key) => {
3267
+ const isFirstKeyString = (0, import__.isString)(key);
3268
+ if (!isFirstKeyString)
3269
+ return;
3270
+ const firstCharKey = key.slice(0, 1);
3271
+ return /^[a-z]*$/.test(firstCharKey);
3272
+ };
3273
+ var addAdditionalExtend = (newExtend, element) => {
3274
+ const { extend: elementExtend } = element;
3275
+ const originalArray = (0, import__.isArray)(elementExtend) ? elementExtend : [elementExtend];
3276
+ const receivedArray = (0, import__.isArray)(newExtend) ? newExtend : [newExtend];
3277
+ const extend = (0, import__.joinArrays)(receivedArray, originalArray);
3278
+ return { ...element, extend };
3279
+ };
3280
+ var extendizeByKey = (element, parent, key) => {
3281
+ const { context } = parent;
3282
+ const { tag, extend, props, attr, state, childExtend, childProps, on, if: condition, data } = element;
3283
+ const hasComponentAttrs = extend || childExtend || props || state || on || condition || attr || data;
3284
+ const extendFromKey = key.includes("+") ? key.split("+") : key.includes("_") ? [key.split("_")[0]] : key.includes(".") && !checkIfKeyIsComponent(key.split(".")[1]) ? [key.split(".")[0]] : [key];
3285
+ const isExtendKeyComponent = context && context.components[extendFromKey];
3286
+ if (element === isExtendKeyComponent)
3287
+ return element;
3288
+ else if (!hasComponentAttrs || childProps) {
3289
+ return {
3290
+ extend: extendFromKey,
3291
+ tag,
3292
+ props: { ...element }
3293
+ };
3294
+ } else if (!extend || extend === true) {
3295
+ return {
3296
+ ...element,
3297
+ tag,
3298
+ extend: extendFromKey
3299
+ };
3300
+ } else if (extend) {
3301
+ return addAdditionalExtend(extendFromKey, element);
3302
+ } else if ((0, import__.isFunction)(element)) {
3303
+ return {
3304
+ extend: extendFromKey,
3305
+ tag,
3306
+ props: { ...(0, import__.exec)(element, parent) }
3307
+ };
3308
+ }
3309
+ };
3310
+ var applyKeyComponentAsExtend = (element, parent, key) => {
3311
+ return extendizeByKey(element, parent, key) || element;
3312
+ };
3313
+ var applyComponentFromContext = (element, parent, options) => {
3314
+ const { context } = element;
3315
+ if (!context || !context.components)
3316
+ return;
3317
+ const { components } = context;
3318
+ const { extend } = element;
3319
+ const execExtend = (0, import__.exec)(extend, element);
3320
+ if ((0, import__.isString)(execExtend)) {
3321
+ const componentExists = components[execExtend] || components["smbls." + execExtend];
3322
+ if (componentExists)
3323
+ element.extend = componentExists;
3324
+ else {
3325
+ if ((ENV === "test" || ENV === "development") && options.verbose) {
3326
+ console.warn(execExtend, "is not in library", components, element);
3327
+ console.warn("replacing with ", {});
3328
+ }
3329
+ element.extend = {};
3330
+ }
3331
+ }
3332
+ };
3333
+ var isVariant = (param) => {
3334
+ if (!(0, import__.isString)(param))
3335
+ return;
3336
+ const firstCharKey = param.slice(0, 1);
3337
+ return firstCharKey === ".";
3338
+ };
3339
+ var hasVariantProp = (element) => {
3340
+ const { props } = element;
3341
+ if ((0, import__.isObject)(props) && (0, import__.isString)(props.variant))
3342
+ return true;
3343
+ };
3344
+ var getChildrenComponentsByKey = (key, el) => {
3345
+ if (key === el.key || el.__ref.__componentKey === key) {
3346
+ return el;
3347
+ }
3348
+ if (el.extend) {
3349
+ const foundString = (0, import__.isString)(el.extend) && el.extend === key;
3350
+ const foundInArray = (0, import__.isArray)(el.extend) && el.extend.filter((v) => v === key).length;
3351
+ if (foundString || foundInArray)
3352
+ return el;
3353
+ }
3354
+ if (el.parent && el.parent.childExtend) {
3355
+ const foundString = (0, import__.isString)(el.parent.childExtend) && el.parent.childExtend === key;
3356
+ const foundInArray = (0, import__.isArray)(el.parent.childExtend) && el.parent.childExtend.filter((v) => v === key).length;
3357
+ if (foundString || foundInArray)
3358
+ return el;
3359
+ }
3360
+ };
3361
+ var getExtendsInElement = (obj) => {
3362
+ let result = [];
3363
+ function traverse(o) {
3364
+ for (const key in o) {
3365
+ if (Object.hasOwnProperty.call(o, key)) {
3366
+ if (checkIfKeyIsComponent(key)) {
3367
+ result.push(key);
3368
+ }
3369
+ if (key === "extend") {
3370
+ if (typeof o[key] === "string") {
3371
+ result.push(o[key]);
3372
+ } else if (Array.isArray(o[key])) {
3373
+ result = result.concat(o[key]);
3374
+ }
3375
+ }
3376
+ if (typeof o[key] === "object" && o[key] !== null) {
3377
+ traverse(o[key]);
3378
+ }
3379
+ }
3380
+ }
3381
+ }
3382
+ traverse(obj);
3383
+ return result;
3384
+ };
3385
+ }
3386
+ });
2992
3387
  var require_cjs3 = __commonJS2({
2993
3388
  "../../../domql/packages/utils/dist/cjs/index.js"(exports2, module22) {
2994
3389
  "use strict";
@@ -3020,11 +3415,13 @@ var require_cjs2 = __commonJS({
3020
3415
  __reExport(utils_exports, require_globals2(), module22.exports);
3021
3416
  __reExport(utils_exports, require_cookie2(), module22.exports);
3022
3417
  __reExport(utils_exports, require_tags2(), module22.exports);
3418
+ __reExport(utils_exports, require_component2(), module22.exports);
3023
3419
  }
3024
3420
  });
3025
3421
  var src_exports = {};
3026
3422
  __export2(src_exports, {
3027
3423
  arrayzeValue: () => arrayzeValue,
3424
+ copyJavaScriptToClipboard: () => copyJavaScriptToClipboard,
3028
3425
  copyStringToClipboard: () => copyStringToClipboard,
3029
3426
  fibonacciNumberByIndex: () => fibonacciNumberByIndex,
3030
3427
  findClosestNumber: () => findClosestNumber,
@@ -3034,7 +3431,9 @@ var require_cjs2 = __commonJS({
3034
3431
  loadCssFile: () => loadCssFile,
3035
3432
  loadJavascript: () => loadJavascript,
3036
3433
  loadJavascriptFile: () => loadJavascriptFile,
3434
+ loadJavascriptFileEmbedSync: () => loadJavascriptFileEmbedSync,
3037
3435
  loadJavascriptFileSync: () => loadJavascriptFileSync,
3436
+ registerFrameListener: () => registerFrameListener,
3038
3437
  removeChars: () => removeChars,
3039
3438
  toCamelCase: () => toCamelCase,
3040
3439
  toDashCase: () => toDashCase2,
@@ -3107,7 +3506,27 @@ var require_cjs2 = __commonJS({
3107
3506
  }
3108
3507
  });
3109
3508
  };
3110
- var loadJavascriptFileSync = (FILE_URL, doc = document, fallback, type = "text/javascript") => {
3509
+ var loadJavascriptFileSync = (fileUrl, doc = document, type = "text/javascript") => {
3510
+ return new Promise((resolve, reject) => {
3511
+ const scriptEle = doc.createElement("script");
3512
+ scriptEle.type = type;
3513
+ scriptEle.src = fileUrl;
3514
+ const blocker = doc.createElement("div");
3515
+ blocker.style.cssText = "position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,0.8);z-index:9999;";
3516
+ doc.body.appendChild(blocker);
3517
+ scriptEle.onload = () => {
3518
+ console.log(`Successfully loaded: ${fileUrl}`);
3519
+ doc.body.removeChild(blocker);
3520
+ resolve();
3521
+ };
3522
+ scriptEle.onerror = () => {
3523
+ doc.body.removeChild(blocker);
3524
+ reject(new Error(`Failed to load: ${fileUrl}`));
3525
+ };
3526
+ doc.body.appendChild(scriptEle);
3527
+ });
3528
+ };
3529
+ var loadJavascriptFileEmbedSync = (FILE_URL, doc = document, fallback, type = "text/javascript") => {
3111
3530
  const xhr = new window.XMLHttpRequest();
3112
3531
  xhr.open("GET", FILE_URL, false);
3113
3532
  xhr.send();
@@ -3152,15 +3571,29 @@ var require_cjs2 = __commonJS({
3152
3571
  }
3153
3572
  };
3154
3573
  var isPhoto = (format) => ["jpeg", "gif", "jpg", "png", "tiff", "woff"].includes(format);
3155
- var copyStringToClipboard = (str) => {
3156
- const el = document.createElement("textarea");
3157
- el.value = str;
3158
- el.setAttribute("readonly", "");
3159
- el.style = { position: "absolute", left: "-9999px" };
3160
- document.body.appendChild(el);
3161
- el.select();
3162
- document.execCommand("copy");
3163
- document.body.removeChild(el);
3574
+ var registerFrameListener = (el) => {
3575
+ const { __ref: ref } = el;
3576
+ const { frameListeners } = ref.root.data;
3577
+ if (frameListeners && !frameListeners.has(el)) {
3578
+ frameListeners.add(el);
3579
+ }
3580
+ };
3581
+ var copyStringToClipboard = async (str) => {
3582
+ try {
3583
+ await navigator.clipboard.writeText(str);
3584
+ } catch (err) {
3585
+ console.warn("Failed to copy text: ", err);
3586
+ }
3587
+ };
3588
+ var copyJavaScriptToClipboard = async (jsCode) => {
3589
+ try {
3590
+ const blob = new Blob([jsCode], { type: "text/javascript" });
3591
+ const clipboardItem = new window.ClipboardItem({ "text/plain": blob });
3592
+ await navigator.clipboard.write([clipboardItem]);
3593
+ console.log("JavaScript code copied to clipboard as text/javascript");
3594
+ } catch (err) {
3595
+ console.error("Failed to copy JavaScript code: ", err);
3596
+ }
3164
3597
  };
3165
3598
  var removeChars = (str) => {
3166
3599
  return str.replace(/[^a-zA-Z0-9_]/g, "");
@@ -3382,9 +3815,11 @@ var BREAKPOINTS = {
3382
3815
  mobileXS: 375
3383
3816
  };
3384
3817
  var DEVICES = {
3818
+ screenXXL: [2560, 1440],
3819
+ screenXL: [2240, 1260],
3385
3820
  screenL: [1920, 1024],
3386
3821
  screenM: [1680, 1024],
3387
- screenS: [1440, 978],
3822
+ screenS: [1440, 720],
3388
3823
  tabletL: [1366, 926],
3389
3824
  tabletM: [1280, 768],
3390
3825
  tabletS: [1024, 768],