@symbo.ls/scratch 3.0.2 → 3.1.2

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.
@@ -83,7 +83,7 @@ var require_cjs = __commonJS({
83
83
  var isString2 = (arg) => typeof arg === "string";
84
84
  var isNumber2 = (arg) => typeof arg === "number";
85
85
  var isArray2 = (arg) => Array.isArray(arg);
86
- var STATE_METHODS2 = [
86
+ var STATE_METHODS3 = [
87
87
  "update",
88
88
  "parse",
89
89
  "clean",
@@ -117,8 +117,8 @@ var require_cjs = __commonJS({
117
117
  "removePathCollection",
118
118
  "getByPath"
119
119
  ];
120
- var PROPS_METHODS2 = ["update", "__element"];
121
- var METHODS2 = [
120
+ var PROPS_METHODS3 = ["update", "__element"];
121
+ var METHODS3 = [
122
122
  "set",
123
123
  "reset",
124
124
  "update",
@@ -146,13 +146,84 @@ var require_cjs = __commonJS({
146
146
  "nextElement",
147
147
  "previousElement"
148
148
  ];
149
- var METHODS_EXL2 = [
149
+ var METHODS_EXL3 = [
150
150
  ...["node", "context", "extends", "__element", "__ref"],
151
- ...METHODS2,
152
- ...STATE_METHODS2,
153
- ...PROPS_METHODS2
151
+ ...METHODS3,
152
+ ...STATE_METHODS3,
153
+ ...PROPS_METHODS3
154
154
  ];
155
155
  var isMobile2 = (() => typeof navigator === "undefined" ? false : /Mobi/.test(navigator.userAgent))();
156
+ var STATE_METHODS22 = [
157
+ "update",
158
+ "parse",
159
+ "clean",
160
+ "create",
161
+ "destroy",
162
+ "add",
163
+ "toggle",
164
+ "remove",
165
+ "apply",
166
+ "set",
167
+ "reset",
168
+ "replace",
169
+ "quietReplace",
170
+ "quietUpdate",
171
+ "applyReplace",
172
+ "applyFunction",
173
+ "keys",
174
+ "values",
175
+ "ref",
176
+ "rootUpdate",
177
+ "parentUpdate",
178
+ "parent",
179
+ "__element",
180
+ "__depends",
181
+ "__ref",
182
+ "__children",
183
+ "root",
184
+ "setByPath",
185
+ "setPathCollection",
186
+ "removeByPath",
187
+ "removePathCollection",
188
+ "getByPath"
189
+ ];
190
+ var PROPS_METHODS22 = ["update", "__element"];
191
+ var METHODS22 = [
192
+ "set",
193
+ "reset",
194
+ "update",
195
+ "remove",
196
+ "updateContent",
197
+ "removeContent",
198
+ "lookup",
199
+ "lookdown",
200
+ "lookdownAll",
201
+ "getRef",
202
+ "getPath",
203
+ "setNodeStyles",
204
+ "spotByPath",
205
+ "keys",
206
+ "parse",
207
+ "setProps",
208
+ "parseDeep",
209
+ "variables",
210
+ "if",
211
+ "log",
212
+ "verbose",
213
+ "warn",
214
+ "error",
215
+ "call",
216
+ "nextElement",
217
+ "previousElement"
218
+ ];
219
+ var METHODS_EXL22 = [
220
+ ...["node", "context", "extends", "__element", "__ref"],
221
+ ...METHODS22,
222
+ ...STATE_METHODS22,
223
+ ...PROPS_METHODS22
224
+ ];
225
+ var window32 = globalThis;
226
+ var document32 = window32.document;
156
227
  async function toggleFullscreen(opts) {
157
228
  if (!document.fullscreenElement) {
158
229
  try {
@@ -358,16 +429,16 @@ __export(system_exports, {
358
429
  });
359
430
  module.exports = __toCommonJS(system_exports);
360
431
 
361
- // ../../node_modules/@domql/utils/globals.js
432
+ // ../../../domql/packages/utils/globals.js
362
433
  var window2 = globalThis;
363
434
  var document2 = window2.document;
364
435
 
365
- // ../../node_modules/@domql/utils/node.js
436
+ // ../../../domql/packages/utils/node.js
366
437
  var isDOMNode = (obj) => {
367
438
  return typeof window2 !== "undefined" && (obj instanceof window2.Node || obj instanceof window2.Window || obj === window2 || obj === document);
368
439
  };
369
440
 
370
- // ../../node_modules/@domql/utils/types.js
441
+ // ../../../domql/packages/utils/types.js
371
442
  var isObject = (arg) => {
372
443
  if (arg === null) return false;
373
444
  return typeof arg === "object" && arg.constructor === Object;
@@ -385,7 +456,7 @@ var isUndefined = (arg) => {
385
456
  return arg === void 0;
386
457
  };
387
458
 
388
- // ../../node_modules/@domql/utils/array.js
459
+ // ../../../domql/packages/utils/array.js
389
460
  var unstackArrayOfObjects = (arr, exclude = []) => {
390
461
  return arr.reduce(
391
462
  (a, c) => deepMerge(a, deepClone(c, { exclude }), exclude),
@@ -393,7 +464,7 @@ var unstackArrayOfObjects = (arr, exclude = []) => {
393
464
  );
394
465
  };
395
466
 
396
- // ../../node_modules/@domql/utils/keys.js
467
+ // ../../../domql/packages/utils/keys.js
397
468
  var STATE_METHODS = [
398
469
  "update",
399
470
  "parse",
@@ -464,7 +535,7 @@ var METHODS_EXL = [
464
535
  ...PROPS_METHODS
465
536
  ];
466
537
 
467
- // ../../node_modules/@domql/utils/object.js
538
+ // ../../../domql/packages/utils/object.js
468
539
  var merge = (element, obj, excludeFrom = []) => {
469
540
  for (const e in obj) {
470
541
  const hasOwnProperty = Object.prototype.hasOwnProperty.call(obj, e);
@@ -568,9 +639,84 @@ var overwriteDeep = (obj, params, opts = {}, visited = /* @__PURE__ */ new WeakM
568
639
  return obj;
569
640
  };
570
641
 
571
- // ../../node_modules/@domql/utils/cookie.js
642
+ // ../../../domql/packages/utils/cookie.js
572
643
  var isMobile = (() => typeof navigator === "undefined" ? false : /Mobi/.test(navigator.userAgent))();
573
644
 
645
+ // ../../../domql/packages/event/dist/esm/keys.js
646
+ var STATE_METHODS2 = [
647
+ "update",
648
+ "parse",
649
+ "clean",
650
+ "create",
651
+ "destroy",
652
+ "add",
653
+ "toggle",
654
+ "remove",
655
+ "apply",
656
+ "set",
657
+ "reset",
658
+ "replace",
659
+ "quietReplace",
660
+ "quietUpdate",
661
+ "applyReplace",
662
+ "applyFunction",
663
+ "keys",
664
+ "values",
665
+ "ref",
666
+ "rootUpdate",
667
+ "parentUpdate",
668
+ "parent",
669
+ "__element",
670
+ "__depends",
671
+ "__ref",
672
+ "__children",
673
+ "root",
674
+ "setByPath",
675
+ "setPathCollection",
676
+ "removeByPath",
677
+ "removePathCollection",
678
+ "getByPath"
679
+ ];
680
+ var PROPS_METHODS2 = ["update", "__element"];
681
+ var METHODS2 = [
682
+ "set",
683
+ "reset",
684
+ "update",
685
+ "remove",
686
+ "updateContent",
687
+ "removeContent",
688
+ "lookup",
689
+ "lookdown",
690
+ "lookdownAll",
691
+ "getRef",
692
+ "getPath",
693
+ "setNodeStyles",
694
+ "spotByPath",
695
+ "keys",
696
+ "parse",
697
+ "setProps",
698
+ "parseDeep",
699
+ "variables",
700
+ "if",
701
+ "log",
702
+ "verbose",
703
+ "warn",
704
+ "error",
705
+ "call",
706
+ "nextElement",
707
+ "previousElement"
708
+ ];
709
+ var METHODS_EXL2 = [
710
+ ...["node", "context", "extends", "__element", "__ref"],
711
+ ...METHODS2,
712
+ ...STATE_METHODS2,
713
+ ...PROPS_METHODS2
714
+ ];
715
+
716
+ // ../../../domql/packages/event/dist/esm/globals.js
717
+ var window3 = globalThis;
718
+ var document3 = window3.document;
719
+
574
720
  // src/defaultConfig/index.js
575
721
  var defaultConfig_exports = {};
576
722
  __export(defaultConfig_exports, {
@@ -910,7 +1056,7 @@ var getFontFaceEach = (name, weights) => {
910
1056
  };
911
1057
 
912
1058
  // src/utils/sequence.js
913
- var import_utils6 = __toESM(require_cjs(), 1);
1059
+ var import_utils5 = __toESM(require_cjs(), 1);
914
1060
  var numToLetterMap = {
915
1061
  "-6": "U",
916
1062
  "-5": "V",
@@ -1049,7 +1195,7 @@ var getSequenceValue = (value = "A", sequenceProps) => {
1049
1195
  useVariable
1050
1196
  } = sequenceProps;
1051
1197
  if (isString(value) && value.slice(0, 2) === "--") return `var(${value})`;
1052
- const prefix = `--${(0, import_utils6.toDashCase)(sequenceProps.type.replace(".", "-"))}-`;
1198
+ const prefix = `--${(0, import_utils5.toDashCase)(sequenceProps.type.replace(".", "-"))}-`;
1053
1199
  const startsWithDashOrLetterRegex = /^-?[a-zA-Z]/i;
1054
1200
  const startsWithDashOrLetter = startsWithDashOrLetterRegex.test(value);
1055
1201
  if (value === "none" || value === "auto" || value === "unset" || value === "inherit" || value === "fit-content" || value === "min-content" || value === "max-content" || value.includes("calc") || value.includes("var") || !startsWithDashOrLetter) return value;
@@ -1175,6 +1321,8 @@ var applyMediaSequenceVars = (FACTORY2, media, options = {}) => {
1175
1321
  };
1176
1322
 
1177
1323
  // src/utils/sprite.js
1324
+ var ENV = "development";
1325
+ var isDev = ENV === "development" || ENV === "testing";
1178
1326
  var generateSprite = (icons) => {
1179
1327
  const CONFIG2 = getActiveConfig();
1180
1328
  let sprite = "";
@@ -1188,7 +1336,8 @@ var generateSprite = (icons) => {
1188
1336
  var parseRootAttributes = (htmlString) => {
1189
1337
  const val = htmlString.default || htmlString;
1190
1338
  if (!isString(val)) {
1191
- return console.warn(`parseRootAttributes: ${val} is not a string`);
1339
+ if (isDev) console.warn("parseRootAttributes:", val, "is not a string");
1340
+ return;
1192
1341
  }
1193
1342
  const match = val.match(/<svg\s+(.*?)>/);
1194
1343
  if (!match || !match[1]) {
@@ -1554,7 +1703,7 @@ var getMediaTheme = (value, modifier) => {
1554
1703
  };
1555
1704
 
1556
1705
  // src/system/font.js
1557
- var import_utils13 = __toESM(require_cjs(), 1);
1706
+ var import_utils12 = __toESM(require_cjs(), 1);
1558
1707
  var setFont = (val, key) => {
1559
1708
  const CSSvar = `--font-${key}`;
1560
1709
  if (!val || isArray(val) && !val[0]) return;
@@ -1571,7 +1720,7 @@ var setFontFamily = (val, key) => {
1571
1720
  const { FONT_FAMILY: FONT_FAMILY2, FONT_FAMILY_TYPES: FONT_FAMILY_TYPES2 } = CONFIG2;
1572
1721
  let { value, type } = val;
1573
1722
  if (val.isDefault) FONT_FAMILY2.default = key;
1574
- if (isObject(value)) value = (0, import_utils13.arrayzeValue)(value);
1723
+ if (isObject(value)) value = (0, import_utils12.arrayzeValue)(value);
1575
1724
  const CSSvar = `--font-family-${key}`;
1576
1725
  const str = `${value.join(", ")}, ${FONT_FAMILY_TYPES2[type]}`;
1577
1726
  return { var: CSSvar, value: str, arr: value, type };
@@ -1625,6 +1774,7 @@ var runThroughMedia = (FACTORY2) => {
1625
1774
  }
1626
1775
  };
1627
1776
  var applyHeadings = (props) => {
1777
+ var _a;
1628
1778
  const CONFIG2 = getActiveConfig();
1629
1779
  if (props.h1Matches) {
1630
1780
  const unit = props.unit;
@@ -1633,8 +1783,9 @@ var applyHeadings = (props) => {
1633
1783
  for (const k in HEADINGS) {
1634
1784
  const headerName = `h${parseInt(k) + 1}`;
1635
1785
  const headerStyle = templates[headerName];
1786
+ if (!HEADINGS[k]) continue;
1636
1787
  templates[headerName] = {
1637
- fontSize: CONFIG2.useVariable ? `var(${HEADINGS[k].variable})` : `${HEADINGS[k].scaling}${unit}`,
1788
+ fontSize: CONFIG2.useVariable ? `var(${(_a = HEADINGS[k]) == null ? void 0 : _a.variable})` : `${HEADINGS[k].scaling}${unit}`,
1638
1789
  margin: headerStyle ? headerStyle.margin : 0,
1639
1790
  lineHeight: headerStyle ? headerStyle.lineHeight : props.lineHeight,
1640
1791
  letterSpacing: headerStyle ? headerStyle.letterSpacing : props.letterSpacing,
@@ -1662,7 +1813,7 @@ var getFontSizeByKey = (value) => {
1662
1813
  };
1663
1814
 
1664
1815
  // src/system/spacing.js
1665
- var import_utils17 = __toESM(require_cjs(), 1);
1816
+ var import_utils16 = __toESM(require_cjs(), 1);
1666
1817
  var runThroughMedia2 = (FACTORY2) => {
1667
1818
  for (const prop in FACTORY2) {
1668
1819
  const mediaProps = FACTORY2[prop];
@@ -1713,7 +1864,7 @@ var getSpacingByKey = (value, propertyName = "padding", sequenceProps) => {
1713
1864
  if (isString(value) && (value.includes("calc") || value.includes("var"))) {
1714
1865
  return { [propertyName]: value };
1715
1866
  }
1716
- const stack = (0, import_utils17.arrayzeValue)(value);
1867
+ const stack = (0, import_utils16.arrayzeValue)(value);
1717
1868
  if (!isArray(stack)) return;
1718
1869
  if (stack.length > 1) {
1719
1870
  let suffix = "";
@@ -1845,7 +1996,7 @@ var getShadow = (value, globalTheme) => {
1845
1996
  };
1846
1997
 
1847
1998
  // src/system/timing.js
1848
- var import_utils21 = __toESM(require_cjs(), 1);
1999
+ var import_utils20 = __toESM(require_cjs(), 1);
1849
2000
  var applyTimingSequence = () => {
1850
2001
  const CONFIG2 = getActiveConfig();
1851
2002
  const { TIMING: TIMING2 } = CONFIG2;
@@ -1855,7 +2006,7 @@ var applyTimingSequence = () => {
1855
2006
  var getTimingFunction = (value) => {
1856
2007
  const CONFIG2 = getActiveConfig();
1857
2008
  const { TIMING: TIMING2 } = CONFIG2;
1858
- return TIMING2[value] || TIMING2[(0, import_utils21.toCamelCase)(value)] || value;
2009
+ return TIMING2[value] || TIMING2[(0, import_utils20.toCamelCase)(value)] || value;
1859
2010
  };
1860
2011
  var getTimingByKey = (value, property = "timing") => {
1861
2012
  const CONFIG2 = getActiveConfig();
@@ -2009,3 +2160,4 @@ var applyReset = (reset = {}) => {
2009
2160
  });
2010
2161
  }
2011
2162
  };
2163
+ // @preserve-env
@@ -83,7 +83,7 @@ var require_cjs = __commonJS({
83
83
  var isString2 = (arg) => typeof arg === "string";
84
84
  var isNumber2 = (arg) => typeof arg === "number";
85
85
  var isArray2 = (arg) => Array.isArray(arg);
86
- var STATE_METHODS2 = [
86
+ var STATE_METHODS3 = [
87
87
  "update",
88
88
  "parse",
89
89
  "clean",
@@ -117,8 +117,8 @@ var require_cjs = __commonJS({
117
117
  "removePathCollection",
118
118
  "getByPath"
119
119
  ];
120
- var PROPS_METHODS2 = ["update", "__element"];
121
- var METHODS2 = [
120
+ var PROPS_METHODS3 = ["update", "__element"];
121
+ var METHODS3 = [
122
122
  "set",
123
123
  "reset",
124
124
  "update",
@@ -146,13 +146,84 @@ var require_cjs = __commonJS({
146
146
  "nextElement",
147
147
  "previousElement"
148
148
  ];
149
- var METHODS_EXL2 = [
149
+ var METHODS_EXL3 = [
150
150
  ...["node", "context", "extends", "__element", "__ref"],
151
- ...METHODS2,
152
- ...STATE_METHODS2,
153
- ...PROPS_METHODS2
151
+ ...METHODS3,
152
+ ...STATE_METHODS3,
153
+ ...PROPS_METHODS3
154
154
  ];
155
155
  var isMobile2 = (() => typeof navigator === "undefined" ? false : /Mobi/.test(navigator.userAgent))();
156
+ var STATE_METHODS22 = [
157
+ "update",
158
+ "parse",
159
+ "clean",
160
+ "create",
161
+ "destroy",
162
+ "add",
163
+ "toggle",
164
+ "remove",
165
+ "apply",
166
+ "set",
167
+ "reset",
168
+ "replace",
169
+ "quietReplace",
170
+ "quietUpdate",
171
+ "applyReplace",
172
+ "applyFunction",
173
+ "keys",
174
+ "values",
175
+ "ref",
176
+ "rootUpdate",
177
+ "parentUpdate",
178
+ "parent",
179
+ "__element",
180
+ "__depends",
181
+ "__ref",
182
+ "__children",
183
+ "root",
184
+ "setByPath",
185
+ "setPathCollection",
186
+ "removeByPath",
187
+ "removePathCollection",
188
+ "getByPath"
189
+ ];
190
+ var PROPS_METHODS22 = ["update", "__element"];
191
+ var METHODS22 = [
192
+ "set",
193
+ "reset",
194
+ "update",
195
+ "remove",
196
+ "updateContent",
197
+ "removeContent",
198
+ "lookup",
199
+ "lookdown",
200
+ "lookdownAll",
201
+ "getRef",
202
+ "getPath",
203
+ "setNodeStyles",
204
+ "spotByPath",
205
+ "keys",
206
+ "parse",
207
+ "setProps",
208
+ "parseDeep",
209
+ "variables",
210
+ "if",
211
+ "log",
212
+ "verbose",
213
+ "warn",
214
+ "error",
215
+ "call",
216
+ "nextElement",
217
+ "previousElement"
218
+ ];
219
+ var METHODS_EXL22 = [
220
+ ...["node", "context", "extends", "__element", "__ref"],
221
+ ...METHODS22,
222
+ ...STATE_METHODS22,
223
+ ...PROPS_METHODS22
224
+ ];
225
+ var window32 = globalThis;
226
+ var document32 = window32.document;
156
227
  async function toggleFullscreen(opts) {
157
228
  if (!document.fullscreenElement) {
158
229
  try {
@@ -330,16 +401,16 @@ __export(reset_exports, {
330
401
  });
331
402
  module.exports = __toCommonJS(reset_exports);
332
403
 
333
- // ../../node_modules/@domql/utils/globals.js
404
+ // ../../../domql/packages/utils/globals.js
334
405
  var window2 = globalThis;
335
406
  var document2 = window2.document;
336
407
 
337
- // ../../node_modules/@domql/utils/node.js
408
+ // ../../../domql/packages/utils/node.js
338
409
  var isDOMNode = (obj) => {
339
410
  return typeof window2 !== "undefined" && (obj instanceof window2.Node || obj instanceof window2.Window || obj === window2 || obj === document);
340
411
  };
341
412
 
342
- // ../../node_modules/@domql/utils/types.js
413
+ // ../../../domql/packages/utils/types.js
343
414
  var isString = (arg) => typeof arg === "string";
344
415
  var isFunction = (arg) => typeof arg === "function";
345
416
  var isNull = (arg) => arg === null;
@@ -352,7 +423,7 @@ var isUndefined = (arg) => {
352
423
  return arg === void 0;
353
424
  };
354
425
 
355
- // ../../node_modules/@domql/utils/array.js
426
+ // ../../../domql/packages/utils/array.js
356
427
  var unstackArrayOfObjects = (arr, exclude = []) => {
357
428
  return arr.reduce(
358
429
  (a, c) => deepMerge(a, deepClone(c, { exclude }), exclude),
@@ -360,7 +431,7 @@ var unstackArrayOfObjects = (arr, exclude = []) => {
360
431
  );
361
432
  };
362
433
 
363
- // ../../node_modules/@domql/utils/keys.js
434
+ // ../../../domql/packages/utils/keys.js
364
435
  var STATE_METHODS = [
365
436
  "update",
366
437
  "parse",
@@ -431,7 +502,7 @@ var METHODS_EXL = [
431
502
  ...PROPS_METHODS
432
503
  ];
433
504
 
434
- // ../../node_modules/@domql/utils/object.js
505
+ // ../../../domql/packages/utils/object.js
435
506
  var merge = (element, obj, excludeFrom = []) => {
436
507
  for (const e in obj) {
437
508
  const hasOwnProperty = Object.prototype.hasOwnProperty.call(obj, e);
@@ -535,9 +606,84 @@ var overwriteDeep = (obj, params, opts = {}, visited = /* @__PURE__ */ new WeakM
535
606
  return obj;
536
607
  };
537
608
 
538
- // ../../node_modules/@domql/utils/cookie.js
609
+ // ../../../domql/packages/utils/cookie.js
539
610
  var isMobile = (() => typeof navigator === "undefined" ? false : /Mobi/.test(navigator.userAgent))();
540
611
 
612
+ // ../../../domql/packages/event/dist/esm/keys.js
613
+ var STATE_METHODS2 = [
614
+ "update",
615
+ "parse",
616
+ "clean",
617
+ "create",
618
+ "destroy",
619
+ "add",
620
+ "toggle",
621
+ "remove",
622
+ "apply",
623
+ "set",
624
+ "reset",
625
+ "replace",
626
+ "quietReplace",
627
+ "quietUpdate",
628
+ "applyReplace",
629
+ "applyFunction",
630
+ "keys",
631
+ "values",
632
+ "ref",
633
+ "rootUpdate",
634
+ "parentUpdate",
635
+ "parent",
636
+ "__element",
637
+ "__depends",
638
+ "__ref",
639
+ "__children",
640
+ "root",
641
+ "setByPath",
642
+ "setPathCollection",
643
+ "removeByPath",
644
+ "removePathCollection",
645
+ "getByPath"
646
+ ];
647
+ var PROPS_METHODS2 = ["update", "__element"];
648
+ var METHODS2 = [
649
+ "set",
650
+ "reset",
651
+ "update",
652
+ "remove",
653
+ "updateContent",
654
+ "removeContent",
655
+ "lookup",
656
+ "lookdown",
657
+ "lookdownAll",
658
+ "getRef",
659
+ "getPath",
660
+ "setNodeStyles",
661
+ "spotByPath",
662
+ "keys",
663
+ "parse",
664
+ "setProps",
665
+ "parseDeep",
666
+ "variables",
667
+ "if",
668
+ "log",
669
+ "verbose",
670
+ "warn",
671
+ "error",
672
+ "call",
673
+ "nextElement",
674
+ "previousElement"
675
+ ];
676
+ var METHODS_EXL2 = [
677
+ ...["node", "context", "extends", "__element", "__ref"],
678
+ ...METHODS2,
679
+ ...STATE_METHODS2,
680
+ ...PROPS_METHODS2
681
+ ];
682
+
683
+ // ../../../domql/packages/event/dist/esm/globals.js
684
+ var window3 = globalThis;
685
+ var document3 = window3.document;
686
+
541
687
  // src/defaultConfig/index.js
542
688
  var defaultConfig_exports = {};
543
689
  __export(defaultConfig_exports, {
@@ -760,7 +906,7 @@ var getActiveConfig = (def) => {
760
906
  };
761
907
 
762
908
  // src/utils/sequence.js
763
- var import_utils6 = __toESM(require_cjs(), 1);
909
+ var import_utils5 = __toESM(require_cjs(), 1);
764
910
 
765
911
  // src/system/theme.js
766
912
  var recursiveTheme = (val) => {
@@ -869,3 +1015,4 @@ var applyReset = (reset = {}) => {
869
1015
  });
870
1016
  }
871
1017
  };
1018
+ // @preserve-env