@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.
- package/README.md +736 -0
- package/angle.cjs +57 -0
- package/angle.cjs.map +6 -0
- package/angle.d.ts +16 -0
- package/angle.d.ts.map +1 -0
- package/angle.mjs +38 -0
- package/angle.mjs.map +6 -0
- package/color-parser.cjs +132 -0
- package/color-parser.cjs.map +6 -0
- package/color-parser.d.ts +28 -0
- package/color-parser.d.ts.map +1 -0
- package/color-parser.mjs +113 -0
- package/color-parser.mjs.map +6 -0
- package/colors.cjs +269 -0
- package/colors.cjs.map +6 -0
- package/colors.d.ts +193 -0
- package/colors.d.ts.map +1 -0
- package/colors.mjs +250 -0
- package/colors.mjs.map +6 -0
- package/css-error.cjs +39 -0
- package/css-error.cjs.map +6 -0
- package/css-error.d.ts +13 -0
- package/css-error.d.ts.map +1 -0
- package/css-error.mjs +20 -0
- package/css-error.mjs.map +6 -0
- package/distance.cjs +66 -0
- package/distance.cjs.map +6 -0
- package/distance.d.ts +37 -0
- package/distance.d.ts.map +1 -0
- package/distance.mjs +47 -0
- package/distance.mjs.map +6 -0
- package/format.cjs +78 -0
- package/format.cjs.map +6 -0
- package/format.d.ts +18 -0
- package/format.d.ts.map +1 -0
- package/format.mjs +59 -0
- package/format.mjs.map +6 -0
- package/href.cjs +37 -0
- package/href.cjs.map +6 -0
- package/href.d.ts +29 -0
- package/href.d.ts.map +1 -0
- package/href.mjs +17 -0
- package/href.mjs.map +6 -0
- package/index.cjs +27 -0
- package/index.cjs.map +6 -0
- package/index.d.ts +10 -0
- package/index.d.ts.map +1 -0
- package/index.mjs +10 -0
- package/index.mjs.map +6 -0
- package/package.json +114 -0
- package/tokenizer.cjs +87 -0
- package/tokenizer.cjs.map +6 -0
- package/tokenizer.d.ts +34 -0
- package/tokenizer.d.ts.map +1 -0
- package/tokenizer.mjs +68 -0
- package/tokenizer.mjs.map +6 -0
- package/units.cjs +68 -0
- package/units.cjs.map +6 -0
- package/units.d.ts +15 -0
- package/units.d.ts.map +1 -0
- package/units.mjs +49 -0
- 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
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
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
|
+
}
|