import { SpecifyTextStyleValue } from '@specifyapp/specify-design-token-format'; import { colorToJson } from './color.js'; import { dimensionToJson } from './dimension.js'; import { jsonToken } from '../tokenToJson.js'; import { fontToJson } from './font.js'; export function textStyleToJson(value: SpecifyTextStyleValue) { const tokens: Array = fontToJson(value.font); const textColor = !!value.color ? colorToJson(value.color) : undefined; const textIndent = !!value.textIndent ? dimensionToJson(value.textIndent) : undefined; const fontSize = dimensionToJson(value.fontSize); const lineHeight = !!value.lineHeight ? dimensionToJson(value.lineHeight) : undefined; const letterSpacing = !!value.letterSpacing ? dimensionToJson(value.letterSpacing) : undefined; if (!!textColor) tokens.push({ value: textColor, nameExtension: 'textColor' }); if (!!textIndent) tokens.push({ value: textIndent, nameExtension: 'textIndent' }); if (!!fontSize) tokens.push({ value: fontSize, nameExtension: 'fontSize' }); if (!!lineHeight) tokens.push({ value: lineHeight, nameExtension: 'lineHeight' }); if (!!letterSpacing) tokens.push({ value: letterSpacing, nameExtension: 'letterSpacing' }); if (!!value.paragraphSpacing) tokens.push({ value: dimensionToJson(value.paragraphSpacing), nameExtension: 'paragraphSpacing', }); if (!!value.textIndent) tokens.push({ value: dimensionToJson(value.textIndent), nameExtension: 'textIndent' }); if (!!value.textTransform) tokens.push({ value: value.textTransform, nameExtension: 'textTransform' }); if (!!value.textDecoration) tokens.push({ value: value.textDecoration, nameExtension: 'textDecoration' }); if (!!value.textAlignHorizontal) tokens.push({ value: value.textAlignHorizontal, nameExtension: 'textAlignHorizontal' }); if (!!value.fontFeatures) tokens.push({ value: value.fontFeatures, nameExtension: 'fontFeatures' }); return tokens; }