@symbo.ls/scratch 3.0.1 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/factory.js +180 -43
- package/dist/cjs/index.js +382 -70
- package/dist/cjs/set.js +372 -64
- package/dist/cjs/system/color.js +328 -51
- package/dist/cjs/system/document.js +331 -52
- package/dist/cjs/system/font.js +329 -52
- package/dist/cjs/system/index.js +345 -61
- package/dist/cjs/system/reset.js +331 -52
- package/dist/cjs/system/shadow.js +330 -53
- package/dist/cjs/system/spacing.js +335 -56
- package/dist/cjs/system/svg.js +332 -52
- package/dist/cjs/system/theme.js +328 -51
- package/dist/cjs/system/timing.js +331 -54
- package/dist/cjs/system/typography.js +336 -55
- package/dist/cjs/transforms/index.js +337 -58
- package/dist/cjs/utils/color.js +150 -4
- package/dist/cjs/utils/index.js +341 -57
- package/dist/cjs/utils/sequence.js +337 -56
- package/dist/cjs/utils/sprite.js +184 -44
- package/dist/cjs/utils/var.js +327 -50
- package/package.json +4 -5
- package/src/set.js +23 -4
- package/src/system/typography.js +2 -1
- package/src/utils/color.js +1 -1
- package/src/utils/sequence.js +10 -5
- package/src/utils/sprite.js +5 -1
|
@@ -34,23 +34,23 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
34
34
|
var require_cjs = __commonJS({
|
|
35
35
|
"../utils/dist/cjs/index.js"(exports, module2) {
|
|
36
36
|
"use strict";
|
|
37
|
-
var
|
|
37
|
+
var __defProp2 = Object.defineProperty;
|
|
38
38
|
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
|
|
39
39
|
var __getOwnPropNames2 = Object.getOwnPropertyNames;
|
|
40
|
-
var
|
|
40
|
+
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
|
|
41
41
|
var __export2 = (target, all) => {
|
|
42
42
|
for (var name in all)
|
|
43
|
-
|
|
43
|
+
__defProp2(target, name, { get: all[name], enumerable: true });
|
|
44
44
|
};
|
|
45
45
|
var __copyProps2 = (to, from, except, desc) => {
|
|
46
46
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
47
47
|
for (let key of __getOwnPropNames2(from))
|
|
48
|
-
if (!
|
|
49
|
-
|
|
48
|
+
if (!__hasOwnProp2.call(to, key) && key !== except)
|
|
49
|
+
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
|
|
50
50
|
}
|
|
51
51
|
return to;
|
|
52
52
|
};
|
|
53
|
-
var __toCommonJS2 = (mod) => __copyProps2(
|
|
53
|
+
var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
|
|
54
54
|
var index_exports = {};
|
|
55
55
|
__export2(index_exports, {
|
|
56
56
|
arrayzeValue: () => arrayzeValue2,
|
|
@@ -83,7 +83,147 @@ 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_METHODS3 = [
|
|
87
|
+
"update",
|
|
88
|
+
"parse",
|
|
89
|
+
"clean",
|
|
90
|
+
"create",
|
|
91
|
+
"destroy",
|
|
92
|
+
"add",
|
|
93
|
+
"toggle",
|
|
94
|
+
"remove",
|
|
95
|
+
"apply",
|
|
96
|
+
"set",
|
|
97
|
+
"reset",
|
|
98
|
+
"replace",
|
|
99
|
+
"quietReplace",
|
|
100
|
+
"quietUpdate",
|
|
101
|
+
"applyReplace",
|
|
102
|
+
"applyFunction",
|
|
103
|
+
"keys",
|
|
104
|
+
"values",
|
|
105
|
+
"ref",
|
|
106
|
+
"rootUpdate",
|
|
107
|
+
"parentUpdate",
|
|
108
|
+
"parent",
|
|
109
|
+
"__element",
|
|
110
|
+
"__depends",
|
|
111
|
+
"__ref",
|
|
112
|
+
"__children",
|
|
113
|
+
"root",
|
|
114
|
+
"setByPath",
|
|
115
|
+
"setPathCollection",
|
|
116
|
+
"removeByPath",
|
|
117
|
+
"removePathCollection",
|
|
118
|
+
"getByPath"
|
|
119
|
+
];
|
|
120
|
+
var PROPS_METHODS3 = ["update", "__element"];
|
|
121
|
+
var METHODS3 = [
|
|
122
|
+
"set",
|
|
123
|
+
"reset",
|
|
124
|
+
"update",
|
|
125
|
+
"remove",
|
|
126
|
+
"updateContent",
|
|
127
|
+
"removeContent",
|
|
128
|
+
"lookup",
|
|
129
|
+
"lookdown",
|
|
130
|
+
"lookdownAll",
|
|
131
|
+
"getRef",
|
|
132
|
+
"getPath",
|
|
133
|
+
"setNodeStyles",
|
|
134
|
+
"spotByPath",
|
|
135
|
+
"keys",
|
|
136
|
+
"parse",
|
|
137
|
+
"setProps",
|
|
138
|
+
"parseDeep",
|
|
139
|
+
"variables",
|
|
140
|
+
"if",
|
|
141
|
+
"log",
|
|
142
|
+
"verbose",
|
|
143
|
+
"warn",
|
|
144
|
+
"error",
|
|
145
|
+
"call",
|
|
146
|
+
"nextElement",
|
|
147
|
+
"previousElement"
|
|
148
|
+
];
|
|
149
|
+
var METHODS_EXL3 = [
|
|
150
|
+
...["node", "context", "extends", "__element", "__ref"],
|
|
151
|
+
...METHODS3,
|
|
152
|
+
...STATE_METHODS3,
|
|
153
|
+
...PROPS_METHODS3
|
|
154
|
+
];
|
|
86
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;
|
|
87
227
|
async function toggleFullscreen(opts) {
|
|
88
228
|
if (!document.fullscreenElement) {
|
|
89
229
|
try {
|
|
@@ -262,16 +402,16 @@ __export(shadow_exports, {
|
|
|
262
402
|
});
|
|
263
403
|
module.exports = __toCommonJS(shadow_exports);
|
|
264
404
|
|
|
265
|
-
//
|
|
405
|
+
// ../../../domql/packages/utils/globals.js
|
|
266
406
|
var window2 = globalThis;
|
|
267
407
|
var document2 = window2.document;
|
|
268
408
|
|
|
269
|
-
//
|
|
409
|
+
// ../../../domql/packages/utils/node.js
|
|
270
410
|
var isDOMNode = (obj) => {
|
|
271
411
|
return typeof window2 !== "undefined" && (obj instanceof window2.Node || obj instanceof window2.Window || obj === window2 || obj === document);
|
|
272
412
|
};
|
|
273
413
|
|
|
274
|
-
//
|
|
414
|
+
// ../../../domql/packages/utils/types.js
|
|
275
415
|
var isObject = (arg) => {
|
|
276
416
|
if (arg === null) return false;
|
|
277
417
|
return typeof arg === "object" && arg.constructor === Object;
|
|
@@ -289,35 +429,92 @@ var isUndefined = (arg) => {
|
|
|
289
429
|
return arg === void 0;
|
|
290
430
|
};
|
|
291
431
|
|
|
292
|
-
//
|
|
293
|
-
var
|
|
294
|
-
return arr.reduce(
|
|
432
|
+
// ../../../domql/packages/utils/array.js
|
|
433
|
+
var unstackArrayOfObjects = (arr, exclude = []) => {
|
|
434
|
+
return arr.reduce(
|
|
435
|
+
(a, c) => deepMerge(a, deepClone(c, { exclude }), exclude),
|
|
436
|
+
{}
|
|
437
|
+
);
|
|
295
438
|
};
|
|
296
439
|
|
|
297
|
-
//
|
|
298
|
-
var
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
440
|
+
// ../../../domql/packages/utils/keys.js
|
|
441
|
+
var STATE_METHODS = [
|
|
442
|
+
"update",
|
|
443
|
+
"parse",
|
|
444
|
+
"clean",
|
|
445
|
+
"create",
|
|
446
|
+
"destroy",
|
|
447
|
+
"add",
|
|
448
|
+
"toggle",
|
|
449
|
+
"remove",
|
|
450
|
+
"apply",
|
|
451
|
+
"set",
|
|
452
|
+
"reset",
|
|
453
|
+
"replace",
|
|
454
|
+
"quietReplace",
|
|
455
|
+
"quietUpdate",
|
|
456
|
+
"applyReplace",
|
|
457
|
+
"applyFunction",
|
|
458
|
+
"keys",
|
|
459
|
+
"values",
|
|
460
|
+
"ref",
|
|
461
|
+
"rootUpdate",
|
|
462
|
+
"parentUpdate",
|
|
463
|
+
"parent",
|
|
464
|
+
"__element",
|
|
465
|
+
"__depends",
|
|
466
|
+
"__ref",
|
|
467
|
+
"__children",
|
|
468
|
+
"root",
|
|
469
|
+
"setByPath",
|
|
470
|
+
"setPathCollection",
|
|
471
|
+
"removeByPath",
|
|
472
|
+
"removePathCollection",
|
|
473
|
+
"getByPath"
|
|
474
|
+
];
|
|
475
|
+
var PROPS_METHODS = ["update", "__element"];
|
|
476
|
+
var METHODS = [
|
|
477
|
+
"set",
|
|
478
|
+
"reset",
|
|
479
|
+
"update",
|
|
480
|
+
"remove",
|
|
481
|
+
"updateContent",
|
|
482
|
+
"removeContent",
|
|
483
|
+
"lookup",
|
|
484
|
+
"lookdown",
|
|
485
|
+
"lookdownAll",
|
|
486
|
+
"getRef",
|
|
487
|
+
"getPath",
|
|
488
|
+
"setNodeStyles",
|
|
489
|
+
"spotByPath",
|
|
490
|
+
"keys",
|
|
491
|
+
"parse",
|
|
492
|
+
"setProps",
|
|
493
|
+
"parseDeep",
|
|
494
|
+
"variables",
|
|
495
|
+
"if",
|
|
496
|
+
"log",
|
|
497
|
+
"verbose",
|
|
498
|
+
"warn",
|
|
499
|
+
"error",
|
|
500
|
+
"call",
|
|
501
|
+
"nextElement",
|
|
502
|
+
"previousElement"
|
|
503
|
+
];
|
|
504
|
+
var METHODS_EXL = [
|
|
505
|
+
...["node", "context", "extends", "__element", "__ref"],
|
|
506
|
+
...METHODS,
|
|
507
|
+
...STATE_METHODS,
|
|
508
|
+
...PROPS_METHODS
|
|
509
|
+
];
|
|
510
|
+
|
|
511
|
+
// ../../../domql/packages/utils/object.js
|
|
512
|
+
var deepMerge = (element, extend, excludeFrom = METHODS_EXL) => {
|
|
318
513
|
for (const e in extend) {
|
|
319
|
-
const
|
|
320
|
-
if (!
|
|
514
|
+
const hasOwnProperty = Object.prototype.hasOwnProperty.call(extend, e);
|
|
515
|
+
if (!hasOwnProperty || excludeFrom.includes(e) || e.startsWith("__")) {
|
|
516
|
+
continue;
|
|
517
|
+
}
|
|
321
518
|
const elementProp = element[e];
|
|
322
519
|
const extendProp = extend[e];
|
|
323
520
|
if (isObjectLike(elementProp) && isObjectLike(extendProp)) {
|
|
@@ -335,7 +532,7 @@ var deepClone = (obj, options = {}) => {
|
|
|
335
532
|
cleanNull = false,
|
|
336
533
|
window: targetWindow,
|
|
337
534
|
visited = /* @__PURE__ */ new WeakMap(),
|
|
338
|
-
|
|
535
|
+
handleExtends = false
|
|
339
536
|
} = options;
|
|
340
537
|
if (!isObjectLike(obj) || isDOMNode(obj)) {
|
|
341
538
|
return obj;
|
|
@@ -343,39 +540,119 @@ var deepClone = (obj, options = {}) => {
|
|
|
343
540
|
if (visited.has(obj)) {
|
|
344
541
|
return visited.get(obj);
|
|
345
542
|
}
|
|
346
|
-
const
|
|
347
|
-
visited.set(obj,
|
|
543
|
+
const clone = targetWindow ? isArray(obj) ? new targetWindow.Array() : new targetWindow.Object() : isArray(obj) ? [] : {};
|
|
544
|
+
visited.set(obj, clone);
|
|
348
545
|
for (const key in obj) {
|
|
349
546
|
if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;
|
|
350
|
-
if (exclude.includes(key) || key.startsWith("__") || key === "__proto__")
|
|
547
|
+
if (exclude.includes(key) || key.startsWith("__") || key === "__proto__") {
|
|
548
|
+
continue;
|
|
549
|
+
}
|
|
351
550
|
const value = obj[key];
|
|
352
|
-
if (cleanUndefined && isUndefined(value) || cleanNull && isNull(value))
|
|
551
|
+
if (cleanUndefined && isUndefined(value) || cleanNull && isNull(value)) {
|
|
552
|
+
continue;
|
|
553
|
+
}
|
|
353
554
|
if (isDOMNode(value)) {
|
|
354
|
-
|
|
555
|
+
clone[key] = value;
|
|
355
556
|
continue;
|
|
356
557
|
}
|
|
357
|
-
if (
|
|
358
|
-
|
|
558
|
+
if (handleExtends && key === "extends" && isArray(value)) {
|
|
559
|
+
clone[key] = unstackArrayOfObjects(value, exclude);
|
|
359
560
|
continue;
|
|
360
561
|
}
|
|
361
562
|
if (isFunction(value) && targetWindow) {
|
|
362
|
-
|
|
563
|
+
clone[key] = targetWindow.eval("(" + value.toString() + ")");
|
|
363
564
|
continue;
|
|
364
565
|
}
|
|
365
566
|
if (isObjectLike(value)) {
|
|
366
|
-
|
|
567
|
+
clone[key] = deepClone(value, {
|
|
568
|
+
...options,
|
|
367
569
|
visited
|
|
368
|
-
})
|
|
570
|
+
});
|
|
369
571
|
} else {
|
|
370
|
-
|
|
572
|
+
clone[key] = value;
|
|
371
573
|
}
|
|
372
574
|
}
|
|
373
|
-
return
|
|
575
|
+
return clone;
|
|
374
576
|
};
|
|
375
577
|
|
|
376
|
-
//
|
|
578
|
+
// ../../../domql/packages/utils/cookie.js
|
|
377
579
|
var isMobile = (() => typeof navigator === "undefined" ? false : /Mobi/.test(navigator.userAgent))();
|
|
378
580
|
|
|
581
|
+
// ../../../domql/packages/event/dist/esm/keys.js
|
|
582
|
+
var STATE_METHODS2 = [
|
|
583
|
+
"update",
|
|
584
|
+
"parse",
|
|
585
|
+
"clean",
|
|
586
|
+
"create",
|
|
587
|
+
"destroy",
|
|
588
|
+
"add",
|
|
589
|
+
"toggle",
|
|
590
|
+
"remove",
|
|
591
|
+
"apply",
|
|
592
|
+
"set",
|
|
593
|
+
"reset",
|
|
594
|
+
"replace",
|
|
595
|
+
"quietReplace",
|
|
596
|
+
"quietUpdate",
|
|
597
|
+
"applyReplace",
|
|
598
|
+
"applyFunction",
|
|
599
|
+
"keys",
|
|
600
|
+
"values",
|
|
601
|
+
"ref",
|
|
602
|
+
"rootUpdate",
|
|
603
|
+
"parentUpdate",
|
|
604
|
+
"parent",
|
|
605
|
+
"__element",
|
|
606
|
+
"__depends",
|
|
607
|
+
"__ref",
|
|
608
|
+
"__children",
|
|
609
|
+
"root",
|
|
610
|
+
"setByPath",
|
|
611
|
+
"setPathCollection",
|
|
612
|
+
"removeByPath",
|
|
613
|
+
"removePathCollection",
|
|
614
|
+
"getByPath"
|
|
615
|
+
];
|
|
616
|
+
var PROPS_METHODS2 = ["update", "__element"];
|
|
617
|
+
var METHODS2 = [
|
|
618
|
+
"set",
|
|
619
|
+
"reset",
|
|
620
|
+
"update",
|
|
621
|
+
"remove",
|
|
622
|
+
"updateContent",
|
|
623
|
+
"removeContent",
|
|
624
|
+
"lookup",
|
|
625
|
+
"lookdown",
|
|
626
|
+
"lookdownAll",
|
|
627
|
+
"getRef",
|
|
628
|
+
"getPath",
|
|
629
|
+
"setNodeStyles",
|
|
630
|
+
"spotByPath",
|
|
631
|
+
"keys",
|
|
632
|
+
"parse",
|
|
633
|
+
"setProps",
|
|
634
|
+
"parseDeep",
|
|
635
|
+
"variables",
|
|
636
|
+
"if",
|
|
637
|
+
"log",
|
|
638
|
+
"verbose",
|
|
639
|
+
"warn",
|
|
640
|
+
"error",
|
|
641
|
+
"call",
|
|
642
|
+
"nextElement",
|
|
643
|
+
"previousElement"
|
|
644
|
+
];
|
|
645
|
+
var METHODS_EXL2 = [
|
|
646
|
+
...["node", "context", "extends", "__element", "__ref"],
|
|
647
|
+
...METHODS2,
|
|
648
|
+
...STATE_METHODS2,
|
|
649
|
+
...PROPS_METHODS2
|
|
650
|
+
];
|
|
651
|
+
|
|
652
|
+
// ../../../domql/packages/event/dist/esm/globals.js
|
|
653
|
+
var window3 = globalThis;
|
|
654
|
+
var document3 = window3.document;
|
|
655
|
+
|
|
379
656
|
// src/defaultConfig/index.js
|
|
380
657
|
var defaultConfig_exports = {};
|
|
381
658
|
__export(defaultConfig_exports, {
|
|
@@ -691,7 +968,7 @@ var getRgbTone = (rgb, tone) => {
|
|
|
691
968
|
};
|
|
692
969
|
|
|
693
970
|
// src/utils/sequence.js
|
|
694
|
-
var
|
|
971
|
+
var import_utils5 = __toESM(require_cjs(), 1);
|
|
695
972
|
var numToLetterMap = {
|
|
696
973
|
"-6": "U",
|
|
697
974
|
"-5": "V",
|
|
@@ -827,7 +1104,7 @@ var getSequenceValue = (value = "A", sequenceProps) => {
|
|
|
827
1104
|
useVariable
|
|
828
1105
|
} = sequenceProps;
|
|
829
1106
|
if (isString(value) && value.slice(0, 2) === "--") return `var(${value})`;
|
|
830
|
-
const prefix = `--${(0,
|
|
1107
|
+
const prefix = `--${(0, import_utils5.toDashCase)(sequenceProps.type.replace(".", "-"))}-`;
|
|
831
1108
|
const startsWithDashOrLetterRegex = /^-?[a-zA-Z]/i;
|
|
832
1109
|
const startsWithDashOrLetter = startsWithDashOrLetterRegex.test(value);
|
|
833
1110
|
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;
|
|
@@ -912,7 +1189,7 @@ var getColor = (value, key, config) => {
|
|
|
912
1189
|
};
|
|
913
1190
|
|
|
914
1191
|
// src/system/spacing.js
|
|
915
|
-
var
|
|
1192
|
+
var import_utils10 = __toESM(require_cjs(), 1);
|
|
916
1193
|
var getSequence = (sequenceProps) => {
|
|
917
1194
|
const CONFIG2 = getActiveConfig();
|
|
918
1195
|
const { SPACING: SPACING2 } = CONFIG2;
|
|
@@ -925,7 +1202,7 @@ var getSpacingByKey = (value, propertyName = "padding", sequenceProps) => {
|
|
|
925
1202
|
if (isString(value) && (value.includes("calc") || value.includes("var"))) {
|
|
926
1203
|
return { [propertyName]: value };
|
|
927
1204
|
}
|
|
928
|
-
const stack = (0,
|
|
1205
|
+
const stack = (0, import_utils10.arrayzeValue)(value);
|
|
929
1206
|
if (!isArray(stack)) return;
|
|
930
1207
|
if (stack.length > 1) {
|
|
931
1208
|
let suffix = "";
|