@rickosborne/css 2025.2.16

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.
Files changed (62) hide show
  1. package/README.md +736 -0
  2. package/angle.cjs +57 -0
  3. package/angle.cjs.map +6 -0
  4. package/angle.d.ts +16 -0
  5. package/angle.d.ts.map +1 -0
  6. package/angle.mjs +38 -0
  7. package/angle.mjs.map +6 -0
  8. package/color-parser.cjs +132 -0
  9. package/color-parser.cjs.map +6 -0
  10. package/color-parser.d.ts +28 -0
  11. package/color-parser.d.ts.map +1 -0
  12. package/color-parser.mjs +113 -0
  13. package/color-parser.mjs.map +6 -0
  14. package/colors.cjs +269 -0
  15. package/colors.cjs.map +6 -0
  16. package/colors.d.ts +193 -0
  17. package/colors.d.ts.map +1 -0
  18. package/colors.mjs +250 -0
  19. package/colors.mjs.map +6 -0
  20. package/css-error.cjs +39 -0
  21. package/css-error.cjs.map +6 -0
  22. package/css-error.d.ts +13 -0
  23. package/css-error.d.ts.map +1 -0
  24. package/css-error.mjs +20 -0
  25. package/css-error.mjs.map +6 -0
  26. package/distance.cjs +66 -0
  27. package/distance.cjs.map +6 -0
  28. package/distance.d.ts +37 -0
  29. package/distance.d.ts.map +1 -0
  30. package/distance.mjs +47 -0
  31. package/distance.mjs.map +6 -0
  32. package/format.cjs +78 -0
  33. package/format.cjs.map +6 -0
  34. package/format.d.ts +18 -0
  35. package/format.d.ts.map +1 -0
  36. package/format.mjs +59 -0
  37. package/format.mjs.map +6 -0
  38. package/href.cjs +37 -0
  39. package/href.cjs.map +6 -0
  40. package/href.d.ts +29 -0
  41. package/href.d.ts.map +1 -0
  42. package/href.mjs +17 -0
  43. package/href.mjs.map +6 -0
  44. package/index.cjs +27 -0
  45. package/index.cjs.map +6 -0
  46. package/index.d.ts +10 -0
  47. package/index.d.ts.map +1 -0
  48. package/index.mjs +10 -0
  49. package/index.mjs.map +6 -0
  50. package/package.json +114 -0
  51. package/tokenizer.cjs +87 -0
  52. package/tokenizer.cjs.map +6 -0
  53. package/tokenizer.d.ts +34 -0
  54. package/tokenizer.d.ts.map +1 -0
  55. package/tokenizer.mjs +68 -0
  56. package/tokenizer.mjs.map +6 -0
  57. package/units.cjs +68 -0
  58. package/units.cjs.map +6 -0
  59. package/units.d.ts +15 -0
  60. package/units.d.ts.map +1 -0
  61. package/units.mjs +49 -0
  62. package/units.mjs.map +6 -0
package/format.mjs ADDED
@@ -0,0 +1,59 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { imprecise } from "../foundation/imprecise.mjs";
4
+ import { RESOLUTION_BY_UNIT } from "./distance.mjs";
5
+ const cssFormatDimension = /* @__PURE__ */ __name((value, units, resolution) => {
6
+ let res = resolution ?? (units == null ? void 0 : RESOLUTION_BY_UNIT[units]);
7
+ let text = imprecise(value, res);
8
+ if (text === "0" || units == null) {
9
+ return text;
10
+ }
11
+ return text.concat(units);
12
+ }, "cssFormatDimension");
13
+ const cssFormatPercent = /* @__PURE__ */ __name((value, resolution) => {
14
+ if (value == null) {
15
+ return "";
16
+ }
17
+ if (value === 0) {
18
+ return "0";
19
+ }
20
+ const v = value <= 1 ? value * 100 : value;
21
+ return cssFormatDimension(v, "%", resolution);
22
+ }, "cssFormatPercent");
23
+ const cssFormatAlpha01 = /* @__PURE__ */ __name((alpha, resolution) => {
24
+ if (alpha == null || alpha === 1) {
25
+ return "";
26
+ }
27
+ return " / ".concat(cssFormatPercent(alpha, resolution));
28
+ }, "cssFormatAlpha01");
29
+ const cssFormatHex = /* @__PURE__ */ __name((hex, format = "short") => {
30
+ let text = hex.toUpperCase();
31
+ if (!text.startsWith("#")) {
32
+ text = "#".concat(text);
33
+ }
34
+ if (format === "long" && text.length < 6) {
35
+ text = text.replace(/^#([A-F0-9])([A-F0-9])([A-F0-9])([A-F0-9])?$/, (_all, r, g, b, a) => {
36
+ const replacement = ["#", r, r, g, g, b, b];
37
+ if (a != null) {
38
+ replacement.push(a, a);
39
+ }
40
+ return replacement.join("");
41
+ });
42
+ } else if (format === "short" && text.length > 4) {
43
+ text = text.replace(/^#([A-F0-9])\1([A-F0-9])\2([A-F0-9])\3(?:([A-F0-9])\4)?$/, (_all, r, g, b, a) => {
44
+ const replacement = ["#", r, g, b];
45
+ if (a != null) {
46
+ replacement.push(a);
47
+ }
48
+ return replacement.join("");
49
+ });
50
+ }
51
+ return text;
52
+ }, "cssFormatHex");
53
+ export {
54
+ cssFormatAlpha01,
55
+ cssFormatDimension,
56
+ cssFormatHex,
57
+ cssFormatPercent
58
+ };
59
+ //# sourceMappingURL=format.mjs.map
package/format.mjs.map ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/css/format.ts"],
4
+ "mappings": ";;AAAA,SAAS,iBAAiB;AAC1B,SAAS,0BAA0B;AAM5B,MAAM,qBAAqB,wBAAC,OAAe,OAA4B,eAA4C;AACzH,MAAI,MAAM,eAAe,SAAS,OAAO,SAAY,mBAAoB,KAAM;AAC/E,MAAI,OAAO,UAAU,OAAO,GAAG;AAC/B,MAAI,SAAS,OAAO,SAAS,MAAM;AAClC,WAAO;AAAA,EACR;AACA,SAAO,KAAK,OAAO,KAAK;AACzB,GAPkC;AAY3B,MAAM,mBAAmB,wBAAC,OAA2B,eAA4C;AACvG,MAAI,SAAS,MAAM;AAClB,WAAO;AAAA,EACR;AACA,MAAI,UAAU,GAAG;AAChB,WAAO;AAAA,EACR;AACA,QAAM,IAAI,SAAS,IAAI,QAAQ,MAAM;AACrC,SAAO,mBAAmB,GAAG,KAAK,UAAU;AAC7C,GATgC;AAczB,MAAM,mBAAmB,wBAAC,OAA2B,eAA4C;AACvG,MAAI,SAAS,QAAQ,UAAU,GAAG;AACjC,WAAO;AAAA,EACR;AACA,SAAO,MAAM,OAAO,iBAAiB,OAAO,UAAU,CAAC;AACxD,GALgC;AAUzB,MAAM,eAAe,wBAAC,KAAa,SAA2B,YAAY;AAChF,MAAI,OAAO,IAAI,YAAY;AAC3B,MAAI,CAAC,KAAK,WAAW,GAAG,GAAG;AAC1B,WAAO,IAAI,OAAO,IAAI;AAAA,EACvB;AACA,MAAI,WAAW,UAAU,KAAK,SAAS,GAAG;AACzC,WAAO,KAAK,QAAQ,gDAAgD,CAAC,MAAM,GAAW,GAAW,GAAW,MAA0B;AACrI,YAAM,cAAc,CAAE,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE;AAC5C,UAAI,KAAK,MAAM;AACd,oBAAY,KAAK,GAAG,CAAC;AAAA,MACtB;AACA,aAAO,YAAY,KAAK,EAAE;AAAA,IAC3B,CAAC;AAAA,EACF,WAAW,WAAW,WAAW,KAAK,SAAS,GAAG;AACjD,WAAO,KAAK,QAAQ,4DAA4D,CAAC,MAAM,GAAW,GAAW,GAAW,MAA0B;AACjJ,YAAM,cAAc,CAAE,KAAK,GAAG,GAAG,CAAE;AACnC,UAAI,KAAK,MAAM;AACd,oBAAY,KAAK,CAAC;AAAA,MACnB;AACA,aAAO,YAAY,KAAK,EAAE;AAAA,IAC3B,CAAC;AAAA,EACF;AACA,SAAO;AACR,GAvB4B;",
5
+ "names": []
6
+ }
package/href.cjs ADDED
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var href_exports = {};
20
+ __export(href_exports, {
21
+ HREF_ABSOLUTE_LENGTH: () => HREF_ABSOLUTE_LENGTH,
22
+ HREF_ANGLE: () => HREF_ANGLE,
23
+ HREF_COLOR: () => HREF_COLOR,
24
+ HREF_COLOR_FN: () => HREF_COLOR_FN,
25
+ HREF_DIMENSION: () => HREF_DIMENSION,
26
+ HREF_LENGTH: () => HREF_LENGTH,
27
+ HREF_RELATIVE_LENGTH: () => HREF_RELATIVE_LENGTH
28
+ });
29
+ module.exports = __toCommonJS(href_exports);
30
+ const HREF_ANGLE = "https://www.w3.org/TR/css-values-4/#angle-value";
31
+ const HREF_RELATIVE_LENGTH = "https://www.w3.org/TR/css-values-4/#relative-lengths";
32
+ const HREF_ABSOLUTE_LENGTH = "https://www.w3.org/TR/css-values-4/#absolute-lengths";
33
+ const HREF_LENGTH = "https://www.w3.org/TR/css-values-4/#lengths";
34
+ const HREF_COLOR = "https://www.w3.org/TR/css-color-4/";
35
+ const HREF_COLOR_FN = "https://www.w3.org/TR/css-color-4/#funcdef-color";
36
+ const HREF_DIMENSION = "https://www.w3.org/TR/css-values-4/#dimensions";
37
+ //# sourceMappingURL=href.cjs.map
package/href.cjs.map ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/css/href.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,aAAa;AAKnB,MAAM,uBAAuB;AAK7B,MAAM,uBAAuB;AAK7B,MAAM,cAAc;AAKpB,MAAM,aAAa;AAKnB,MAAM,gBAAgB;AAKtB,MAAM,iBAAiB;",
5
+ "names": []
6
+ }
package/href.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export declare const HREF_ANGLE = "https://www.w3.org/TR/css-values-4/#angle-value";
5
+ /**
6
+ * @internal
7
+ */
8
+ export declare const HREF_RELATIVE_LENGTH = "https://www.w3.org/TR/css-values-4/#relative-lengths";
9
+ /**
10
+ * @internal
11
+ */
12
+ export declare const HREF_ABSOLUTE_LENGTH = "https://www.w3.org/TR/css-values-4/#absolute-lengths";
13
+ /**
14
+ * @internal
15
+ */
16
+ export declare const HREF_LENGTH = "https://www.w3.org/TR/css-values-4/#lengths";
17
+ /**
18
+ * @internal
19
+ */
20
+ export declare const HREF_COLOR = "https://www.w3.org/TR/css-color-4/";
21
+ /**
22
+ * @internal
23
+ */
24
+ export declare const HREF_COLOR_FN = "https://www.w3.org/TR/css-color-4/#funcdef-color";
25
+ /**
26
+ * @internal
27
+ */
28
+ export declare const HREF_DIMENSION = "https://www.w3.org/TR/css-values-4/#dimensions";
29
+ //# sourceMappingURL=href.d.ts.map
package/href.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"href.d.ts","sourceRoot":"","sources":["../../../src/packages/css/href.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,UAAU,oDAAoD,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,oBAAoB,yDAAyD,CAAC;AAE3F;;GAEG;AACH,eAAO,MAAM,oBAAoB,yDAAyD,CAAC;AAE3F;;GAEG;AACH,eAAO,MAAM,WAAW,gDAAgD,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,UAAU,uCAAuC,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,aAAa,qDAAqD,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,cAAc,mDAAmD,CAAC"}
package/href.mjs ADDED
@@ -0,0 +1,17 @@
1
+ const HREF_ANGLE = "https://www.w3.org/TR/css-values-4/#angle-value";
2
+ const HREF_RELATIVE_LENGTH = "https://www.w3.org/TR/css-values-4/#relative-lengths";
3
+ const HREF_ABSOLUTE_LENGTH = "https://www.w3.org/TR/css-values-4/#absolute-lengths";
4
+ const HREF_LENGTH = "https://www.w3.org/TR/css-values-4/#lengths";
5
+ const HREF_COLOR = "https://www.w3.org/TR/css-color-4/";
6
+ const HREF_COLOR_FN = "https://www.w3.org/TR/css-color-4/#funcdef-color";
7
+ const HREF_DIMENSION = "https://www.w3.org/TR/css-values-4/#dimensions";
8
+ export {
9
+ HREF_ABSOLUTE_LENGTH,
10
+ HREF_ANGLE,
11
+ HREF_COLOR,
12
+ HREF_COLOR_FN,
13
+ HREF_DIMENSION,
14
+ HREF_LENGTH,
15
+ HREF_RELATIVE_LENGTH
16
+ };
17
+ //# sourceMappingURL=href.mjs.map
package/href.mjs.map ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/css/href.ts"],
4
+ "mappings": "AAGO,MAAM,aAAa;AAKnB,MAAM,uBAAuB;AAK7B,MAAM,uBAAuB;AAK7B,MAAM,cAAc;AAKpB,MAAM,aAAa;AAKnB,MAAM,gBAAgB;AAKtB,MAAM,iBAAiB;",
5
+ "names": []
6
+ }
package/index.cjs ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var index_exports = {};
17
+ module.exports = __toCommonJS(index_exports);
18
+ __reExport(index_exports, require("./angle.cjs"), module.exports);
19
+ __reExport(index_exports, require("./color-parser.cjs"), module.exports);
20
+ __reExport(index_exports, require("./colors.cjs"), module.exports);
21
+ __reExport(index_exports, require("./css-error.cjs"), module.exports);
22
+ __reExport(index_exports, require("./distance.cjs"), module.exports);
23
+ __reExport(index_exports, require("./format.cjs"), module.exports);
24
+ __reExport(index_exports, require("./href.cjs"), module.exports);
25
+ __reExport(index_exports, require("./tokenizer.cjs"), module.exports);
26
+ __reExport(index_exports, require("./units.cjs"), module.exports);
27
+ //# sourceMappingURL=index.cjs.map
package/index.cjs.map ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/css/index.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,uBAAd;AACA,0BAAc,8BADd;AAEA,0BAAc,wBAFd;AAGA,0BAAc,2BAHd;AAIA,0BAAc,0BAJd;AAKA,0BAAc,wBALd;AAMA,0BAAc,sBANd;AAOA,0BAAc,2BAPd;AAQA,0BAAc,uBARd;",
5
+ "names": []
6
+ }
package/index.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ export * from "./angle";
2
+ export * from "./color-parser";
3
+ export * from "./colors";
4
+ export * from "./css-error";
5
+ export * from "./distance";
6
+ export * from "./format";
7
+ export * from "./href";
8
+ export * from "./tokenizer";
9
+ export * from "./units";
10
+ //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/packages/css/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
package/index.mjs ADDED
@@ -0,0 +1,10 @@
1
+ export * from "./angle.mjs";
2
+ export * from "./color-parser.mjs";
3
+ export * from "./colors.mjs";
4
+ export * from "./css-error.mjs";
5
+ export * from "./distance.mjs";
6
+ export * from "./format.mjs";
7
+ export * from "./href.mjs";
8
+ export * from "./tokenizer.mjs";
9
+ export * from "./units.mjs";
10
+ //# sourceMappingURL=index.mjs.map
package/index.mjs.map ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/css/index.ts"],
4
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
5
+ "names": []
6
+ }
package/package.json ADDED
@@ -0,0 +1,114 @@
1
+ {
2
+ "author": {
3
+ "name": "Rick Osborne",
4
+ "url": "https://rickosborne.org"
5
+ },
6
+ "dependencies": {
7
+ "@rickosborne/foundation": "2025.2.16",
8
+ "@rickosborne/guard": "2025.2.16",
9
+ "@rickosborne/typical": "2025.2.16"
10
+ },
11
+ "description": "Rick Osborne's collection of CSS-related code.",
12
+ "engines": {
13
+ "node": ">=14"
14
+ },
15
+ "exports": {
16
+ ".": {
17
+ "types": "./index.d.ts",
18
+ "import": "./index.mjs",
19
+ "require": "./index.cjs",
20
+ "default": "./index.mjs"
21
+ },
22
+ "./*.js": {
23
+ "types": "./*.d.ts",
24
+ "import": "./*.mjs",
25
+ "require": "./*.cjs",
26
+ "default": "./*.mjs"
27
+ },
28
+ "./angle": {
29
+ "types": "./angle.d.ts",
30
+ "import": "./angle.mjs",
31
+ "require": "./angle.cjs",
32
+ "default": "./angle.mjs"
33
+ },
34
+ "./color-parser": {
35
+ "types": "./color-parser.d.ts",
36
+ "import": "./color-parser.mjs",
37
+ "require": "./color-parser.cjs",
38
+ "default": "./color-parser.mjs"
39
+ },
40
+ "./colors": {
41
+ "types": "./colors.d.ts",
42
+ "import": "./colors.mjs",
43
+ "require": "./colors.cjs",
44
+ "default": "./colors.mjs"
45
+ },
46
+ "./css-error": {
47
+ "types": "./css-error.d.ts",
48
+ "import": "./css-error.mjs",
49
+ "require": "./css-error.cjs",
50
+ "default": "./css-error.mjs"
51
+ },
52
+ "./distance": {
53
+ "types": "./distance.d.ts",
54
+ "import": "./distance.mjs",
55
+ "require": "./distance.cjs",
56
+ "default": "./distance.mjs"
57
+ },
58
+ "./format": {
59
+ "types": "./format.d.ts",
60
+ "import": "./format.mjs",
61
+ "require": "./format.cjs",
62
+ "default": "./format.mjs"
63
+ },
64
+ "./href": {
65
+ "types": "./href.d.ts",
66
+ "import": "./href.mjs",
67
+ "require": "./href.cjs",
68
+ "default": "./href.mjs"
69
+ },
70
+ "./tokenizer": {
71
+ "types": "./tokenizer.d.ts",
72
+ "import": "./tokenizer.mjs",
73
+ "require": "./tokenizer.cjs",
74
+ "default": "./tokenizer.mjs"
75
+ },
76
+ "./units": {
77
+ "types": "./units.d.ts",
78
+ "import": "./units.mjs",
79
+ "require": "./units.cjs",
80
+ "default": "./units.mjs"
81
+ }
82
+ },
83
+ "git": {
84
+ "authorName": "Rick Osborne",
85
+ "commitDateISO": "2025-02-17T01:56:13.000Z",
86
+ "commitHash": "2752126d79472c1f03b198ee33bcc30ff3a945a1",
87
+ "commitLink": "https://github.com/rickosborne/es-js-ts/commits/2752126d79472c1f03b198ee33bcc30ff3a945a1",
88
+ "parentHash": "94ad06ec519f22510af76f7ed91b46920aab1c7b",
89
+ "signingKeyId": "8e61c433fe39d4a4679ce1d5b873fb3c48464f3c",
90
+ "tag": "v2025.2.16"
91
+ },
92
+ "homepage": "https://github.com/rickosborne/es-js-ts",
93
+ "keywords": [
94
+ "typescript",
95
+ "color"
96
+ ],
97
+ "license": "CC-BY-NC-SA-4.0",
98
+ "main": "./index.cjs",
99
+ "module": "./index.mjs",
100
+ "name": "@rickosborne/css",
101
+ "private": false,
102
+ "publishConfig": {
103
+ "access": "public"
104
+ },
105
+ "readme": "README.md",
106
+ "repository": {
107
+ "directory": "src/packages/css",
108
+ "type": "git",
109
+ "url": "git+https://github.com/rickosborne/es-js-ts.git"
110
+ },
111
+ "types": "./index.d.ts",
112
+ "typings": "./index.d.ts",
113
+ "version": "2025.2.16"
114
+ }
package/tokenizer.cjs ADDED
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var tokenizer_exports = {};
21
+ __export(tokenizer_exports, {
22
+ readFromCSS: () => readFromCSS
23
+ });
24
+ module.exports = __toCommonJS(tokenizer_exports);
25
+ var import_css_error = require("./css-error.cjs");
26
+ const readFromCSS = /* @__PURE__ */ __name((text) => {
27
+ let remain = text.trim();
28
+ const done = /* @__PURE__ */ __name(() => remain.length === 0, "done");
29
+ return {
30
+ pull(...matchers) {
31
+ if (done()) {
32
+ return void 0;
33
+ }
34
+ for (const matcherOrType of matchers) {
35
+ const matcher = typeof matcherOrType === "string" ? { type: matcherOrType } : matcherOrType;
36
+ const { type, match } = matcher;
37
+ let pattern;
38
+ let builder;
39
+ const matchSet = match == null ? /* @__PURE__ */ new Set() : match instanceof Set ? match : typeof match === "string" ? new Set(match) : new Set(match);
40
+ switch (type) {
41
+ case "number": {
42
+ pattern = /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?/;
43
+ builder = /* @__PURE__ */ __name((f) => ({ type: "number", value: parseFloat(f) }), "builder");
44
+ break;
45
+ }
46
+ case "function": {
47
+ pattern = /^(\w+)\(/;
48
+ builder = /* @__PURE__ */ __name((name) => ({ name, type: "function" }), "builder");
49
+ break;
50
+ }
51
+ case "hex": {
52
+ pattern = /^#[a-fA-F0-9]+/;
53
+ builder = /* @__PURE__ */ __name((hex) => ({ hex, type: "hex" }), "builder");
54
+ break;
55
+ }
56
+ case "keyword": {
57
+ pattern = new RegExp("^\\p{ID_Start}[-\\p{ID_Continue}]*", "u");
58
+ builder = /* @__PURE__ */ __name((keyword) => ({ keyword, type: "keyword" }), "builder");
59
+ break;
60
+ }
61
+ case "literal": {
62
+ if (matchSet.size == 0) {
63
+ throw new import_css_error.CSSError(text, { expected: "match[]", message: "Unspecified literal" });
64
+ }
65
+ pattern = new RegExp("^".concat(Array.from(matchSet).map((t) => t.replace(/([\\()[\].^${}])/g, "\\$1")).join("|")));
66
+ builder = /* @__PURE__ */ __name((literal) => ({ literal, type: "literal" }), "builder");
67
+ break;
68
+ }
69
+ default: {
70
+ throw new import_css_error.CSSError(type, { expected: "type", message: `Unknown token type: ${type}` });
71
+ }
72
+ }
73
+ const peek = pattern.exec(remain);
74
+ if (peek != null) {
75
+ let remove = peek[0];
76
+ let matched = peek[1] ?? peek[0];
77
+ if (matchSet.has(matched) || matchSet.size === 0) {
78
+ remain = remain.substring(remove.length).trim();
79
+ return builder(matched);
80
+ }
81
+ }
82
+ }
83
+ return void 0;
84
+ }
85
+ };
86
+ }, "readFromCSS");
87
+ //# sourceMappingURL=tokenizer.cjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/css/tokenizer.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAyB;AA2ClB,MAAM,cAAc,wBAC1B,SACoB;AACpB,MAAI,SAAS,KAAK,KAAK;AACvB,QAAM,OAAO,6BAAM,OAAO,WAAW,GAAxB;AACb,SAAO;AAAA,IACN,QAAuC,UAA8F;AACpI,UAAI,KAAK,GAAG;AACX,eAAO;AAAA,MACR;AACA,iBAAW,iBAAiB,UAAU;AACrC,cAAM,UAAU,OAAO,kBAAkB,WAAW,EAAE,MAAM,cAAc,IAAI;AAC9E,cAAM,EAAE,MAAM,MAAM,IAAI;AACxB,YAAI;AACJ,YAAI;AACJ,cAAM,WAAW,SAAS,OAAO,oBAAI,IAAY,IAAI,iBAAiB,MAAM,QAAQ,OAAO,UAAU,WAAW,IAAI,IAAY,KAAK,IAAI,IAAI,IAAY,KAAK;AAC9J,gBAAQ,MAAM;AAAA,UACb,KAAK,UAAU;AACd,sBAAU;AACV,sBAAU,wBAAC,OAAO,EAAE,MAAM,UAAU,OAAO,WAAW,CAAC,EAAE,IAA/C;AACV;AAAA,UACD;AAAA,UACA,KAAK,YAAY;AAChB,sBAAU;AACV,sBAAU,wBAAC,UAAU,EAAE,MAAM,MAAM,WAAW,IAApC;AACV;AAAA,UACD;AAAA,UACA,KAAK,OAAO;AACX,sBAAU;AACV,sBAAU,wBAAC,SAAS,EAAE,KAAK,MAAM,MAAM,IAA7B;AACV;AAAA,UACD;AAAA,UACA,KAAK,WAAW;AACf,sBAAU,WAAC,sCAAiC,GAAC;AAC7C,sBAAU,wBAAC,aAAa,EAAE,SAAS,MAAM,UAAU,IAAzC;AACV;AAAA,UACD;AAAA,UACA,KAAK,WAAW;AACf,gBAAI,SAAS,QAAQ,GAAG;AACvB,oBAAM,IAAI,0BAAS,MAAM,EAAE,UAAU,WAAW,SAAS,sBAAsB,CAAC;AAAA,YACjF;AACA,sBAAU,IAAI,OAAO,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,qBAAqB,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;AAClH,sBAAU,wBAAC,aAAa,EAAE,SAAS,MAAM,UAAU,IAAzC;AACV;AAAA,UACD;AAAA,UACA,SAAS;AACR,kBAAM,IAAI,0BAAS,MAAM,EAAE,UAAU,QAAQ,SAAS,uBAAwB,IAAK,GAAG,CAAC;AAAA,UACxF;AAAA,QACD;AACA,cAAM,OAAO,QAAQ,KAAK,MAAM;AAChC,YAAI,QAAQ,MAAM;AACjB,cAAI,SAAS,KAAM,CAAE;AACrB,cAAI,UAAU,KAAM,CAAE,KAAK,KAAM,CAAE;AACnC,cAAI,SAAS,IAAI,OAAO,KAAK,SAAS,SAAS,GAAG;AACjD,qBAAS,OAAO,UAAU,OAAO,MAAM,EAAE,KAAK;AAC9C,mBAAO,QAAQ,OAAO;AAAA,UACvB;AAAA,QACD;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAAA,EACD;AACD,GA9D2B;",
5
+ "names": []
6
+ }
package/tokenizer.d.ts ADDED
@@ -0,0 +1,34 @@
1
+ export interface CSSColorToken<Type extends string = string> {
2
+ type: Type;
3
+ }
4
+ export interface CSSLiteralToken extends CSSColorToken<"literal"> {
5
+ literal: string;
6
+ }
7
+ export interface CSSHexHashToken extends CSSColorToken<"hex"> {
8
+ hex: string;
9
+ }
10
+ export interface CSSKeywordToken extends CSSColorToken<"keyword"> {
11
+ keyword: string;
12
+ }
13
+ export interface CSSFunctionToken extends CSSColorToken<"function"> {
14
+ name: string;
15
+ }
16
+ export interface CSSNumberToken extends CSSColorToken<"number"> {
17
+ value: number;
18
+ }
19
+ export interface CSSTokenReaderMatcher<Type extends CSSToken["type"] = CSSToken["type"]> {
20
+ match?: string[] | readonly string[] | Set<string> | undefined;
21
+ type: Type;
22
+ }
23
+ export type CSSToken = CSSKeywordToken | CSSFunctionToken | CSSHexHashToken | CSSLiteralToken | CSSNumberToken;
24
+ export interface CSSTokenReader {
25
+ pull<Type extends CSSToken["type"]>(...matchers: (Type | CSSTokenReaderMatcher<Type>)[]): CSSColorToken<Type> & CSSToken | undefined;
26
+ }
27
+ /**
28
+ * Minimal CSS pull parser, which only supports the happy-path
29
+ * tokens expected in a CSS color expression. Does not support
30
+ * anywhere near the full CSS Colors spec, but it'll do in a pinch.
31
+ * @see {@link https://www.w3.org/TR/css-color-4/ | CSS Color Level 4}
32
+ */
33
+ export declare const readFromCSS: (text: string) => CSSTokenReader;
34
+ //# sourceMappingURL=tokenizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../../src/packages/css/tokenizer.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IAC1D,IAAI,EAAE,IAAI,CAAC;CACX;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa,CAAC,SAAS,CAAC;IAChE,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa,CAAC,KAAK,CAAC;IAC5D,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa,CAAC,SAAS,CAAC;IAChE,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa,CAAC,UAAU,CAAC;IAClE,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa,CAAC,QAAQ,CAAC;IAC9D,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB,CAAC,IAAI,SAAS,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IACtF,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC/D,IAAI,EAAE,IAAI,CAAC;CACX;AAED,MAAM,MAAM,QAAQ,GAAG,eAAe,GAAG,gBAAgB,GAAG,eAAe,GAAG,eAAe,GAAG,cAAc,CAAC;AAE/G,MAAM,WAAW,cAAc;IAC9B,IAAI,CAAC,IAAI,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,SAAS,CAAC;CACrI;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,SACjB,MAAM,KACV,cA4DF,CAAC"}
package/tokenizer.mjs ADDED
@@ -0,0 +1,68 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { CSSError } from "./css-error.mjs";
4
+ const readFromCSS = /* @__PURE__ */ __name((text) => {
5
+ let remain = text.trim();
6
+ const done = /* @__PURE__ */ __name(() => remain.length === 0, "done");
7
+ return {
8
+ pull(...matchers) {
9
+ if (done()) {
10
+ return void 0;
11
+ }
12
+ for (const matcherOrType of matchers) {
13
+ const matcher = typeof matcherOrType === "string" ? { type: matcherOrType } : matcherOrType;
14
+ const { type, match } = matcher;
15
+ let pattern;
16
+ let builder;
17
+ const matchSet = match == null ? /* @__PURE__ */ new Set() : match instanceof Set ? match : typeof match === "string" ? new Set(match) : new Set(match);
18
+ switch (type) {
19
+ case "number": {
20
+ pattern = /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?/;
21
+ builder = /* @__PURE__ */ __name((f) => ({ type: "number", value: parseFloat(f) }), "builder");
22
+ break;
23
+ }
24
+ case "function": {
25
+ pattern = /^(\w+)\(/;
26
+ builder = /* @__PURE__ */ __name((name) => ({ name, type: "function" }), "builder");
27
+ break;
28
+ }
29
+ case "hex": {
30
+ pattern = /^#[a-fA-F0-9]+/;
31
+ builder = /* @__PURE__ */ __name((hex) => ({ hex, type: "hex" }), "builder");
32
+ break;
33
+ }
34
+ case "keyword": {
35
+ pattern = new RegExp("^\\p{ID_Start}[-\\p{ID_Continue}]*", "u");
36
+ builder = /* @__PURE__ */ __name((keyword) => ({ keyword, type: "keyword" }), "builder");
37
+ break;
38
+ }
39
+ case "literal": {
40
+ if (matchSet.size == 0) {
41
+ throw new CSSError(text, { expected: "match[]", message: "Unspecified literal" });
42
+ }
43
+ pattern = new RegExp("^".concat(Array.from(matchSet).map((t) => t.replace(/([\\()[\].^${}])/g, "\\$1")).join("|")));
44
+ builder = /* @__PURE__ */ __name((literal) => ({ literal, type: "literal" }), "builder");
45
+ break;
46
+ }
47
+ default: {
48
+ throw new CSSError(type, { expected: "type", message: `Unknown token type: ${type}` });
49
+ }
50
+ }
51
+ const peek = pattern.exec(remain);
52
+ if (peek != null) {
53
+ let remove = peek[0];
54
+ let matched = peek[1] ?? peek[0];
55
+ if (matchSet.has(matched) || matchSet.size === 0) {
56
+ remain = remain.substring(remove.length).trim();
57
+ return builder(matched);
58
+ }
59
+ }
60
+ }
61
+ return void 0;
62
+ }
63
+ };
64
+ }, "readFromCSS");
65
+ export {
66
+ readFromCSS
67
+ };
68
+ //# sourceMappingURL=tokenizer.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/css/tokenizer.ts"],
4
+ "mappings": ";;AAAA,SAAS,gBAAgB;AA2ClB,MAAM,cAAc,wBAC1B,SACoB;AACpB,MAAI,SAAS,KAAK,KAAK;AACvB,QAAM,OAAO,6BAAM,OAAO,WAAW,GAAxB;AACb,SAAO;AAAA,IACN,QAAuC,UAA8F;AACpI,UAAI,KAAK,GAAG;AACX,eAAO;AAAA,MACR;AACA,iBAAW,iBAAiB,UAAU;AACrC,cAAM,UAAU,OAAO,kBAAkB,WAAW,EAAE,MAAM,cAAc,IAAI;AAC9E,cAAM,EAAE,MAAM,MAAM,IAAI;AACxB,YAAI;AACJ,YAAI;AACJ,cAAM,WAAW,SAAS,OAAO,oBAAI,IAAY,IAAI,iBAAiB,MAAM,QAAQ,OAAO,UAAU,WAAW,IAAI,IAAY,KAAK,IAAI,IAAI,IAAY,KAAK;AAC9J,gBAAQ,MAAM;AAAA,UACb,KAAK,UAAU;AACd,sBAAU;AACV,sBAAU,wBAAC,OAAO,EAAE,MAAM,UAAU,OAAO,WAAW,CAAC,EAAE,IAA/C;AACV;AAAA,UACD;AAAA,UACA,KAAK,YAAY;AAChB,sBAAU;AACV,sBAAU,wBAAC,UAAU,EAAE,MAAM,MAAM,WAAW,IAApC;AACV;AAAA,UACD;AAAA,UACA,KAAK,OAAO;AACX,sBAAU;AACV,sBAAU,wBAAC,SAAS,EAAE,KAAK,MAAM,MAAM,IAA7B;AACV;AAAA,UACD;AAAA,UACA,KAAK,WAAW;AACf,sBAAU,WAAC,sCAAiC,GAAC;AAC7C,sBAAU,wBAAC,aAAa,EAAE,SAAS,MAAM,UAAU,IAAzC;AACV;AAAA,UACD;AAAA,UACA,KAAK,WAAW;AACf,gBAAI,SAAS,QAAQ,GAAG;AACvB,oBAAM,IAAI,SAAS,MAAM,EAAE,UAAU,WAAW,SAAS,sBAAsB,CAAC;AAAA,YACjF;AACA,sBAAU,IAAI,OAAO,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,qBAAqB,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;AAClH,sBAAU,wBAAC,aAAa,EAAE,SAAS,MAAM,UAAU,IAAzC;AACV;AAAA,UACD;AAAA,UACA,SAAS;AACR,kBAAM,IAAI,SAAS,MAAM,EAAE,UAAU,QAAQ,SAAS,uBAAwB,IAAK,GAAG,CAAC;AAAA,UACxF;AAAA,QACD;AACA,cAAM,OAAO,QAAQ,KAAK,MAAM;AAChC,YAAI,QAAQ,MAAM;AACjB,cAAI,SAAS,KAAM,CAAE;AACrB,cAAI,UAAU,KAAM,CAAE,KAAK,KAAM,CAAE;AACnC,cAAI,SAAS,IAAI,OAAO,KAAK,SAAS,SAAS,GAAG;AACjD,qBAAS,OAAO,UAAU,OAAO,MAAM,EAAE,KAAK;AAC9C,mBAAO,QAAQ,OAAO;AAAA,UACvB;AAAA,QACD;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAAA,EACD;AACD,GA9D2B;",
5
+ "names": []
6
+ }
package/units.cjs ADDED
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var units_exports = {};
21
+ __export(units_exports, {
22
+ convertBetweenUnits: () => convertBetweenUnits,
23
+ dimensionFromCSS: () => dimensionFromCSS
24
+ });
25
+ module.exports = __toCommonJS(units_exports);
26
+ var import_css_error = require("./css-error.cjs");
27
+ var import_href = require("./href.cjs");
28
+ const convertBetweenUnits = /* @__PURE__ */ __name((original, fromUnit, toUnit, conversions, format) => {
29
+ if (original == null) {
30
+ return void 0;
31
+ }
32
+ const divisor = conversions[fromUnit];
33
+ const numerator = conversions[toUnit];
34
+ if (divisor == null || numerator == null) {
35
+ return void 0;
36
+ }
37
+ let converted;
38
+ if (divisor === numerator) {
39
+ converted = original;
40
+ } else {
41
+ converted = original * numerator / divisor;
42
+ }
43
+ return (format == null ? void 0 : format(converted)) ?? converted;
44
+ }, "convertBetweenUnits");
45
+ const dimensionFromCSS = /* @__PURE__ */ __name((text) => {
46
+ if (text == null || text.trim() === "") {
47
+ return [void 0, void 0];
48
+ }
49
+ let t = text.trim().toLowerCase();
50
+ if (t === "none" || t === "0") {
51
+ return [0, void 0];
52
+ }
53
+ const numMatch = /^-?\d+(?:\.\d*)?/.exec(t);
54
+ if (numMatch == null) {
55
+ throw new import_css_error.CSSError(text, { expected: "Number", href: import_href.HREF_DIMENSION });
56
+ }
57
+ const real = numMatch[0];
58
+ t = t.substring(real.length).trim();
59
+ const value = parseFloat(real);
60
+ if (t === "") {
61
+ return [value, void 0];
62
+ }
63
+ if (t === "%" || new RegExp("^\\p{ID_Start}\\p{ID_Continue}*$", "u").test(t)) {
64
+ return [value, t.toLowerCase()];
65
+ }
66
+ throw new import_css_error.CSSError(text, { expected: "Unit", href: import_href.HREF_DIMENSION, message: `Non-unit after number: ${t}` });
67
+ }, "dimensionFromCSS");
68
+ //# sourceMappingURL=units.cjs.map
package/units.cjs.map ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/packages/css/units.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAyB;AACzB,kBAA+B;AAgBxB,MAAM,sBAAsB,wBAClC,UACA,UACA,QACA,aACA,WAC8B;AAC9B,MAAI,YAAY,MAAM;AACrB,WAAO;AAAA,EACR;AACA,QAAM,UAAU,YAAa,QAAS;AACtC,QAAM,YAAY,YAAa,MAAO;AACtC,MAAI,WAAW,QAAQ,aAAa,MAAM;AACzC,WAAO;AAAA,EACR;AACA,MAAI;AACJ,MAAI,YAAY,WAAW;AAC1B,gBAAY;AAAA,EACb,OAAO;AACN,gBAAY,WAAW,YAAY;AAAA,EACpC;AACA,UAAO,iCAAS,eAAe;AAChC,GAtBmC;AAwB5B,MAAM,mBAAmB,wBAAC,SAAoD;AACpF,MAAI,QAAQ,QAAQ,KAAK,KAAK,MAAM,IAAI;AACvC,WAAO,CAAE,QAAW,MAAU;AAAA,EAC/B;AACA,MAAI,IAAI,KAAK,KAAK,EAAE,YAAY;AAChC,MAAI,MAAM,UAAU,MAAM,KAAK;AAC9B,WAAO,CAAE,GAAG,MAAU;AAAA,EACvB;AACA,QAAM,WAAW,mBAAmB,KAAK,CAAC;AAC1C,MAAI,YAAY,MAAM;AACrB,UAAM,IAAI,0BAAS,MAAM,EAAE,UAAU,UAAU,MAAM,2BAAe,CAAC;AAAA,EACtE;AACA,QAAM,OAAO,SAAU,CAAE;AACzB,MAAI,EAAE,UAAU,KAAK,MAAM,EAAE,KAAK;AAClC,QAAM,QAAQ,WAAW,IAAI;AAC7B,MAAI,MAAM,IAAI;AACb,WAAO,CAAE,OAAO,MAAU;AAAA,EAC3B;AACA,MAAI,MAAM,OAAO,WAAC,oCAA+B,GAAC,EAAC,KAAK,CAAC,GAAG;AAC3D,WAAO,CAAE,OAAO,EAAE,YAAY,CAAE;AAAA,EACjC;AACA,QAAM,IAAI,0BAAS,MAAM,EAAE,UAAU,QAAQ,MAAM,4BAAgB,SAAS,0BAA2B,CAAE,GAAG,CAAC;AAC9G,GAtBgC;",
5
+ "names": []
6
+ }