@tenphi/tasty 0.0.0-snapshot.09c74e2
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/LICENSE +21 -0
- package/README.md +539 -0
- package/dist/_virtual/_rolldown/runtime.js +8 -0
- package/dist/chunks/cacheKey.js +70 -0
- package/dist/chunks/cacheKey.js.map +1 -0
- package/dist/chunks/definitions.d.ts +37 -0
- package/dist/chunks/definitions.js +260 -0
- package/dist/chunks/definitions.js.map +1 -0
- package/dist/chunks/renderChunk.js +61 -0
- package/dist/chunks/renderChunk.js.map +1 -0
- package/dist/config.d.ts +280 -0
- package/dist/config.js +403 -0
- package/dist/config.js.map +1 -0
- package/dist/core/index.d.ts +33 -0
- package/dist/core/index.js +26 -0
- package/dist/debug.d.ts +204 -0
- package/dist/debug.js +733 -0
- package/dist/debug.js.map +1 -0
- package/dist/hooks/useGlobalStyles.d.ts +27 -0
- package/dist/hooks/useGlobalStyles.js +56 -0
- package/dist/hooks/useGlobalStyles.js.map +1 -0
- package/dist/hooks/useKeyframes.d.ts +56 -0
- package/dist/hooks/useKeyframes.js +54 -0
- package/dist/hooks/useKeyframes.js.map +1 -0
- package/dist/hooks/useProperty.d.ts +79 -0
- package/dist/hooks/useProperty.js +91 -0
- package/dist/hooks/useProperty.js.map +1 -0
- package/dist/hooks/useRawCSS.d.ts +53 -0
- package/dist/hooks/useRawCSS.js +28 -0
- package/dist/hooks/useRawCSS.js.map +1 -0
- package/dist/hooks/useStyles.d.ts +40 -0
- package/dist/hooks/useStyles.js +169 -0
- package/dist/hooks/useStyles.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.js +33 -0
- package/dist/injector/index.d.ts +157 -0
- package/dist/injector/index.js +154 -0
- package/dist/injector/index.js.map +1 -0
- package/dist/injector/injector.d.ts +139 -0
- package/dist/injector/injector.js +404 -0
- package/dist/injector/injector.js.map +1 -0
- package/dist/injector/sheet-manager.d.ts +127 -0
- package/dist/injector/sheet-manager.js +714 -0
- package/dist/injector/sheet-manager.js.map +1 -0
- package/dist/injector/types.d.ts +135 -0
- package/dist/keyframes/index.js +206 -0
- package/dist/keyframes/index.js.map +1 -0
- package/dist/parser/classify.js +319 -0
- package/dist/parser/classify.js.map +1 -0
- package/dist/parser/const.js +33 -0
- package/dist/parser/const.js.map +1 -0
- package/dist/parser/lru.js +109 -0
- package/dist/parser/lru.js.map +1 -0
- package/dist/parser/parser.d.ts +25 -0
- package/dist/parser/parser.js +116 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/parser/tokenizer.js +69 -0
- package/dist/parser/tokenizer.js.map +1 -0
- package/dist/parser/types.d.ts +51 -0
- package/dist/parser/types.js +46 -0
- package/dist/parser/types.js.map +1 -0
- package/dist/pipeline/conditions.d.ts +134 -0
- package/dist/pipeline/conditions.js +406 -0
- package/dist/pipeline/conditions.js.map +1 -0
- package/dist/pipeline/exclusive.js +231 -0
- package/dist/pipeline/exclusive.js.map +1 -0
- package/dist/pipeline/index.d.ts +53 -0
- package/dist/pipeline/index.js +660 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/materialize.js +844 -0
- package/dist/pipeline/materialize.js.map +1 -0
- package/dist/pipeline/parseStateKey.d.ts +15 -0
- package/dist/pipeline/parseStateKey.js +438 -0
- package/dist/pipeline/parseStateKey.js.map +1 -0
- package/dist/pipeline/simplify.js +516 -0
- package/dist/pipeline/simplify.js.map +1 -0
- package/dist/pipeline/warnings.js +18 -0
- package/dist/pipeline/warnings.js.map +1 -0
- package/dist/plugins/okhsl-plugin.d.ts +35 -0
- package/dist/plugins/okhsl-plugin.js +371 -0
- package/dist/plugins/okhsl-plugin.js.map +1 -0
- package/dist/plugins/types.d.ts +69 -0
- package/dist/properties/index.js +158 -0
- package/dist/properties/index.js.map +1 -0
- package/dist/states/index.d.ts +49 -0
- package/dist/states/index.js +416 -0
- package/dist/states/index.js.map +1 -0
- package/dist/static/index.d.ts +5 -0
- package/dist/static/index.js +5 -0
- package/dist/static/tastyStatic.d.ts +46 -0
- package/dist/static/tastyStatic.js +31 -0
- package/dist/static/tastyStatic.js.map +1 -0
- package/dist/static/types.d.ts +49 -0
- package/dist/static/types.js +24 -0
- package/dist/static/types.js.map +1 -0
- package/dist/styles/align.d.ts +15 -0
- package/dist/styles/align.js +14 -0
- package/dist/styles/align.js.map +1 -0
- package/dist/styles/border.d.ts +25 -0
- package/dist/styles/border.js +114 -0
- package/dist/styles/border.js.map +1 -0
- package/dist/styles/color.d.ts +14 -0
- package/dist/styles/color.js +23 -0
- package/dist/styles/color.js.map +1 -0
- package/dist/styles/createStyle.js +77 -0
- package/dist/styles/createStyle.js.map +1 -0
- package/dist/styles/dimension.js +97 -0
- package/dist/styles/dimension.js.map +1 -0
- package/dist/styles/display.d.ts +37 -0
- package/dist/styles/display.js +67 -0
- package/dist/styles/display.js.map +1 -0
- package/dist/styles/fade.d.ts +15 -0
- package/dist/styles/fade.js +58 -0
- package/dist/styles/fade.js.map +1 -0
- package/dist/styles/fill.d.ts +42 -0
- package/dist/styles/fill.js +52 -0
- package/dist/styles/fill.js.map +1 -0
- package/dist/styles/flow.d.ts +16 -0
- package/dist/styles/flow.js +12 -0
- package/dist/styles/flow.js.map +1 -0
- package/dist/styles/gap.d.ts +31 -0
- package/dist/styles/gap.js +37 -0
- package/dist/styles/gap.js.map +1 -0
- package/dist/styles/height.d.ts +17 -0
- package/dist/styles/height.js +20 -0
- package/dist/styles/height.js.map +1 -0
- package/dist/styles/index.d.ts +2 -0
- package/dist/styles/index.js +9 -0
- package/dist/styles/index.js.map +1 -0
- package/dist/styles/inset.d.ts +52 -0
- package/dist/styles/inset.js +150 -0
- package/dist/styles/inset.js.map +1 -0
- package/dist/styles/justify.d.ts +15 -0
- package/dist/styles/justify.js +14 -0
- package/dist/styles/justify.js.map +1 -0
- package/dist/styles/list.d.ts +16 -0
- package/dist/styles/list.js +98 -0
- package/dist/styles/list.js.map +1 -0
- package/dist/styles/margin.d.ts +24 -0
- package/dist/styles/margin.js +104 -0
- package/dist/styles/margin.js.map +1 -0
- package/dist/styles/outline.d.ts +29 -0
- package/dist/styles/outline.js +65 -0
- package/dist/styles/outline.js.map +1 -0
- package/dist/styles/padding.d.ts +24 -0
- package/dist/styles/padding.js +104 -0
- package/dist/styles/padding.js.map +1 -0
- package/dist/styles/predefined.d.ts +73 -0
- package/dist/styles/predefined.js +241 -0
- package/dist/styles/predefined.js.map +1 -0
- package/dist/styles/preset.d.ts +47 -0
- package/dist/styles/preset.js +126 -0
- package/dist/styles/preset.js.map +1 -0
- package/dist/styles/radius.d.ts +14 -0
- package/dist/styles/radius.js +51 -0
- package/dist/styles/radius.js.map +1 -0
- package/dist/styles/scrollbar.d.ts +21 -0
- package/dist/styles/scrollbar.js +112 -0
- package/dist/styles/scrollbar.js.map +1 -0
- package/dist/styles/shadow.d.ts +14 -0
- package/dist/styles/shadow.js +24 -0
- package/dist/styles/shadow.js.map +1 -0
- package/dist/styles/styledScrollbar.d.ts +47 -0
- package/dist/styles/styledScrollbar.js +38 -0
- package/dist/styles/styledScrollbar.js.map +1 -0
- package/dist/styles/transition.d.ts +14 -0
- package/dist/styles/transition.js +158 -0
- package/dist/styles/transition.js.map +1 -0
- package/dist/styles/types.d.ts +498 -0
- package/dist/styles/width.d.ts +17 -0
- package/dist/styles/width.js +20 -0
- package/dist/styles/width.js.map +1 -0
- package/dist/tasty.d.ts +982 -0
- package/dist/tasty.js +206 -0
- package/dist/tasty.js.map +1 -0
- package/dist/tokens/typography.d.ts +19 -0
- package/dist/tokens/typography.js +237 -0
- package/dist/tokens/typography.js.map +1 -0
- package/dist/types.d.ts +184 -0
- package/dist/utils/cache-wrapper.js +26 -0
- package/dist/utils/cache-wrapper.js.map +1 -0
- package/dist/utils/case-converter.js +8 -0
- package/dist/utils/case-converter.js.map +1 -0
- package/dist/utils/colors.d.ts +5 -0
- package/dist/utils/colors.js +9 -0
- package/dist/utils/colors.js.map +1 -0
- package/dist/utils/css-types.d.ts +7 -0
- package/dist/utils/dotize.d.ts +26 -0
- package/dist/utils/dotize.js +122 -0
- package/dist/utils/dotize.js.map +1 -0
- package/dist/utils/filter-base-props.d.ts +15 -0
- package/dist/utils/filter-base-props.js +45 -0
- package/dist/utils/filter-base-props.js.map +1 -0
- package/dist/utils/get-display-name.d.ts +7 -0
- package/dist/utils/get-display-name.js +10 -0
- package/dist/utils/get-display-name.js.map +1 -0
- package/dist/utils/hsl-to-rgb.js +38 -0
- package/dist/utils/hsl-to-rgb.js.map +1 -0
- package/dist/utils/is-dev-env.js +19 -0
- package/dist/utils/is-dev-env.js.map +1 -0
- package/dist/utils/is-valid-element-type.js +15 -0
- package/dist/utils/is-valid-element-type.js.map +1 -0
- package/dist/utils/merge-styles.d.ts +7 -0
- package/dist/utils/merge-styles.js +146 -0
- package/dist/utils/merge-styles.js.map +1 -0
- package/dist/utils/mod-attrs.d.ts +8 -0
- package/dist/utils/mod-attrs.js +21 -0
- package/dist/utils/mod-attrs.js.map +1 -0
- package/dist/utils/okhsl-to-rgb.js +296 -0
- package/dist/utils/okhsl-to-rgb.js.map +1 -0
- package/dist/utils/process-tokens.d.ts +31 -0
- package/dist/utils/process-tokens.js +171 -0
- package/dist/utils/process-tokens.js.map +1 -0
- package/dist/utils/resolve-recipes.d.ts +17 -0
- package/dist/utils/resolve-recipes.js +147 -0
- package/dist/utils/resolve-recipes.js.map +1 -0
- package/dist/utils/string.js +8 -0
- package/dist/utils/string.js.map +1 -0
- package/dist/utils/styles.d.ts +178 -0
- package/dist/utils/styles.js +590 -0
- package/dist/utils/styles.js.map +1 -0
- package/dist/utils/typography.d.ts +36 -0
- package/dist/utils/typography.js +53 -0
- package/dist/utils/typography.js.map +1 -0
- package/dist/utils/warnings.d.ts +16 -0
- package/dist/utils/warnings.js +16 -0
- package/dist/utils/warnings.js.map +1 -0
- package/dist/zero/babel.d.ts +108 -0
- package/dist/zero/babel.js +282 -0
- package/dist/zero/babel.js.map +1 -0
- package/dist/zero/css-writer.d.ts +45 -0
- package/dist/zero/css-writer.js +74 -0
- package/dist/zero/css-writer.js.map +1 -0
- package/dist/zero/extractor.d.ts +24 -0
- package/dist/zero/extractor.js +150 -0
- package/dist/zero/extractor.js.map +1 -0
- package/dist/zero/index.d.ts +3 -0
- package/dist/zero/index.js +4 -0
- package/dist/zero/next.d.ts +60 -0
- package/dist/zero/next.js +78 -0
- package/dist/zero/next.js.map +1 -0
- package/package.json +189 -0
- package/tasty.config.ts +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset.js","names":[],"sources":["../../src/styles/preset.ts"],"sourcesContent":["import { makeEmptyDetails } from '../parser/types';\nimport { parseStyle } from '../utils/styles';\n\nimport type { Styles } from './types';\n\n/**\n * Convert a value to CSS, handling numbers as pixels for numeric properties\n */\nfunction toCSS(\n value: string | number | undefined,\n isNumeric: boolean,\n): string | null {\n if (value == null) return null;\n if (typeof value === 'number') {\n return isNumeric ? `${value}px` : String(value);\n }\n // Parse through style parser to handle custom units like 1x, 2r, etc.\n const processed = parseStyle(String(value));\n return processed.groups[0]?.values[0] || String(value);\n}\n\nfunction setCSSValue(\n styles: Styles,\n styleName: string,\n presetName: string,\n isPropOnly = false,\n) {\n styles[`--${styleName}`] = (() => {\n if (presetName === 'inherit') {\n return 'inherit';\n }\n\n const defaultValue = `var(--default-${styleName}, ${\n styleName === 'font-family'\n ? 'var(--font, NonexistentFontName)'\n : 'inherit'\n })`;\n const fontSuffix =\n styleName === 'font-family' ? ', var(--font, sans-serif)' : '';\n\n if (presetName === 'default') {\n return `${defaultValue}${fontSuffix}`;\n } else {\n return `var(--${presetName}-${styleName}, ${defaultValue})${fontSuffix}`;\n }\n })();\n\n if (!isPropOnly) {\n styles[styleName] = styles[`--${styleName}`];\n }\n}\n\ninterface PresetStyleProps {\n preset?: string | boolean;\n fontSize?: string | number;\n lineHeight?: string | number;\n textTransform?: string;\n letterSpacing?: string | number;\n fontWeight?: string | number;\n fontStyle?: string | boolean;\n fontFamily?: string;\n /** Alias for fontFamily with special handling for 'monospace' and boolean */\n font?: string | boolean;\n}\n\n/**\n * Resolve font/fontFamily value to CSS font-family string.\n *\n * - `font=\"monospace\"` → var(--monospace-font)\n * - `font={true}` → var(--font)\n * - `font=\"CustomFont\"` → CustomFont, var(--font)\n * - `fontFamily=\"Arial\"` → Arial (direct, no fallback)\n */\nfunction resolveFontFamily(\n font: string | boolean | undefined,\n fontFamily: string | undefined,\n): { value: string; setVar: boolean } | null {\n // fontFamily takes precedence as a direct value\n if (fontFamily) {\n return { value: fontFamily, setVar: false };\n }\n\n if (font == null || font === false) {\n return null;\n }\n\n if (font === 'monospace') {\n return { value: 'var(--monospace-font)', setVar: true };\n }\n\n if (font === true) {\n return { value: 'var(--font)', setVar: true };\n }\n\n return { value: `${font}, var(--font)`, setVar: true };\n}\n\n/**\n * Handles typography preset and individual font properties.\n *\n * When `preset` is defined, it sets up CSS custom properties for typography.\n * Individual font props can be used with or without `preset`:\n * - With `preset`: overrides the preset value for that property\n * - Without `preset`: outputs the CSS directly\n *\n * Number values are converted to pixels for fontSize, lineHeight, letterSpacing.\n * fontWeight accepts numbers directly (e.g., 400, 700).\n *\n * font vs fontFamily:\n * - `font` is the recommended prop with special handling (monospace, boolean, fallback)\n * - `fontFamily` is a direct value without special handling\n */\nexport function presetStyle({\n preset,\n fontSize,\n lineHeight,\n textTransform,\n letterSpacing,\n fontWeight,\n fontStyle,\n fontFamily,\n font,\n}: PresetStyleProps) {\n const styles: Styles = {};\n const hasPreset = preset != null && preset !== false;\n\n // Handle preset if defined\n if (hasPreset) {\n const presetValue = preset === true ? '' : String(preset);\n\n const processed = parseStyle(presetValue);\n let { mods } = processed.groups[0] ?? makeEmptyDetails();\n\n const isStrong = mods.includes('strong');\n const isItalic = mods.includes('italic');\n const isIcon = mods.includes('icon');\n const isTight = mods.includes('tight');\n\n mods = mods.filter(\n (mod) =>\n mod !== 'strong' &&\n mod !== 'bold' &&\n mod !== 'italic' &&\n mod !== 'icon' &&\n mod !== 'tight',\n );\n\n const name = mods[0] || 'inherit';\n\n // Set preset values for properties not explicitly overridden\n if (fontSize == null) {\n setCSSValue(styles, 'font-size', name);\n }\n if (lineHeight == null) {\n setCSSValue(styles, 'line-height', name);\n }\n if (letterSpacing == null) {\n setCSSValue(styles, 'letter-spacing', name);\n }\n if (fontWeight == null) {\n setCSSValue(styles, 'font-weight', name);\n }\n if (fontStyle == null) {\n setCSSValue(styles, 'font-style', name);\n }\n if (textTransform == null) {\n setCSSValue(styles, 'text-transform', name);\n }\n if (fontFamily == null && font == null) {\n setCSSValue(styles, 'font-family', name);\n }\n\n setCSSValue(styles, 'bold-font-weight', name, true);\n setCSSValue(styles, 'icon-size', name, true);\n\n if (isStrong) {\n styles['font-weight'] = 'var(--bold-font-weight)';\n }\n if (isItalic) {\n styles['font-style'] = 'italic';\n }\n if (isIcon) {\n styles['font-size'] = 'var(--icon-size)';\n styles['line-height'] = 'var(--icon-size)';\n }\n if (isTight) {\n styles['line-height'] = 'var(--font-size)';\n }\n }\n\n // Handle individual font properties (work with or without preset)\n const fontSizeVal = toCSS(fontSize, true);\n if (fontSizeVal) {\n styles['font-size'] = fontSizeVal;\n }\n\n const lineHeightVal = toCSS(lineHeight, true);\n if (lineHeightVal) {\n styles['line-height'] = lineHeightVal;\n }\n\n const letterSpacingVal = toCSS(letterSpacing, true);\n if (letterSpacingVal) {\n styles['letter-spacing'] = letterSpacingVal;\n }\n\n // fontWeight: numbers should NOT get 'px' suffix\n const fontWeightVal = toCSS(fontWeight, false);\n if (fontWeightVal) {\n styles['font-weight'] = fontWeightVal;\n }\n\n // fontStyle: handle boolean (true → italic) and string values\n if (fontStyle != null) {\n if (fontStyle === true) {\n styles['font-style'] = 'italic';\n } else if (fontStyle !== 'inherit') {\n styles['font-style'] = fontStyle ? 'italic' : 'normal';\n } else {\n styles['font-style'] = 'inherit';\n }\n }\n\n if (textTransform) {\n styles['text-transform'] = textTransform;\n }\n\n // Handle font/fontFamily (font has special handling, fontFamily is direct)\n const fontResult = resolveFontFamily(font, fontFamily);\n if (fontResult) {\n styles['font-family'] = fontResult.value;\n if (fontResult.setVar) {\n styles['--font-family'] = fontResult.value;\n }\n }\n\n // Return undefined if no styles to apply\n if (Object.keys(styles).length === 0) {\n return;\n }\n\n return styles;\n}\n\npresetStyle.__lookupStyles = [\n 'preset',\n 'fontSize',\n 'lineHeight',\n 'letterSpacing',\n 'textTransform',\n 'fontWeight',\n 'fontStyle',\n 'fontFamily',\n 'font',\n];\n"],"mappings":";;;;;;;AAQA,SAAS,MACP,OACA,WACe;AACf,KAAI,SAAS,KAAM,QAAO;AAC1B,KAAI,OAAO,UAAU,SACnB,QAAO,YAAY,GAAG,MAAM,MAAM,OAAO,MAAM;AAIjD,QADkB,WAAW,OAAO,MAAM,CAAC,CAC1B,OAAO,IAAI,OAAO,MAAM,OAAO,MAAM;;AAGxD,SAAS,YACP,QACA,WACA,YACA,aAAa,OACb;AACA,QAAO,KAAK,sBAAsB;AAChC,MAAI,eAAe,UACjB,QAAO;EAGT,MAAM,eAAe,iBAAiB,UAAU,IAC9C,cAAc,gBACV,qCACA,UACL;EACD,MAAM,aACJ,cAAc,gBAAgB,8BAA8B;AAE9D,MAAI,eAAe,UACjB,QAAO,GAAG,eAAe;MAEzB,QAAO,SAAS,WAAW,GAAG,UAAU,IAAI,aAAa,GAAG;KAE5D;AAEJ,KAAI,CAAC,WACH,QAAO,aAAa,OAAO,KAAK;;;;;;;;;;AAyBpC,SAAS,kBACP,MACA,YAC2C;AAE3C,KAAI,WACF,QAAO;EAAE,OAAO;EAAY,QAAQ;EAAO;AAG7C,KAAI,QAAQ,QAAQ,SAAS,MAC3B,QAAO;AAGT,KAAI,SAAS,YACX,QAAO;EAAE,OAAO;EAAyB,QAAQ;EAAM;AAGzD,KAAI,SAAS,KACX,QAAO;EAAE,OAAO;EAAe,QAAQ;EAAM;AAG/C,QAAO;EAAE,OAAO,GAAG,KAAK;EAAgB,QAAQ;EAAM;;;;;;;;;;;;;;;;;AAkBxD,SAAgB,YAAY,EAC1B,QACA,UACA,YACA,eACA,eACA,YACA,WACA,YACA,QACmB;CACnB,MAAM,SAAiB,EAAE;AAIzB,KAHkB,UAAU,QAAQ,WAAW,OAGhC;EAIb,IAAI,EAAE,SADY,WAFE,WAAW,OAAO,KAAK,OAAO,OAAO,CAEhB,CAChB,OAAO,MAAM,kBAAkB;EAExD,MAAM,WAAW,KAAK,SAAS,SAAS;EACxC,MAAM,WAAW,KAAK,SAAS,SAAS;EACxC,MAAM,SAAS,KAAK,SAAS,OAAO;EACpC,MAAM,UAAU,KAAK,SAAS,QAAQ;AAEtC,SAAO,KAAK,QACT,QACC,QAAQ,YACR,QAAQ,UACR,QAAQ,YACR,QAAQ,UACR,QAAQ,QACX;EAED,MAAM,OAAO,KAAK,MAAM;AAGxB,MAAI,YAAY,KACd,aAAY,QAAQ,aAAa,KAAK;AAExC,MAAI,cAAc,KAChB,aAAY,QAAQ,eAAe,KAAK;AAE1C,MAAI,iBAAiB,KACnB,aAAY,QAAQ,kBAAkB,KAAK;AAE7C,MAAI,cAAc,KAChB,aAAY,QAAQ,eAAe,KAAK;AAE1C,MAAI,aAAa,KACf,aAAY,QAAQ,cAAc,KAAK;AAEzC,MAAI,iBAAiB,KACnB,aAAY,QAAQ,kBAAkB,KAAK;AAE7C,MAAI,cAAc,QAAQ,QAAQ,KAChC,aAAY,QAAQ,eAAe,KAAK;AAG1C,cAAY,QAAQ,oBAAoB,MAAM,KAAK;AACnD,cAAY,QAAQ,aAAa,MAAM,KAAK;AAE5C,MAAI,SACF,QAAO,iBAAiB;AAE1B,MAAI,SACF,QAAO,gBAAgB;AAEzB,MAAI,QAAQ;AACV,UAAO,eAAe;AACtB,UAAO,iBAAiB;;AAE1B,MAAI,QACF,QAAO,iBAAiB;;CAK5B,MAAM,cAAc,MAAM,UAAU,KAAK;AACzC,KAAI,YACF,QAAO,eAAe;CAGxB,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAC7C,KAAI,cACF,QAAO,iBAAiB;CAG1B,MAAM,mBAAmB,MAAM,eAAe,KAAK;AACnD,KAAI,iBACF,QAAO,oBAAoB;CAI7B,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAC9C,KAAI,cACF,QAAO,iBAAiB;AAI1B,KAAI,aAAa,KACf,KAAI,cAAc,KAChB,QAAO,gBAAgB;UACd,cAAc,UACvB,QAAO,gBAAgB,YAAY,WAAW;KAE9C,QAAO,gBAAgB;AAI3B,KAAI,cACF,QAAO,oBAAoB;CAI7B,MAAM,aAAa,kBAAkB,MAAM,WAAW;AACtD,KAAI,YAAY;AACd,SAAO,iBAAiB,WAAW;AACnC,MAAI,WAAW,OACb,QAAO,mBAAmB,WAAW;;AAKzC,KAAI,OAAO,KAAK,OAAO,CAAC,WAAW,EACjC;AAGF,QAAO;;AAGT,YAAY,iBAAiB;CAC3B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/styles/radius.d.ts
|
|
2
|
+
declare function radiusStyle({
|
|
3
|
+
radius
|
|
4
|
+
}: {
|
|
5
|
+
radius?: string | number | boolean;
|
|
6
|
+
}): {
|
|
7
|
+
'border-radius': string;
|
|
8
|
+
} | undefined;
|
|
9
|
+
declare namespace radiusStyle {
|
|
10
|
+
var __lookupStyles: string[];
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { radiusStyle };
|
|
14
|
+
//# sourceMappingURL=radius.d.ts.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { makeEmptyDetails } from "../parser/types.js";
|
|
2
|
+
import { DIRECTIONS, parseStyle } from "../utils/styles.js";
|
|
3
|
+
|
|
4
|
+
//#region src/styles/radius.ts
|
|
5
|
+
const PROP = "var(--radius)";
|
|
6
|
+
const SHARP = "var(--sharp-radius)";
|
|
7
|
+
function radiusStyle({ radius }) {
|
|
8
|
+
if (typeof radius === "number") radius = `${radius}px`;
|
|
9
|
+
if (!radius) return;
|
|
10
|
+
if (radius === true) radius = "1r";
|
|
11
|
+
const processed = parseStyle(radius);
|
|
12
|
+
const { mods } = processed.groups[0] ?? makeEmptyDetails();
|
|
13
|
+
let { values } = processed.groups[0] ?? makeEmptyDetails();
|
|
14
|
+
if (mods.includes("round")) values = ["9999rem"];
|
|
15
|
+
else if (mods.includes("ellipse")) values = ["50%"];
|
|
16
|
+
else if (!values.length) values = [PROP];
|
|
17
|
+
if (mods.includes("leaf")) values = [
|
|
18
|
+
values[1] || SHARP,
|
|
19
|
+
values[0] || PROP,
|
|
20
|
+
values[1] || SHARP,
|
|
21
|
+
values[0] || PROP
|
|
22
|
+
];
|
|
23
|
+
else if (mods.includes("backleaf")) values = [
|
|
24
|
+
values[0] || PROP,
|
|
25
|
+
values[1] || SHARP,
|
|
26
|
+
values[0] || PROP,
|
|
27
|
+
values[1] || SHARP
|
|
28
|
+
];
|
|
29
|
+
else if (mods.length) {
|
|
30
|
+
const arr = [
|
|
31
|
+
"0",
|
|
32
|
+
"0",
|
|
33
|
+
"0",
|
|
34
|
+
"0"
|
|
35
|
+
];
|
|
36
|
+
let flag = false;
|
|
37
|
+
DIRECTIONS.forEach((dir, i) => {
|
|
38
|
+
if (!mods.includes(dir)) return;
|
|
39
|
+
flag = true;
|
|
40
|
+
arr[i] = values[0] || PROP;
|
|
41
|
+
arr[(i + 1) % 4] = values[0] || PROP;
|
|
42
|
+
});
|
|
43
|
+
if (flag) values = arr;
|
|
44
|
+
}
|
|
45
|
+
return { "border-radius": values.join(" ") };
|
|
46
|
+
}
|
|
47
|
+
radiusStyle.__lookupStyles = ["radius"];
|
|
48
|
+
|
|
49
|
+
//#endregion
|
|
50
|
+
export { radiusStyle };
|
|
51
|
+
//# sourceMappingURL=radius.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radius.js","names":[],"sources":["../../src/styles/radius.ts"],"sourcesContent":["import { makeEmptyDetails } from '../parser/types';\nimport { DIRECTIONS, parseStyle } from '../utils/styles';\n\nconst PROP = 'var(--radius)';\nconst SHARP = 'var(--sharp-radius)';\n\nexport function radiusStyle({\n radius,\n}: {\n radius?: string | number | boolean;\n}) {\n if (typeof radius === 'number') {\n radius = `${radius}px`;\n }\n\n if (!radius) return;\n\n if (radius === true) radius = '1r';\n\n const processed = parseStyle(radius);\n const { mods } = processed.groups[0] ?? makeEmptyDetails();\n let { values } = processed.groups[0] ?? makeEmptyDetails();\n\n if (mods.includes('round')) {\n values = ['9999rem'];\n } else if (mods.includes('ellipse')) {\n values = ['50%'];\n } else if (!values.length) {\n values = [PROP];\n }\n\n if (mods.includes('leaf')) {\n values = [\n values[1] || SHARP,\n values[0] || PROP,\n values[1] || SHARP,\n values[0] || PROP,\n ];\n } else if (mods.includes('backleaf')) {\n values = [\n values[0] || PROP,\n values[1] || SHARP,\n values[0] || PROP,\n values[1] || SHARP,\n ];\n } else if (mods.length) {\n const arr = ['0', '0', '0', '0'];\n\n let flag = false;\n\n DIRECTIONS.forEach((dir, i) => {\n if (!mods.includes(dir)) return;\n\n flag = true;\n\n arr[i] = values[0] || PROP;\n arr[(i + 1) % 4] = values[0] || PROP;\n });\n\n if (flag) {\n values = arr;\n }\n }\n\n return {\n 'border-radius': values.join(' '),\n };\n}\n\nradiusStyle.__lookupStyles = ['radius'];\n"],"mappings":";;;;AAGA,MAAM,OAAO;AACb,MAAM,QAAQ;AAEd,SAAgB,YAAY,EAC1B,UAGC;AACD,KAAI,OAAO,WAAW,SACpB,UAAS,GAAG,OAAO;AAGrB,KAAI,CAAC,OAAQ;AAEb,KAAI,WAAW,KAAM,UAAS;CAE9B,MAAM,YAAY,WAAW,OAAO;CACpC,MAAM,EAAE,SAAS,UAAU,OAAO,MAAM,kBAAkB;CAC1D,IAAI,EAAE,WAAW,UAAU,OAAO,MAAM,kBAAkB;AAE1D,KAAI,KAAK,SAAS,QAAQ,CACxB,UAAS,CAAC,UAAU;UACX,KAAK,SAAS,UAAU,CACjC,UAAS,CAAC,MAAM;UACP,CAAC,OAAO,OACjB,UAAS,CAAC,KAAK;AAGjB,KAAI,KAAK,SAAS,OAAO,CACvB,UAAS;EACP,OAAO,MAAM;EACb,OAAO,MAAM;EACb,OAAO,MAAM;EACb,OAAO,MAAM;EACd;UACQ,KAAK,SAAS,WAAW,CAClC,UAAS;EACP,OAAO,MAAM;EACb,OAAO,MAAM;EACb,OAAO,MAAM;EACb,OAAO,MAAM;EACd;UACQ,KAAK,QAAQ;EACtB,MAAM,MAAM;GAAC;GAAK;GAAK;GAAK;GAAI;EAEhC,IAAI,OAAO;AAEX,aAAW,SAAS,KAAK,MAAM;AAC7B,OAAI,CAAC,KAAK,SAAS,IAAI,CAAE;AAEzB,UAAO;AAEP,OAAI,KAAK,OAAO,MAAM;AACtB,QAAK,IAAI,KAAK,KAAK,OAAO,MAAM;IAChC;AAEF,MAAI,KACF,UAAS;;AAIb,QAAO,EACL,iBAAiB,OAAO,KAAK,IAAI,EAClC;;AAGH,YAAY,iBAAiB,CAAC,SAAS"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/styles/scrollbar.d.ts
|
|
2
|
+
interface ScrollbarStyleProps {
|
|
3
|
+
scrollbar?: string | boolean | number;
|
|
4
|
+
overflow?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Creates cross-browser compatible scrollbar styles
|
|
8
|
+
*
|
|
9
|
+
* Supports both Firefox (scrollbar-width, scrollbar-color) and
|
|
10
|
+
* WebKit/Chromium browsers (::-webkit-scrollbar)
|
|
11
|
+
*/
|
|
12
|
+
declare function scrollbarStyle({
|
|
13
|
+
scrollbar,
|
|
14
|
+
overflow
|
|
15
|
+
}: ScrollbarStyleProps): Record<string, string | Record<string, string>> | undefined;
|
|
16
|
+
declare namespace scrollbarStyle {
|
|
17
|
+
var __lookupStyles: string[];
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { scrollbarStyle };
|
|
21
|
+
//# sourceMappingURL=scrollbar.d.ts.map
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { makeEmptyDetails } from "../parser/types.js";
|
|
2
|
+
import { parseStyle } from "../utils/styles.js";
|
|
3
|
+
|
|
4
|
+
//#region src/styles/scrollbar.ts
|
|
5
|
+
/**
|
|
6
|
+
* Creates cross-browser compatible scrollbar styles
|
|
7
|
+
*
|
|
8
|
+
* Supports both Firefox (scrollbar-width, scrollbar-color) and
|
|
9
|
+
* WebKit/Chromium browsers (::-webkit-scrollbar)
|
|
10
|
+
*/
|
|
11
|
+
function scrollbarStyle({ scrollbar, overflow }) {
|
|
12
|
+
if (!scrollbar && scrollbar !== 0) return;
|
|
13
|
+
const value = scrollbar === true || scrollbar === "" ? "thin" : scrollbar;
|
|
14
|
+
const { mods, colors, values } = parseStyle(String(value)).groups[0] ?? makeEmptyDetails();
|
|
15
|
+
const style = {};
|
|
16
|
+
function getNested(key) {
|
|
17
|
+
const v = style[key];
|
|
18
|
+
if (v && typeof v === "object") return v;
|
|
19
|
+
return {};
|
|
20
|
+
}
|
|
21
|
+
const defaultThumbColor = "var(--scrollbar-thumb-color)";
|
|
22
|
+
const defaultTrackColor = "var(--scrollbar-track-color, transparent)";
|
|
23
|
+
style["scrollbar-color"] = `${defaultThumbColor} transparent`;
|
|
24
|
+
const sizeValue = values[0] || "8px";
|
|
25
|
+
if (mods.includes("thin")) style["scrollbar-width"] = "thin";
|
|
26
|
+
else if (mods.includes("none")) {
|
|
27
|
+
style["scrollbar-width"] = "none";
|
|
28
|
+
delete style["scrollbar-color"];
|
|
29
|
+
style["&::-webkit-scrollbar"] = {
|
|
30
|
+
width: "0px",
|
|
31
|
+
height: "0px",
|
|
32
|
+
display: "none"
|
|
33
|
+
};
|
|
34
|
+
return style;
|
|
35
|
+
} else if (mods.includes("auto")) style["scrollbar-width"] = "auto";
|
|
36
|
+
if (mods.includes("stable") || mods.includes("both-edges")) style["scrollbar-gutter"] = mods.includes("both-edges") ? "stable both-edges" : "stable";
|
|
37
|
+
if (sizeValue) style["&::-webkit-scrollbar"] = {
|
|
38
|
+
...getNested("&::-webkit-scrollbar"),
|
|
39
|
+
width: sizeValue,
|
|
40
|
+
height: sizeValue
|
|
41
|
+
};
|
|
42
|
+
const thumbColor = colors && colors[0] ? colors[0] : defaultThumbColor;
|
|
43
|
+
const trackColor = colors && colors[1] ? colors[1] : defaultTrackColor;
|
|
44
|
+
const cornerColor = colors && colors[2] ? colors[2] : trackColor;
|
|
45
|
+
if (colors && colors.length) {
|
|
46
|
+
style["scrollbar-color"] = `${thumbColor} ${trackColor}`;
|
|
47
|
+
const webkitScrollbar = getNested("&::-webkit-scrollbar");
|
|
48
|
+
webkitScrollbar["background"] = trackColor;
|
|
49
|
+
style["&::-webkit-scrollbar"] = webkitScrollbar;
|
|
50
|
+
style["&::-webkit-scrollbar-track"] = {
|
|
51
|
+
...getNested("&::-webkit-scrollbar-track"),
|
|
52
|
+
background: trackColor
|
|
53
|
+
};
|
|
54
|
+
style["&::-webkit-scrollbar-thumb"] = {
|
|
55
|
+
...getNested("&::-webkit-scrollbar-thumb"),
|
|
56
|
+
background: thumbColor
|
|
57
|
+
};
|
|
58
|
+
style["&::-webkit-scrollbar-corner"] = {
|
|
59
|
+
...getNested("&::-webkit-scrollbar-corner"),
|
|
60
|
+
background: cornerColor
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
if (mods.includes("always")) {
|
|
64
|
+
style["overflow"] = overflow || "scroll";
|
|
65
|
+
if (!style["scrollbar-gutter"]) style["scrollbar-gutter"] = "stable";
|
|
66
|
+
const alwaysScrollbar = getNested("&::-webkit-scrollbar");
|
|
67
|
+
alwaysScrollbar["display"] = "block";
|
|
68
|
+
style["&::-webkit-scrollbar"] = alwaysScrollbar;
|
|
69
|
+
}
|
|
70
|
+
if (mods.includes("styled")) {
|
|
71
|
+
const baseTransition = [
|
|
72
|
+
"background var(--transition)",
|
|
73
|
+
"border-radius var(--transition)",
|
|
74
|
+
"box-shadow var(--transition)",
|
|
75
|
+
"width var(--transition)",
|
|
76
|
+
"height var(--transition)",
|
|
77
|
+
"border var(--transition)"
|
|
78
|
+
].join(", ");
|
|
79
|
+
style["scrollbar-width"] = style["scrollbar-width"] || "thin";
|
|
80
|
+
style["scrollbar-color"] = style["scrollbar-color"] || `${defaultThumbColor} ${defaultTrackColor}`;
|
|
81
|
+
style["&::-webkit-scrollbar"] = {
|
|
82
|
+
width: sizeValue,
|
|
83
|
+
height: sizeValue,
|
|
84
|
+
transition: baseTransition,
|
|
85
|
+
background: defaultTrackColor,
|
|
86
|
+
...getNested("&::-webkit-scrollbar")
|
|
87
|
+
};
|
|
88
|
+
style["&::-webkit-scrollbar-thumb"] = {
|
|
89
|
+
"border-radius": "8px",
|
|
90
|
+
"min-height": "24px",
|
|
91
|
+
transition: baseTransition,
|
|
92
|
+
background: defaultThumbColor,
|
|
93
|
+
...getNested("&::-webkit-scrollbar-thumb")
|
|
94
|
+
};
|
|
95
|
+
style["&::-webkit-scrollbar-track"] = {
|
|
96
|
+
background: defaultTrackColor,
|
|
97
|
+
transition: baseTransition,
|
|
98
|
+
...getNested("&::-webkit-scrollbar-track")
|
|
99
|
+
};
|
|
100
|
+
style["&::-webkit-scrollbar-corner"] = {
|
|
101
|
+
background: defaultTrackColor,
|
|
102
|
+
transition: baseTransition,
|
|
103
|
+
...getNested("&::-webkit-scrollbar-corner")
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
return style;
|
|
107
|
+
}
|
|
108
|
+
scrollbarStyle.__lookupStyles = ["scrollbar", "overflow"];
|
|
109
|
+
|
|
110
|
+
//#endregion
|
|
111
|
+
export { scrollbarStyle };
|
|
112
|
+
//# sourceMappingURL=scrollbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrollbar.js","names":[],"sources":["../../src/styles/scrollbar.ts"],"sourcesContent":["import { makeEmptyDetails } from '../parser/types';\nimport { parseStyle } from '../utils/styles';\n\ninterface ScrollbarStyleProps {\n scrollbar?: string | boolean | number;\n overflow?: string;\n}\n\n/**\n * Creates cross-browser compatible scrollbar styles\n *\n * Supports both Firefox (scrollbar-width, scrollbar-color) and\n * WebKit/Chromium browsers (::-webkit-scrollbar)\n */\nexport function scrollbarStyle({ scrollbar, overflow }: ScrollbarStyleProps) {\n // Check if scrollbar is defined\n if (!scrollbar && scrollbar !== 0) return;\n\n // Support true as alias for thin\n const value = scrollbar === true || scrollbar === '' ? 'thin' : scrollbar;\n const processed = parseStyle(String(value));\n const { mods, colors, values } = processed.groups[0] ?? makeEmptyDetails();\n type NestedStyle = Record<string, string>;\n type ScrollbarStyleMap = Record<string, string | NestedStyle>;\n const style: ScrollbarStyleMap = {};\n\n function getNested(key: string): NestedStyle {\n const v = style[key];\n if (v && typeof v === 'object') return v;\n return {};\n }\n\n // Default colors for scrollbar\n const defaultThumbColor = 'var(--scrollbar-thumb-color)';\n const defaultTrackColor = 'var(--scrollbar-track-color, transparent)';\n\n // Setup default Firefox scrollbar style\n style['scrollbar-color'] = `${defaultThumbColor} transparent`;\n\n // Default scrollbar size\n const defaultSize = '8px';\n const sizeValue = values[0] || defaultSize;\n\n // Process modifiers\n if (mods.includes('thin')) {\n style['scrollbar-width'] = 'thin';\n } else if (mods.includes('none')) {\n style['scrollbar-width'] = 'none';\n // Remove scrollbar-color as it's not needed when scrollbar is hidden\n delete style['scrollbar-color'];\n // Also hide WebKit scrollbars\n style['&::-webkit-scrollbar'] = {\n width: '0px',\n height: '0px',\n display: 'none',\n };\n\n return style;\n } else if (mods.includes('auto')) {\n style['scrollbar-width'] = 'auto';\n }\n\n // Handle scrollbar gutter behavior\n if (mods.includes('stable') || mods.includes('both-edges')) {\n // scrollbar-gutter is supported in newer browsers only\n style['scrollbar-gutter'] = mods.includes('both-edges')\n ? 'stable both-edges'\n : 'stable';\n }\n\n // Custom size setup for WebKit\n if (sizeValue) {\n style['&::-webkit-scrollbar'] = {\n ...getNested('&::-webkit-scrollbar'),\n width: sizeValue,\n height: sizeValue,\n };\n }\n\n // Extract colors (support up to 3: thumb, track, corner)\n // These will be used in various places throughout the function\n const thumbColor = colors && colors[0] ? colors[0] : defaultThumbColor;\n const trackColor = colors && colors[1] ? colors[1] : defaultTrackColor;\n const cornerColor = colors && colors[2] ? colors[2] : trackColor;\n\n // Apply colors if they are specified\n if (colors && colors.length) {\n // Firefox\n style['scrollbar-color'] = `${thumbColor} ${trackColor}`;\n\n // WebKit - always set these for consistency\n const webkitScrollbar = getNested('&::-webkit-scrollbar');\n webkitScrollbar['background'] = trackColor;\n style['&::-webkit-scrollbar'] = webkitScrollbar;\n\n style['&::-webkit-scrollbar-track'] = {\n ...getNested('&::-webkit-scrollbar-track'),\n background: trackColor,\n };\n\n style['&::-webkit-scrollbar-thumb'] = {\n ...getNested('&::-webkit-scrollbar-thumb'),\n background: thumbColor,\n };\n\n style['&::-webkit-scrollbar-corner'] = {\n ...getNested('&::-webkit-scrollbar-corner'),\n background: cornerColor,\n };\n }\n\n // Handle 'always' mode: force scrollbars to show\n if (mods.includes('always')) {\n style['overflow'] = overflow || 'scroll';\n\n // Use auto for WebKit browsers since they don't support 'always'\n // This is closer to the expected behavior\n if (!style['scrollbar-gutter']) {\n style['scrollbar-gutter'] = 'stable';\n }\n\n // Ensure scrollbars appear in WebKit even with little content\n const alwaysScrollbar = getNested('&::-webkit-scrollbar');\n alwaysScrollbar['display'] = 'block';\n style['&::-webkit-scrollbar'] = alwaysScrollbar;\n }\n\n // Enhanced 'styled' mode with better transitions and appearance\n if (mods.includes('styled')) {\n const baseTransition = [\n 'background var(--transition)',\n 'border-radius var(--transition)',\n 'box-shadow var(--transition)',\n 'width var(--transition)',\n 'height var(--transition)',\n 'border var(--transition)',\n ].join(', ');\n\n // Firefox\n style['scrollbar-width'] = style['scrollbar-width'] || 'thin';\n style['scrollbar-color'] =\n style['scrollbar-color'] || `${defaultThumbColor} ${defaultTrackColor}`;\n\n // WebKit\n style['&::-webkit-scrollbar'] = {\n width: sizeValue,\n height: sizeValue,\n transition: baseTransition,\n background: defaultTrackColor,\n ...getNested('&::-webkit-scrollbar'),\n };\n\n style['&::-webkit-scrollbar-thumb'] = {\n 'border-radius': '8px',\n 'min-height': '24px',\n transition: baseTransition,\n background: defaultThumbColor,\n ...getNested('&::-webkit-scrollbar-thumb'),\n };\n\n style['&::-webkit-scrollbar-track'] = {\n background: defaultTrackColor,\n transition: baseTransition,\n ...getNested('&::-webkit-scrollbar-track'),\n };\n\n style['&::-webkit-scrollbar-corner'] = {\n background: defaultTrackColor,\n transition: baseTransition,\n ...getNested('&::-webkit-scrollbar-corner'),\n };\n }\n\n return style;\n}\n\nscrollbarStyle.__lookupStyles = ['scrollbar', 'overflow'];\n"],"mappings":";;;;;;;;;;AAcA,SAAgB,eAAe,EAAE,WAAW,YAAiC;AAE3E,KAAI,CAAC,aAAa,cAAc,EAAG;CAGnC,MAAM,QAAQ,cAAc,QAAQ,cAAc,KAAK,SAAS;CAEhE,MAAM,EAAE,MAAM,QAAQ,WADJ,WAAW,OAAO,MAAM,CAAC,CACA,OAAO,MAAM,kBAAkB;CAG1E,MAAM,QAA2B,EAAE;CAEnC,SAAS,UAAU,KAA0B;EAC3C,MAAM,IAAI,MAAM;AAChB,MAAI,KAAK,OAAO,MAAM,SAAU,QAAO;AACvC,SAAO,EAAE;;CAIX,MAAM,oBAAoB;CAC1B,MAAM,oBAAoB;AAG1B,OAAM,qBAAqB,GAAG,kBAAkB;CAIhD,MAAM,YAAY,OAAO,MADL;AAIpB,KAAI,KAAK,SAAS,OAAO,CACvB,OAAM,qBAAqB;UAClB,KAAK,SAAS,OAAO,EAAE;AAChC,QAAM,qBAAqB;AAE3B,SAAO,MAAM;AAEb,QAAM,0BAA0B;GAC9B,OAAO;GACP,QAAQ;GACR,SAAS;GACV;AAED,SAAO;YACE,KAAK,SAAS,OAAO,CAC9B,OAAM,qBAAqB;AAI7B,KAAI,KAAK,SAAS,SAAS,IAAI,KAAK,SAAS,aAAa,CAExD,OAAM,sBAAsB,KAAK,SAAS,aAAa,GACnD,sBACA;AAIN,KAAI,UACF,OAAM,0BAA0B;EAC9B,GAAG,UAAU,uBAAuB;EACpC,OAAO;EACP,QAAQ;EACT;CAKH,MAAM,aAAa,UAAU,OAAO,KAAK,OAAO,KAAK;CACrD,MAAM,aAAa,UAAU,OAAO,KAAK,OAAO,KAAK;CACrD,MAAM,cAAc,UAAU,OAAO,KAAK,OAAO,KAAK;AAGtD,KAAI,UAAU,OAAO,QAAQ;AAE3B,QAAM,qBAAqB,GAAG,WAAW,GAAG;EAG5C,MAAM,kBAAkB,UAAU,uBAAuB;AACzD,kBAAgB,gBAAgB;AAChC,QAAM,0BAA0B;AAEhC,QAAM,gCAAgC;GACpC,GAAG,UAAU,6BAA6B;GAC1C,YAAY;GACb;AAED,QAAM,gCAAgC;GACpC,GAAG,UAAU,6BAA6B;GAC1C,YAAY;GACb;AAED,QAAM,iCAAiC;GACrC,GAAG,UAAU,8BAA8B;GAC3C,YAAY;GACb;;AAIH,KAAI,KAAK,SAAS,SAAS,EAAE;AAC3B,QAAM,cAAc,YAAY;AAIhC,MAAI,CAAC,MAAM,oBACT,OAAM,sBAAsB;EAI9B,MAAM,kBAAkB,UAAU,uBAAuB;AACzD,kBAAgB,aAAa;AAC7B,QAAM,0BAA0B;;AAIlC,KAAI,KAAK,SAAS,SAAS,EAAE;EAC3B,MAAM,iBAAiB;GACrB;GACA;GACA;GACA;GACA;GACA;GACD,CAAC,KAAK,KAAK;AAGZ,QAAM,qBAAqB,MAAM,sBAAsB;AACvD,QAAM,qBACJ,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;AAGtD,QAAM,0BAA0B;GAC9B,OAAO;GACP,QAAQ;GACR,YAAY;GACZ,YAAY;GACZ,GAAG,UAAU,uBAAuB;GACrC;AAED,QAAM,gCAAgC;GACpC,iBAAiB;GACjB,cAAc;GACd,YAAY;GACZ,YAAY;GACZ,GAAG,UAAU,6BAA6B;GAC3C;AAED,QAAM,gCAAgC;GACpC,YAAY;GACZ,YAAY;GACZ,GAAG,UAAU,6BAA6B;GAC3C;AAED,QAAM,iCAAiC;GACrC,YAAY;GACZ,YAAY;GACZ,GAAG,UAAU,8BAA8B;GAC5C;;AAGH,QAAO;;AAGT,eAAe,iBAAiB,CAAC,aAAa,WAAW"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/styles/shadow.d.ts
|
|
2
|
+
declare function shadowStyle({
|
|
3
|
+
shadow
|
|
4
|
+
}: {
|
|
5
|
+
shadow?: string | boolean;
|
|
6
|
+
}): {
|
|
7
|
+
'box-shadow': string;
|
|
8
|
+
} | undefined;
|
|
9
|
+
declare namespace shadowStyle {
|
|
10
|
+
var __lookupStyles: string[];
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { shadowStyle };
|
|
14
|
+
//# sourceMappingURL=shadow.d.ts.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { makeEmptyDetails } from "../parser/types.js";
|
|
2
|
+
import { parseStyle } from "../utils/styles.js";
|
|
3
|
+
|
|
4
|
+
//#region src/styles/shadow.ts
|
|
5
|
+
function toBoxShadow(shadow) {
|
|
6
|
+
const { values, mods, colors } = parseStyle(shadow).groups[0] ?? makeEmptyDetails();
|
|
7
|
+
const mod = mods[0] || "";
|
|
8
|
+
const shadowColor = (colors && colors[0]) ?? "";
|
|
9
|
+
return [
|
|
10
|
+
mod,
|
|
11
|
+
...values,
|
|
12
|
+
shadowColor
|
|
13
|
+
].join(" ");
|
|
14
|
+
}
|
|
15
|
+
function shadowStyle({ shadow }) {
|
|
16
|
+
if (!shadow) return;
|
|
17
|
+
if (shadow === true) shadow = "var(--shadow)";
|
|
18
|
+
return { "box-shadow": shadow.split(",").map(toBoxShadow).join(",") };
|
|
19
|
+
}
|
|
20
|
+
shadowStyle.__lookupStyles = ["shadow"];
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { shadowStyle };
|
|
24
|
+
//# sourceMappingURL=shadow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow.js","names":[],"sources":["../../src/styles/shadow.ts"],"sourcesContent":["import { makeEmptyDetails } from '../parser/types';\nimport { parseStyle } from '../utils/styles';\n\nfunction toBoxShadow(shadow: string): string {\n const processed = parseStyle(shadow);\n const { values, mods, colors } = processed.groups[0] ?? makeEmptyDetails();\n const mod = mods[0] || '';\n const shadowColor = (colors && colors[0]) ?? '';\n\n return [mod, ...values, shadowColor].join(' ');\n}\n\nexport function shadowStyle({ shadow }: { shadow?: string | boolean }) {\n if (!shadow) return;\n\n if (shadow === true) shadow = 'var(--shadow)';\n\n return {\n 'box-shadow': shadow.split(',').map(toBoxShadow).join(','),\n };\n}\n\nshadowStyle.__lookupStyles = ['shadow'];\n"],"mappings":";;;;AAGA,SAAS,YAAY,QAAwB;CAE3C,MAAM,EAAE,QAAQ,MAAM,WADJ,WAAW,OAAO,CACO,OAAO,MAAM,kBAAkB;CAC1E,MAAM,MAAM,KAAK,MAAM;CACvB,MAAM,eAAe,UAAU,OAAO,OAAO;AAE7C,QAAO;EAAC;EAAK,GAAG;EAAQ;EAAY,CAAC,KAAK,IAAI;;AAGhD,SAAgB,YAAY,EAAE,UAAyC;AACrE,KAAI,CAAC,OAAQ;AAEb,KAAI,WAAW,KAAM,UAAS;AAE9B,QAAO,EACL,cAAc,OAAO,MAAM,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,IAAI,EAC3D;;AAGH,YAAY,iBAAiB,CAAC,SAAS"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
//#region src/styles/styledScrollbar.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated `styledScrollbar` is deprecated. Use `scrollbar` instead.
|
|
4
|
+
*/
|
|
5
|
+
declare function styledScrollbarStyle({
|
|
6
|
+
styledScrollbar: val
|
|
7
|
+
}: {
|
|
8
|
+
styledScrollbar?: string | boolean | null;
|
|
9
|
+
}): ({
|
|
10
|
+
$: string;
|
|
11
|
+
display: string;
|
|
12
|
+
'scrollbar-width'?: undefined;
|
|
13
|
+
} | {
|
|
14
|
+
'scrollbar-width': string;
|
|
15
|
+
$?: undefined;
|
|
16
|
+
display?: undefined;
|
|
17
|
+
})[] | ({
|
|
18
|
+
$: string;
|
|
19
|
+
width: string;
|
|
20
|
+
height: string;
|
|
21
|
+
'background-color'?: undefined;
|
|
22
|
+
'border-radius'?: undefined;
|
|
23
|
+
border?: undefined;
|
|
24
|
+
'background-clip'?: undefined;
|
|
25
|
+
} | {
|
|
26
|
+
$: string;
|
|
27
|
+
'background-color': string;
|
|
28
|
+
width?: undefined;
|
|
29
|
+
height?: undefined;
|
|
30
|
+
'border-radius'?: undefined;
|
|
31
|
+
border?: undefined;
|
|
32
|
+
'background-clip'?: undefined;
|
|
33
|
+
} | {
|
|
34
|
+
$: string;
|
|
35
|
+
'background-color': string;
|
|
36
|
+
'border-radius': string;
|
|
37
|
+
border: string;
|
|
38
|
+
'background-clip': string;
|
|
39
|
+
width?: undefined;
|
|
40
|
+
height?: undefined;
|
|
41
|
+
})[] | null;
|
|
42
|
+
declare namespace styledScrollbarStyle {
|
|
43
|
+
var __lookupStyles: string[];
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { styledScrollbarStyle };
|
|
47
|
+
//# sourceMappingURL=styledScrollbar.d.ts.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region src/styles/styledScrollbar.ts
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated `styledScrollbar` is deprecated. Use `scrollbar` instead.
|
|
4
|
+
*/
|
|
5
|
+
function styledScrollbarStyle({ styledScrollbar: val }) {
|
|
6
|
+
if (val == null) return null;
|
|
7
|
+
if (!val) return [{
|
|
8
|
+
$: "::-webkit-scrollbar",
|
|
9
|
+
display: "none"
|
|
10
|
+
}, { "scrollbar-width": "none" }];
|
|
11
|
+
return [
|
|
12
|
+
{
|
|
13
|
+
$: "::-webkit-scrollbar",
|
|
14
|
+
width: "var(--scrollbar-width)",
|
|
15
|
+
height: "var(--scrollbar-width)"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
$: "::-webkit-scrollbar-track",
|
|
19
|
+
"background-color": "var(--scrollbar-bg-color)"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
$: "::-webkit-scrollbar-thumb",
|
|
23
|
+
"background-color": "var(--scrollbar-thumb-color)",
|
|
24
|
+
"border-radius": "var(--scrollbar-radius)",
|
|
25
|
+
border: "var(--scrollbar-outline-width) solid var(--scrollbar-outline-color)",
|
|
26
|
+
"background-clip": "padding-box"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
$: "::-webkit-scrollbar-corner",
|
|
30
|
+
"background-color": "var(--scrollbar-corner-color)"
|
|
31
|
+
}
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
styledScrollbarStyle.__lookupStyles = ["styledScrollbar"];
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
export { styledScrollbarStyle };
|
|
38
|
+
//# sourceMappingURL=styledScrollbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styledScrollbar.js","names":[],"sources":["../../src/styles/styledScrollbar.ts"],"sourcesContent":["/**\n * @deprecated `styledScrollbar` is deprecated. Use `scrollbar` instead.\n */\nexport function styledScrollbarStyle({\n styledScrollbar: val,\n}: {\n styledScrollbar?: string | boolean | null;\n}) {\n if (val == null) return null;\n\n if (!val) {\n return [\n {\n $: '::-webkit-scrollbar',\n display: 'none',\n },\n {\n 'scrollbar-width': 'none',\n },\n ];\n }\n\n return [\n {\n $: '::-webkit-scrollbar',\n width: 'var(--scrollbar-width)',\n height: 'var(--scrollbar-width)',\n },\n {\n $: '::-webkit-scrollbar-track',\n 'background-color': 'var(--scrollbar-bg-color)',\n },\n {\n $: '::-webkit-scrollbar-thumb',\n 'background-color': 'var(--scrollbar-thumb-color)',\n 'border-radius': 'var(--scrollbar-radius)',\n border:\n 'var(--scrollbar-outline-width) solid var(--scrollbar-outline-color)',\n 'background-clip': 'padding-box',\n },\n {\n $: '::-webkit-scrollbar-corner',\n 'background-color': 'var(--scrollbar-corner-color)',\n },\n // Breaks the scrollbar in the latest Chromium browsers\n // {\n // 'scrollbar-width': 'thin',\n // 'scrollbar-color':\n // 'var(--scrollbar-bg-color) var(--scrollbar-thumb-color)',\n // },\n ];\n}\n\nstyledScrollbarStyle.__lookupStyles = ['styledScrollbar'];\n"],"mappings":";;;;AAGA,SAAgB,qBAAqB,EACnC,iBAAiB,OAGhB;AACD,KAAI,OAAO,KAAM,QAAO;AAExB,KAAI,CAAC,IACH,QAAO,CACL;EACE,GAAG;EACH,SAAS;EACV,EACD,EACE,mBAAmB,QACpB,CACF;AAGH,QAAO;EACL;GACE,GAAG;GACH,OAAO;GACP,QAAQ;GACT;EACD;GACE,GAAG;GACH,oBAAoB;GACrB;EACD;GACE,GAAG;GACH,oBAAoB;GACpB,iBAAiB;GACjB,QACE;GACF,mBAAmB;GACpB;EACD;GACE,GAAG;GACH,oBAAoB;GACrB;EAOF;;AAGH,qBAAqB,iBAAiB,CAAC,kBAAkB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/styles/transition.d.ts
|
|
2
|
+
declare function transitionStyle({
|
|
3
|
+
transition
|
|
4
|
+
}: {
|
|
5
|
+
transition?: string;
|
|
6
|
+
}): {
|
|
7
|
+
transition: string;
|
|
8
|
+
} | undefined;
|
|
9
|
+
declare namespace transitionStyle {
|
|
10
|
+
var __lookupStyles: string[];
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { transitionStyle };
|
|
14
|
+
//# sourceMappingURL=transition.d.ts.map
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { parseStyle } from "../utils/styles.js";
|
|
2
|
+
|
|
3
|
+
//#region src/styles/transition.ts
|
|
4
|
+
const SECOND_FILL_COLOR_PROPERTY = "--tasty-second-fill-color";
|
|
5
|
+
const MAP = {
|
|
6
|
+
fade: ["mask", "mask-composite"],
|
|
7
|
+
translate: ["transform", "translate"],
|
|
8
|
+
rotate: ["transform", "rotate"],
|
|
9
|
+
scale: ["transform", "scale"],
|
|
10
|
+
fill: [
|
|
11
|
+
"background-color",
|
|
12
|
+
"background-image",
|
|
13
|
+
SECOND_FILL_COLOR_PROPERTY
|
|
14
|
+
],
|
|
15
|
+
image: [
|
|
16
|
+
"background-image",
|
|
17
|
+
"background-position",
|
|
18
|
+
"background-size",
|
|
19
|
+
"background-repeat",
|
|
20
|
+
"background-attachment",
|
|
21
|
+
"background-origin",
|
|
22
|
+
"background-clip",
|
|
23
|
+
SECOND_FILL_COLOR_PROPERTY
|
|
24
|
+
],
|
|
25
|
+
background: [
|
|
26
|
+
"background-color",
|
|
27
|
+
"background-image",
|
|
28
|
+
"background-position",
|
|
29
|
+
"background-size",
|
|
30
|
+
"background-repeat",
|
|
31
|
+
"background-attachment",
|
|
32
|
+
"background-origin",
|
|
33
|
+
"background-clip",
|
|
34
|
+
SECOND_FILL_COLOR_PROPERTY
|
|
35
|
+
],
|
|
36
|
+
border: [
|
|
37
|
+
"border",
|
|
38
|
+
"border-top",
|
|
39
|
+
"border-right",
|
|
40
|
+
"border-bottom",
|
|
41
|
+
"border-left"
|
|
42
|
+
],
|
|
43
|
+
filter: ["filter", "backdrop-filter"],
|
|
44
|
+
radius: ["border-radius"],
|
|
45
|
+
shadow: ["box-shadow"],
|
|
46
|
+
outline: ["outline", "outline-offset"],
|
|
47
|
+
preset: [
|
|
48
|
+
"font-size",
|
|
49
|
+
"line-height",
|
|
50
|
+
"letter-spacing",
|
|
51
|
+
"font-weight",
|
|
52
|
+
"font-style"
|
|
53
|
+
],
|
|
54
|
+
text: ["font-weight", "text-decoration-color"],
|
|
55
|
+
color: ["color"],
|
|
56
|
+
opacity: ["opacity"],
|
|
57
|
+
theme: [
|
|
58
|
+
"color",
|
|
59
|
+
"background-color",
|
|
60
|
+
"background-image",
|
|
61
|
+
"box-shadow",
|
|
62
|
+
"border",
|
|
63
|
+
"border-radius",
|
|
64
|
+
"outline",
|
|
65
|
+
"opacity",
|
|
66
|
+
SECOND_FILL_COLOR_PROPERTY
|
|
67
|
+
],
|
|
68
|
+
width: [
|
|
69
|
+
"max-width",
|
|
70
|
+
"min-width",
|
|
71
|
+
"width"
|
|
72
|
+
],
|
|
73
|
+
height: [
|
|
74
|
+
"max-height",
|
|
75
|
+
"min-height",
|
|
76
|
+
"height"
|
|
77
|
+
],
|
|
78
|
+
gap: ["gap", "margin"],
|
|
79
|
+
zIndex: ["z-index"],
|
|
80
|
+
inset: [
|
|
81
|
+
"inset",
|
|
82
|
+
"top",
|
|
83
|
+
"right",
|
|
84
|
+
"bottom",
|
|
85
|
+
"left"
|
|
86
|
+
]
|
|
87
|
+
};
|
|
88
|
+
const DEFAULT_EASING = "linear";
|
|
89
|
+
const EASING_KEYWORDS = new Set([
|
|
90
|
+
"ease",
|
|
91
|
+
"ease-in",
|
|
92
|
+
"ease-out",
|
|
93
|
+
"ease-in-out",
|
|
94
|
+
"linear",
|
|
95
|
+
"step-start",
|
|
96
|
+
"step-end"
|
|
97
|
+
]);
|
|
98
|
+
function isEasing(token) {
|
|
99
|
+
return EASING_KEYWORDS.has(token) || token.startsWith("cubic-bezier(") || token.startsWith("steps(") || token.startsWith("linear(");
|
|
100
|
+
}
|
|
101
|
+
function getTiming(name) {
|
|
102
|
+
return `var(--${name}-transition, var(--transition))`;
|
|
103
|
+
}
|
|
104
|
+
function transitionStyle({ transition }) {
|
|
105
|
+
if (!transition) return;
|
|
106
|
+
const processed = parseStyle(transition);
|
|
107
|
+
const tokens = [];
|
|
108
|
+
processed.groups.forEach((g, idx) => {
|
|
109
|
+
tokens.push(...g.all);
|
|
110
|
+
if (idx < processed.groups.length - 1) tokens.push(",");
|
|
111
|
+
});
|
|
112
|
+
if (tokens.length === 0) return;
|
|
113
|
+
let tempTransition = [];
|
|
114
|
+
const transitions = [];
|
|
115
|
+
tokens.forEach((token) => {
|
|
116
|
+
if (token === ",") {
|
|
117
|
+
if (tempTransition.length) {
|
|
118
|
+
transitions.push(tempTransition);
|
|
119
|
+
tempTransition = [];
|
|
120
|
+
}
|
|
121
|
+
} else tempTransition.push(token);
|
|
122
|
+
});
|
|
123
|
+
if (tempTransition.length) transitions.push(tempTransition);
|
|
124
|
+
const map = {};
|
|
125
|
+
transitions.forEach((transition) => {
|
|
126
|
+
const name = transition[0];
|
|
127
|
+
let timing;
|
|
128
|
+
let easing;
|
|
129
|
+
let delay;
|
|
130
|
+
if (transition[1] && isEasing(transition[1])) {
|
|
131
|
+
easing = transition[1];
|
|
132
|
+
delay = transition[2];
|
|
133
|
+
} else {
|
|
134
|
+
timing = transition[1];
|
|
135
|
+
easing = transition[2];
|
|
136
|
+
delay = transition[3];
|
|
137
|
+
}
|
|
138
|
+
(MAP[name] || [name]).forEach((style) => {
|
|
139
|
+
map[style] = [
|
|
140
|
+
name,
|
|
141
|
+
easing,
|
|
142
|
+
timing,
|
|
143
|
+
delay
|
|
144
|
+
];
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
return { transition: Object.entries(map).map(([style, [name, easing, timing, delay]]) => {
|
|
148
|
+
let value = `${style} ${timing || getTiming(name)}`;
|
|
149
|
+
if (easing || delay) value += ` ${easing || DEFAULT_EASING}`;
|
|
150
|
+
if (delay) value += ` ${delay}`;
|
|
151
|
+
return value;
|
|
152
|
+
}).join(", ") };
|
|
153
|
+
}
|
|
154
|
+
transitionStyle.__lookupStyles = ["transition"];
|
|
155
|
+
|
|
156
|
+
//#endregion
|
|
157
|
+
export { transitionStyle };
|
|
158
|
+
//# sourceMappingURL=transition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transition.js","names":[],"sources":["../../src/styles/transition.ts"],"sourcesContent":["import { parseStyle } from '../utils/styles';\n\nconst SECOND_FILL_COLOR_PROPERTY = '--tasty-second-fill-color';\n\nconst MAP: Record<string, string[]> = {\n fade: ['mask', 'mask-composite'],\n translate: ['transform', 'translate'],\n rotate: ['transform', 'rotate'],\n scale: ['transform', 'scale'],\n fill: ['background-color', 'background-image', SECOND_FILL_COLOR_PROPERTY],\n image: [\n 'background-image',\n 'background-position',\n 'background-size',\n 'background-repeat',\n 'background-attachment',\n 'background-origin',\n 'background-clip',\n SECOND_FILL_COLOR_PROPERTY,\n ],\n background: [\n 'background-color',\n 'background-image',\n 'background-position',\n 'background-size',\n 'background-repeat',\n 'background-attachment',\n 'background-origin',\n 'background-clip',\n SECOND_FILL_COLOR_PROPERTY,\n ],\n border: [\n 'border',\n 'border-top',\n 'border-right',\n 'border-bottom',\n 'border-left',\n ],\n filter: ['filter', 'backdrop-filter'],\n radius: ['border-radius'],\n shadow: ['box-shadow'],\n outline: ['outline', 'outline-offset'],\n preset: [\n 'font-size',\n 'line-height',\n 'letter-spacing',\n 'font-weight',\n 'font-style',\n ],\n text: ['font-weight', 'text-decoration-color'],\n color: ['color'],\n opacity: ['opacity'],\n theme: [\n 'color',\n 'background-color',\n 'background-image',\n 'box-shadow',\n 'border',\n 'border-radius',\n 'outline',\n 'opacity',\n SECOND_FILL_COLOR_PROPERTY,\n ],\n width: ['max-width', 'min-width', 'width'],\n height: ['max-height', 'min-height', 'height'],\n gap: ['gap', 'margin'],\n zIndex: ['z-index'],\n inset: ['inset', 'top', 'right', 'bottom', 'left'],\n};\n\nexport const DEFAULT_TIMING = 'var(--transition)';\nconst DEFAULT_EASING = 'linear';\n\nconst EASING_KEYWORDS = new Set([\n 'ease',\n 'ease-in',\n 'ease-out',\n 'ease-in-out',\n 'linear',\n 'step-start',\n 'step-end',\n]);\n\nfunction isEasing(token: string): boolean {\n return (\n EASING_KEYWORDS.has(token) ||\n token.startsWith('cubic-bezier(') ||\n token.startsWith('steps(') ||\n token.startsWith('linear(')\n );\n}\n\nfunction getTiming(name: string): string {\n return `var(--${name}-transition, var(--transition))`;\n}\n\ntype TransitionEntry = [\n name: string,\n easing: string | undefined,\n timing: string | undefined,\n delay: string | undefined,\n];\n\nexport function transitionStyle({ transition }: { transition?: string }) {\n if (!transition) return;\n\n const processed = parseStyle(transition);\n const tokens: string[] = [];\n processed.groups.forEach((g, idx) => {\n tokens.push(...g.all);\n if (idx < processed.groups.length - 1) tokens.push(',');\n });\n\n if (tokens.length === 0) return;\n\n let tempTransition: string[] = [];\n const transitions: string[][] = [];\n\n tokens.forEach((token) => {\n if (token === ',') {\n if (tempTransition.length) {\n transitions.push(tempTransition);\n tempTransition = [];\n }\n } else {\n tempTransition.push(token);\n }\n });\n\n if (tempTransition.length) {\n transitions.push(tempTransition);\n }\n\n const map: Record<string, TransitionEntry> = {};\n\n transitions.forEach((transition) => {\n const name = transition[0];\n\n let timing: string | undefined;\n let easing: string | undefined;\n let delay: string | undefined;\n\n if (transition[1] && isEasing(transition[1])) {\n easing = transition[1];\n delay = transition[2];\n } else {\n timing = transition[1];\n easing = transition[2];\n delay = transition[3];\n }\n\n const styles = MAP[name] || [name];\n\n styles.forEach((style) => {\n map[style] = [name, easing, timing, delay];\n });\n });\n\n const result = Object.entries(map)\n .map(([style, [name, easing, timing, delay]]) => {\n let value = `${style} ${timing || getTiming(name)}`;\n if (easing || delay) {\n value += ` ${easing || DEFAULT_EASING}`;\n }\n if (delay) {\n value += ` ${delay}`;\n }\n return value;\n })\n .join(', ');\n\n return { transition: result };\n}\n\ntransitionStyle.__lookupStyles = ['transition'];\n"],"mappings":"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"}
|