@terrazzo/token-tools 0.7.3 → 0.8.0
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/CHANGELOG.md +12 -0
- package/dist/css.d.ts +158 -0
- package/dist/css.d.ts.map +1 -0
- package/dist/css.js +351 -0
- package/dist/css.js.map +1 -0
- package/dist/index.d.ts +69 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +55 -29
- package/dist/index.js.map +1 -1
- package/dist/js.d.ts +23 -0
- package/dist/js.d.ts.map +1 -0
- package/dist/js.js +13 -0
- package/dist/js.js.map +1 -0
- package/dist/string-BZ5Le1WD.js +259 -0
- package/dist/string-BZ5Le1WD.js.map +1 -0
- package/dist/types-C68LbU3N.d.ts +403 -0
- package/dist/types-C68LbU3N.d.ts.map +1 -0
- package/package.json +9 -11
- package/rolldown.config.ts +17 -0
- package/dist/color.d.ts +0 -26
- package/dist/color.d.ts.map +0 -1
- package/dist/color.js +0 -149
- package/dist/color.js.map +0 -1
- package/dist/css/boolean.d.ts +0 -5
- package/dist/css/boolean.d.ts.map +0 -1
- package/dist/css/boolean.js +0 -9
- package/dist/css/boolean.js.map +0 -1
- package/dist/css/border.d.ts +0 -10
- package/dist/css/border.d.ts.map +0 -1
- package/dist/css/border.js +0 -31
- package/dist/css/border.js.map +0 -1
- package/dist/css/color.d.ts +0 -11
- package/dist/css/color.d.ts.map +0 -1
- package/dist/css/color.js +0 -54
- package/dist/css/color.js.map +0 -1
- package/dist/css/css-types.d.ts +0 -13
- package/dist/css/css-types.d.ts.map +0 -1
- package/dist/css/css-types.js +0 -2
- package/dist/css/css-types.js.map +0 -1
- package/dist/css/cubic-bezier.d.ts +0 -5
- package/dist/css/cubic-bezier.d.ts.map +0 -1
- package/dist/css/cubic-bezier.js +0 -12
- package/dist/css/cubic-bezier.js.map +0 -1
- package/dist/css/dimension.d.ts +0 -5
- package/dist/css/dimension.d.ts.map +0 -1
- package/dist/css/dimension.js +0 -10
- package/dist/css/dimension.js.map +0 -1
- package/dist/css/duration.d.ts +0 -5
- package/dist/css/duration.d.ts.map +0 -1
- package/dist/css/duration.js +0 -10
- package/dist/css/duration.js.map +0 -1
- package/dist/css/font-family.d.ts +0 -4
- package/dist/css/font-family.d.ts.map +0 -1
- package/dist/css/font-family.js +0 -10
- package/dist/css/font-family.js.map +0 -1
- package/dist/css/font-weight.d.ts +0 -5
- package/dist/css/font-weight.d.ts.map +0 -1
- package/dist/css/font-weight.js +0 -10
- package/dist/css/font-weight.js.map +0 -1
- package/dist/css/gradient.d.ts +0 -6
- package/dist/css/gradient.d.ts.map +0 -1
- package/dist/css/gradient.js +0 -37
- package/dist/css/gradient.js.map +0 -1
- package/dist/css/index.d.ts +0 -24
- package/dist/css/index.d.ts.map +0 -1
- package/dist/css/index.js +0 -97
- package/dist/css/index.js.map +0 -1
- package/dist/css/lib.d.ts +0 -24
- package/dist/css/lib.d.ts.map +0 -1
- package/dist/css/lib.js +0 -35
- package/dist/css/lib.js.map +0 -1
- package/dist/css/link.d.ts +0 -5
- package/dist/css/link.d.ts.map +0 -1
- package/dist/css/link.js +0 -10
- package/dist/css/link.js.map +0 -1
- package/dist/css/number.d.ts +0 -5
- package/dist/css/number.d.ts.map +0 -1
- package/dist/css/number.js +0 -10
- package/dist/css/number.js.map +0 -1
- package/dist/css/shadow.d.ts +0 -10
- package/dist/css/shadow.d.ts.map +0 -1
- package/dist/css/shadow.js +0 -51
- package/dist/css/shadow.js.map +0 -1
- package/dist/css/string.d.ts +0 -5
- package/dist/css/string.d.ts.map +0 -1
- package/dist/css/string.js +0 -12
- package/dist/css/string.js.map +0 -1
- package/dist/css/stroke-style.d.ts +0 -5
- package/dist/css/stroke-style.d.ts.map +0 -1
- package/dist/css/stroke-style.js +0 -10
- package/dist/css/stroke-style.js.map +0 -1
- package/dist/css/transition.d.ts +0 -5
- package/dist/css/transition.d.ts.map +0 -1
- package/dist/css/transition.js +0 -21
- package/dist/css/transition.js.map +0 -1
- package/dist/css/typography.d.ts +0 -5
- package/dist/css/typography.d.ts.map +0 -1
- package/dist/css/typography.js +0 -55
- package/dist/css/typography.js.map +0 -1
- package/dist/id.d.ts +0 -16
- package/dist/id.d.ts.map +0 -1
- package/dist/id.js +0 -46
- package/dist/id.js.map +0 -1
- package/dist/js/index.d.ts +0 -13
- package/dist/js/index.d.ts.map +0 -1
- package/dist/js/index.js +0 -16
- package/dist/js/index.js.map +0 -1
- package/dist/string.d.ts +0 -7
- package/dist/string.d.ts.map +0 -1
- package/dist/string.js +0 -47
- package/dist/string.js.map +0 -1
- package/dist/transform.d.ts +0 -7
- package/dist/transform.d.ts.map +0 -1
- package/dist/transform.js +0 -17
- package/dist/transform.js.map +0 -1
- package/dist/types.d.ts +0 -397
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { AliasToken, AliasValue, BooleanToken, BooleanTokenNormalized, BooleanValue, BorderToken, BorderTokenNormalized, BorderValue, BorderValueNormalized, ColorSpace, ColorToken, ColorTokenNormalized, ColorValue, ColorValueNormalized, CubicBezierToken, CubicBezierTokenNormalized, CubicBezierValue, DimensionToken, DimensionTokenNormalized, DimensionValue, DurationToken, DurationTokenNormalized, DurationValue, FontFamilyToken, FontFamilyTokenNormalized, FontFamilyValue, FontFamilyValueNormalized, FontWeightToken, FontWeightTokenNormalized, FontWeightValue, FontWeightValueNormalized, GradientStop, GradientStopNormalized, GradientToken, GradientTokenNormalized, GradientValue, GradientValueNormalized, Group, GroupCore, GroupOrToken, LinkToken, LinkTokenNormalized, LinkValue, ModeMap, NumberToken, NumberTokenNormalized, NumberValue, ShadowToken, ShadowTokenNormalized, ShadowValue, ShadowValueNormalized, StringToken, StringTokenNormalized, StringValue, StrokeStyleToken, StrokeStyleTokenNormalized, StrokeStyleValue, StrokeStyleValueExpanded, Token, TokenCore, TokenMode, TokenNormalized, TokenNormalizedCore, TokenNormalizedSet, TokensSet, TransitionToken, TransitionTokenNormalized, TransitionValue, TransitionValueNormalized, TypographyToken, TypographyTokenNormalized, TypographyValue, TypographyValueNormalized } from "./types-C68LbU3N.js";
|
|
2
|
+
import "culori/css";
|
|
3
|
+
import { Color } from "culori/fn";
|
|
4
|
+
|
|
5
|
+
//#region src/color.d.ts
|
|
6
|
+
declare const CULORI_TO_CSS: Record<Extract<Color['mode'], 'a98' | 'lab' | 'lch' | 'oklab' | 'oklch' | 'hsl' | 'hsv' | 'hwb' | 'lrgb' | 'p3' | 'prophoto' | 'rec2020' | 'rgb' | 'xyz50' | 'xyz65'>, ColorSpace>;
|
|
7
|
+
declare const CSS_TO_CULORI: {
|
|
8
|
+
readonly a98: "a98";
|
|
9
|
+
readonly 'display-p3': "p3";
|
|
10
|
+
readonly hsl: "hsl";
|
|
11
|
+
readonly hsv: "hsv";
|
|
12
|
+
readonly hwb: "hwb";
|
|
13
|
+
readonly lab: "lab";
|
|
14
|
+
readonly lch: "lch";
|
|
15
|
+
readonly oklab: "oklab";
|
|
16
|
+
readonly oklch: "oklch";
|
|
17
|
+
readonly 'prophoto-rgb': "prophoto";
|
|
18
|
+
readonly rec2020: "rec2020";
|
|
19
|
+
readonly srgb: "rgb";
|
|
20
|
+
readonly 'srgb-linear': "lrgb";
|
|
21
|
+
readonly 'xyz-d50': "xyz50";
|
|
22
|
+
readonly 'xyz-d65': "xyz65";
|
|
23
|
+
};
|
|
24
|
+
/** Parse any color */
|
|
25
|
+
declare function parseColor(color: string): ColorValueNormalized;
|
|
26
|
+
/** Convert a color token to a Culori color */
|
|
27
|
+
declare function tokenToCulori(value: ColorValueNormalized): Color | undefined;
|
|
28
|
+
//# sourceMappingURL=color.d.ts.map
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region src/id.d.ts
|
|
31
|
+
/** Is this token an alias of another? */
|
|
32
|
+
declare function isAlias(value: string): boolean;
|
|
33
|
+
/** Match token against globs */
|
|
34
|
+
declare function isTokenMatch(tokenID: string, globPatterns: string[]): boolean;
|
|
35
|
+
/** Same as isTokenMatch but returns the matching pattern */
|
|
36
|
+
declare function getTokenMatch(tokenId: string, globPatterns: string[]): string | undefined;
|
|
37
|
+
/** Make an alias */
|
|
38
|
+
declare function makeAlias(input: string): string;
|
|
39
|
+
/** Parse an alias */
|
|
40
|
+
declare function parseAlias(input: string): string;
|
|
41
|
+
/** split a token ID into a local ID and group ID */
|
|
42
|
+
declare function splitID(id: string): {
|
|
43
|
+
local: string;
|
|
44
|
+
group?: string;
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=id.d.ts.map
|
|
47
|
+
//#endregion
|
|
48
|
+
//#region src/string.d.ts
|
|
49
|
+
/** Pad string lengths */
|
|
50
|
+
declare function padStr(input: string, length: number, alignment?: 'left' | 'center' | 'right'): string;
|
|
51
|
+
/** Pluralize strings */
|
|
52
|
+
declare function pluralize<T = string>(count: number, singular: T, plural: T): T;
|
|
53
|
+
/** Turn a string into kebab-case */
|
|
54
|
+
declare function kebabCase(str: string): string;
|
|
55
|
+
//# sourceMappingURL=string.d.ts.map
|
|
56
|
+
//#endregion
|
|
57
|
+
//#region src/transform.d.ts
|
|
58
|
+
interface CustomTransformOptions {
|
|
59
|
+
/** Token $type */
|
|
60
|
+
$type: string;
|
|
61
|
+
}
|
|
62
|
+
/** Give a user pertinent feedback if they override a transform incorrectly */
|
|
63
|
+
declare function validateCustomTransform(value: unknown, {
|
|
64
|
+
$type
|
|
65
|
+
}: CustomTransformOptions): void;
|
|
66
|
+
//# sourceMappingURL=transform.d.ts.map
|
|
67
|
+
|
|
68
|
+
//#endregion
|
|
69
|
+
export { AliasToken, AliasValue, BooleanToken, BooleanTokenNormalized, BooleanValue, BorderToken, BorderTokenNormalized, BorderValue, BorderValueNormalized, CSS_TO_CULORI, CULORI_TO_CSS, ColorSpace, ColorToken, ColorTokenNormalized, ColorValue, ColorValueNormalized, CubicBezierToken, CubicBezierTokenNormalized, CubicBezierValue, CustomTransformOptions, DimensionToken, DimensionTokenNormalized, DimensionValue, DurationToken, DurationTokenNormalized, DurationValue, FontFamilyToken, FontFamilyTokenNormalized, FontFamilyValue, FontFamilyValueNormalized, FontWeightToken, FontWeightTokenNormalized, FontWeightValue, FontWeightValueNormalized, GradientStop, GradientStopNormalized, GradientToken, GradientTokenNormalized, GradientValue, GradientValueNormalized, Group, GroupCore, GroupOrToken, LinkToken, LinkTokenNormalized, LinkValue, ModeMap, NumberToken, NumberTokenNormalized, NumberValue, ShadowToken, ShadowTokenNormalized, ShadowValue, ShadowValueNormalized, StringToken, StringTokenNormalized, StringValue, StrokeStyleToken, StrokeStyleTokenNormalized, StrokeStyleValue, StrokeStyleValueExpanded, Token, TokenCore, TokenMode, TokenNormalized, TokenNormalizedCore, TokenNormalizedSet, TokensSet, TransitionToken, TransitionTokenNormalized, TransitionValue, TransitionValueNormalized, TypographyToken, TypographyTokenNormalized, TypographyValue, TypographyValueNormalized, getTokenMatch, isAlias, isTokenMatch, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToCulori, validateCustomTransform };
|
|
6
70
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/color.ts","../src/id.ts","../src/string.ts","../src/transform.ts"],"sourcesContent":[],"mappings":";;;;;cAMa,eAAe,OAC1B,QACE,wJAiBF;cAmBW;EAtCA,SAAA,GAAA,EAAA,KAoCH;EAAA,SAAA,YAAA,EAAA,IAAA;EAAA,SAlCN,GAAA,EAAA,KAAA;EAAK,SADP,GAAA,EAAA,KAAA;EAAO,SAkBP,GAAA,EAAA,KAAA;EAAU,SAnBgB,GAAA,EAAA,KAAA;EAAM,SAAA,GAAA,EAAA,KAAA;EAsCrB,SAAA,KAAA,EAgBH,OAAA;EAGM,SAAA,KAAU,EAAA,OAAA;EA8DV,SAAA,cAAa,EAAA,UAAA;EAAA,SAAA,OAAA,EAAA,SAAA;EAAA,SAAQ,IAAA,EAAA,KAAA;EAAoB,SAAG,aAAA,EAAA,MAAA;EAAK,SAAA,SAAA,EAAA,OAAA;;;;ACxHjD,iBD0DA,UAAA,CC1DO,KAAA,EAAA,MAAA,CAAA,ED0DoB,oBC1DpB;AAKvB;AAKgB,iBD8GA,aAAA,CC9Ga,KAAA,ED8GQ,oBC9GR,CAAA,ED8G+B,KC9G/B,GAAA,SAAA;AAS7B;;;;iBAnBgB,OAAA;;iBAKA,YAAA;;ADJH,iBCSG,aAAA,CD2BN,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,GAAA,SAAA;;AAlCN,iBCgBY,SAAA,CDhBZ,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;AAiBF,iBCIc,UAAA,CDJd,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;AAnBgC,iBCsClB,OAAA,CDtCkB,EAAA,EAAA,MAAA,CAAA,EAAA;EAsCrB,KAAA,EAAA,MAAA;EAmBG,KAAA,CAAA,EAAA,MAAU;AA8D1B,CAAA;;;;;iBE5HgB,MAAA;;iBAuBA,+CAA+C,WAAW,IAAI;;AFlBjE,iBEuBG,SAAA,CFaN,GAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;;;UG1CO,sBAAA;;;;;AHMJ,iBGAG,uBAAA,CHoCN,KAAA,EAAA,OAAA,EAAA;EAAA;AAAA,CAAA,EGpCyD,sBHoCzD,CAAA,EAAA,IAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,30 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
1
|
+
import { CSS_TO_CULORI, CULORI_TO_CSS, kebabCase, padStr, parseColor, pluralize, tokenToCulori } from "./string-BZ5Le1WD.js";
|
|
2
|
+
import wcmatch from "wildcard-match";
|
|
3
|
+
|
|
4
|
+
//#region src/id.ts
|
|
5
|
+
const ALIAS_RE = /^\{([^}]+)\}$/;
|
|
6
|
+
/** Is this token an alias of another? */
|
|
7
|
+
function isAlias(value) {
|
|
8
|
+
return ALIAS_RE.test(value);
|
|
9
|
+
}
|
|
10
|
+
/** Match token against globs */
|
|
11
|
+
function isTokenMatch(tokenID, globPatterns) {
|
|
12
|
+
return wcmatch(globPatterns)(tokenID);
|
|
13
|
+
}
|
|
14
|
+
/** Same as isTokenMatch but returns the matching pattern */
|
|
15
|
+
function getTokenMatch(tokenId, globPatterns) {
|
|
16
|
+
for (const pattern of globPatterns) if (wcmatch(pattern)(tokenId)) return pattern;
|
|
17
|
+
}
|
|
18
|
+
/** Make an alias */
|
|
19
|
+
function makeAlias(input) {
|
|
20
|
+
return input.replace(/^\{?([^}]+)\}?$/, "{$1}");
|
|
21
|
+
}
|
|
22
|
+
/** Parse an alias */
|
|
23
|
+
function parseAlias(input) {
|
|
24
|
+
if (input.includes("#")) throw new Error("Mode aliases (# character) are no longer supported as of v0.6.0. Alias the root token instead, and apply modes in plugins.");
|
|
25
|
+
const match = input.match(ALIAS_RE);
|
|
26
|
+
if (!match) return input;
|
|
27
|
+
return match[1] ?? match[0];
|
|
28
|
+
}
|
|
29
|
+
/** split a token ID into a local ID and group ID */
|
|
30
|
+
function splitID(id) {
|
|
31
|
+
const lastSeparatorI = id.lastIndexOf(".");
|
|
32
|
+
if (lastSeparatorI === -1) return { local: id };
|
|
33
|
+
return {
|
|
34
|
+
local: id.substring(lastSeparatorI + 1),
|
|
35
|
+
group: id.substring(0, lastSeparatorI)
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region src/transform.ts
|
|
41
|
+
/** Give a user pertinent feedback if they override a transform incorrectly */
|
|
42
|
+
function validateCustomTransform(value, { $type }) {
|
|
43
|
+
if (value) {
|
|
44
|
+
if (typeof value !== "string" && typeof value !== "object" || Array.isArray(value)) throw new Error(`transform(): expected string or Object of strings, received ${Array.isArray(value) ? "Array" : typeof value}`);
|
|
45
|
+
switch ($type) {
|
|
46
|
+
case "typography": {
|
|
47
|
+
if (typeof value !== "object") throw new Error("transform(): typography tokens must be an object of keys");
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
export { CSS_TO_CULORI, CULORI_TO_CSS, getTokenMatch, isAlias, isTokenMatch, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToCulori, validateCustomTransform };
|
|
30
56
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"index.js","names":["value: string","tokenID: string","globPatterns: string[]","tokenId: string","input: string","id: string","value: unknown"],"sources":["../src/id.ts","../src/transform.ts"],"sourcesContent":["import wcmatch from 'wildcard-match';\n\nconst ALIAS_RE = /^\\{([^}]+)\\}$/;\n\n/** Is this token an alias of another? */\nexport function isAlias(value: string): boolean {\n return ALIAS_RE.test(value);\n}\n\n/** Match token against globs */\nexport function isTokenMatch(tokenID: string, globPatterns: string[]): boolean {\n return wcmatch(globPatterns)(tokenID);\n}\n\n/** Same as isTokenMatch but returns the matching pattern */\nexport function getTokenMatch(tokenId: string, globPatterns: string[]): string | undefined {\n for (const pattern of globPatterns) {\n if (wcmatch(pattern)(tokenId)) {\n return pattern;\n }\n }\n}\n\n/** Make an alias */\nexport function makeAlias(input: string): string {\n return input.replace(/^\\{?([^}]+)\\}?$/, '{$1}');\n}\n\n/** Parse an alias */\nexport function parseAlias(input: string): string {\n // TODO: deprecate in future\n if (input.includes('#')) {\n throw new Error(\n 'Mode aliases (# character) are no longer supported as of v0.6.0. Alias the root token instead, and apply modes in plugins.',\n );\n }\n const match = input.match(ALIAS_RE);\n if (!match) {\n return input;\n }\n return match[1] ?? match[0];\n}\n\n/** split a token ID into a local ID and group ID */\nexport function splitID(id: string): { local: string; group?: string } {\n const lastSeparatorI = id.lastIndexOf('.');\n if (lastSeparatorI === -1) {\n return { local: id };\n }\n return {\n local: id.substring(lastSeparatorI + 1),\n group: id.substring(0, lastSeparatorI),\n };\n}\n","export interface CustomTransformOptions {\n /** Token $type */\n $type: string;\n}\n\n/** Give a user pertinent feedback if they override a transform incorrectly */\nexport function validateCustomTransform(value: unknown, { $type }: CustomTransformOptions) {\n if (value) {\n if ((typeof value !== 'string' && typeof value !== 'object') || Array.isArray(value)) {\n throw new Error(\n `transform(): expected string or Object of strings, received ${Array.isArray(value) ? 'Array' : typeof value}`,\n );\n }\n switch ($type) {\n case 'typography': {\n if (typeof value !== 'object') {\n throw new Error('transform(): typography tokens must be an object of keys');\n }\n break;\n }\n }\n }\n}\n"],"mappings":";;;;AAEA,MAAM,WAAW;;AAGjB,SAAgB,QAAQA,OAAwB;AAC9C,QAAO,SAAS,KAAK,MAAM;AAC5B;;AAGD,SAAgB,aAAaC,SAAiBC,cAAiC;AAC7E,QAAO,QAAQ,aAAa,CAAC,QAAQ;AACtC;;AAGD,SAAgB,cAAcC,SAAiBD,cAA4C;AACzF,MAAK,MAAM,WAAW,aACpB,KAAI,QAAQ,QAAQ,CAAC,QAAQ,CAC3B,QAAO;AAGZ;;AAGD,SAAgB,UAAUE,OAAuB;AAC/C,QAAO,MAAM,QAAQ,mBAAmB,OAAO;AAChD;;AAGD,SAAgB,WAAWA,OAAuB;AAEhD,KAAI,MAAM,SAAS,IAAI,CACrB,OAAM,IAAI,MACR;CAGJ,MAAM,QAAQ,MAAM,MAAM,SAAS;AACnC,MAAK,MACH,QAAO;AAET,QAAO,MAAM,MAAM,MAAM;AAC1B;;AAGD,SAAgB,QAAQC,IAA+C;CACrE,MAAM,iBAAiB,GAAG,YAAY,IAAI;AAC1C,KAAI,mBAAmB,GACrB,QAAO,EAAE,OAAO,GAAI;AAEtB,QAAO;EACL,OAAO,GAAG,UAAU,iBAAiB,EAAE;EACvC,OAAO,GAAG,UAAU,GAAG,eAAe;CACvC;AACF;;;;;AC/CD,SAAgB,wBAAwBC,OAAgB,EAAE,OAA+B,EAAE;AACzF,KAAI,OAAO;AACT,aAAY,UAAU,mBAAmB,UAAU,YAAa,MAAM,QAAQ,MAAM,CAClF,OAAM,IAAI,OACP,8DAA8D,MAAM,QAAQ,MAAM,GAAG,iBAAiB,MAAM;AAGjH,UAAQ,OAAR;GACE,KAAK,cAAc;AACjB,eAAW,UAAU,SACnB,OAAM,IAAI,MAAM;AAElB;GACD;EACF;CACF;AACF"}
|
package/dist/js.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { TokenNormalized } from "./types-C68LbU3N.js";
|
|
2
|
+
|
|
3
|
+
//#region src/js/index.d.ts
|
|
4
|
+
interface TransformJSValueOptions {
|
|
5
|
+
mode: string;
|
|
6
|
+
/** indent space count */
|
|
7
|
+
indent?: number;
|
|
8
|
+
/** initial indent level */
|
|
9
|
+
startingIndent?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Convert token value to a JS string via acorn/astring.
|
|
13
|
+
*/
|
|
14
|
+
declare function transformJSValue<T extends TokenNormalized>(token: T, {
|
|
15
|
+
mode,
|
|
16
|
+
indent,
|
|
17
|
+
startingIndent
|
|
18
|
+
}: TransformJSValueOptions): string | undefined;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { TransformJSValueOptions, transformJSValue };
|
|
23
|
+
//# sourceMappingURL=js.d.ts.map
|
package/dist/js.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js.d.ts","names":[],"sources":["../src/js/index.ts"],"sourcesContent":[],"mappings":";;;UAEiB,uBAAA;;EAAA;EAWD,MAAA,CAAA,EAAA,MAAA;EAAgB;EAAA,cAAW,CAAA,EAAA,MAAA;;;;;AAEC,iBAF5B,gBAE4B,CAAA,UAFD,eAEC,CAAA,CAAA,KAAA,EADnC,CACmC,EAAA;EAAA,IAAA;EAAA,MAAA;EAAA;AAAA,CAAA,EAAA,uBAAA,CAAA,EAAA,MAAA,GAAA,SAAA;AAAuB"}
|
package/dist/js.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/js/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* Convert token value to a JS string via acorn/astring.
|
|
4
|
+
*/
|
|
5
|
+
function transformJSValue(token, { mode, indent = 2, startingIndent = 0 }) {
|
|
6
|
+
if (!(mode in token.mode)) return;
|
|
7
|
+
const indentStart = startingIndent > 0 ? " ".repeat(startingIndent ?? 2) : "";
|
|
8
|
+
return JSON.stringify(token.mode[mode].$value, void 0, indent).replace(/\n/g, `\n${indentStart}`);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//#endregion
|
|
12
|
+
export { transformJSValue };
|
|
13
|
+
//# sourceMappingURL=js.js.map
|
package/dist/js.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js.js","names":["token: T"],"sources":["../src/js/index.ts"],"sourcesContent":["import type { TokenNormalized } from '../types.js';\n\nexport interface TransformJSValueOptions {\n mode: string;\n /** indent space count */\n indent?: number;\n /** initial indent level */\n startingIndent?: number;\n}\n\n/**\n * Convert token value to a JS string via acorn/astring.\n */\nexport function transformJSValue<T extends TokenNormalized>(\n token: T,\n { mode, indent = 2, startingIndent = 0 }: TransformJSValueOptions,\n) {\n if (!(mode in token.mode)) {\n return;\n }\n const indentStart = startingIndent > 0 ? ' '.repeat(startingIndent ?? 2) : '';\n\n // note: since tokens are JSON-serializable to begin with, using\n // JSON.stringify generates the same output as an AST parser/generator would\n // but faster and without the added overhead (even acorn/astring leave object\n // keys quoted).\n\n // TODO: use @biomejs/js-api when it’s stable for pretty formatting\n\n return JSON.stringify(token.mode[mode]!.$value, undefined, indent).replace(/\\n/g, `\\n${indentStart}`);\n}\n"],"mappings":";;;;AAaA,SAAgB,iBACdA,OACA,EAAE,MAAM,SAAS,GAAG,iBAAiB,GAA4B,EACjE;AACA,OAAM,QAAQ,MAAM,MAClB;CAEF,MAAM,cAAc,iBAAiB,IAAI,IAAI,OAAO,kBAAkB,EAAE,GAAG;AAS3E,QAAO,KAAK,UAAU,MAAM,KAAK,MAAO,gBAAmB,OAAO,CAAC,QAAQ,QAAQ,IAAI,YAAY,EAAE;AACtG"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import "culori/css";
|
|
2
|
+
import { formatHex, parse } from "culori/fn";
|
|
3
|
+
|
|
4
|
+
//#region src/color.ts
|
|
5
|
+
const HEX_RE = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;
|
|
6
|
+
const CULORI_TO_CSS = {
|
|
7
|
+
a98: "a98",
|
|
8
|
+
hsl: "hsl",
|
|
9
|
+
hsv: "hsv",
|
|
10
|
+
hwb: "hwb",
|
|
11
|
+
lab: "lab",
|
|
12
|
+
lch: "lch",
|
|
13
|
+
lrgb: "srgb-linear",
|
|
14
|
+
oklab: "oklab",
|
|
15
|
+
oklch: "oklch",
|
|
16
|
+
p3: "display-p3",
|
|
17
|
+
prophoto: "prophoto-rgb",
|
|
18
|
+
rec2020: "rec2020",
|
|
19
|
+
rgb: "srgb",
|
|
20
|
+
xyz50: "xyz-d50",
|
|
21
|
+
xyz65: "xyz-d65"
|
|
22
|
+
};
|
|
23
|
+
const CSS_TO_CULORI = {
|
|
24
|
+
a98: "a98",
|
|
25
|
+
"display-p3": "p3",
|
|
26
|
+
hsl: "hsl",
|
|
27
|
+
hsv: "hsv",
|
|
28
|
+
hwb: "hwb",
|
|
29
|
+
lab: "lab",
|
|
30
|
+
lch: "lch",
|
|
31
|
+
oklab: "oklab",
|
|
32
|
+
oklch: "oklch",
|
|
33
|
+
"prophoto-rgb": "prophoto",
|
|
34
|
+
rec2020: "rec2020",
|
|
35
|
+
srgb: "rgb",
|
|
36
|
+
"srgb-linear": "lrgb",
|
|
37
|
+
"xyz-d50": "xyz50",
|
|
38
|
+
"xyz-d65": "xyz65"
|
|
39
|
+
};
|
|
40
|
+
/** Parse any color */
|
|
41
|
+
function parseColor(color) {
|
|
42
|
+
const result = parse(color);
|
|
43
|
+
if (!result) throw new Error(`Unable to parse color "${color}"`);
|
|
44
|
+
if (!(result.mode in CULORI_TO_CSS)) throw new Error(`Unsupported color space: ${result.mode}`);
|
|
45
|
+
const colorSpace = CULORI_TO_CSS[result.mode];
|
|
46
|
+
let components = [
|
|
47
|
+
0,
|
|
48
|
+
0,
|
|
49
|
+
0
|
|
50
|
+
];
|
|
51
|
+
switch (result.mode) {
|
|
52
|
+
case "a98":
|
|
53
|
+
case "rec2020":
|
|
54
|
+
case "p3":
|
|
55
|
+
case "prophoto":
|
|
56
|
+
case "lrgb":
|
|
57
|
+
case "rgb": {
|
|
58
|
+
components = [
|
|
59
|
+
result.r,
|
|
60
|
+
result.g,
|
|
61
|
+
result.b
|
|
62
|
+
];
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case "hsl": {
|
|
66
|
+
components = [
|
|
67
|
+
result.h ?? 0,
|
|
68
|
+
result.s,
|
|
69
|
+
result.l
|
|
70
|
+
];
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
case "hsv": {
|
|
74
|
+
components = [
|
|
75
|
+
result.h ?? 0,
|
|
76
|
+
result.s,
|
|
77
|
+
result.v
|
|
78
|
+
];
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
case "hwb": {
|
|
82
|
+
components = [
|
|
83
|
+
result.h ?? 0,
|
|
84
|
+
result.w,
|
|
85
|
+
result.b
|
|
86
|
+
];
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
case "lab":
|
|
90
|
+
case "oklab": {
|
|
91
|
+
components = [
|
|
92
|
+
result.l,
|
|
93
|
+
result.a,
|
|
94
|
+
result.b
|
|
95
|
+
];
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
case "lch":
|
|
99
|
+
case "oklch": {
|
|
100
|
+
components = [
|
|
101
|
+
result.l,
|
|
102
|
+
result.c,
|
|
103
|
+
result.h ?? 0
|
|
104
|
+
];
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
case "xyz50":
|
|
108
|
+
case "xyz65": {
|
|
109
|
+
components = [
|
|
110
|
+
result.x,
|
|
111
|
+
result.y,
|
|
112
|
+
result.z
|
|
113
|
+
];
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const value = {
|
|
118
|
+
colorSpace,
|
|
119
|
+
components,
|
|
120
|
+
alpha: result.alpha ?? 1
|
|
121
|
+
};
|
|
122
|
+
if (HEX_RE.test(color)) value.hex = formatHex(result);
|
|
123
|
+
return value;
|
|
124
|
+
}
|
|
125
|
+
/** Convert a color token to a Culori color */
|
|
126
|
+
function tokenToCulori(value) {
|
|
127
|
+
switch (value.colorSpace) {
|
|
128
|
+
case "a98":
|
|
129
|
+
case "display-p3":
|
|
130
|
+
case "prophoto-rgb":
|
|
131
|
+
case "rec2020":
|
|
132
|
+
case "srgb":
|
|
133
|
+
case "srgb-linear": {
|
|
134
|
+
const [r, g, b] = value.components;
|
|
135
|
+
return {
|
|
136
|
+
mode: CSS_TO_CULORI[value.colorSpace] || value.colorSpace,
|
|
137
|
+
r,
|
|
138
|
+
g,
|
|
139
|
+
b,
|
|
140
|
+
alpha: value.alpha
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
case "hsl": {
|
|
144
|
+
const [h, s, l] = value.components;
|
|
145
|
+
return {
|
|
146
|
+
mode: "hsl",
|
|
147
|
+
h,
|
|
148
|
+
s,
|
|
149
|
+
l,
|
|
150
|
+
alpha: value.alpha
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
case "hsv": {
|
|
154
|
+
const [h, s, v] = value.components;
|
|
155
|
+
return {
|
|
156
|
+
mode: "hsv",
|
|
157
|
+
h,
|
|
158
|
+
s,
|
|
159
|
+
v,
|
|
160
|
+
alpha: value.alpha
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
case "hwb": {
|
|
164
|
+
const [h, w, b] = value.components;
|
|
165
|
+
return {
|
|
166
|
+
mode: "hwb",
|
|
167
|
+
h,
|
|
168
|
+
w,
|
|
169
|
+
b,
|
|
170
|
+
alpha: value.alpha
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
case "lab":
|
|
174
|
+
case "oklab": {
|
|
175
|
+
const [l, a, b] = value.components;
|
|
176
|
+
return {
|
|
177
|
+
mode: value.colorSpace,
|
|
178
|
+
l,
|
|
179
|
+
a,
|
|
180
|
+
b,
|
|
181
|
+
alpha: value.alpha
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
case "lch":
|
|
185
|
+
case "oklch": {
|
|
186
|
+
const [l, c, h] = value.components;
|
|
187
|
+
return {
|
|
188
|
+
mode: value.colorSpace,
|
|
189
|
+
l,
|
|
190
|
+
c,
|
|
191
|
+
h,
|
|
192
|
+
alpha: value.alpha
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
case "xyz-d50": {
|
|
196
|
+
const [x, y, z] = value.components;
|
|
197
|
+
return {
|
|
198
|
+
mode: "xyz50",
|
|
199
|
+
x,
|
|
200
|
+
y,
|
|
201
|
+
z,
|
|
202
|
+
alpha: value.alpha
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
case "xyz-d65": {
|
|
206
|
+
const [x, y, z] = value.components;
|
|
207
|
+
return {
|
|
208
|
+
mode: "xyz65",
|
|
209
|
+
x,
|
|
210
|
+
y,
|
|
211
|
+
z,
|
|
212
|
+
alpha: value.alpha
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
//#endregion
|
|
219
|
+
//#region src/string.ts
|
|
220
|
+
/** Pad string lengths */
|
|
221
|
+
function padStr(input, length, alignment = "left") {
|
|
222
|
+
const d = Math.min(length || 0, 1e3) - input.length;
|
|
223
|
+
if (d > 0) switch (alignment) {
|
|
224
|
+
case "left": return `${input}${" ".repeat(d)}`;
|
|
225
|
+
case "right": return `${" ".repeat(d)}${input}`;
|
|
226
|
+
case "center": {
|
|
227
|
+
const left = Math.floor(d / 2);
|
|
228
|
+
const right = d - left;
|
|
229
|
+
return `${" ".repeat(left)}${input}${" ".repeat(right)}`;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return input;
|
|
233
|
+
}
|
|
234
|
+
/** Pluralize strings */
|
|
235
|
+
function pluralize(count, singular, plural) {
|
|
236
|
+
return count === 1 ? singular : plural;
|
|
237
|
+
}
|
|
238
|
+
/** Turn a string into kebab-case */
|
|
239
|
+
function kebabCase(str) {
|
|
240
|
+
let output = "";
|
|
241
|
+
for (const c of str.split("")) {
|
|
242
|
+
if (c === ".") {
|
|
243
|
+
output += "-";
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
let isFirstUppercase = true;
|
|
247
|
+
if (isFirstUppercase && /\p{Uppercase_Letter}/u.test(c)) {
|
|
248
|
+
output += `-${c.toLocaleLowerCase()}`;
|
|
249
|
+
isFirstUppercase = false;
|
|
250
|
+
continue;
|
|
251
|
+
} else isFirstUppercase = true;
|
|
252
|
+
output += c;
|
|
253
|
+
}
|
|
254
|
+
return output;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
//#endregion
|
|
258
|
+
export { CSS_TO_CULORI, CULORI_TO_CSS, kebabCase, padStr, parseColor, pluralize, tokenToCulori };
|
|
259
|
+
//# sourceMappingURL=string-BZ5Le1WD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-BZ5Le1WD.js","names":["CULORI_TO_CSS: Record<\n Extract<\n Color['mode'],\n | 'a98'\n | 'lab'\n | 'lch'\n | 'oklab'\n | 'oklch'\n | 'hsl'\n | 'hsv'\n | 'hwb'\n | 'lrgb'\n | 'p3'\n | 'prophoto'\n | 'rec2020'\n | 'rgb'\n | 'xyz50'\n | 'xyz65'\n >,\n ColorSpace\n>","color: string","components: [number, number, number]","value: ColorValueNormalized","input: string","length: number","alignment: 'left' | 'center' | 'right'","count: number","singular: T","plural: T","str: string"],"sources":["../src/color.ts","../src/string.ts"],"sourcesContent":["import 'culori/css';\nimport { type Color, formatHex, parse } from 'culori/fn';\nimport type { ColorSpace, ColorValueNormalized } from './types.js';\n\nconst HEX_RE = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\nexport const CULORI_TO_CSS: Record<\n Extract<\n Color['mode'],\n | 'a98'\n | 'lab'\n | 'lch'\n | 'oklab'\n | 'oklch'\n | 'hsl'\n | 'hsv'\n | 'hwb'\n | 'lrgb'\n | 'p3'\n | 'prophoto'\n | 'rec2020'\n | 'rgb'\n | 'xyz50'\n | 'xyz65'\n >,\n ColorSpace\n> = {\n a98: 'a98',\n hsl: 'hsl',\n hsv: 'hsv',\n hwb: 'hwb',\n lab: 'lab',\n lch: 'lch',\n lrgb: 'srgb-linear',\n oklab: 'oklab',\n oklch: 'oklch',\n p3: 'display-p3',\n prophoto: 'prophoto-rgb',\n rec2020: 'rec2020',\n rgb: 'srgb',\n xyz50: 'xyz-d50',\n xyz65: 'xyz-d65',\n} as const;\n\nexport const CSS_TO_CULORI = {\n a98: 'a98',\n 'display-p3': 'p3',\n hsl: 'hsl',\n hsv: 'hsv',\n hwb: 'hwb',\n lab: 'lab',\n lch: 'lch',\n oklab: 'oklab',\n oklch: 'oklch',\n 'prophoto-rgb': 'prophoto',\n rec2020: 'rec2020',\n srgb: 'rgb',\n 'srgb-linear': 'lrgb',\n 'xyz-d50': 'xyz50',\n 'xyz-d65': 'xyz65',\n} as const;\n\n/** Parse any color */\nexport function parseColor(color: string): ColorValueNormalized {\n const result = parse(color);\n if (!result) {\n throw new Error(`Unable to parse color \"${color}\"`);\n }\n if (!(result.mode in CULORI_TO_CSS)) {\n throw new Error(`Unsupported color space: ${result.mode}`);\n }\n const colorSpace = CULORI_TO_CSS[result.mode as keyof typeof CULORI_TO_CSS]!;\n let components: [number, number, number] = [0, 0, 0];\n switch (result.mode) {\n case 'a98':\n case 'rec2020':\n case 'p3':\n case 'prophoto':\n case 'lrgb':\n case 'rgb': {\n components = [result.r, result.g, result.b];\n break;\n }\n case 'hsl': {\n components = [result.h ?? 0, result.s, result.l];\n break;\n }\n case 'hsv': {\n components = [result.h ?? 0, result.s, result.v];\n break;\n }\n case 'hwb': {\n components = [result.h ?? 0, result.w, result.b];\n break;\n }\n case 'lab':\n case 'oklab': {\n components = [result.l, result.a, result.b];\n break;\n }\n case 'lch':\n case 'oklch': {\n components = [result.l, result.c, result.h ?? 0];\n break;\n }\n case 'xyz50':\n case 'xyz65': {\n components = [result.x, result.y, result.z];\n break;\n }\n }\n const value: ColorValueNormalized = {\n colorSpace,\n components,\n alpha: result.alpha ?? 1,\n };\n if (HEX_RE.test(color)) {\n // Note: this intentionally does NOT include alpha; it’s already in alpha.\n // Always use formatHex (not formatHex8).\n value.hex = formatHex(result);\n }\n return value;\n}\n\n/** Convert a color token to a Culori color */\nexport function tokenToCulori(value: ColorValueNormalized): Color | undefined {\n switch (value.colorSpace) {\n case 'a98':\n case 'display-p3':\n case 'prophoto-rgb':\n case 'rec2020':\n case 'srgb':\n case 'srgb-linear': {\n const [r, g, b] = value.components;\n return {\n mode: CSS_TO_CULORI[value.colorSpace] || value.colorSpace,\n r,\n g,\n b,\n alpha: value.alpha,\n } as Color;\n }\n case 'hsl': {\n const [h, s, l] = value.components;\n return { mode: 'hsl', h, s, l, alpha: value.alpha };\n }\n case 'hsv': {\n const [h, s, v] = value.components;\n return { mode: 'hsv', h, s, v, alpha: value.alpha };\n }\n case 'hwb': {\n const [h, w, b] = value.components;\n return { mode: 'hwb', h, w, b, alpha: value.alpha };\n }\n case 'lab':\n case 'oklab': {\n const [l, a, b] = value.components;\n return { mode: value.colorSpace, l, a, b, alpha: value.alpha };\n }\n case 'lch':\n case 'oklch': {\n const [l, c, h] = value.components;\n return { mode: value.colorSpace, l, c, h, alpha: value.alpha };\n }\n case 'xyz-d50': {\n const [x, y, z] = value.components;\n return { mode: 'xyz50', x, y, z, alpha: value.alpha };\n }\n case 'xyz-d65': {\n const [x, y, z] = value.components;\n return { mode: 'xyz65', x, y, z, alpha: value.alpha };\n }\n }\n}\n","/** Pad string lengths */\nexport function padStr(input: string, length: number, alignment: 'left' | 'center' | 'right' = 'left'): string {\n const d =\n Math.min(length || 0, 1000) - // guard against NaNs and Infinity\n input.length;\n if (d > 0) {\n switch (alignment) {\n case 'left': {\n return `${input}${' '.repeat(d)}`;\n }\n case 'right': {\n return `${' '.repeat(d)}${input}`;\n }\n case 'center': {\n const left = Math.floor(d / 2);\n const right = d - left;\n return `${' '.repeat(left)}${input}${' '.repeat(right)}`;\n }\n }\n }\n return input;\n}\n\n/** Pluralize strings */\nexport function pluralize<T = string>(count: number, singular: T, plural: T): T {\n return count === 1 ? singular : plural;\n}\n\n/** Turn a string into kebab-case */\nexport function kebabCase(str: string): string {\n let output = '';\n for (const c of str.split('')) {\n if (c === '.') {\n output += '-';\n continue;\n }\n let isFirstUppercase = true;\n if (isFirstUppercase && /\\p{Uppercase_Letter}/u.test(c)) {\n output += `-${c.toLocaleLowerCase()}`;\n isFirstUppercase = false; // don’t break apart multiple consecutive uppercase letters\n continue;\n } else {\n isFirstUppercase = true; // reset\n }\n\n output += c;\n }\n return output;\n}\n"],"mappings":"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"}
|