@hh.ru/magritte-design-tokens-utils 3.0.0 → 3.0.2
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/deduplicate.d.ts +10 -0
- package/deduplicate.js +76 -0
- package/deduplicate.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/tokenize.d.ts +9 -2
- package/tokenize.js +17 -15
- package/tokenize.js.map +1 -1
package/deduplicate.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Root } from 'postcss';
|
|
2
|
+
type ParseResult = {
|
|
3
|
+
root: Root;
|
|
4
|
+
removed: number;
|
|
5
|
+
};
|
|
6
|
+
export declare const collectDefaultTokenValues: (defaultParsedFiles: Root[]) => Map<string, Set<string>>;
|
|
7
|
+
export declare const removeRedundantByValue: (root: Root, defaults: Map<string, Set<string>>) => ParseResult;
|
|
8
|
+
export declare const collectAllowedProps: (defaultParsedFiles: Root[]) => Set<string>;
|
|
9
|
+
export declare const cleanThemeFile: (root: Root, allowedProps: Set<string>) => ParseResult;
|
|
10
|
+
export {};
|
package/deduplicate.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
const normalize = (value) => {
|
|
2
|
+
const collapsedValue = value.trim().replace(/\s+/g, ' ');
|
|
3
|
+
return collapsedValue.replace(/#([0-9a-fA-F]{3,8})\b/g, (value) => value.toLowerCase());
|
|
4
|
+
};
|
|
5
|
+
// собираем все из дефолтных тем
|
|
6
|
+
const collectDefaultTokenValues = (defaultParsedFiles) => {
|
|
7
|
+
const setOfTokens = new Map();
|
|
8
|
+
for (const root of defaultParsedFiles) {
|
|
9
|
+
root.walkDecls((declaration) => {
|
|
10
|
+
if (typeof declaration.prop === 'string' && declaration.prop.startsWith('--')) {
|
|
11
|
+
const key = declaration.prop.trim();
|
|
12
|
+
const val = normalize(String(declaration.value ?? ''));
|
|
13
|
+
if (!setOfTokens.has(key)) {
|
|
14
|
+
setOfTokens.set(key, new Set());
|
|
15
|
+
}
|
|
16
|
+
setOfTokens.get(key)?.add(val);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return setOfTokens;
|
|
21
|
+
};
|
|
22
|
+
// убираем токены, значения которые не меняются от темы к теме
|
|
23
|
+
const removeRedundantByValue = (root, defaults) => {
|
|
24
|
+
let removed = 0;
|
|
25
|
+
root.walkDecls((declaration) => {
|
|
26
|
+
if (!(typeof declaration.prop === 'string' && declaration.prop.startsWith('--'))) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const key = declaration.prop.trim();
|
|
30
|
+
const val = normalize(String(declaration.value ?? ''));
|
|
31
|
+
const defVals = defaults.get(key);
|
|
32
|
+
if (defVals && defVals.has(val)) {
|
|
33
|
+
removed += 1;
|
|
34
|
+
declaration.remove();
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
root.walkRules((rule) => {
|
|
38
|
+
if (!rule.nodes || rule.nodes.every((node) => node.type !== 'decl')) {
|
|
39
|
+
rule.remove();
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return { root, removed };
|
|
43
|
+
};
|
|
44
|
+
// собираем уникальные токены
|
|
45
|
+
const collectAllowedProps = (defaultParsedFiles) => {
|
|
46
|
+
const allowedProps = new Set();
|
|
47
|
+
for (const root of defaultParsedFiles) {
|
|
48
|
+
root.walkDecls((declaration) => {
|
|
49
|
+
if (typeof declaration.prop === 'string' && declaration.prop.startsWith('--')) {
|
|
50
|
+
allowedProps.add(declaration.prop.trim());
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return allowedProps;
|
|
55
|
+
};
|
|
56
|
+
// чистим тему от уникальных значений (которых нет в базовой теме)
|
|
57
|
+
const cleanThemeFile = (root, allowedProps) => {
|
|
58
|
+
let removed = 0;
|
|
59
|
+
root.walkDecls((declaration) => {
|
|
60
|
+
if (typeof declaration.prop === 'string' && declaration.prop.startsWith('--')) {
|
|
61
|
+
if (!allowedProps.has(declaration.prop.trim())) {
|
|
62
|
+
declaration.remove();
|
|
63
|
+
removed += 1;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
root.walkRules((rule) => {
|
|
68
|
+
if (!rule.nodes || rule.nodes.every((node) => node.type !== 'decl')) {
|
|
69
|
+
rule.remove();
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return { root, removed };
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export { cleanThemeFile, collectAllowedProps, collectDefaultTokenValues, removeRedundantByValue };
|
|
76
|
+
//# sourceMappingURL=deduplicate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deduplicate.js","sources":["../src/deduplicate.ts"],"sourcesContent":["import type { Declaration, Root, Rule } from 'postcss';\n\nconst normalize = (value: string): string => {\n const collapsedValue = value.trim().replace(/\\s+/g, ' ');\n return collapsedValue.replace(/#([0-9a-fA-F]{3,8})\\b/g, (value) => value.toLowerCase());\n};\n\ntype ParseResult = { root: Root; removed: number };\n\n// собираем все из дефолтных тем\nexport const collectDefaultTokenValues = (defaultParsedFiles: Root[]): Map<string, Set<string>> => {\n const setOfTokens = new Map<string, Set<string>>();\n for (const root of defaultParsedFiles) {\n root.walkDecls((declaration: Declaration) => {\n if (typeof declaration.prop === 'string' && declaration.prop.startsWith('--')) {\n const key = declaration.prop.trim();\n const val = normalize(String(declaration.value ?? ''));\n if (!setOfTokens.has(key)) {\n setOfTokens.set(key, new Set<string>());\n }\n setOfTokens.get(key)?.add(val);\n }\n });\n }\n return setOfTokens;\n};\n\n// убираем токены, значения которые не меняются от темы к теме\nexport const removeRedundantByValue = (root: Root, defaults: Map<string, Set<string>>): ParseResult => {\n let removed = 0;\n\n root.walkDecls((declaration: Declaration) => {\n if (!(typeof declaration.prop === 'string' && declaration.prop.startsWith('--'))) {\n return;\n }\n\n const key = declaration.prop.trim();\n const val = normalize(String(declaration.value ?? ''));\n const defVals = defaults.get(key);\n\n if (defVals && defVals.has(val)) {\n removed += 1;\n declaration.remove();\n }\n });\n\n root.walkRules((rule: Rule) => {\n if (!rule.nodes || rule.nodes.every((node) => node.type !== 'decl')) {\n rule.remove();\n }\n });\n return { root, removed };\n};\n\n// собираем уникальные токены\nexport const collectAllowedProps = (defaultParsedFiles: Root[]): Set<string> => {\n const allowedProps = new Set<string>();\n for (const root of defaultParsedFiles) {\n root.walkDecls((declaration: Declaration) => {\n if (typeof declaration.prop === 'string' && declaration.prop.startsWith('--')) {\n allowedProps.add(declaration.prop.trim());\n }\n });\n }\n return allowedProps;\n};\n\n// чистим тему от уникальных значений (которых нет в базовой теме)\nexport const cleanThemeFile = (root: Root, allowedProps: Set<string>): ParseResult => {\n let removed = 0;\n root.walkDecls((declaration: Declaration) => {\n if (typeof declaration.prop === 'string' && declaration.prop.startsWith('--')) {\n if (!allowedProps.has(declaration.prop.trim())) {\n declaration.remove();\n removed += 1;\n }\n }\n });\n root.walkRules((rule: Rule) => {\n if (!rule.nodes || rule.nodes.every((node) => node.type !== 'decl')) {\n rule.remove();\n }\n });\n return { root, removed };\n};\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export * from '@hh.ru/magritte-design-tokens-utils/purify';
|
|
|
2
2
|
export * from '@hh.ru/magritte-design-tokens-utils/tokenize';
|
|
3
3
|
export * from '@hh.ru/magritte-design-tokens-utils/prepare';
|
|
4
4
|
export * from '@hh.ru/magritte-design-tokens-utils/constants';
|
|
5
|
+
export * from '@hh.ru/magritte-design-tokens-utils/deduplicate';
|
|
5
6
|
export * from '@hh.ru/magritte-design-tokens-utils/types';
|
package/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { purify } from './purify.js';
|
|
2
|
-
export { TYPES,
|
|
2
|
+
export { TYPES, getFontWeightValue, getVariableUnit, kebabWithUnderscoreTransformer, renderTokensWithFormatter, typographyTransformations } from './tokenize.js';
|
|
3
3
|
export { filterThemeSets, prepareBaseTokens, prepareThemesTokens } from './prepare.js';
|
|
4
4
|
export { BASE_SET, TOKENS_DEFAULT_THEME } from './constants.js';
|
|
5
|
+
export { cleanThemeFile, collectAllowedProps, collectDefaultTokenValues, removeRedundantByValue } from './deduplicate.js';
|
|
5
6
|
import 'change-case';
|
|
6
7
|
import 'spring-easing';
|
|
7
8
|
import 'token-transformer';
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hh.ru/magritte-design-tokens-utils",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -25,5 +25,5 @@
|
|
|
25
25
|
"publishConfig": {
|
|
26
26
|
"access": "public"
|
|
27
27
|
},
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "935832ee08df939ab7b8475fdd34d34844be61c5"
|
|
29
29
|
}
|
package/tokenize.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Named, Transform, TransformedToken, Dictionary } from 'style-dictionary';
|
|
2
|
-
import type { TypographyTransformations } from '@hh.ru/magritte-design-tokens-utils/types';
|
|
2
|
+
import type { TokenCasualValue, TypographyTransformations, RealTransformedToken } from '@hh.ru/magritte-design-tokens-utils/types';
|
|
3
3
|
export declare const TYPES: {
|
|
4
4
|
BORDER_RADIUS: string;
|
|
5
5
|
BORDER_WIDTH: string;
|
|
@@ -19,7 +19,14 @@ export declare const TYPES: {
|
|
|
19
19
|
BLUR: string;
|
|
20
20
|
SPREAD: string;
|
|
21
21
|
};
|
|
22
|
+
export declare const getFontWeightValue: (value: TokenCasualValue) => TokenCasualValue;
|
|
22
23
|
export declare const typographyTransformations: TypographyTransformations;
|
|
23
24
|
export declare const getVariableUnit: (token: TransformedToken) => string;
|
|
24
|
-
export
|
|
25
|
+
export interface FormatterTypographyToken {
|
|
26
|
+
(token: RealTransformedToken, versionPostfix?: string): string[];
|
|
27
|
+
}
|
|
28
|
+
export interface FormatterToken {
|
|
29
|
+
(name: string, value: TokenCasualValue, versionPostfix?: string): string;
|
|
30
|
+
}
|
|
31
|
+
export declare const renderTokensWithFormatter: (dictionary: Dictionary, versionPostfix: string, formatter?: FormatterToken, formatterTypography?: FormatterTypographyToken) => string;
|
|
25
32
|
export declare const kebabWithUnderscoreTransformer: Named<Transform>;
|
package/tokenize.js
CHANGED
|
@@ -21,7 +21,7 @@ const TYPES = {
|
|
|
21
21
|
BLUR: 'blur',
|
|
22
22
|
SPREAD: 'spread',
|
|
23
23
|
};
|
|
24
|
-
const FONT_WEIGHT_VALUES = { Bold: 700, 'Semi Bold': 600, Medium: 500, Regular: 400, Italic: 400 };
|
|
24
|
+
const FONT_WEIGHT_VALUES = { Bold: 700, 'Semi Bold': 600, Medium: 500, Regular: 400, Italic: 400, Display: 800 };
|
|
25
25
|
const getFontWeightValue = (value) => value in FONT_WEIGHT_VALUES ? FONT_WEIGHT_VALUES[value] : value;
|
|
26
26
|
const typographyTransformations = {
|
|
27
27
|
fontFamily: (value) => [{ name: 'font-family', value: `"${value}"` }],
|
|
@@ -56,7 +56,7 @@ const getVariableUnit = (token) => {
|
|
|
56
56
|
return '';
|
|
57
57
|
}
|
|
58
58
|
};
|
|
59
|
-
const
|
|
59
|
+
const formatterTypographyToCssVariable = (token, versionPostfix) => {
|
|
60
60
|
const tokenValue = token.value;
|
|
61
61
|
return Object.keys(tokenValue)
|
|
62
62
|
.reduce((result, key) => {
|
|
@@ -69,45 +69,47 @@ const expandTypographyCss = (token, versionPostfix) => {
|
|
|
69
69
|
}, [])
|
|
70
70
|
.map(({ name, value }) => ` --${token.name}-${name}${versionPostfix}: ${value};`);
|
|
71
71
|
};
|
|
72
|
-
const
|
|
73
|
-
|
|
72
|
+
const formatterTokenToCssVariable = (name, value, versionPostfix) => ` --${name}${versionPostfix}: ${value};`;
|
|
73
|
+
// рендерит токены с использованием выбранных форматоров
|
|
74
|
+
// дефолтные форматеры позволят получить токены в виде css переменных
|
|
75
|
+
const renderTokensWithFormatter = (dictionary, versionPostfix, formatter = formatterTokenToCssVariable, formatterTypography = formatterTypographyToCssVariable) => {
|
|
74
76
|
const props = dictionary.allProperties
|
|
75
77
|
.reduce((result, token) => {
|
|
76
78
|
const { name, value, type, rawValue } = token;
|
|
77
79
|
if (type === 'typography') {
|
|
78
|
-
result.push(...
|
|
80
|
+
result.push(...formatterTypography(token, versionPostfix));
|
|
79
81
|
}
|
|
80
82
|
else if (type === 'fontWeights') {
|
|
81
|
-
result.push(
|
|
83
|
+
result.push(formatter(name, getFontWeightValue(value), versionPostfix));
|
|
82
84
|
}
|
|
83
85
|
else if (type === 'animation') {
|
|
84
86
|
const { x1, y1, x2, y2, duration } = rawValue;
|
|
85
|
-
result.push(
|
|
86
|
-
result.push(
|
|
87
|
+
result.push(formatter(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`, versionPostfix));
|
|
88
|
+
result.push(formatter(`${name}-duration`, `${duration}ms`, versionPostfix));
|
|
87
89
|
}
|
|
88
90
|
else if (type === 'animationTime') {
|
|
89
91
|
const { duration } = rawValue;
|
|
90
|
-
result.push(
|
|
92
|
+
result.push(formatter(`${name}-duration`, `${duration}ms`, versionPostfix));
|
|
91
93
|
}
|
|
92
94
|
else if (type === 'animationEaseBase') {
|
|
93
95
|
const { x1, y1, x2, y2 } = rawValue;
|
|
94
|
-
result.push(
|
|
96
|
+
result.push(formatter(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`, versionPostfix));
|
|
95
97
|
}
|
|
96
98
|
else if (type === 'animationEaseSpring') {
|
|
97
99
|
const { stiffness, damping, mass } = rawValue;
|
|
98
100
|
const [easings] = CSSSpringEasing({ easing: `spring(${mass}, ${stiffness}, ${damping})` });
|
|
99
|
-
result.push(
|
|
101
|
+
result.push(formatter(`${name}-timing-function`, `linear(${easings})`, versionPostfix));
|
|
100
102
|
}
|
|
101
103
|
else if (type === 'border') {
|
|
102
104
|
const { width, style } = rawValue;
|
|
103
|
-
result.push(
|
|
105
|
+
result.push(formatter(name, `${width}px ${style}`, versionPostfix));
|
|
104
106
|
}
|
|
105
107
|
else if (type === 'letterSpacing') {
|
|
106
|
-
result.push(
|
|
108
|
+
result.push(formatter(name, `${parseFloat(value) / 100}em`, versionPostfix));
|
|
107
109
|
}
|
|
108
110
|
else {
|
|
109
111
|
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
110
|
-
result.push(
|
|
112
|
+
result.push(formatter(name, `${value}${getVariableUnit(token)}`, versionPostfix));
|
|
111
113
|
}
|
|
112
114
|
return result;
|
|
113
115
|
}, [])
|
|
@@ -122,5 +124,5 @@ const kebabWithUnderscoreTransformer = {
|
|
|
122
124
|
}),
|
|
123
125
|
};
|
|
124
126
|
|
|
125
|
-
export { TYPES,
|
|
127
|
+
export { TYPES, getFontWeightValue, getVariableUnit, kebabWithUnderscoreTransformer, renderTokensWithFormatter, typographyTransformations };
|
|
126
128
|
//# sourceMappingURL=tokenize.js.map
|
package/tokenize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenize.js","sources":["../src/tokenize.ts"],"sourcesContent":["import { paramCase } from 'change-case';\nimport { CSSSpringEasing } from 'spring-easing';\nimport { Named, Transform, TransformedToken, Dictionary } from 'style-dictionary';\n\nimport type {\n TypographyTokenValue,\n TokenCasualValue,\n TypographyTransformationsResult,\n TypographyTransformations,\n RealTransformedToken,\n} from '@hh.ru/magritte-design-tokens-utils/types';\n\nexport const TYPES = {\n BORDER_RADIUS: 'borderRadius',\n BORDER_WIDTH: 'borderWidth',\n COLOR: 'color',\n FONT_FAMILY: 'fontFamily',\n FONT_SIZE: 'fontSizes',\n FONT_WEIGHT: 'fontWeights',\n LETTER_SPACING: 'letterSpacing',\n LINE_HEIGHT: 'lineHeights',\n PARAGRAPH_SPACING: 'paragraphSpacing',\n SIZING: 'sizing',\n SPACING: 'spacing',\n TEXT_CASE: 'textCase',\n\n TEXT_DECORATION: 'textDecoration',\n // shadows\n X: 'x',\n Y: 'y',\n BLUR: 'blur',\n SPREAD: 'spread',\n};\n\nconst FONT_WEIGHT_VALUES = { Bold: 700, 'Semi Bold': 600, Medium: 500, Regular: 400, Italic: 400 };\n\nconst getFontWeightValue = (value: TokenCasualValue) =>\n value in FONT_WEIGHT_VALUES ? FONT_WEIGHT_VALUES[value as keyof typeof FONT_WEIGHT_VALUES] : value;\n\nexport const typographyTransformations: TypographyTransformations = {\n fontFamily: (value) => [{ name: 'font-family', value: `\"${value}\"` }],\n fontWeight: (value) => [\n {\n name: 'font-weight',\n value: getFontWeightValue(value),\n },\n ],\n fontSize: (value) => [{ name: 'font-size', value: `${value}px` }],\n lineHeight: (value) => [{ name: 'line-height', value: `${value}px` }],\n letterSpacing: (value) => [{ name: 'letter-spacing', value: `${parseFloat(value as string) / 100}em` }],\n textCase: (value) => [{ name: 'text-transform', value: (value as string).toLowerCase() }],\n textDecoration: (value) => [{ name: 'text-decoration', value: (value as string).toLowerCase() }],\n paragraphIndent: (value) => [{ name: 'text-indent', value }],\n};\n\nexport const getVariableUnit = (token: TransformedToken): string => {\n const { type } = token;\n\n switch (type) {\n case TYPES.BORDER_RADIUS:\n case TYPES.BORDER_WIDTH:\n case TYPES.PARAGRAPH_SPACING:\n case TYPES.SIZING:\n case TYPES.SPACING:\n case TYPES.X:\n case TYPES.Y:\n case TYPES.BLUR:\n case TYPES.SPREAD:\n case TYPES.FONT_SIZE:\n return 'px';\n default:\n return '';\n }\n};\n\nconst expandTypographyCss = (token: RealTransformedToken, versionPostfix: string) => {\n const tokenValue = token.value as TypographyTokenValue;\n return Object.keys(tokenValue)\n .reduce<TypographyTransformationsResult>((result, key) => {\n if (!typographyTransformations[key]) {\n return result;\n }\n const transformed = typographyTransformations[key](tokenValue[key]);\n result.push(...transformed);\n return result;\n }, [])\n .map(({ name, value }) => ` --${token.name}-${name}${versionPostfix}: ${value};`);\n};\n\ntype Duration = { duration: number };\n\ntype Ease = { x1: number; y1: number; x2: number; y2: number };\n\ntype Spring = { stiffness: number; damping: number; mass: number };\n\nexport const cssFormatter = (dictionary: Dictionary, versionPostfix: string): string => {\n const formatCssVariable = (name: string, value: TokenCasualValue) => ` --${name}${versionPostfix}: ${value};`;\n\n const props = dictionary.allProperties\n .reduce<string[]>((result, token) => {\n const { name, value, type, rawValue } = token as RealTransformedToken;\n if (type === 'typography') {\n result.push(...expandTypographyCss(token, versionPostfix));\n } else if (type === 'fontWeights') {\n result.push(formatCssVariable(name, getFontWeightValue(value as TokenCasualValue)));\n } else if (type === 'animation') {\n const { x1, y1, x2, y2, duration } = rawValue as Duration & Ease;\n result.push(formatCssVariable(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`));\n result.push(formatCssVariable(`${name}-duration`, `${duration}ms`));\n } else if (type === 'animationTime') {\n const { duration } = rawValue as Duration;\n result.push(formatCssVariable(`${name}-duration`, `${duration}ms`));\n } else if (type === 'animationEaseBase') {\n const { x1, y1, x2, y2 } = rawValue as Ease;\n result.push(formatCssVariable(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`));\n } else if (type === 'animationEaseSpring') {\n const { stiffness, damping, mass } = rawValue as Spring;\n const [easings] = CSSSpringEasing({ easing: `spring(${mass}, ${stiffness}, ${damping})` });\n result.push(formatCssVariable(`${name}-timing-function`, `linear(${easings})`));\n } else if (type === 'border') {\n const { width, style } = rawValue as Record<string, string | number>;\n result.push(formatCssVariable(name, `${width}px ${style}`));\n } else if (type === 'letterSpacing') {\n result.push(formatCssVariable(name, `${parseFloat(value as string) / 100}em`));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n result.push(formatCssVariable(name, `${value}${getVariableUnit(token)}`));\n }\n return result;\n }, [])\n .join('\\n');\n\n return props;\n};\n\nexport const kebabWithUnderscoreTransformer: Named<Transform> = {\n type: 'name',\n name: 'name/cti/kebabWithUnderscore',\n transformer: (token, options = {}) =>\n paramCase([options.prefix].concat(token.path).join(' '), {\n stripRegexp: /[^A-Z0-9_]+/gi,\n }),\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tokenize.js","sources":["../src/tokenize.ts"],"sourcesContent":["import { paramCase } from 'change-case';\nimport { CSSSpringEasing } from 'spring-easing';\nimport { Named, Transform, TransformedToken, Dictionary } from 'style-dictionary';\n\nimport type {\n TypographyTokenValue,\n TokenCasualValue,\n TypographyTransformationsResult,\n TypographyTransformations,\n RealTransformedToken,\n} from '@hh.ru/magritte-design-tokens-utils/types';\n\nexport const TYPES = {\n BORDER_RADIUS: 'borderRadius',\n BORDER_WIDTH: 'borderWidth',\n COLOR: 'color',\n FONT_FAMILY: 'fontFamily',\n FONT_SIZE: 'fontSizes',\n FONT_WEIGHT: 'fontWeights',\n LETTER_SPACING: 'letterSpacing',\n LINE_HEIGHT: 'lineHeights',\n PARAGRAPH_SPACING: 'paragraphSpacing',\n SIZING: 'sizing',\n SPACING: 'spacing',\n TEXT_CASE: 'textCase',\n\n TEXT_DECORATION: 'textDecoration',\n // shadows\n X: 'x',\n Y: 'y',\n BLUR: 'blur',\n SPREAD: 'spread',\n};\n\nconst FONT_WEIGHT_VALUES = { Bold: 700, 'Semi Bold': 600, Medium: 500, Regular: 400, Italic: 400, Display: 800 };\n\nexport const getFontWeightValue = (value: TokenCasualValue): TokenCasualValue =>\n value in FONT_WEIGHT_VALUES ? FONT_WEIGHT_VALUES[value as keyof typeof FONT_WEIGHT_VALUES] : value;\n\nexport const typographyTransformations: TypographyTransformations = {\n fontFamily: (value) => [{ name: 'font-family', value: `\"${value}\"` }],\n fontWeight: (value) => [\n {\n name: 'font-weight',\n value: getFontWeightValue(value),\n },\n ],\n fontSize: (value) => [{ name: 'font-size', value: `${value}px` }],\n lineHeight: (value) => [{ name: 'line-height', value: `${value}px` }],\n letterSpacing: (value) => [{ name: 'letter-spacing', value: `${parseFloat(value as string) / 100}em` }],\n textCase: (value) => [{ name: 'text-transform', value: (value as string).toLowerCase() }],\n textDecoration: (value) => [{ name: 'text-decoration', value: (value as string).toLowerCase() }],\n paragraphIndent: (value) => [{ name: 'text-indent', value }],\n};\n\nexport const getVariableUnit = (token: TransformedToken): string => {\n const { type } = token;\n\n switch (type) {\n case TYPES.BORDER_RADIUS:\n case TYPES.BORDER_WIDTH:\n case TYPES.PARAGRAPH_SPACING:\n case TYPES.SIZING:\n case TYPES.SPACING:\n case TYPES.X:\n case TYPES.Y:\n case TYPES.BLUR:\n case TYPES.SPREAD:\n case TYPES.FONT_SIZE:\n return 'px';\n default:\n return '';\n }\n};\n\nexport interface FormatterTypographyToken {\n (token: RealTransformedToken, versionPostfix?: string): string[];\n}\nconst formatterTypographyToCssVariable: FormatterTypographyToken = (token, versionPostfix) => {\n const tokenValue = token.value as TypographyTokenValue;\n return Object.keys(tokenValue)\n .reduce<TypographyTransformationsResult>((result, key) => {\n if (!typographyTransformations[key]) {\n return result;\n }\n const transformed = typographyTransformations[key](tokenValue[key]);\n result.push(...transformed);\n return result;\n }, [])\n .map(({ name, value }) => ` --${token.name}-${name}${versionPostfix}: ${value};`);\n};\n\ntype Duration = { duration: number };\n\ntype Ease = { x1: number; y1: number; x2: number; y2: number };\n\ntype Spring = { stiffness: number; damping: number; mass: number };\n\nexport interface FormatterToken {\n (name: string, value: TokenCasualValue, versionPostfix?: string): string;\n}\nconst formatterTokenToCssVariable: FormatterToken = (name, value, versionPostfix) =>\n ` --${name}${versionPostfix}: ${value};`;\n\n// рендерит токены с использованием выбранных форматоров\n// дефолтные форматеры позволят получить токены в виде css переменных\nexport const renderTokensWithFormatter = (\n dictionary: Dictionary,\n versionPostfix: string,\n formatter = formatterTokenToCssVariable,\n formatterTypography = formatterTypographyToCssVariable\n): string => {\n const props = dictionary.allProperties\n .reduce<string[]>((result, token) => {\n const { name, value, type, rawValue } = token as RealTransformedToken;\n if (type === 'typography') {\n result.push(...formatterTypography(token, versionPostfix));\n } else if (type === 'fontWeights') {\n result.push(formatter(name, getFontWeightValue(value as TokenCasualValue), versionPostfix));\n } else if (type === 'animation') {\n const { x1, y1, x2, y2, duration } = rawValue as Duration & Ease;\n result.push(\n formatter(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`, versionPostfix)\n );\n result.push(formatter(`${name}-duration`, `${duration}ms`, versionPostfix));\n } else if (type === 'animationTime') {\n const { duration } = rawValue as Duration;\n result.push(formatter(`${name}-duration`, `${duration}ms`, versionPostfix));\n } else if (type === 'animationEaseBase') {\n const { x1, y1, x2, y2 } = rawValue as Ease;\n result.push(\n formatter(`${name}-timing-function`, `cubic-bezier(${x1}, ${y1}, ${x2}, ${y2})`, versionPostfix)\n );\n } else if (type === 'animationEaseSpring') {\n const { stiffness, damping, mass } = rawValue as Spring;\n const [easings] = CSSSpringEasing({ easing: `spring(${mass}, ${stiffness}, ${damping})` });\n result.push(formatter(`${name}-timing-function`, `linear(${easings})`, versionPostfix));\n } else if (type === 'border') {\n const { width, style } = rawValue as Record<string, string | number>;\n result.push(formatter(name, `${width}px ${style}`, versionPostfix));\n } else if (type === 'letterSpacing') {\n result.push(formatter(name, `${parseFloat(value as string) / 100}em`, versionPostfix));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n result.push(formatter(name, `${value}${getVariableUnit(token)}`, versionPostfix));\n }\n return result;\n }, [])\n .join('\\n');\n\n return props;\n};\n\nexport const kebabWithUnderscoreTransformer: Named<Transform> = {\n type: 'name',\n name: 'name/cti/kebabWithUnderscore',\n transformer: (token, options = {}) =>\n paramCase([options.prefix].concat(token.path).join(' '), {\n stripRegexp: /[^A-Z0-9_]+/gi,\n }),\n};\n"],"names":[],"mappings":"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"}
|