@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.
@@ -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 __defProp3 = Object.defineProperty;
37
+ var __defProp2 = Object.defineProperty;
38
38
  var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
39
39
  var __getOwnPropNames2 = Object.getOwnPropertyNames;
40
- var __hasOwnProp3 = Object.prototype.hasOwnProperty;
40
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
41
41
  var __export2 = (target, all) => {
42
42
  for (var name in all)
43
- __defProp3(target, name, { get: all[name], enumerable: true });
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 (!__hasOwnProp3.call(to, key) && key !== except)
49
- __defProp3(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
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(__defProp3({}, "__esModule", { value: true }), mod);
53
+ var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
54
54
  var index_exports = {};
55
55
  __export2(index_exports, {
56
56
  arrayzeValue: () => arrayzeValue,
@@ -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 {
@@ -264,16 +404,16 @@ __export(var_exports, {
264
404
  });
265
405
  module.exports = __toCommonJS(var_exports);
266
406
 
267
- // node_modules/@domql/utils/dist/esm/globals.js
407
+ // ../../../domql/packages/utils/globals.js
268
408
  var window2 = globalThis;
269
409
  var document2 = window2.document;
270
410
 
271
- // node_modules/@domql/utils/dist/esm/node.js
411
+ // ../../../domql/packages/utils/node.js
272
412
  var isDOMNode = (obj) => {
273
413
  return typeof window2 !== "undefined" && (obj instanceof window2.Node || obj instanceof window2.Window || obj === window2 || obj === document);
274
414
  };
275
415
 
276
- // node_modules/@domql/utils/dist/esm/types.js
416
+ // ../../../domql/packages/utils/types.js
277
417
  var isFunction = (arg) => typeof arg === "function";
278
418
  var isNull = (arg) => arg === null;
279
419
  var isArray = (arg) => Array.isArray(arg);
@@ -285,35 +425,92 @@ var isUndefined = (arg) => {
285
425
  return arg === void 0;
286
426
  };
287
427
 
288
- // node_modules/@domql/utils/dist/esm/array.js
289
- var mergeArray = (arr, exclude = []) => {
290
- return arr.reduce((a, c) => deepMerge(a, deepClone(c, { exclude }), exclude), {});
428
+ // ../../../domql/packages/utils/array.js
429
+ var unstackArrayOfObjects = (arr, exclude = []) => {
430
+ return arr.reduce(
431
+ (a, c) => deepMerge(a, deepClone(c, { exclude }), exclude),
432
+ {}
433
+ );
291
434
  };
292
435
 
293
- // node_modules/@domql/utils/dist/esm/object.js
294
- var __defProp2 = Object.defineProperty;
295
- var __defProps = Object.defineProperties;
296
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
297
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
298
- var __hasOwnProp2 = Object.prototype.hasOwnProperty;
299
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
300
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
301
- var __spreadValues = (a, b) => {
302
- for (var prop in b || (b = {}))
303
- if (__hasOwnProp2.call(b, prop))
304
- __defNormalProp(a, prop, b[prop]);
305
- if (__getOwnPropSymbols)
306
- for (var prop of __getOwnPropSymbols(b)) {
307
- if (__propIsEnum.call(b, prop))
308
- __defNormalProp(a, prop, b[prop]);
309
- }
310
- return a;
311
- };
312
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
313
- var deepMerge = (element, extend, excludeFrom = []) => {
436
+ // ../../../domql/packages/utils/keys.js
437
+ var STATE_METHODS = [
438
+ "update",
439
+ "parse",
440
+ "clean",
441
+ "create",
442
+ "destroy",
443
+ "add",
444
+ "toggle",
445
+ "remove",
446
+ "apply",
447
+ "set",
448
+ "reset",
449
+ "replace",
450
+ "quietReplace",
451
+ "quietUpdate",
452
+ "applyReplace",
453
+ "applyFunction",
454
+ "keys",
455
+ "values",
456
+ "ref",
457
+ "rootUpdate",
458
+ "parentUpdate",
459
+ "parent",
460
+ "__element",
461
+ "__depends",
462
+ "__ref",
463
+ "__children",
464
+ "root",
465
+ "setByPath",
466
+ "setPathCollection",
467
+ "removeByPath",
468
+ "removePathCollection",
469
+ "getByPath"
470
+ ];
471
+ var PROPS_METHODS = ["update", "__element"];
472
+ var METHODS = [
473
+ "set",
474
+ "reset",
475
+ "update",
476
+ "remove",
477
+ "updateContent",
478
+ "removeContent",
479
+ "lookup",
480
+ "lookdown",
481
+ "lookdownAll",
482
+ "getRef",
483
+ "getPath",
484
+ "setNodeStyles",
485
+ "spotByPath",
486
+ "keys",
487
+ "parse",
488
+ "setProps",
489
+ "parseDeep",
490
+ "variables",
491
+ "if",
492
+ "log",
493
+ "verbose",
494
+ "warn",
495
+ "error",
496
+ "call",
497
+ "nextElement",
498
+ "previousElement"
499
+ ];
500
+ var METHODS_EXL = [
501
+ ...["node", "context", "extends", "__element", "__ref"],
502
+ ...METHODS,
503
+ ...STATE_METHODS,
504
+ ...PROPS_METHODS
505
+ ];
506
+
507
+ // ../../../domql/packages/utils/object.js
508
+ var deepMerge = (element, extend, excludeFrom = METHODS_EXL) => {
314
509
  for (const e in extend) {
315
- const hasOwnProperty2 = Object.prototype.hasOwnProperty.call(extend, e);
316
- if (!hasOwnProperty2 || excludeFrom.includes(e) || e.startsWith("__")) continue;
510
+ const hasOwnProperty = Object.prototype.hasOwnProperty.call(extend, e);
511
+ if (!hasOwnProperty || excludeFrom.includes(e) || e.startsWith("__")) {
512
+ continue;
513
+ }
317
514
  const elementProp = element[e];
318
515
  const extendProp = extend[e];
319
516
  if (isObjectLike(elementProp) && isObjectLike(extendProp)) {
@@ -331,7 +528,7 @@ var deepClone = (obj, options = {}) => {
331
528
  cleanNull = false,
332
529
  window: targetWindow,
333
530
  visited = /* @__PURE__ */ new WeakMap(),
334
- handleExtend = false
531
+ handleExtends = false
335
532
  } = options;
336
533
  if (!isObjectLike(obj) || isDOMNode(obj)) {
337
534
  return obj;
@@ -339,39 +536,119 @@ var deepClone = (obj, options = {}) => {
339
536
  if (visited.has(obj)) {
340
537
  return visited.get(obj);
341
538
  }
342
- const clone2 = targetWindow ? isArray(obj) ? new targetWindow.Array() : new targetWindow.Object() : isArray(obj) ? [] : {};
343
- visited.set(obj, clone2);
539
+ const clone = targetWindow ? isArray(obj) ? new targetWindow.Array() : new targetWindow.Object() : isArray(obj) ? [] : {};
540
+ visited.set(obj, clone);
344
541
  for (const key in obj) {
345
542
  if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;
346
- if (exclude.includes(key) || key.startsWith("__") || key === "__proto__") continue;
543
+ if (exclude.includes(key) || key.startsWith("__") || key === "__proto__") {
544
+ continue;
545
+ }
347
546
  const value = obj[key];
348
- if (cleanUndefined && isUndefined(value) || cleanNull && isNull(value)) continue;
547
+ if (cleanUndefined && isUndefined(value) || cleanNull && isNull(value)) {
548
+ continue;
549
+ }
349
550
  if (isDOMNode(value)) {
350
- clone2[key] = value;
551
+ clone[key] = value;
351
552
  continue;
352
553
  }
353
- if (handleExtend && key === "extend" && isArray(value)) {
354
- clone2[key] = mergeArray(value, exclude);
554
+ if (handleExtends && key === "extends" && isArray(value)) {
555
+ clone[key] = unstackArrayOfObjects(value, exclude);
355
556
  continue;
356
557
  }
357
558
  if (isFunction(value) && targetWindow) {
358
- clone2[key] = targetWindow.eval("(" + value.toString() + ")");
559
+ clone[key] = targetWindow.eval("(" + value.toString() + ")");
359
560
  continue;
360
561
  }
361
562
  if (isObjectLike(value)) {
362
- clone2[key] = deepClone(value, __spreadProps(__spreadValues({}, options), {
563
+ clone[key] = deepClone(value, {
564
+ ...options,
363
565
  visited
364
- }));
566
+ });
365
567
  } else {
366
- clone2[key] = value;
568
+ clone[key] = value;
367
569
  }
368
570
  }
369
- return clone2;
571
+ return clone;
370
572
  };
371
573
 
372
- // node_modules/@domql/utils/dist/esm/cookie.js
574
+ // ../../../domql/packages/utils/cookie.js
373
575
  var isMobile = (() => typeof navigator === "undefined" ? false : /Mobi/.test(navigator.userAgent))();
374
576
 
577
+ // ../../../domql/packages/event/dist/esm/keys.js
578
+ var STATE_METHODS2 = [
579
+ "update",
580
+ "parse",
581
+ "clean",
582
+ "create",
583
+ "destroy",
584
+ "add",
585
+ "toggle",
586
+ "remove",
587
+ "apply",
588
+ "set",
589
+ "reset",
590
+ "replace",
591
+ "quietReplace",
592
+ "quietUpdate",
593
+ "applyReplace",
594
+ "applyFunction",
595
+ "keys",
596
+ "values",
597
+ "ref",
598
+ "rootUpdate",
599
+ "parentUpdate",
600
+ "parent",
601
+ "__element",
602
+ "__depends",
603
+ "__ref",
604
+ "__children",
605
+ "root",
606
+ "setByPath",
607
+ "setPathCollection",
608
+ "removeByPath",
609
+ "removePathCollection",
610
+ "getByPath"
611
+ ];
612
+ var PROPS_METHODS2 = ["update", "__element"];
613
+ var METHODS2 = [
614
+ "set",
615
+ "reset",
616
+ "update",
617
+ "remove",
618
+ "updateContent",
619
+ "removeContent",
620
+ "lookup",
621
+ "lookdown",
622
+ "lookdownAll",
623
+ "getRef",
624
+ "getPath",
625
+ "setNodeStyles",
626
+ "spotByPath",
627
+ "keys",
628
+ "parse",
629
+ "setProps",
630
+ "parseDeep",
631
+ "variables",
632
+ "if",
633
+ "log",
634
+ "verbose",
635
+ "warn",
636
+ "error",
637
+ "call",
638
+ "nextElement",
639
+ "previousElement"
640
+ ];
641
+ var METHODS_EXL2 = [
642
+ ...["node", "context", "extends", "__element", "__ref"],
643
+ ...METHODS2,
644
+ ...STATE_METHODS2,
645
+ ...PROPS_METHODS2
646
+ ];
647
+
648
+ // ../../../domql/packages/event/dist/esm/globals.js
649
+ var window3 = globalThis;
650
+ var document3 = window3.document;
651
+
375
652
  // src/defaultConfig/index.js
376
653
  var defaultConfig_exports = {};
377
654
  __export(defaultConfig_exports, {
@@ -594,7 +871,7 @@ var getActiveConfig = (def) => {
594
871
  };
595
872
 
596
873
  // src/utils/sequence.js
597
- var import_utils3 = __toESM(require_cjs(), 1);
874
+ var import_utils4 = __toESM(require_cjs(), 1);
598
875
 
599
876
  // src/utils/unit.js
600
877
  var isScalingUnit = (unit) => {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@symbo.ls/scratch",
3
3
  "description": "Φ / CSS framework and methodology.",
4
4
  "author": "symbo.ls",
5
- "version": "3.0.1",
5
+ "version": "3.1.1",
6
6
  "files": [
7
7
  "src",
8
8
  "dist"
@@ -25,10 +25,9 @@
25
25
  "prepublish": "rimraf -I dist && npm run build && npm run copy:package:cjs"
26
26
  },
27
27
  "dependencies": {
28
- "@domql/globals": "latest",
29
- "@domql/utils": "^2.5.0",
30
- "@symbo.ls/utils": "^3.0.1",
28
+ "@domql/utils": "^3.1.1",
29
+ "@symbo.ls/utils": "^3.1.1",
31
30
  "color-contrast-checker": "^1.5.0"
32
31
  },
33
- "gitHead": "a4e7f586f7e4f60bd7b6a8388bdacc3ae1879433"
32
+ "gitHead": "39fb7a8c07355468ccce79e2f787ca3fa0715692"
34
33
  }
package/src/set.js CHANGED
@@ -78,7 +78,14 @@ export const setEach = (factoryName, props) => {
78
78
  const CONFIG = getActiveConfig()
79
79
  const FACTORY_NAME = factoryName.toUpperCase()
80
80
  const keys = Object.keys(props)
81
- keys.map(key => setValue(FACTORY_NAME, props[key], key))
81
+
82
+ keys.forEach((key) => {
83
+ try {
84
+ return setValue(FACTORY_NAME, props[key], key)
85
+ } catch (error) {
86
+ if (CONFIG.verbose) console.warn('Error setting', FACTORY_NAME, 'value', props[key], key, error)
87
+ }
88
+ })
82
89
 
83
90
  return CONFIG[FACTORY_NAME]
84
91
  }
@@ -125,9 +132,21 @@ export const set = (recivedConfig, options = SET_OPTIONS) => {
125
132
  keys.map(key => setEach(key, config[key]))
126
133
 
127
134
  // apply generic configs
128
- if (config.TYPOGRAPHY) applyTypographySequence()
129
- if (config.SPACING) applySpacingSequence()
130
- if (config.TIMING) applyTimingSequence()
135
+ if (config.TYPOGRAPHY) {
136
+ try { applyTypographySequence() } catch (e) {
137
+ if (CONFIG.verbose) console.warn('Error applying typography sequence', e)
138
+ }
139
+ }
140
+ if (config.SPACING) {
141
+ try { applySpacingSequence() } catch (e) {
142
+ if (CONFIG.verbose) console.warn('Error applying typography sequence', e)
143
+ }
144
+ }
145
+ if (config.TIMING) {
146
+ try { applyTimingSequence() } catch (e) {
147
+ if (CONFIG.verbose) console.warn('Error applying typography sequence', e)
148
+ }
149
+ }
131
150
  applyDocument()
132
151
  applyReset()
133
152
 
@@ -76,8 +76,9 @@ export const applyHeadings = (props) => {
76
76
  for (const k in HEADINGS) {
77
77
  const headerName = `h${parseInt(k) + 1}`
78
78
  const headerStyle = templates[headerName]
79
+ if (!HEADINGS[k]) continue
79
80
  templates[headerName] = {
80
- fontSize: CONFIG.useVariable ? `var(${HEADINGS[k].variable})` : `${HEADINGS[k].scaling}${unit}`,
81
+ fontSize: CONFIG.useVariable ? `var(${HEADINGS[k]?.variable})` : `${HEADINGS[k].scaling}${unit}`,
81
82
  margin: headerStyle ? headerStyle.margin : 0,
82
83
  lineHeight: headerStyle ? headerStyle.lineHeight : props.lineHeight,
83
84
  letterSpacing: headerStyle ? headerStyle.letterSpacing : props.letterSpacing,
@@ -151,7 +151,7 @@ export const mixTwoRgba = (colorA, colorB, range = 0.5) => {
151
151
  export const opacify = (color, opacity) => {
152
152
  const arr = colorStringToRgbaArray(color)
153
153
  if (!arr) {
154
- if (ENV === 'test' || ENV === 'development') console.warn(color + ' color is not rgba')
154
+ if (ENV === 'testing' || ENV === 'development') console.warn(color + ' color is not rgba')
155
155
  return
156
156
  }
157
157
  arr[3] = opacity
@@ -170,8 +170,13 @@ export const generateSequence = (sequenceProps) => {
170
170
 
171
171
  export const generateSequencePosition = (sequenceProps, position = 0) => {
172
172
  const { type, base, ratio, subSequence } = sequenceProps
173
- const letterKey = this.call("isString", position) ? position : numToLetterMap[position]
174
-
173
+ const letterKey = isString(position) ? position : numToLetterMap[position]
174
+ const index = isString(position)
175
+ ? Object.entries(numToLetterMap).find(
176
+ ([, value]) => value === position
177
+ )?.[0]
178
+ : position
179
+
175
180
  if (!letterKey) {
176
181
  console.warn(`Position ${position} is out of range in numToLetterMap`)
177
182
  return null
@@ -184,11 +189,11 @@ export const generateSequencePosition = (sequenceProps, position = 0) => {
184
189
  ...sequenceProps
185
190
  }
186
191
 
187
- const value = base * Math.pow(ratio, position)
192
+ const value = base * Math.pow(ratio, index)
188
193
  const scaling = ~~((value / base) * 100) / 100
189
194
  const prefix = '--' + (type && type.replace('.', '-')) + '-'
190
195
  const variable = prefix + letterKey
191
- const scalingVariable = setScalingVar(position, sequenceProps)
196
+ const scalingVariable = setScalingVar(index, sequenceProps)
192
197
 
193
198
  const props = {
194
199
  key: letterKey,
@@ -198,7 +203,7 @@ export const generateSequencePosition = (sequenceProps, position = 0) => {
198
203
  scaling,
199
204
  scalingVariable,
200
205
  ratio,
201
- index: position
206
+ index
202
207
  }
203
208
 
204
209
  setSequenceValue(props, result)
@@ -3,6 +3,9 @@
3
3
  import { isArray, isString } from '@domql/utils'
4
4
  import { getActiveConfig } from '../factory'
5
5
 
6
+ const ENV = process.env.NODE_ENV || 'development'
7
+ const isDev = ENV === 'development' || ENV === 'testing'
8
+
6
9
  export const generateSprite = (icons) => {
7
10
  const CONFIG = getActiveConfig()
8
11
 
@@ -20,7 +23,8 @@ export const generateSprite = (icons) => {
20
23
  const parseRootAttributes = (htmlString) => {
21
24
  const val = htmlString.default || htmlString
22
25
  if (!isString(val)) {
23
- return console.warn(`parseRootAttributes: ${val} is not a string`)
26
+ if (isDev) console.warn('parseRootAttributes:', val, 'is not a string')
27
+ return
24
28
  }
25
29
 
26
30
  const match = val.match(/<svg\s+(.*?)>/)