{"version":3,"file":"generateTextStyleKey.mjs","sources":["../../../../src/scene/text/utils/generateTextStyleKey.ts"],"sourcesContent":["import { Color } from '../../../color/Color';\n\nimport type { ConvertedFillStyle, ConvertedStrokeStyle } from '../../graphics/shared/FillTypes';\nimport type { HTMLTextStyle } from '../../text-html/HtmlTextStyle';\nimport type { TextStyle } from '../TextStyle';\n\nconst valuesToIterateForKeys: Partial[] = [\n 'align',\n 'breakWords',\n 'cssOverrides',\n 'fontVariant',\n 'fontWeight',\n 'leading',\n 'letterSpacing',\n 'lineHeight',\n 'padding',\n 'textBaseline',\n 'trim',\n 'whiteSpace',\n 'wordWrap',\n 'wordWrapWidth',\n 'fontFamily',\n 'fontStyle',\n 'fontSize',\n] as const;\n\n/**\n * Generates a unique key for the text style.\n * @param style - The style to generate a key for.\n * @returns the key for the style.\n */\nexport function generateTextStyleKey(style: TextStyle): string\n{\n const key = [];\n\n let index = 0;\n\n for (let i = 0; i < valuesToIterateForKeys.length; i++)\n {\n const prop = `_${valuesToIterateForKeys[i]}`;\n\n key[index++] = style[prop as keyof typeof style];\n }\n\n index = addFillStyleKey(style._fill, key as string[], index);\n index = addStokeStyleKey(style._stroke, key as string[], index);\n index = addDropShadowKey(style.dropShadow, key as string[], index);\n\n return key.join('-');\n}\n\nfunction addFillStyleKey(fillStyle: ConvertedFillStyle, key: (number | string)[], index: number)\n{\n if (!fillStyle) return index;\n\n key[index++] = fillStyle.color;\n key[index++] = fillStyle.alpha;\n key[index++] = fillStyle.fill?.styleKey;\n\n return index;\n}\n\nfunction addStokeStyleKey(strokeStyle: ConvertedStrokeStyle, key: (number | string)[], index: number)\n{\n if (!strokeStyle) return index;\n\n index = addFillStyleKey(strokeStyle, key, index);\n\n key[index++] = strokeStyle.width;\n key[index++] = strokeStyle.alignment;\n key[index++] = strokeStyle.cap;\n key[index++] = strokeStyle.join;\n key[index++] = strokeStyle.miterLimit;\n\n return index;\n}\n\nfunction addDropShadowKey(dropShadow: TextStyle['dropShadow'], key: (number | string)[], index: number)\n{\n if (!dropShadow) return index;\n\n key[index++] = dropShadow.alpha;\n key[index++] = dropShadow.angle;\n key[index++] = dropShadow.blur;\n key[index++] = dropShadow.distance;\n key[index++] = Color.shared.setValue(dropShadow.color).toNumber();\n\n return index;\n}\n"],"names":[],"mappings":"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"}