@tenphi/tasty 0.0.0-snapshot.bbd10c7 → 0.0.0-snapshot.bbfcd75
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/README.md +196 -140
- package/dist/babel-Zs1Q03qt.d.ts +83 -0
- package/dist/chunks/async-storage-CG5HnUT5.js +20 -0
- package/dist/chunks/async-storage-CG5HnUT5.js.map +1 -0
- package/dist/chunks/build-config-CUQVwdWF.js +42 -0
- package/dist/chunks/build-config-CUQVwdWF.js.map +1 -0
- package/dist/chunks/collector-B0LTHw6Z.js +208 -0
- package/dist/chunks/collector-B0LTHw6Z.js.map +1 -0
- package/dist/chunks/config-engine-C3pF9EK9.js +267 -0
- package/dist/chunks/config-engine-C3pF9EK9.js.map +1 -0
- package/dist/chunks/css-definitions-D_it4XZH.js +875 -0
- package/dist/chunks/css-definitions-D_it4XZH.js.map +1 -0
- package/dist/chunks/css-resources-BN8apgxt.js +142 -0
- package/dist/chunks/css-resources-BN8apgxt.js.map +1 -0
- package/dist/{debug.js → chunks/debug-C9LeNVoJ.js} +187 -139
- package/dist/chunks/debug-C9LeNVoJ.js.map +1 -0
- package/dist/chunks/dsl-C5yuAn41.js +1373 -0
- package/dist/chunks/dsl-C5yuAn41.js.map +1 -0
- package/dist/chunks/hydration-TRcz5vnk.js +41 -0
- package/dist/chunks/hydration-TRcz5vnk.js.map +1 -0
- package/dist/chunks/react-runtime-O-OUrKLH.js +557 -0
- package/dist/chunks/react-runtime-O-OUrKLH.js.map +1 -0
- package/dist/chunks/runtime-engine-DvnE2g-E.js +2437 -0
- package/dist/chunks/runtime-engine-DvnE2g-E.js.map +1 -0
- package/dist/chunks/runtime-state-BTDqSYBk.js +127 -0
- package/dist/chunks/runtime-state-BTDqSYBk.js.map +1 -0
- package/dist/{utils/merge-styles.js → chunks/shared-utils-DWA4LjIa.js} +55 -55
- package/dist/chunks/shared-utils-DWA4LjIa.js.map +1 -0
- package/dist/chunks/style-engine-C1ECBZxR.js +5131 -0
- package/dist/chunks/style-engine-C1ECBZxR.js.map +1 -0
- package/dist/{zero/extractor.js → chunks/zero-engine-B6EnYcXY.js} +89 -82
- package/dist/chunks/zero-engine-B6EnYcXY.js.map +1 -0
- package/dist/collector-hl5KNH7k.d.ts +165 -0
- package/dist/config-DWL1ZYue.d.ts +1358 -0
- package/dist/core/index.d.ts +5 -34
- package/dist/core/index.js +9 -27
- package/dist/index-D9N9GV24.d.ts +1947 -0
- package/dist/index.d.ts +5 -51
- package/dist/index.js +11 -36
- package/dist/{utils/merge-styles.d.ts → merge-styles-C_oMoJVd.d.ts} +3 -3
- package/dist/ssr/astro-client.js +6 -0
- package/dist/ssr/astro-client.js.map +1 -0
- package/dist/ssr/astro-middleware-extract-static.d.ts +11 -0
- package/dist/ssr/astro-middleware-extract-static.js +9 -0
- package/dist/ssr/astro-middleware-extract-static.js.map +1 -0
- package/dist/ssr/astro-middleware-extract.d.ts +11 -0
- package/dist/ssr/astro-middleware-extract.js +9 -0
- package/dist/ssr/astro-middleware-extract.js.map +1 -0
- package/dist/ssr/astro-middleware-static.d.ts +18 -0
- package/dist/ssr/astro-middleware-static.js +7 -0
- package/dist/ssr/astro-middleware-static.js.map +1 -0
- package/dist/ssr/astro-middleware.d.ts +19 -0
- package/dist/ssr/astro-middleware.js +7 -0
- package/dist/ssr/astro-middleware.js.map +1 -0
- package/dist/ssr/astro.d.ts +117 -11
- package/dist/ssr/astro.js +204 -48
- package/dist/ssr/astro.js.map +1 -1
- package/dist/ssr/index.d.ts +37 -4
- package/dist/ssr/index.js +6 -6
- package/dist/ssr/index.js.map +1 -1
- package/dist/ssr/next-config.d.ts +66 -0
- package/dist/ssr/next-config.js +124 -0
- package/dist/ssr/next-config.js.map +1 -0
- package/dist/ssr/next.d.ts +14 -5
- package/dist/ssr/next.js +31 -46
- package/dist/ssr/next.js.map +1 -1
- package/dist/static/index.d.ts +91 -5
- package/dist/static/index.js +31 -3
- package/dist/static/index.js.map +1 -0
- package/dist/static/inject.js.map +1 -1
- package/dist/types-jKZNpias.d.ts +1616 -0
- package/dist/zero/babel.d.ts +2 -182
- package/dist/zero/babel.js +82 -113
- package/dist/zero/babel.js.map +1 -1
- package/dist/zero/index.d.ts +81 -3
- package/dist/zero/index.js +2 -3
- package/dist/zero/next.d.ts +1 -1
- package/dist/zero/next.js +0 -31
- package/dist/zero/next.js.map +1 -1
- package/docs/README.md +20 -12
- package/docs/adoption.md +59 -32
- package/docs/ai-agents.md +229 -0
- package/docs/comparison.md +76 -48
- package/docs/configuration.md +566 -69
- package/docs/debug.md +37 -23
- package/docs/design-system.md +63 -32
- package/docs/dsl.md +527 -179
- package/docs/getting-started.md +62 -41
- package/docs/injector.md +157 -51
- package/docs/methodology.md +69 -37
- package/docs/migration-v3.md +285 -0
- package/docs/pipeline.md +744 -0
- package/docs/plugins.md +353 -0
- package/docs/{runtime.md → react-api.md} +176 -67
- package/docs/runtime-benchmarks.md +377 -0
- package/docs/ssr.md +350 -94
- package/docs/styles.md +108 -27
- package/docs/tasty-static.md +149 -87
- package/package.json +121 -23
- package/tasty.config.ts +6 -0
- package/dist/_virtual/_rolldown/runtime.js +0 -7
- package/dist/chunks/cacheKey.js +0 -77
- package/dist/chunks/cacheKey.js.map +0 -1
- package/dist/chunks/definitions.d.ts +0 -37
- package/dist/chunks/definitions.js +0 -258
- package/dist/chunks/definitions.js.map +0 -1
- package/dist/chunks/index.d.ts +0 -1
- package/dist/chunks/renderChunk.d.ts +0 -1
- package/dist/chunks/renderChunk.js +0 -59
- package/dist/chunks/renderChunk.js.map +0 -1
- package/dist/compute-styles.d.ts +0 -31
- package/dist/compute-styles.js +0 -356
- package/dist/compute-styles.js.map +0 -1
- package/dist/config.d.ts +0 -372
- package/dist/config.js +0 -507
- package/dist/config.js.map +0 -1
- package/dist/counter-style/index.js +0 -51
- package/dist/counter-style/index.js.map +0 -1
- package/dist/debug.d.ts +0 -89
- package/dist/debug.js.map +0 -1
- package/dist/font-face/index.js +0 -63
- package/dist/font-face/index.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -7
- package/dist/hooks/useCounterStyle.d.ts +0 -50
- package/dist/hooks/useCounterStyle.js +0 -45
- package/dist/hooks/useCounterStyle.js.map +0 -1
- package/dist/hooks/useFontFace.d.ts +0 -43
- package/dist/hooks/useFontFace.js +0 -69
- package/dist/hooks/useFontFace.js.map +0 -1
- package/dist/hooks/useGlobalStyles.d.ts +0 -30
- package/dist/hooks/useGlobalStyles.js +0 -77
- package/dist/hooks/useGlobalStyles.js.map +0 -1
- package/dist/hooks/useKeyframes.d.ts +0 -56
- package/dist/hooks/useKeyframes.js +0 -63
- package/dist/hooks/useKeyframes.js.map +0 -1
- package/dist/hooks/useProperty.d.ts +0 -79
- package/dist/hooks/useProperty.js +0 -108
- package/dist/hooks/useProperty.js.map +0 -1
- package/dist/hooks/useRawCSS.d.ts +0 -53
- package/dist/hooks/useRawCSS.js +0 -34
- package/dist/hooks/useRawCSS.js.map +0 -1
- package/dist/hooks/useStyles.d.ts +0 -40
- package/dist/hooks/useStyles.js +0 -29
- package/dist/hooks/useStyles.js.map +0 -1
- package/dist/injector/index.d.ts +0 -166
- package/dist/injector/index.js +0 -166
- package/dist/injector/index.js.map +0 -1
- package/dist/injector/injector.d.ts +0 -166
- package/dist/injector/injector.js +0 -464
- package/dist/injector/injector.js.map +0 -1
- package/dist/injector/sheet-manager.d.ts +0 -136
- package/dist/injector/sheet-manager.js +0 -733
- package/dist/injector/sheet-manager.js.map +0 -1
- package/dist/injector/types.d.ts +0 -204
- package/dist/keyframes/index.js +0 -206
- package/dist/keyframes/index.js.map +0 -1
- package/dist/parser/classify.js +0 -319
- package/dist/parser/classify.js.map +0 -1
- package/dist/parser/const.js +0 -60
- package/dist/parser/const.js.map +0 -1
- package/dist/parser/lru.js +0 -109
- package/dist/parser/lru.js.map +0 -1
- package/dist/parser/parser.d.ts +0 -25
- package/dist/parser/parser.js +0 -115
- package/dist/parser/parser.js.map +0 -1
- package/dist/parser/tokenizer.js +0 -69
- package/dist/parser/tokenizer.js.map +0 -1
- package/dist/parser/types.d.ts +0 -51
- package/dist/parser/types.js +0 -46
- package/dist/parser/types.js.map +0 -1
- package/dist/pipeline/conditions.d.ts +0 -134
- package/dist/pipeline/conditions.js +0 -406
- package/dist/pipeline/conditions.js.map +0 -1
- package/dist/pipeline/exclusive.js +0 -230
- package/dist/pipeline/exclusive.js.map +0 -1
- package/dist/pipeline/index.d.ts +0 -55
- package/dist/pipeline/index.js +0 -708
- package/dist/pipeline/index.js.map +0 -1
- package/dist/pipeline/materialize.js +0 -1103
- package/dist/pipeline/materialize.js.map +0 -1
- package/dist/pipeline/parseStateKey.d.ts +0 -15
- package/dist/pipeline/parseStateKey.js +0 -446
- package/dist/pipeline/parseStateKey.js.map +0 -1
- package/dist/pipeline/simplify.js +0 -515
- package/dist/pipeline/simplify.js.map +0 -1
- package/dist/pipeline/warnings.js +0 -18
- package/dist/pipeline/warnings.js.map +0 -1
- package/dist/plugins/index.d.ts +0 -2
- package/dist/plugins/okhsl-plugin.d.ts +0 -35
- package/dist/plugins/okhsl-plugin.js +0 -97
- package/dist/plugins/okhsl-plugin.js.map +0 -1
- package/dist/plugins/types.d.ts +0 -76
- package/dist/properties/index.js +0 -222
- package/dist/properties/index.js.map +0 -1
- package/dist/properties/property-type-resolver.d.ts +0 -24
- package/dist/properties/property-type-resolver.js +0 -90
- package/dist/properties/property-type-resolver.js.map +0 -1
- package/dist/ssr/async-storage.d.ts +0 -17
- package/dist/ssr/async-storage.js +0 -34
- package/dist/ssr/async-storage.js.map +0 -1
- package/dist/ssr/collect-auto-properties.js +0 -39
- package/dist/ssr/collect-auto-properties.js.map +0 -1
- package/dist/ssr/collector.d.ts +0 -102
- package/dist/ssr/collector.js +0 -219
- package/dist/ssr/collector.js.map +0 -1
- package/dist/ssr/format-global-rules.js +0 -22
- package/dist/ssr/format-global-rules.js.map +0 -1
- package/dist/ssr/format-keyframes.js +0 -69
- package/dist/ssr/format-keyframes.js.map +0 -1
- package/dist/ssr/format-property.js +0 -49
- package/dist/ssr/format-property.js.map +0 -1
- package/dist/ssr/format-rules.js +0 -73
- package/dist/ssr/format-rules.js.map +0 -1
- package/dist/ssr/hydrate.d.ts +0 -22
- package/dist/ssr/hydrate.js +0 -49
- package/dist/ssr/hydrate.js.map +0 -1
- package/dist/ssr/ssr-collector-ref.js +0 -12
- package/dist/ssr/ssr-collector-ref.js.map +0 -1
- package/dist/states/index.d.ts +0 -49
- package/dist/states/index.js +0 -170
- package/dist/states/index.js.map +0 -1
- package/dist/static/tastyStatic.d.ts +0 -46
- package/dist/static/tastyStatic.js +0 -30
- package/dist/static/tastyStatic.js.map +0 -1
- package/dist/static/types.d.ts +0 -49
- package/dist/static/types.js +0 -24
- package/dist/static/types.js.map +0 -1
- package/dist/styles/border.d.ts +0 -25
- package/dist/styles/border.js +0 -120
- package/dist/styles/border.js.map +0 -1
- package/dist/styles/color.d.ts +0 -14
- package/dist/styles/color.js +0 -26
- package/dist/styles/color.js.map +0 -1
- package/dist/styles/const.js +0 -17
- package/dist/styles/const.js.map +0 -1
- package/dist/styles/createStyle.js +0 -79
- package/dist/styles/createStyle.js.map +0 -1
- package/dist/styles/dimension.js +0 -109
- package/dist/styles/dimension.js.map +0 -1
- package/dist/styles/directional.js +0 -133
- package/dist/styles/directional.js.map +0 -1
- package/dist/styles/display.d.ts +0 -30
- package/dist/styles/display.js +0 -73
- package/dist/styles/display.js.map +0 -1
- package/dist/styles/fade.d.ts +0 -15
- package/dist/styles/fade.js +0 -62
- package/dist/styles/fade.js.map +0 -1
- package/dist/styles/fill.d.ts +0 -42
- package/dist/styles/fill.js +0 -51
- package/dist/styles/fill.js.map +0 -1
- package/dist/styles/flow.d.ts +0 -16
- package/dist/styles/flow.js +0 -12
- package/dist/styles/flow.js.map +0 -1
- package/dist/styles/gap.d.ts +0 -31
- package/dist/styles/gap.js +0 -38
- package/dist/styles/gap.js.map +0 -1
- package/dist/styles/height.d.ts +0 -17
- package/dist/styles/height.js +0 -19
- package/dist/styles/height.js.map +0 -1
- package/dist/styles/index.d.ts +0 -1
- package/dist/styles/index.js +0 -8
- package/dist/styles/index.js.map +0 -1
- package/dist/styles/inset.d.ts +0 -24
- package/dist/styles/inset.js +0 -34
- package/dist/styles/inset.js.map +0 -1
- package/dist/styles/list.d.ts +0 -16
- package/dist/styles/list.js +0 -100
- package/dist/styles/list.js.map +0 -1
- package/dist/styles/margin.d.ts +0 -24
- package/dist/styles/margin.js +0 -32
- package/dist/styles/margin.js.map +0 -1
- package/dist/styles/outline.d.ts +0 -29
- package/dist/styles/outline.js +0 -55
- package/dist/styles/outline.js.map +0 -1
- package/dist/styles/padding.d.ts +0 -24
- package/dist/styles/padding.js +0 -32
- package/dist/styles/padding.js.map +0 -1
- package/dist/styles/placement.d.ts +0 -37
- package/dist/styles/placement.js +0 -74
- package/dist/styles/placement.js.map +0 -1
- package/dist/styles/predefined.d.ts +0 -71
- package/dist/styles/predefined.js +0 -237
- package/dist/styles/predefined.js.map +0 -1
- package/dist/styles/preset.d.ts +0 -52
- package/dist/styles/preset.js +0 -127
- package/dist/styles/preset.js.map +0 -1
- package/dist/styles/radius.d.ts +0 -12
- package/dist/styles/radius.js +0 -83
- package/dist/styles/radius.js.map +0 -1
- package/dist/styles/scrollMargin.d.ts +0 -24
- package/dist/styles/scrollMargin.js +0 -32
- package/dist/styles/scrollMargin.js.map +0 -1
- package/dist/styles/scrollbar.d.ts +0 -25
- package/dist/styles/scrollbar.js +0 -51
- package/dist/styles/scrollbar.js.map +0 -1
- package/dist/styles/shadow.d.ts +0 -14
- package/dist/styles/shadow.js +0 -25
- package/dist/styles/shadow.js.map +0 -1
- package/dist/styles/shared.js +0 -17
- package/dist/styles/shared.js.map +0 -1
- package/dist/styles/transition.d.ts +0 -14
- package/dist/styles/transition.js +0 -159
- package/dist/styles/transition.js.map +0 -1
- package/dist/styles/types.d.ts +0 -564
- package/dist/styles/width.d.ts +0 -17
- package/dist/styles/width.js +0 -19
- package/dist/styles/width.js.map +0 -1
- package/dist/tasty.d.ts +0 -134
- package/dist/tasty.js +0 -240
- package/dist/tasty.js.map +0 -1
- package/dist/types.d.ts +0 -184
- package/dist/utils/cache-wrapper.js +0 -21
- package/dist/utils/cache-wrapper.js.map +0 -1
- package/dist/utils/case-converter.js +0 -8
- package/dist/utils/case-converter.js.map +0 -1
- package/dist/utils/color-math.d.ts +0 -46
- package/dist/utils/color-math.js +0 -749
- package/dist/utils/color-math.js.map +0 -1
- package/dist/utils/color-space.d.ts +0 -5
- package/dist/utils/color-space.js +0 -228
- package/dist/utils/color-space.js.map +0 -1
- package/dist/utils/colors.d.ts +0 -5
- package/dist/utils/colors.js +0 -10
- package/dist/utils/colors.js.map +0 -1
- package/dist/utils/css-types.d.ts +0 -7
- package/dist/utils/dotize.d.ts +0 -26
- package/dist/utils/dotize.js +0 -122
- package/dist/utils/dotize.js.map +0 -1
- package/dist/utils/filter-base-props.d.ts +0 -15
- package/dist/utils/filter-base-props.js +0 -45
- package/dist/utils/filter-base-props.js.map +0 -1
- package/dist/utils/get-display-name.d.ts +0 -7
- package/dist/utils/get-display-name.js +0 -10
- package/dist/utils/get-display-name.js.map +0 -1
- package/dist/utils/has-keys.js +0 -13
- package/dist/utils/has-keys.js.map +0 -1
- package/dist/utils/is-dev-env.js +0 -19
- package/dist/utils/is-dev-env.js.map +0 -1
- package/dist/utils/is-valid-element-type.js +0 -15
- package/dist/utils/is-valid-element-type.js.map +0 -1
- package/dist/utils/merge-styles.js.map +0 -1
- package/dist/utils/mod-attrs.d.ts +0 -6
- package/dist/utils/mod-attrs.js +0 -20
- package/dist/utils/mod-attrs.js.map +0 -1
- package/dist/utils/process-tokens.d.ts +0 -17
- package/dist/utils/process-tokens.js +0 -83
- package/dist/utils/process-tokens.js.map +0 -1
- package/dist/utils/resolve-recipes.d.ts +0 -17
- package/dist/utils/resolve-recipes.js +0 -146
- package/dist/utils/resolve-recipes.js.map +0 -1
- package/dist/utils/selector-transform.js +0 -32
- package/dist/utils/selector-transform.js.map +0 -1
- package/dist/utils/string.js +0 -8
- package/dist/utils/string.js.map +0 -1
- package/dist/utils/styles.d.ts +0 -99
- package/dist/utils/styles.js +0 -220
- package/dist/utils/styles.js.map +0 -1
- package/dist/utils/typography.d.ts +0 -47
- package/dist/utils/typography.js +0 -51
- package/dist/utils/typography.js.map +0 -1
- package/dist/utils/warnings.d.ts +0 -16
- package/dist/utils/warnings.js +0 -16
- package/dist/utils/warnings.js.map +0 -1
- package/dist/zero/css-writer.d.ts +0 -45
- package/dist/zero/css-writer.js +0 -73
- package/dist/zero/css-writer.js.map +0 -1
- package/dist/zero/extractor.d.ts +0 -24
- package/dist/zero/extractor.js.map +0 -1
- package/docs/PIPELINE.md +0 -519
- /package/dist/{chunks/cacheKey.d.ts → ssr/astro-client.d.ts} +0 -0
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { CSS_WIDE_KEYWORDS } from "../parser/const.js";
|
|
2
|
-
import { DIRECTIONS, filterMods, parseStyle } from "../utils/styles.js";
|
|
3
|
-
import { extractCSSWideKeyword } from "./shared.js";
|
|
4
|
-
//#region src/styles/directional.ts
|
|
5
|
-
function parseSingleValue(val, defaultValue, trueValue) {
|
|
6
|
-
if (typeof val === "number") return `${val}px`;
|
|
7
|
-
if (!val) return null;
|
|
8
|
-
if (val === true) val = trueValue;
|
|
9
|
-
const strVal = String(val);
|
|
10
|
-
if (CSS_WIDE_KEYWORDS.has(strVal)) return strVal;
|
|
11
|
-
const { values } = parseStyle(strVal).groups[0] ?? { values: [] };
|
|
12
|
-
return values[0] || defaultValue;
|
|
13
|
-
}
|
|
14
|
-
function extractGroupData(group, defaultValue) {
|
|
15
|
-
const { values = [], mods = [] } = group;
|
|
16
|
-
return {
|
|
17
|
-
values: values.length ? values : [defaultValue],
|
|
18
|
-
directions: filterMods(mods, DIRECTIONS)
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
function applyGroup(dirs, values, directions) {
|
|
22
|
-
if (!values.length) return;
|
|
23
|
-
if (directions.length === 0) {
|
|
24
|
-
dirs.top = values[0];
|
|
25
|
-
dirs.right = values[1] || values[0];
|
|
26
|
-
dirs.bottom = values[2] || values[0];
|
|
27
|
-
dirs.left = values[3] || values[1] || values[0];
|
|
28
|
-
} else directions.forEach((dir, i) => {
|
|
29
|
-
dirs[dir] = values[i] ?? values[0];
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
function optimizeShorthand(property, dirs) {
|
|
33
|
-
const { top, right, bottom, left } = dirs;
|
|
34
|
-
if (top === right && right === bottom && bottom === left) return { [property]: top };
|
|
35
|
-
if (top === bottom && left === right) return { [property]: `${top} ${left}` };
|
|
36
|
-
return { [property]: `${top} ${right} ${bottom} ${left}` };
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Core directional style logic shared by padding, margin, inset, scrollMargin.
|
|
40
|
-
*/
|
|
41
|
-
function processDirectionalStyle(config, props) {
|
|
42
|
-
const { main, block, inline, top, right, bottom, left } = props;
|
|
43
|
-
if (main == null && block == null && inline == null && top == null && right == null && bottom == null && left == null) return null;
|
|
44
|
-
const { property, defaultValue, trueValue, defaultInit, individualOnly, directionProperty } = config;
|
|
45
|
-
const dirProp = directionProperty ?? ((dir) => `${property}-${dir}`);
|
|
46
|
-
if (individualOnly) {
|
|
47
|
-
if (main == null && block == null && inline == null) {
|
|
48
|
-
const result = {};
|
|
49
|
-
if (top != null) {
|
|
50
|
-
const val = parseSingleValue(top, defaultValue, trueValue);
|
|
51
|
-
if (val) result[dirProp("top")] = val;
|
|
52
|
-
}
|
|
53
|
-
if (right != null) {
|
|
54
|
-
const val = parseSingleValue(right, defaultValue, trueValue);
|
|
55
|
-
if (val) result[dirProp("right")] = val;
|
|
56
|
-
}
|
|
57
|
-
if (bottom != null) {
|
|
58
|
-
const val = parseSingleValue(bottom, defaultValue, trueValue);
|
|
59
|
-
if (val) result[dirProp("bottom")] = val;
|
|
60
|
-
}
|
|
61
|
-
if (left != null) {
|
|
62
|
-
const val = parseSingleValue(left, defaultValue, trueValue);
|
|
63
|
-
if (val) result[dirProp("left")] = val;
|
|
64
|
-
}
|
|
65
|
-
return Object.keys(result).length > 0 ? result : null;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
const dirs = {
|
|
69
|
-
top: defaultInit,
|
|
70
|
-
right: defaultInit,
|
|
71
|
-
bottom: defaultInit,
|
|
72
|
-
left: defaultInit
|
|
73
|
-
};
|
|
74
|
-
let useLonghand = false;
|
|
75
|
-
if (main != null) if (typeof main === "number") dirs.top = dirs.right = dirs.bottom = dirs.left = `${main}px`;
|
|
76
|
-
else {
|
|
77
|
-
const strMain = main === true ? trueValue : String(main);
|
|
78
|
-
if (strMain) {
|
|
79
|
-
const keyword = CSS_WIDE_KEYWORDS.has(strMain) ? strMain : null;
|
|
80
|
-
if (keyword) dirs.top = dirs.right = dirs.bottom = dirs.left = keyword;
|
|
81
|
-
else {
|
|
82
|
-
const groups = parseStyle(strMain).groups ?? [];
|
|
83
|
-
for (const group of groups) {
|
|
84
|
-
if (group.mods.includes("longhand")) useLonghand = true;
|
|
85
|
-
const kw = extractCSSWideKeyword(group);
|
|
86
|
-
if (kw) {
|
|
87
|
-
const groupDirs = filterMods(group.mods, DIRECTIONS);
|
|
88
|
-
if (groupDirs.length === 0) dirs.top = dirs.right = dirs.bottom = dirs.left = kw;
|
|
89
|
-
else for (const dir of groupDirs) dirs[dir] = kw;
|
|
90
|
-
} else {
|
|
91
|
-
const { values, directions } = extractGroupData(group, defaultValue);
|
|
92
|
-
applyGroup(dirs, values, directions);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
if (block != null) {
|
|
99
|
-
const val = parseSingleValue(block, defaultValue, trueValue);
|
|
100
|
-
if (val) dirs.top = dirs.bottom = val;
|
|
101
|
-
}
|
|
102
|
-
if (inline != null) {
|
|
103
|
-
const val = parseSingleValue(inline, defaultValue, trueValue);
|
|
104
|
-
if (val) dirs.left = dirs.right = val;
|
|
105
|
-
}
|
|
106
|
-
if (top != null) {
|
|
107
|
-
const val = parseSingleValue(top, defaultValue, trueValue);
|
|
108
|
-
if (val) dirs.top = val;
|
|
109
|
-
}
|
|
110
|
-
if (right != null) {
|
|
111
|
-
const val = parseSingleValue(right, defaultValue, trueValue);
|
|
112
|
-
if (val) dirs.right = val;
|
|
113
|
-
}
|
|
114
|
-
if (bottom != null) {
|
|
115
|
-
const val = parseSingleValue(bottom, defaultValue, trueValue);
|
|
116
|
-
if (val) dirs.bottom = val;
|
|
117
|
-
}
|
|
118
|
-
if (left != null) {
|
|
119
|
-
const val = parseSingleValue(left, defaultValue, trueValue);
|
|
120
|
-
if (val) dirs.left = val;
|
|
121
|
-
}
|
|
122
|
-
if (useLonghand) return {
|
|
123
|
-
[dirProp("top")]: dirs.top,
|
|
124
|
-
[dirProp("right")]: dirs.right,
|
|
125
|
-
[dirProp("bottom")]: dirs.bottom,
|
|
126
|
-
[dirProp("left")]: dirs.left
|
|
127
|
-
};
|
|
128
|
-
return optimizeShorthand(property, dirs);
|
|
129
|
-
}
|
|
130
|
-
//#endregion
|
|
131
|
-
export { processDirectionalStyle };
|
|
132
|
-
|
|
133
|
-
//# sourceMappingURL=directional.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"directional.js","names":[],"sources":["../../src/styles/directional.ts"],"sourcesContent":["import type { StyleDetails } from '../parser/types';\nimport { CSS_WIDE_KEYWORDS } from '../parser/const';\nimport { DIRECTIONS, filterMods, parseStyle } from '../utils/styles';\nimport { extractCSSWideKeyword } from './shared';\n\ntype Direction = (typeof DIRECTIONS)[number];\n\nexport interface DirectionalConfig {\n /** CSS property name (e.g. 'padding', 'margin', 'inset', 'scroll-margin') */\n property: string;\n /** Default value when parsing yields empty (e.g. 'var(--gap)', '0') */\n defaultValue: string;\n /** Value used when the prop is `true` (e.g. '1x', '0') */\n trueValue: string;\n /** Default per-direction init value (e.g. '0', 'auto') */\n defaultInit: string;\n /**\n * When true, if only individual direction props are set (no shorthand,\n * no block/inline), output individual CSS properties instead of the\n * shorthand. Needed by inset for correct CSS cascade with modifiers.\n */\n individualOnly?: boolean;\n /**\n * Maps individual direction CSS property names. Defaults to\n * `${property}-top`, `${property}-right`, etc. For inset this is\n * `top`, `right`, `bottom`, `left`.\n */\n directionProperty?: (dir: Direction) => string;\n}\n\nexport function parseSingleValue(\n val: string | number | boolean,\n defaultValue: string,\n trueValue: string,\n): string | null {\n if (typeof val === 'number') return `${val}px`;\n if (!val) return null;\n if (val === true) val = trueValue;\n\n const strVal = String(val);\n\n if (CSS_WIDE_KEYWORDS.has(strVal)) return strVal;\n\n const { values } = parseStyle(strVal).groups[0] ?? { values: [] };\n\n return values[0] || defaultValue;\n}\n\nfunction extractGroupData(\n group: StyleDetails,\n defaultValue: string,\n): {\n values: string[];\n directions: Direction[];\n} {\n const { values = [], mods = [] } = group;\n\n return {\n values: values.length ? values : [defaultValue],\n directions: filterMods(mods, DIRECTIONS) as Direction[],\n };\n}\n\nfunction applyGroup(\n dirs: Record<Direction, string>,\n values: string[],\n directions: Direction[],\n): void {\n if (!values.length) return;\n\n if (directions.length === 0) {\n dirs.top = values[0];\n dirs.right = values[1] || values[0];\n dirs.bottom = values[2] || values[0];\n dirs.left = values[3] || values[1] || values[0];\n } else {\n directions.forEach((dir, i) => {\n dirs[dir] = values[i] ?? values[0];\n });\n }\n}\n\nfunction optimizeShorthand(\n property: string,\n dirs: Record<Direction, string>,\n): Record<string, string> {\n const { top, right, bottom, left } = dirs;\n\n if (top === right && right === bottom && bottom === left) {\n return { [property]: top };\n }\n if (top === bottom && left === right) {\n return { [property]: `${top} ${left}` };\n }\n\n return { [property]: `${top} ${right} ${bottom} ${left}` };\n}\n\nexport interface DirectionalProps {\n main?: string | number | boolean;\n block?: string | number | boolean;\n inline?: string | number | boolean;\n top?: string | number | boolean;\n right?: string | number | boolean;\n bottom?: string | number | boolean;\n left?: string | number | boolean;\n}\n\n/**\n * Core directional style logic shared by padding, margin, inset, scrollMargin.\n */\nexport function processDirectionalStyle(\n config: DirectionalConfig,\n props: DirectionalProps,\n): Record<string, string> | null {\n const { main, block, inline, top, right, bottom, left } = props;\n\n if (\n main == null &&\n block == null &&\n inline == null &&\n top == null &&\n right == null &&\n bottom == null &&\n left == null\n ) {\n return null;\n }\n\n const {\n property,\n defaultValue,\n trueValue,\n defaultInit,\n individualOnly,\n directionProperty,\n } = config;\n const dirProp =\n directionProperty ?? ((dir: Direction) => `${property}-${dir}`);\n\n if (individualOnly) {\n const onlyIndividualProps = main == null && block == null && inline == null;\n\n if (onlyIndividualProps) {\n const result: Record<string, string> = {};\n\n if (top != null) {\n const val = parseSingleValue(top, defaultValue, trueValue);\n if (val) result[dirProp('top')] = val;\n }\n if (right != null) {\n const val = parseSingleValue(right, defaultValue, trueValue);\n if (val) result[dirProp('right')] = val;\n }\n if (bottom != null) {\n const val = parseSingleValue(bottom, defaultValue, trueValue);\n if (val) result[dirProp('bottom')] = val;\n }\n if (left != null) {\n const val = parseSingleValue(left, defaultValue, trueValue);\n if (val) result[dirProp('left')] = val;\n }\n\n return Object.keys(result).length > 0 ? result : null;\n }\n }\n\n const dirs: Record<Direction, string> = {\n top: defaultInit,\n right: defaultInit,\n bottom: defaultInit,\n left: defaultInit,\n };\n\n let useLonghand = false;\n\n if (main != null) {\n if (typeof main === 'number') {\n const v = `${main}px`;\n dirs.top = dirs.right = dirs.bottom = dirs.left = v;\n } else {\n const strMain = main === true ? trueValue : String(main);\n\n if (strMain) {\n const keyword = CSS_WIDE_KEYWORDS.has(strMain) ? strMain : null;\n\n if (keyword) {\n dirs.top = dirs.right = dirs.bottom = dirs.left = keyword;\n } else {\n const processed = parseStyle(strMain);\n const groups = processed.groups ?? [];\n\n for (const group of groups) {\n if (group.mods.includes('longhand')) {\n useLonghand = true;\n }\n\n const kw = extractCSSWideKeyword(group);\n\n if (kw) {\n const groupDirs = filterMods(\n group.mods,\n DIRECTIONS,\n ) as Direction[];\n\n if (groupDirs.length === 0) {\n dirs.top = dirs.right = dirs.bottom = dirs.left = kw;\n } else {\n for (const dir of groupDirs) {\n dirs[dir] = kw;\n }\n }\n } else {\n const { values, directions } = extractGroupData(\n group,\n defaultValue,\n );\n applyGroup(dirs, values, directions);\n }\n }\n }\n }\n }\n }\n\n if (block != null) {\n const val = parseSingleValue(block, defaultValue, trueValue);\n if (val) dirs.top = dirs.bottom = val;\n }\n if (inline != null) {\n const val = parseSingleValue(inline, defaultValue, trueValue);\n if (val) dirs.left = dirs.right = val;\n }\n\n if (top != null) {\n const val = parseSingleValue(top, defaultValue, trueValue);\n if (val) dirs.top = val;\n }\n if (right != null) {\n const val = parseSingleValue(right, defaultValue, trueValue);\n if (val) dirs.right = val;\n }\n if (bottom != null) {\n const val = parseSingleValue(bottom, defaultValue, trueValue);\n if (val) dirs.bottom = val;\n }\n if (left != null) {\n const val = parseSingleValue(left, defaultValue, trueValue);\n if (val) dirs.left = val;\n }\n\n if (useLonghand) {\n return {\n [dirProp('top')]: dirs.top,\n [dirProp('right')]: dirs.right,\n [dirProp('bottom')]: dirs.bottom,\n [dirProp('left')]: dirs.left,\n };\n }\n\n return optimizeShorthand(property, dirs);\n}\n"],"mappings":"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"}
|
package/dist/styles/display.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
//#region src/styles/display.d.ts
|
|
2
|
-
interface DisplayStyleProps {
|
|
3
|
-
display?: string;
|
|
4
|
-
hide?: boolean;
|
|
5
|
-
textOverflow?: string | boolean;
|
|
6
|
-
overflow?: string;
|
|
7
|
-
whiteSpace?: string;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Handles display, hide, textOverflow, overflow, and whiteSpace styles.
|
|
11
|
-
*
|
|
12
|
-
* Priority:
|
|
13
|
-
* 1. `hide` takes precedence (display: none)
|
|
14
|
-
* 2. Multi-line `textOverflow` forces display: -webkit-box
|
|
15
|
-
* 3. Single-line `textOverflow` defaults white-space to nowrap
|
|
16
|
-
* 4. Explicit `whiteSpace` overrides the default from `textOverflow`
|
|
17
|
-
*/
|
|
18
|
-
declare function displayStyle({
|
|
19
|
-
display,
|
|
20
|
-
hide,
|
|
21
|
-
textOverflow,
|
|
22
|
-
overflow,
|
|
23
|
-
whiteSpace
|
|
24
|
-
}: DisplayStyleProps): Record<string, string | number> | null;
|
|
25
|
-
declare namespace displayStyle {
|
|
26
|
-
var __lookupStyles: string[];
|
|
27
|
-
}
|
|
28
|
-
//#endregion
|
|
29
|
-
export { displayStyle };
|
|
30
|
-
//# sourceMappingURL=display.d.ts.map
|
package/dist/styles/display.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { parseStyle } from "../utils/styles.js";
|
|
2
|
-
//#region src/styles/display.ts
|
|
3
|
-
/**
|
|
4
|
-
* Process textOverflow into CSS properties for truncation/clamping.
|
|
5
|
-
*
|
|
6
|
-
* - `ellipsis` — single-line truncation with ellipsis
|
|
7
|
-
* - `ellipsis / 3` — multi-line clamping (3 lines) with ellipsis
|
|
8
|
-
* - `clip` — single-line truncation with clip
|
|
9
|
-
* - `clip / 2` — multi-line clip (2 lines)
|
|
10
|
-
* - `true` or `initial` — reset to initial
|
|
11
|
-
*/
|
|
12
|
-
function processTextOverflow(textOverflow, whiteSpace) {
|
|
13
|
-
if (textOverflow === true || textOverflow === "initial") return { "text-overflow": "initial" };
|
|
14
|
-
const group = parseStyle(String(textOverflow)).groups[0];
|
|
15
|
-
if (!group) return null;
|
|
16
|
-
const { parts } = group;
|
|
17
|
-
const modePart = parts[0];
|
|
18
|
-
const clampPart = parts[1];
|
|
19
|
-
const hasEllipsis = modePart?.mods.includes("ellipsis");
|
|
20
|
-
const hasClip = modePart?.mods.includes("clip");
|
|
21
|
-
if (!hasEllipsis && !hasClip) return null;
|
|
22
|
-
let clamp = 1;
|
|
23
|
-
if (clampPart?.values[0]) {
|
|
24
|
-
const parsed = parseInt(clampPart.values[0], 10);
|
|
25
|
-
if (!isNaN(parsed) && parsed > 0) clamp = parsed;
|
|
26
|
-
}
|
|
27
|
-
const result = {
|
|
28
|
-
overflow: "hidden",
|
|
29
|
-
"text-overflow": hasEllipsis ? "ellipsis" : "clip"
|
|
30
|
-
};
|
|
31
|
-
if (clamp === 1) result["white-space"] = whiteSpace || "nowrap";
|
|
32
|
-
else {
|
|
33
|
-
result["display"] = "-webkit-box";
|
|
34
|
-
result["-webkit-box-orient"] = "vertical";
|
|
35
|
-
result["-webkit-line-clamp"] = clamp;
|
|
36
|
-
result["line-clamp"] = clamp;
|
|
37
|
-
result["white-space"] = whiteSpace || "initial";
|
|
38
|
-
}
|
|
39
|
-
return result;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Handles display, hide, textOverflow, overflow, and whiteSpace styles.
|
|
43
|
-
*
|
|
44
|
-
* Priority:
|
|
45
|
-
* 1. `hide` takes precedence (display: none)
|
|
46
|
-
* 2. Multi-line `textOverflow` forces display: -webkit-box
|
|
47
|
-
* 3. Single-line `textOverflow` defaults white-space to nowrap
|
|
48
|
-
* 4. Explicit `whiteSpace` overrides the default from `textOverflow`
|
|
49
|
-
*/
|
|
50
|
-
function displayStyle({ display, hide, textOverflow, overflow, whiteSpace }) {
|
|
51
|
-
const result = {};
|
|
52
|
-
if (textOverflow != null && textOverflow !== false) {
|
|
53
|
-
const textResult = processTextOverflow(textOverflow, whiteSpace);
|
|
54
|
-
if (textResult) Object.assign(result, textResult);
|
|
55
|
-
}
|
|
56
|
-
if (overflow && !result["overflow"]) result["overflow"] = overflow;
|
|
57
|
-
if (whiteSpace && !result["white-space"]) result["white-space"] = whiteSpace;
|
|
58
|
-
if (hide) result["display"] = "none";
|
|
59
|
-
else if (!result["display"] && display) result["display"] = display;
|
|
60
|
-
if (Object.keys(result).length === 0) return null;
|
|
61
|
-
return result;
|
|
62
|
-
}
|
|
63
|
-
displayStyle.__lookupStyles = [
|
|
64
|
-
"display",
|
|
65
|
-
"hide",
|
|
66
|
-
"textOverflow",
|
|
67
|
-
"overflow",
|
|
68
|
-
"whiteSpace"
|
|
69
|
-
];
|
|
70
|
-
//#endregion
|
|
71
|
-
export { displayStyle };
|
|
72
|
-
|
|
73
|
-
//# sourceMappingURL=display.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"display.js","names":[],"sources":["../../src/styles/display.ts"],"sourcesContent":["import { parseStyle } from '../utils/styles';\n\ninterface DisplayStyleProps {\n display?: string;\n hide?: boolean;\n textOverflow?: string | boolean;\n overflow?: string;\n whiteSpace?: string;\n}\n\n/**\n * Process textOverflow into CSS properties for truncation/clamping.\n *\n * - `ellipsis` — single-line truncation with ellipsis\n * - `ellipsis / 3` — multi-line clamping (3 lines) with ellipsis\n * - `clip` — single-line truncation with clip\n * - `clip / 2` — multi-line clip (2 lines)\n * - `true` or `initial` — reset to initial\n */\nfunction processTextOverflow(\n textOverflow: string | boolean,\n whiteSpace?: string,\n): Record<string, string | number> | null {\n if (textOverflow === true || textOverflow === 'initial') {\n return { 'text-overflow': 'initial' };\n }\n\n const processed = parseStyle(String(textOverflow));\n const group = processed.groups[0];\n\n if (!group) return null;\n\n const { parts } = group;\n const modePart = parts[0];\n const clampPart = parts[1];\n\n const hasEllipsis = modePart?.mods.includes('ellipsis');\n const hasClip = modePart?.mods.includes('clip');\n\n if (!hasEllipsis && !hasClip) return null;\n\n let clamp = 1;\n\n if (clampPart?.values[0]) {\n const parsed = parseInt(clampPart.values[0], 10);\n\n if (!isNaN(parsed) && parsed > 0) {\n clamp = parsed;\n }\n }\n\n const result: Record<string, string | number> = {\n overflow: 'hidden',\n 'text-overflow': hasEllipsis ? 'ellipsis' : 'clip',\n };\n\n if (clamp === 1) {\n result['white-space'] = whiteSpace || 'nowrap';\n } else {\n result['display'] = '-webkit-box';\n result['-webkit-box-orient'] = 'vertical';\n result['-webkit-line-clamp'] = clamp;\n result['line-clamp'] = clamp;\n result['white-space'] = whiteSpace || 'initial';\n }\n\n return result;\n}\n\n/**\n * Handles display, hide, textOverflow, overflow, and whiteSpace styles.\n *\n * Priority:\n * 1. `hide` takes precedence (display: none)\n * 2. Multi-line `textOverflow` forces display: -webkit-box\n * 3. Single-line `textOverflow` defaults white-space to nowrap\n * 4. Explicit `whiteSpace` overrides the default from `textOverflow`\n */\nexport function displayStyle({\n display,\n hide,\n textOverflow,\n overflow,\n whiteSpace,\n}: DisplayStyleProps) {\n const result: Record<string, string | number> = {};\n\n if (textOverflow != null && textOverflow !== false) {\n const textResult = processTextOverflow(textOverflow, whiteSpace);\n\n if (textResult) Object.assign(result, textResult);\n }\n\n if (overflow && !result['overflow']) {\n result['overflow'] = overflow;\n }\n if (whiteSpace && !result['white-space']) {\n result['white-space'] = whiteSpace;\n }\n\n if (hide) {\n result['display'] = 'none';\n } else if (!result['display'] && display) {\n result['display'] = display;\n }\n\n if (Object.keys(result).length === 0) {\n return null;\n }\n\n return result;\n}\n\ndisplayStyle.__lookupStyles = [\n 'display',\n 'hide',\n 'textOverflow',\n 'overflow',\n 'whiteSpace',\n];\n"],"mappings":";;;;;;;;;;;AAmBA,SAAS,oBACP,cACA,YACwC;AACxC,KAAI,iBAAiB,QAAQ,iBAAiB,UAC5C,QAAO,EAAE,iBAAiB,WAAW;CAIvC,MAAM,QADY,WAAW,OAAO,aAAa,CAAC,CAC1B,OAAO;AAE/B,KAAI,CAAC,MAAO,QAAO;CAEnB,MAAM,EAAE,UAAU;CAClB,MAAM,WAAW,MAAM;CACvB,MAAM,YAAY,MAAM;CAExB,MAAM,cAAc,UAAU,KAAK,SAAS,WAAW;CACvD,MAAM,UAAU,UAAU,KAAK,SAAS,OAAO;AAE/C,KAAI,CAAC,eAAe,CAAC,QAAS,QAAO;CAErC,IAAI,QAAQ;AAEZ,KAAI,WAAW,OAAO,IAAI;EACxB,MAAM,SAAS,SAAS,UAAU,OAAO,IAAI,GAAG;AAEhD,MAAI,CAAC,MAAM,OAAO,IAAI,SAAS,EAC7B,SAAQ;;CAIZ,MAAM,SAA0C;EAC9C,UAAU;EACV,iBAAiB,cAAc,aAAa;EAC7C;AAED,KAAI,UAAU,EACZ,QAAO,iBAAiB,cAAc;MACjC;AACL,SAAO,aAAa;AACpB,SAAO,wBAAwB;AAC/B,SAAO,wBAAwB;AAC/B,SAAO,gBAAgB;AACvB,SAAO,iBAAiB,cAAc;;AAGxC,QAAO;;;;;;;;;;;AAYT,SAAgB,aAAa,EAC3B,SACA,MACA,cACA,UACA,cACoB;CACpB,MAAM,SAA0C,EAAE;AAElD,KAAI,gBAAgB,QAAQ,iBAAiB,OAAO;EAClD,MAAM,aAAa,oBAAoB,cAAc,WAAW;AAEhE,MAAI,WAAY,QAAO,OAAO,QAAQ,WAAW;;AAGnD,KAAI,YAAY,CAAC,OAAO,YACtB,QAAO,cAAc;AAEvB,KAAI,cAAc,CAAC,OAAO,eACxB,QAAO,iBAAiB;AAG1B,KAAI,KACF,QAAO,aAAa;UACX,CAAC,OAAO,cAAc,QAC/B,QAAO,aAAa;AAGtB,KAAI,OAAO,KAAK,OAAO,CAAC,WAAW,EACjC,QAAO;AAGT,QAAO;;AAGT,aAAa,iBAAiB;CAC5B;CACA;CACA;CACA;CACA;CACD"}
|
package/dist/styles/fade.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
//#region src/styles/fade.d.ts
|
|
2
|
-
declare function fadeStyle({
|
|
3
|
-
fade
|
|
4
|
-
}: {
|
|
5
|
-
fade?: string;
|
|
6
|
-
}): {
|
|
7
|
-
mask: string;
|
|
8
|
-
'mask-composite': string;
|
|
9
|
-
} | null;
|
|
10
|
-
declare namespace fadeStyle {
|
|
11
|
-
var __lookupStyles: string[];
|
|
12
|
-
}
|
|
13
|
-
//#endregion
|
|
14
|
-
export { fadeStyle };
|
|
15
|
-
//# sourceMappingURL=fade.d.ts.map
|
package/dist/styles/fade.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { CSS_WIDE_KEYWORDS } from "../parser/const.js";
|
|
2
|
-
import { DIRECTIONS, filterMods, parseStyle } from "../utils/styles.js";
|
|
3
|
-
//#region src/styles/fade.ts
|
|
4
|
-
const DIRECTION_MAP = {
|
|
5
|
-
right: "to left",
|
|
6
|
-
left: "to right",
|
|
7
|
-
top: "to bottom",
|
|
8
|
-
bottom: "to top"
|
|
9
|
-
};
|
|
10
|
-
const DEFAULT_TRANSPARENT_COLOR = "rgb(0 0 0 / 0)";
|
|
11
|
-
const DEFAULT_OPAQUE_COLOR = "rgb(0 0 0 / 1)";
|
|
12
|
-
/**
|
|
13
|
-
* Process a single group and return gradient strings for its directions.
|
|
14
|
-
*/
|
|
15
|
-
function processGroup(group, isOnlyGroup) {
|
|
16
|
-
let { values } = group;
|
|
17
|
-
const { mods, colors } = group;
|
|
18
|
-
let directions = filterMods(mods, DIRECTIONS);
|
|
19
|
-
if (!values.length) values = ["calc(2 * var(--gap))"];
|
|
20
|
-
if (!directions.length) if (isOnlyGroup) directions = [
|
|
21
|
-
"top",
|
|
22
|
-
"right",
|
|
23
|
-
"bottom",
|
|
24
|
-
"left"
|
|
25
|
-
];
|
|
26
|
-
else return [];
|
|
27
|
-
const transparentColor = colors?.[0] || DEFAULT_TRANSPARENT_COLOR;
|
|
28
|
-
const opaqueColor = colors?.[1] || DEFAULT_OPAQUE_COLOR;
|
|
29
|
-
return directions.map((direction, index) => {
|
|
30
|
-
const size = values[index] || values[index % 2] || values[0];
|
|
31
|
-
return `linear-gradient(${DIRECTION_MAP[direction]}, ${transparentColor} 0%, ${opaqueColor} ${size})`;
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
function fadeStyle({ fade }) {
|
|
35
|
-
if (!fade) return null;
|
|
36
|
-
if (CSS_WIDE_KEYWORDS.has(fade)) return {
|
|
37
|
-
mask: fade,
|
|
38
|
-
"mask-composite": fade
|
|
39
|
-
};
|
|
40
|
-
const groups = parseStyle(fade).groups ?? [];
|
|
41
|
-
if (!groups.length) return null;
|
|
42
|
-
const isOnlyGroup = groups.length === 1;
|
|
43
|
-
const gradients = [];
|
|
44
|
-
for (const group of groups) {
|
|
45
|
-
const groupGradients = processGroup({
|
|
46
|
-
values: group.values ?? [],
|
|
47
|
-
mods: group.mods ?? [],
|
|
48
|
-
colors: group.colors ?? []
|
|
49
|
-
}, isOnlyGroup);
|
|
50
|
-
gradients.push(...groupGradients);
|
|
51
|
-
}
|
|
52
|
-
if (!gradients.length) return null;
|
|
53
|
-
return {
|
|
54
|
-
mask: gradients.join(", "),
|
|
55
|
-
"mask-composite": "intersect"
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
fadeStyle.__lookupStyles = ["fade"];
|
|
59
|
-
//#endregion
|
|
60
|
-
export { fadeStyle };
|
|
61
|
-
|
|
62
|
-
//# sourceMappingURL=fade.js.map
|
package/dist/styles/fade.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fade.js","names":[],"sources":["../../src/styles/fade.ts"],"sourcesContent":["import { CSS_WIDE_KEYWORDS } from '../parser/const';\nimport { DIRECTIONS, filterMods, parseStyle } from '../utils/styles';\n\nconst DIRECTION_MAP: Record<(typeof DIRECTIONS)[number], string> = {\n right: 'to left',\n left: 'to right',\n top: 'to bottom',\n bottom: 'to top',\n};\n\n// Default mask colors (standard black with alpha for gradient masks)\nconst DEFAULT_TRANSPARENT_COLOR = 'rgb(0 0 0 / 0)';\nconst DEFAULT_OPAQUE_COLOR = 'rgb(0 0 0 / 1)';\n\ninterface GroupData {\n values: string[];\n mods: string[];\n colors: string[];\n}\n\n/**\n * Process a single group and return gradient strings for its directions.\n */\nfunction processGroup(group: GroupData, isOnlyGroup: boolean): string[] {\n let { values } = group;\n const { mods, colors } = group;\n\n let directions = filterMods(\n mods,\n DIRECTIONS,\n ) as (typeof DIRECTIONS)[number][];\n\n if (!values.length) {\n values = ['calc(2 * var(--gap))'];\n }\n\n // If this is the only group and no directions specified, apply to all edges\n if (!directions.length) {\n if (isOnlyGroup) {\n directions = ['top', 'right', 'bottom', 'left'];\n } else {\n // For multi-group without explicit direction, skip this group\n return [];\n }\n }\n\n // Extract colors: first = transparent mask color, second = opaque mask color\n const transparentColor = colors?.[0] || DEFAULT_TRANSPARENT_COLOR;\n const opaqueColor = colors?.[1] || DEFAULT_OPAQUE_COLOR;\n\n return directions.map(\n (direction: (typeof DIRECTIONS)[number], index: number) => {\n const size = values[index] || values[index % 2] || values[0];\n\n return `linear-gradient(${DIRECTION_MAP[direction]}, ${transparentColor} 0%, ${opaqueColor} ${size})`;\n },\n );\n}\n\nexport function fadeStyle({ fade }: { fade?: string }) {\n if (!fade) return null;\n\n if (CSS_WIDE_KEYWORDS.has(fade)) {\n return { mask: fade, 'mask-composite': fade };\n }\n\n const processed = parseStyle(fade);\n const groups: GroupData[] = processed.groups ?? [];\n\n if (!groups.length) return null;\n\n const isOnlyGroup = groups.length === 1;\n\n // Process all groups and collect gradients\n const gradients: string[] = [];\n\n for (const group of groups) {\n const groupGradients = processGroup(\n {\n values: group.values ?? [],\n mods: group.mods ?? [],\n colors: group.colors ?? [],\n },\n isOnlyGroup,\n );\n gradients.push(...groupGradients);\n }\n\n if (!gradients.length) return null;\n\n return {\n mask: gradients.join(', '),\n 'mask-composite': 'intersect',\n };\n}\n\nfadeStyle.__lookupStyles = ['fade'];\n"],"mappings":";;;AAGA,MAAM,gBAA6D;CACjE,OAAO;CACP,MAAM;CACN,KAAK;CACL,QAAQ;CACT;AAGD,MAAM,4BAA4B;AAClC,MAAM,uBAAuB;;;;AAW7B,SAAS,aAAa,OAAkB,aAAgC;CACtE,IAAI,EAAE,WAAW;CACjB,MAAM,EAAE,MAAM,WAAW;CAEzB,IAAI,aAAa,WACf,MACA,WACD;AAED,KAAI,CAAC,OAAO,OACV,UAAS,CAAC,uBAAuB;AAInC,KAAI,CAAC,WAAW,OACd,KAAI,YACF,cAAa;EAAC;EAAO;EAAS;EAAU;EAAO;KAG/C,QAAO,EAAE;CAKb,MAAM,mBAAmB,SAAS,MAAM;CACxC,MAAM,cAAc,SAAS,MAAM;AAEnC,QAAO,WAAW,KACf,WAAwC,UAAkB;EACzD,MAAM,OAAO,OAAO,UAAU,OAAO,QAAQ,MAAM,OAAO;AAE1D,SAAO,mBAAmB,cAAc,WAAW,IAAI,iBAAiB,OAAO,YAAY,GAAG,KAAK;GAEtG;;AAGH,SAAgB,UAAU,EAAE,QAA2B;AACrD,KAAI,CAAC,KAAM,QAAO;AAElB,KAAI,kBAAkB,IAAI,KAAK,CAC7B,QAAO;EAAE,MAAM;EAAM,kBAAkB;EAAM;CAI/C,MAAM,SADY,WAAW,KAAK,CACI,UAAU,EAAE;AAElD,KAAI,CAAC,OAAO,OAAQ,QAAO;CAE3B,MAAM,cAAc,OAAO,WAAW;CAGtC,MAAM,YAAsB,EAAE;AAE9B,MAAK,MAAM,SAAS,QAAQ;EAC1B,MAAM,iBAAiB,aACrB;GACE,QAAQ,MAAM,UAAU,EAAE;GAC1B,MAAM,MAAM,QAAQ,EAAE;GACtB,QAAQ,MAAM,UAAU,EAAE;GAC3B,EACD,YACD;AACD,YAAU,KAAK,GAAG,eAAe;;AAGnC,KAAI,CAAC,UAAU,OAAQ,QAAO;AAE9B,QAAO;EACL,MAAM,UAAU,KAAK,KAAK;EAC1B,kBAAkB;EACnB;;AAGH,UAAU,iBAAiB,CAAC,OAAO"}
|
package/dist/styles/fill.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
//#region src/styles/fill.d.ts
|
|
2
|
-
declare function fillStyle({
|
|
3
|
-
fill,
|
|
4
|
-
backgroundColor,
|
|
5
|
-
image,
|
|
6
|
-
backgroundImage,
|
|
7
|
-
backgroundPosition,
|
|
8
|
-
backgroundSize,
|
|
9
|
-
backgroundRepeat,
|
|
10
|
-
backgroundAttachment,
|
|
11
|
-
backgroundOrigin,
|
|
12
|
-
backgroundClip,
|
|
13
|
-
background
|
|
14
|
-
}: {
|
|
15
|
-
fill?: string;
|
|
16
|
-
backgroundColor?: string;
|
|
17
|
-
image?: string;
|
|
18
|
-
backgroundImage?: string;
|
|
19
|
-
backgroundPosition?: string;
|
|
20
|
-
backgroundSize?: string;
|
|
21
|
-
backgroundRepeat?: string;
|
|
22
|
-
backgroundAttachment?: string;
|
|
23
|
-
backgroundOrigin?: string;
|
|
24
|
-
backgroundClip?: string;
|
|
25
|
-
background?: string;
|
|
26
|
-
}): Record<string, string> | null;
|
|
27
|
-
declare namespace fillStyle {
|
|
28
|
-
var __lookupStyles: string[];
|
|
29
|
-
}
|
|
30
|
-
declare function svgFillStyle({
|
|
31
|
-
svgFill
|
|
32
|
-
}: {
|
|
33
|
-
svgFill?: string;
|
|
34
|
-
}): {
|
|
35
|
-
fill: string;
|
|
36
|
-
} | null;
|
|
37
|
-
declare namespace svgFillStyle {
|
|
38
|
-
var __lookupStyles: string[];
|
|
39
|
-
}
|
|
40
|
-
//#endregion
|
|
41
|
-
export { fillStyle, svgFillStyle };
|
|
42
|
-
//# sourceMappingURL=fill.d.ts.map
|
package/dist/styles/fill.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { parseStyle } from "../utils/styles.js";
|
|
2
|
-
//#region src/styles/fill.ts
|
|
3
|
-
function fillStyle({ fill, backgroundColor, image, backgroundImage, backgroundPosition, backgroundSize, backgroundRepeat, backgroundAttachment, backgroundOrigin, backgroundClip, background }) {
|
|
4
|
-
if (background) return { background: parseStyle(background).output || background };
|
|
5
|
-
const result = {};
|
|
6
|
-
const colorValue = backgroundColor ?? fill;
|
|
7
|
-
if (colorValue) {
|
|
8
|
-
const parsed = parseStyle(colorValue);
|
|
9
|
-
const firstColor = parsed.groups[0]?.colors[0];
|
|
10
|
-
const secondColor = parsed.groups[0]?.colors[1];
|
|
11
|
-
result["background-color"] = firstColor || colorValue;
|
|
12
|
-
if (secondColor) result["--tasty-second-fill-color"] = secondColor;
|
|
13
|
-
}
|
|
14
|
-
const gradientLayer = result["--tasty-second-fill-color"] ? "linear-gradient(var(--tasty-second-fill-color), var(--tasty-second-fill-color))" : null;
|
|
15
|
-
const imageValue = backgroundImage ?? image;
|
|
16
|
-
if (imageValue) {
|
|
17
|
-
const imgCss = parseStyle(imageValue).output || imageValue;
|
|
18
|
-
result["background-image"] = gradientLayer ? `${imgCss}, ${gradientLayer}` : imgCss;
|
|
19
|
-
} else if (gradientLayer) result["background-image"] = gradientLayer;
|
|
20
|
-
if (backgroundPosition) result["background-position"] = parseStyle(backgroundPosition).output || backgroundPosition;
|
|
21
|
-
if (backgroundSize) result["background-size"] = parseStyle(backgroundSize).output || backgroundSize;
|
|
22
|
-
if (backgroundRepeat) result["background-repeat"] = backgroundRepeat;
|
|
23
|
-
if (backgroundAttachment) result["background-attachment"] = backgroundAttachment;
|
|
24
|
-
if (backgroundOrigin) result["background-origin"] = backgroundOrigin;
|
|
25
|
-
if (backgroundClip) result["background-clip"] = backgroundClip;
|
|
26
|
-
if (Object.keys(result).length === 0) return null;
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
fillStyle.__lookupStyles = [
|
|
30
|
-
"fill",
|
|
31
|
-
"backgroundColor",
|
|
32
|
-
"image",
|
|
33
|
-
"backgroundImage",
|
|
34
|
-
"backgroundPosition",
|
|
35
|
-
"backgroundSize",
|
|
36
|
-
"backgroundRepeat",
|
|
37
|
-
"backgroundAttachment",
|
|
38
|
-
"backgroundOrigin",
|
|
39
|
-
"backgroundClip",
|
|
40
|
-
"background"
|
|
41
|
-
];
|
|
42
|
-
function svgFillStyle({ svgFill }) {
|
|
43
|
-
if (!svgFill) return null;
|
|
44
|
-
svgFill = parseStyle(svgFill).groups[0]?.colors[0] || svgFill;
|
|
45
|
-
return { fill: svgFill };
|
|
46
|
-
}
|
|
47
|
-
svgFillStyle.__lookupStyles = ["svgFill"];
|
|
48
|
-
//#endregion
|
|
49
|
-
export { fillStyle, svgFillStyle };
|
|
50
|
-
|
|
51
|
-
//# sourceMappingURL=fill.js.map
|
package/dist/styles/fill.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fill.js","names":[],"sources":["../../src/styles/fill.ts"],"sourcesContent":["import { parseStyle } from '../utils/styles';\n\nexport function fillStyle({\n fill,\n backgroundColor,\n image,\n backgroundImage,\n backgroundPosition,\n backgroundSize,\n backgroundRepeat,\n backgroundAttachment,\n backgroundOrigin,\n backgroundClip,\n background,\n}: {\n fill?: string;\n backgroundColor?: string;\n image?: string;\n backgroundImage?: string;\n backgroundPosition?: string;\n backgroundSize?: string;\n backgroundRepeat?: string;\n backgroundAttachment?: string;\n backgroundOrigin?: string;\n backgroundClip?: string;\n background?: string;\n}) {\n // If background is set, it overrides everything\n if (background) {\n const processed = parseStyle(background);\n return { background: processed.output || background };\n }\n\n const result: Record<string, string> = {};\n\n // Priority: backgroundColor > fill\n const colorValue = backgroundColor ?? fill;\n if (colorValue) {\n const parsed = parseStyle(colorValue);\n const firstColor = parsed.groups[0]?.colors[0];\n const secondColor = parsed.groups[0]?.colors[1];\n\n result['background-color'] = firstColor || colorValue;\n\n if (secondColor) {\n result['--tasty-second-fill-color'] = secondColor;\n }\n }\n\n const gradientLayer = result['--tasty-second-fill-color']\n ? 'linear-gradient(var(--tasty-second-fill-color), var(--tasty-second-fill-color))'\n : null;\n\n // Priority: backgroundImage > image\n const imageValue = backgroundImage ?? image;\n if (imageValue) {\n const parsed = parseStyle(imageValue);\n const imgCss = parsed.output || imageValue;\n\n result['background-image'] = gradientLayer\n ? `${imgCss}, ${gradientLayer}`\n : imgCss;\n } else if (gradientLayer) {\n result['background-image'] = gradientLayer;\n }\n\n // Other background properties (pass through with parseStyle for token support)\n if (backgroundPosition) {\n result['background-position'] =\n parseStyle(backgroundPosition).output || backgroundPosition;\n }\n if (backgroundSize) {\n result['background-size'] =\n parseStyle(backgroundSize).output || backgroundSize;\n }\n if (backgroundRepeat) {\n result['background-repeat'] = backgroundRepeat;\n }\n if (backgroundAttachment) {\n result['background-attachment'] = backgroundAttachment;\n }\n if (backgroundOrigin) {\n result['background-origin'] = backgroundOrigin;\n }\n if (backgroundClip) {\n result['background-clip'] = backgroundClip;\n }\n\n if (Object.keys(result).length === 0) return null;\n return result;\n}\n\nfillStyle.__lookupStyles = [\n 'fill',\n 'backgroundColor',\n 'image',\n 'backgroundImage',\n 'backgroundPosition',\n 'backgroundSize',\n 'backgroundRepeat',\n 'backgroundAttachment',\n 'backgroundOrigin',\n 'backgroundClip',\n 'background',\n];\n\nexport function svgFillStyle({ svgFill }: { svgFill?: string }) {\n if (!svgFill) return null;\n\n const processed = parseStyle(svgFill);\n svgFill = processed.groups[0]?.colors[0] || svgFill;\n\n return { fill: svgFill };\n}\n\nsvgFillStyle.__lookupStyles = ['svgFill'];\n"],"mappings":";;AAEA,SAAgB,UAAU,EACxB,MACA,iBACA,OACA,iBACA,oBACA,gBACA,kBACA,sBACA,kBACA,gBACA,cAaC;AAED,KAAI,WAEF,QAAO,EAAE,YADS,WAAW,WAAW,CACT,UAAU,YAAY;CAGvD,MAAM,SAAiC,EAAE;CAGzC,MAAM,aAAa,mBAAmB;AACtC,KAAI,YAAY;EACd,MAAM,SAAS,WAAW,WAAW;EACrC,MAAM,aAAa,OAAO,OAAO,IAAI,OAAO;EAC5C,MAAM,cAAc,OAAO,OAAO,IAAI,OAAO;AAE7C,SAAO,sBAAsB,cAAc;AAE3C,MAAI,YACF,QAAO,+BAA+B;;CAI1C,MAAM,gBAAgB,OAAO,+BACzB,oFACA;CAGJ,MAAM,aAAa,mBAAmB;AACtC,KAAI,YAAY;EAEd,MAAM,SADS,WAAW,WAAW,CACf,UAAU;AAEhC,SAAO,sBAAsB,gBACzB,GAAG,OAAO,IAAI,kBACd;YACK,cACT,QAAO,sBAAsB;AAI/B,KAAI,mBACF,QAAO,yBACL,WAAW,mBAAmB,CAAC,UAAU;AAE7C,KAAI,eACF,QAAO,qBACL,WAAW,eAAe,CAAC,UAAU;AAEzC,KAAI,iBACF,QAAO,uBAAuB;AAEhC,KAAI,qBACF,QAAO,2BAA2B;AAEpC,KAAI,iBACF,QAAO,uBAAuB;AAEhC,KAAI,eACF,QAAO,qBAAqB;AAG9B,KAAI,OAAO,KAAK,OAAO,CAAC,WAAW,EAAG,QAAO;AAC7C,QAAO;;AAGT,UAAU,iBAAiB;CACzB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,SAAgB,aAAa,EAAE,WAAiC;AAC9D,KAAI,CAAC,QAAS,QAAO;AAGrB,WADkB,WAAW,QAAQ,CACjB,OAAO,IAAI,OAAO,MAAM;AAE5C,QAAO,EAAE,MAAM,SAAS;;AAG1B,aAAa,iBAAiB,CAAC,UAAU"}
|
package/dist/styles/flow.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
//#region src/styles/flow.d.ts
|
|
2
|
-
declare function flowStyle({
|
|
3
|
-
display,
|
|
4
|
-
flow
|
|
5
|
-
}: {
|
|
6
|
-
display?: string;
|
|
7
|
-
flow?: string;
|
|
8
|
-
}): {
|
|
9
|
-
[x: string]: string | undefined;
|
|
10
|
-
} | null;
|
|
11
|
-
declare namespace flowStyle {
|
|
12
|
-
var __lookupStyles: string[];
|
|
13
|
-
}
|
|
14
|
-
//#endregion
|
|
15
|
-
export { flowStyle };
|
|
16
|
-
//# sourceMappingURL=flow.d.ts.map
|
package/dist/styles/flow.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
//#region src/styles/flow.ts
|
|
2
|
-
function flowStyle({ display = "block", flow }) {
|
|
3
|
-
let style;
|
|
4
|
-
if (display.includes("grid")) style = "grid-auto-flow";
|
|
5
|
-
else if (display.includes("flex")) style = "flex-flow";
|
|
6
|
-
return style ? { [style]: flow } : null;
|
|
7
|
-
}
|
|
8
|
-
flowStyle.__lookupStyles = ["display", "flow"];
|
|
9
|
-
//#endregion
|
|
10
|
-
export { flowStyle };
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=flow.js.map
|
package/dist/styles/flow.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flow.js","names":[],"sources":["../../src/styles/flow.ts"],"sourcesContent":["export function flowStyle({\n display = 'block',\n flow,\n}: {\n display?: string;\n flow?: string;\n}) {\n let style;\n\n if (display.includes('grid')) {\n style = 'grid-auto-flow';\n } else if (display.includes('flex')) {\n style = 'flex-flow';\n }\n\n return style ? { [style]: flow } : null;\n}\n\nflowStyle.__lookupStyles = ['display', 'flow'];\n"],"mappings":";AAAA,SAAgB,UAAU,EACxB,UAAU,SACV,QAIC;CACD,IAAI;AAEJ,KAAI,QAAQ,SAAS,OAAO,CAC1B,SAAQ;UACC,QAAQ,SAAS,OAAO,CACjC,SAAQ;AAGV,QAAO,QAAQ,GAAG,QAAQ,MAAM,GAAG;;AAGrC,UAAU,iBAAiB,CAAC,WAAW,OAAO"}
|
package/dist/styles/gap.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
//#region src/styles/gap.d.ts
|
|
2
|
-
declare function gapStyle({
|
|
3
|
-
display,
|
|
4
|
-
flow,
|
|
5
|
-
gap
|
|
6
|
-
}: {
|
|
7
|
-
display?: string;
|
|
8
|
-
flow?: string;
|
|
9
|
-
gap?: string | number | boolean;
|
|
10
|
-
}): {
|
|
11
|
-
gap: string;
|
|
12
|
-
$?: undefined;
|
|
13
|
-
} | ({
|
|
14
|
-
'margin-right': string;
|
|
15
|
-
'margin-bottom': string;
|
|
16
|
-
$?: undefined;
|
|
17
|
-
} | {
|
|
18
|
-
$: string;
|
|
19
|
-
'margin-right': string;
|
|
20
|
-
'margin-bottom': string;
|
|
21
|
-
})[] | {
|
|
22
|
-
[x: string]: string;
|
|
23
|
-
$: string;
|
|
24
|
-
gap?: undefined;
|
|
25
|
-
} | null;
|
|
26
|
-
declare namespace gapStyle {
|
|
27
|
-
var __lookupStyles: string[];
|
|
28
|
-
}
|
|
29
|
-
//#endregion
|
|
30
|
-
export { gapStyle };
|
|
31
|
-
//# sourceMappingURL=gap.d.ts.map
|
package/dist/styles/gap.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { CSS_WIDE_KEYWORDS } from "../parser/const.js";
|
|
2
|
-
import { makeEmptyDetails } from "../parser/types.js";
|
|
3
|
-
import { parseStyle } from "../utils/styles.js";
|
|
4
|
-
//#region src/styles/gap.ts
|
|
5
|
-
function gapStyle({ display = "block", flow, gap }) {
|
|
6
|
-
if (typeof gap === "number") gap = `${gap}px`;
|
|
7
|
-
if (!gap) return null;
|
|
8
|
-
if (gap === true) gap = "1x";
|
|
9
|
-
if (CSS_WIDE_KEYWORDS.has(String(gap))) return { gap: String(gap) };
|
|
10
|
-
const isGrid = display.includes("grid");
|
|
11
|
-
const isFlex = display.includes("flex");
|
|
12
|
-
const isWrap = flow ? flow.includes("wrap") && !flow.includes("nowrap") : false;
|
|
13
|
-
if (!isGrid && flow == null) flow = isFlex ? "row" : "column";
|
|
14
|
-
const { values } = parseStyle(gap).groups[0] ?? makeEmptyDetails();
|
|
15
|
-
gap = values.join(" ");
|
|
16
|
-
if (isGrid || isFlex) return { gap };
|
|
17
|
-
const gapDir = flow?.includes("row") ? "right" : "bottom";
|
|
18
|
-
return isWrap ? [{
|
|
19
|
-
"margin-right": `calc(-1 * ${values[1] || values[0]})`,
|
|
20
|
-
"margin-bottom": `calc(-1 * ${values[0]})`
|
|
21
|
-
}, {
|
|
22
|
-
$: "& > *",
|
|
23
|
-
"margin-right": values[1] || values[0],
|
|
24
|
-
"margin-bottom": values[0]
|
|
25
|
-
}] : {
|
|
26
|
-
$: "& > *:not(:last-child)",
|
|
27
|
-
[`margin-${gapDir}`]: gap
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
gapStyle.__lookupStyles = [
|
|
31
|
-
"display",
|
|
32
|
-
"flow",
|
|
33
|
-
"gap"
|
|
34
|
-
];
|
|
35
|
-
//#endregion
|
|
36
|
-
export { gapStyle };
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=gap.js.map
|
package/dist/styles/gap.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gap.js","names":[],"sources":["../../src/styles/gap.ts"],"sourcesContent":["import { CSS_WIDE_KEYWORDS } from '../parser/const';\nimport { makeEmptyDetails } from '../parser/types';\nimport { parseStyle } from '../utils/styles';\n\nexport function gapStyle({\n display = 'block',\n flow,\n gap,\n}: {\n display?: string;\n flow?: string;\n gap?: string | number | boolean;\n}) {\n if (typeof gap === 'number') {\n gap = `${gap}px`;\n }\n\n if (!gap) {\n return null;\n }\n\n if (gap === true) {\n gap = '1x';\n }\n\n if (CSS_WIDE_KEYWORDS.has(String(gap))) {\n return { gap: String(gap) };\n }\n\n const isGrid = display.includes('grid');\n const isFlex = display.includes('flex');\n const isWrap = flow\n ? flow.includes('wrap') && !flow.includes('nowrap')\n : false;\n\n if (!isGrid && flow == null) {\n flow = isFlex ? 'row' : 'column';\n }\n\n const processed = parseStyle(gap);\n const { values } = processed.groups[0] ?? makeEmptyDetails();\n\n gap = values.join(' ');\n\n if (isGrid || isFlex) {\n return { gap };\n }\n\n const gapDir = flow?.includes('row') ? 'right' : 'bottom';\n\n return isWrap\n ? [\n {\n 'margin-right': `calc(-1 * ${values[1] || values[0]})`,\n 'margin-bottom': `calc(-1 * ${values[0]})`,\n },\n {\n $: '& > *',\n 'margin-right': values[1] || values[0],\n 'margin-bottom': values[0],\n },\n ]\n : {\n $: '& > *:not(:last-child)',\n [`margin-${gapDir}`]: gap,\n };\n}\n\ngapStyle.__lookupStyles = ['display', 'flow', 'gap'];\n"],"mappings":";;;;AAIA,SAAgB,SAAS,EACvB,UAAU,SACV,MACA,OAKC;AACD,KAAI,OAAO,QAAQ,SACjB,OAAM,GAAG,IAAI;AAGf,KAAI,CAAC,IACH,QAAO;AAGT,KAAI,QAAQ,KACV,OAAM;AAGR,KAAI,kBAAkB,IAAI,OAAO,IAAI,CAAC,CACpC,QAAO,EAAE,KAAK,OAAO,IAAI,EAAE;CAG7B,MAAM,SAAS,QAAQ,SAAS,OAAO;CACvC,MAAM,SAAS,QAAQ,SAAS,OAAO;CACvC,MAAM,SAAS,OACX,KAAK,SAAS,OAAO,IAAI,CAAC,KAAK,SAAS,SAAS,GACjD;AAEJ,KAAI,CAAC,UAAU,QAAQ,KACrB,QAAO,SAAS,QAAQ;CAI1B,MAAM,EAAE,WADU,WAAW,IAAI,CACJ,OAAO,MAAM,kBAAkB;AAE5D,OAAM,OAAO,KAAK,IAAI;AAEtB,KAAI,UAAU,OACZ,QAAO,EAAE,KAAK;CAGhB,MAAM,SAAS,MAAM,SAAS,MAAM,GAAG,UAAU;AAEjD,QAAO,SACH,CACE;EACE,gBAAgB,aAAa,OAAO,MAAM,OAAO,GAAG;EACpD,iBAAiB,aAAa,OAAO,GAAG;EACzC,EACD;EACE,GAAG;EACH,gBAAgB,OAAO,MAAM,OAAO;EACpC,iBAAiB,OAAO;EACzB,CACF,GACD;EACE,GAAG;GACF,UAAU,WAAW;EACvB;;AAGP,SAAS,iBAAiB;CAAC;CAAW;CAAQ;CAAM"}
|
package/dist/styles/height.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
//#region src/styles/height.d.ts
|
|
2
|
-
interface HeightStyleProps {
|
|
3
|
-
height?: string | number | boolean;
|
|
4
|
-
minHeight?: string | number | boolean;
|
|
5
|
-
maxHeight?: string | number | boolean;
|
|
6
|
-
}
|
|
7
|
-
declare function heightStyle({
|
|
8
|
-
height,
|
|
9
|
-
minHeight,
|
|
10
|
-
maxHeight
|
|
11
|
-
}: HeightStyleProps): Record<string, string | string[]> | null;
|
|
12
|
-
declare namespace heightStyle {
|
|
13
|
-
var __lookupStyles: string[];
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
export { heightStyle };
|
|
17
|
-
//# sourceMappingURL=height.d.ts.map
|
package/dist/styles/height.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { dimensionStyle } from "./dimension.js";
|
|
2
|
-
//#region src/styles/height.ts
|
|
3
|
-
const dimension = dimensionStyle("height");
|
|
4
|
-
function heightStyle({ height, minHeight, maxHeight }) {
|
|
5
|
-
return dimension({
|
|
6
|
-
value: height,
|
|
7
|
-
min: minHeight,
|
|
8
|
-
max: maxHeight
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
heightStyle.__lookupStyles = [
|
|
12
|
-
"height",
|
|
13
|
-
"minHeight",
|
|
14
|
-
"maxHeight"
|
|
15
|
-
];
|
|
16
|
-
//#endregion
|
|
17
|
-
export { heightStyle };
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=height.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"height.js","names":[],"sources":["../../src/styles/height.ts"],"sourcesContent":["import { dimensionStyle } from './dimension';\n\nconst dimension = dimensionStyle('height');\n\ninterface HeightStyleProps {\n height?: string | number | boolean;\n minHeight?: string | number | boolean;\n maxHeight?: string | number | boolean;\n}\n\nexport function heightStyle({\n height,\n minHeight,\n maxHeight,\n}: HeightStyleProps) {\n return dimension({ value: height, min: minHeight, max: maxHeight });\n}\n\nheightStyle.__lookupStyles = ['height', 'minHeight', 'maxHeight'];\n"],"mappings":";;AAEA,MAAM,YAAY,eAAe,SAAS;AAQ1C,SAAgB,YAAY,EAC1B,QACA,WACA,aACmB;AACnB,QAAO,UAAU;EAAE,OAAO;EAAQ,KAAK;EAAW,KAAK;EAAW,CAAC;;AAGrE,YAAY,iBAAiB;CAAC;CAAU;CAAa;CAAY"}
|
package/dist/styles/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import { styleHandlers } from "./predefined.js";
|
package/dist/styles/index.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import "./createStyle.js";
|
|
2
|
-
import { predefine } from "./predefined.js";
|
|
3
|
-
//#region src/styles/index.ts
|
|
4
|
-
const { STYLE_HANDLER_MAP, defineCustomStyle, defineStyleAlias } = predefine();
|
|
5
|
-
//#endregion
|
|
6
|
-
export { STYLE_HANDLER_MAP };
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=index.js.map
|
package/dist/styles/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/styles/index.ts"],"sourcesContent":["import { predefine, styleHandlers } from './predefined';\n\nconst { STYLE_HANDLER_MAP, defineCustomStyle, defineStyleAlias } = predefine();\n\nexport {\n STYLE_HANDLER_MAP,\n defineCustomStyle,\n defineStyleAlias,\n styleHandlers,\n};\nexport * from './createStyle';\nexport {\n normalizeHandlerDefinition,\n registerHandler,\n resetHandlers,\n validateHandlerResult,\n} from './predefined';\n"],"mappings":";;;AAEA,MAAM,EAAE,mBAAmB,mBAAmB,qBAAqB,WAAW"}
|