zyzz 0.0.27 → 0.0.29
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/binding/wasi/wasi-worker.mjs +186 -0
- package/binding/wasi/zyzz.wasi.cjs +2302 -0
- package/binding/wasi/zyzz.wasm32-wasi.wasm +0 -0
- package/binding/zyzz.linux-x64-gnu.node +0 -0
- package/dist/babel/index.d.ts.map +1 -1
- package/dist/babel/index.js +2 -4
- package/dist/babel/index.js.map +1 -1
- package/dist/babel/internal/Compilation.d.ts +0 -1
- package/dist/babel/internal/Compilation.d.ts.map +1 -1
- package/dist/compiler/Graph.d.ts +14 -11
- package/dist/compiler/Graph.d.ts.map +1 -1
- package/dist/compiler/Graph.js +57 -1442
- package/dist/compiler/Graph.js.map +1 -1
- package/dist/compiler/Native.d.ts +7 -9
- package/dist/compiler/Native.d.ts.map +1 -1
- package/dist/compiler/Native.js +12 -716
- package/dist/compiler/Native.js.map +1 -1
- package/dist/compiler/Source.d.ts +122 -24
- package/dist/compiler/Source.d.ts.map +1 -1
- package/dist/compiler/Source.js +10 -1113
- package/dist/compiler/Source.js.map +1 -1
- package/dist/compiler/Transform.d.ts +4 -3
- package/dist/compiler/Transform.d.ts.map +1 -1
- package/dist/compiler/Transform.js +13 -958
- package/dist/compiler/Transform.js.map +1 -1
- package/dist/compiler/internal/AtRules.d.ts +5 -1
- package/dist/compiler/internal/AtRules.d.ts.map +1 -1
- package/dist/compiler/internal/AtRules.js +12 -106
- package/dist/compiler/internal/AtRules.js.map +1 -1
- package/dist/compiler/internal/Context.d.ts +11 -0
- package/dist/compiler/internal/Context.d.ts.map +1 -0
- package/dist/compiler/internal/Context.js +11 -0
- package/dist/compiler/internal/Context.js.map +1 -0
- package/dist/compiler/internal/Results.d.ts +148 -0
- package/dist/compiler/internal/Results.d.ts.map +1 -0
- package/dist/compiler/internal/Results.js +259 -0
- package/dist/compiler/internal/Results.js.map +1 -0
- package/dist/compiler/internal/Syntax.d.ts +0 -2
- package/dist/compiler/internal/Syntax.d.ts.map +1 -1
- package/dist/compiler/internal/Syntax.js +0 -2
- package/dist/compiler/internal/Syntax.js.map +1 -1
- package/dist/compiler/internal/Wire.d.ts +17 -0
- package/dist/compiler/internal/Wire.d.ts.map +1 -0
- package/dist/compiler/internal/Wire.js +795 -0
- package/dist/compiler/internal/Wire.js.map +1 -0
- package/dist/internal/Addon.d.ts +28 -0
- package/dist/internal/Addon.d.ts.map +1 -0
- package/dist/internal/Addon.js +87 -0
- package/dist/internal/Addon.js.map +1 -0
- package/dist/internal/Authoring.d.ts.map +1 -1
- package/dist/internal/Authoring.js +37 -7
- package/dist/internal/Authoring.js.map +1 -1
- package/dist/internal/Configuration.d.ts +6 -1
- package/dist/internal/Configuration.d.ts.map +1 -1
- package/dist/internal/Configuration.js.map +1 -1
- package/dist/internal/Literal.d.ts +5 -2
- package/dist/internal/Literal.d.ts.map +1 -1
- package/dist/internal/Literal.js +7 -2
- package/dist/internal/Literal.js.map +1 -1
- package/dist/internal/Theme.d.ts +4 -0
- package/dist/internal/Theme.d.ts.map +1 -1
- package/dist/internal/Theme.js.map +1 -1
- package/dist/internal/Token.d.ts +2 -1
- package/dist/internal/Token.d.ts.map +1 -1
- package/dist/internal/Token.js +2 -2
- package/dist/internal/Token.js.map +1 -1
- package/dist/internal/Vlq.d.ts +14 -0
- package/dist/internal/Vlq.d.ts.map +1 -0
- package/dist/internal/Vlq.js +47 -0
- package/dist/internal/Vlq.js.map +1 -0
- package/dist/internal/Wasm.d.ts +22 -0
- package/dist/internal/Wasm.d.ts.map +1 -0
- package/dist/internal/Wasm.js +83 -0
- package/dist/internal/Wasm.js.map +1 -0
- package/dist/metro/Graph.d.ts +0 -1
- package/dist/metro/Graph.d.ts.map +1 -1
- package/dist/metro/transformer.d.ts.map +1 -1
- package/dist/metro/transformer.js +0 -1
- package/dist/metro/transformer.js.map +1 -1
- package/dist/next/internal/Project.d.ts.map +1 -1
- package/dist/next/internal/Project.js +2 -5
- package/dist/next/internal/Project.js.map +1 -1
- package/dist/node/Host.d.ts.map +1 -1
- package/dist/node/Host.js +0 -2
- package/dist/node/Host.js.map +1 -1
- package/dist/node/internal/Contracts.d.ts.map +1 -1
- package/dist/node/internal/Contracts.js +3 -7
- package/dist/node/internal/Contracts.js.map +1 -1
- package/dist/node/internal/Snapshot.d.ts +0 -1
- package/dist/node/internal/Snapshot.d.ts.map +1 -1
- package/dist/node/internal/Snapshot.js +0 -6
- package/dist/node/internal/Snapshot.js.map +1 -1
- package/dist/runtime/Composition.d.ts +2 -3
- package/dist/runtime/Composition.d.ts.map +1 -1
- package/dist/runtime/Composition.js +51 -30
- package/dist/runtime/Composition.js.map +1 -1
- package/dist/runtime/Recipe.d.ts.map +1 -1
- package/dist/runtime/Recipe.js +16 -12
- package/dist/runtime/Recipe.js.map +1 -1
- package/dist/styleFunction.d.ts +11 -2
- package/dist/styleFunction.d.ts.map +1 -1
- package/dist/styleFunction.js +3 -1
- package/dist/styleFunction.js.map +1 -1
- package/dist/unplugin/index.d.ts.map +1 -1
- package/dist/unplugin/index.js +3 -6
- package/dist/unplugin/index.js.map +1 -1
- package/dist/vite/index.d.ts +7 -0
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +862 -216
- package/dist/vite/index.js.map +1 -1
- package/dist/web/Css.d.ts +8 -3
- package/dist/web/Css.d.ts.map +1 -1
- package/dist/web/Css.js +5 -721
- package/dist/web/Css.js.map +1 -1
- package/dist/web/internal/Block.d.ts +0 -2
- package/dist/web/internal/Block.d.ts.map +1 -1
- package/dist/web/internal/Block.js +1 -12
- package/dist/web/internal/Block.js.map +1 -1
- package/dist/web/internal/ClassName.d.ts +23 -18
- package/dist/web/internal/ClassName.d.ts.map +1 -1
- package/dist/web/internal/ClassName.js +26 -55
- package/dist/web/internal/ClassName.js.map +1 -1
- package/dist/web/internal/Contributions.d.ts +3 -5
- package/dist/web/internal/Contributions.d.ts.map +1 -1
- package/dist/web/internal/Contributions.js +0 -45
- package/dist/web/internal/Contributions.js.map +1 -1
- package/dist/web/internal/Engine.browser.d.ts +8 -0
- package/dist/web/internal/Engine.browser.d.ts.map +1 -0
- package/dist/web/internal/Engine.browser.js +42 -0
- package/dist/web/internal/Engine.browser.js.map +1 -0
- package/dist/web/internal/Engine.d.ts +9 -0
- package/dist/web/internal/Engine.d.ts.map +1 -0
- package/dist/web/internal/Engine.js +14 -0
- package/dist/web/internal/Engine.js.map +1 -0
- package/dist/web/internal/Themes.d.ts +1 -9
- package/dist/web/internal/Themes.d.ts.map +1 -1
- package/dist/web/internal/Themes.js +3 -221
- package/dist/web/internal/Themes.js.map +1 -1
- package/dist/web/internal/Wasm.generated.d.ts +4 -0
- package/dist/web/internal/Wasm.generated.d.ts.map +1 -0
- package/dist/web/internal/Wasm.generated.js +4 -0
- package/dist/web/internal/Wasm.generated.js.map +1 -0
- package/dist/web/internal/Wire.d.ts +19 -0
- package/dist/web/internal/Wire.d.ts.map +1 -0
- package/dist/web/internal/Wire.js +387 -0
- package/dist/web/internal/Wire.js.map +1 -0
- package/package.json +20 -1
- package/src/babel/index.ts +2 -5
- package/src/babel/internal/Compilation.ts +0 -1
- package/src/compiler/Graph.ts +89 -1930
- package/src/compiler/Native.ts +18 -871
- package/src/compiler/Source.ts +144 -1579
- package/src/compiler/Transform.ts +16 -1312
- package/src/compiler/internal/AtRules.ts +27 -115
- package/src/compiler/internal/Context.ts +11 -0
- package/src/compiler/internal/Results.ts +406 -0
- package/src/compiler/internal/Syntax.ts +0 -3
- package/src/compiler/internal/Wire.ts +1045 -0
- package/src/internal/Addon.ts +118 -0
- package/src/internal/Authoring.ts +53 -18
- package/src/internal/Configuration.ts +38 -1
- package/src/internal/Literal.ts +7 -2
- package/src/internal/Theme.ts +15 -0
- package/src/internal/Token.ts +2 -2
- package/src/internal/Vlq.ts +59 -0
- package/src/internal/Wasm.ts +111 -0
- package/src/metro/transformer.ts +0 -1
- package/src/next/internal/Project.ts +2 -9
- package/src/node/Host.ts +0 -2
- package/src/node/internal/Contracts.ts +3 -7
- package/src/node/internal/Snapshot.ts +0 -8
- package/src/runtime/Composition.ts +48 -25
- package/src/runtime/Recipe.ts +21 -14
- package/src/styleFunction.ts +31 -2
- package/src/unplugin/index.ts +6 -6
- package/src/vite/index.ts +1157 -241
- package/src/web/Css.ts +12 -908
- package/src/web/internal/Block.ts +0 -14
- package/src/web/internal/ClassName.ts +52 -85
- package/src/web/internal/Contributions.ts +3 -59
- package/src/web/internal/Engine.browser.ts +51 -0
- package/src/web/internal/Engine.ts +17 -0
- package/src/web/internal/Themes.ts +3 -279
- package/src/web/internal/Wasm.generated.ts +3 -0
- package/src/web/internal/Wire.ts +466 -0
- package/src/web/internal/wasm.d.ts +9 -0
- package/dist/compiler/internal/Applications.d.ts +0 -55
- package/dist/compiler/internal/Applications.d.ts.map +0 -1
- package/dist/compiler/internal/Applications.js +0 -352
- package/dist/compiler/internal/Applications.js.map +0 -1
- package/dist/compiler/internal/ColorProfiles.d.ts +0 -3
- package/dist/compiler/internal/ColorProfiles.d.ts.map +0 -1
- package/dist/compiler/internal/ColorProfiles.js +0 -84
- package/dist/compiler/internal/ColorProfiles.js.map +0 -1
- package/dist/compiler/internal/CompositionBindings.d.ts +0 -16
- package/dist/compiler/internal/CompositionBindings.d.ts.map +0 -1
- package/dist/compiler/internal/CompositionBindings.js +0 -89
- package/dist/compiler/internal/CompositionBindings.js.map +0 -1
- package/dist/compiler/internal/Compositions.d.ts +0 -37
- package/dist/compiler/internal/Compositions.d.ts.map +0 -1
- package/dist/compiler/internal/Compositions.js +0 -494
- package/dist/compiler/internal/Compositions.js.map +0 -1
- package/dist/compiler/internal/Configurations.d.ts +0 -26
- package/dist/compiler/internal/Configurations.d.ts.map +0 -1
- package/dist/compiler/internal/Configurations.js +0 -259
- package/dist/compiler/internal/Configurations.js.map +0 -1
- package/dist/compiler/internal/Contract.d.ts +0 -30
- package/dist/compiler/internal/Contract.d.ts.map +0 -1
- package/dist/compiler/internal/Contract.js +0 -753
- package/dist/compiler/internal/Contract.js.map +0 -1
- package/dist/compiler/internal/Contributions.d.ts +0 -54
- package/dist/compiler/internal/Contributions.d.ts.map +0 -1
- package/dist/compiler/internal/Contributions.js +0 -1151
- package/dist/compiler/internal/Contributions.js.map +0 -1
- package/dist/compiler/internal/Descriptors.d.ts +0 -15
- package/dist/compiler/internal/Descriptors.d.ts.map +0 -1
- package/dist/compiler/internal/Descriptors.js +0 -192
- package/dist/compiler/internal/Descriptors.js.map +0 -1
- package/dist/compiler/internal/Dynamic.d.ts +0 -14
- package/dist/compiler/internal/Dynamic.d.ts.map +0 -1
- package/dist/compiler/internal/Dynamic.js +0 -175
- package/dist/compiler/internal/Dynamic.js.map +0 -1
- package/dist/compiler/internal/Expression.d.ts +0 -19
- package/dist/compiler/internal/Expression.d.ts.map +0 -1
- package/dist/compiler/internal/Expression.js +0 -164
- package/dist/compiler/internal/Expression.js.map +0 -1
- package/dist/compiler/internal/Functions.d.ts +0 -5
- package/dist/compiler/internal/Functions.d.ts.map +0 -1
- package/dist/compiler/internal/Functions.js +0 -191
- package/dist/compiler/internal/Functions.js.map +0 -1
- package/dist/compiler/internal/Keyframes.d.ts +0 -5
- package/dist/compiler/internal/Keyframes.d.ts.map +0 -1
- package/dist/compiler/internal/Keyframes.js +0 -51
- package/dist/compiler/internal/Keyframes.js.map +0 -1
- package/dist/compiler/internal/Names.d.ts +0 -5
- package/dist/compiler/internal/Names.d.ts.map +0 -1
- package/dist/compiler/internal/Names.js +0 -37
- package/dist/compiler/internal/Names.js.map +0 -1
- package/dist/compiler/internal/NativeBindings.d.ts +0 -72
- package/dist/compiler/internal/NativeBindings.d.ts.map +0 -1
- package/dist/compiler/internal/NativeBindings.js +0 -171
- package/dist/compiler/internal/NativeBindings.js.map +0 -1
- package/dist/compiler/internal/NativeMedia.d.ts +0 -14
- package/dist/compiler/internal/NativeMedia.d.ts.map +0 -1
- package/dist/compiler/internal/NativeMedia.js +0 -287
- package/dist/compiler/internal/NativeMedia.js.map +0 -1
- package/dist/compiler/internal/NativeVars.d.ts +0 -28
- package/dist/compiler/internal/NativeVars.d.ts.map +0 -1
- package/dist/compiler/internal/NativeVars.js +0 -160
- package/dist/compiler/internal/NativeVars.js.map +0 -1
- package/dist/compiler/internal/PackedStyles.d.ts +0 -37
- package/dist/compiler/internal/PackedStyles.d.ts.map +0 -1
- package/dist/compiler/internal/PackedStyles.js +0 -344
- package/dist/compiler/internal/PackedStyles.js.map +0 -1
- package/dist/compiler/internal/Properties.d.ts +0 -5
- package/dist/compiler/internal/Properties.d.ts.map +0 -1
- package/dist/compiler/internal/Properties.js +0 -82
- package/dist/compiler/internal/Properties.js.map +0 -1
- package/dist/compiler/internal/RecipeConditions.d.ts +0 -41
- package/dist/compiler/internal/RecipeConditions.d.ts.map +0 -1
- package/dist/compiler/internal/RecipeConditions.js +0 -82
- package/dist/compiler/internal/RecipeConditions.js.map +0 -1
- package/dist/compiler/internal/RecipePayloads.d.ts +0 -31
- package/dist/compiler/internal/RecipePayloads.d.ts.map +0 -1
- package/dist/compiler/internal/RecipePayloads.js +0 -99
- package/dist/compiler/internal/RecipePayloads.js.map +0 -1
- package/dist/compiler/internal/Recipes.d.ts +0 -32
- package/dist/compiler/internal/Recipes.d.ts.map +0 -1
- package/dist/compiler/internal/Recipes.js +0 -339
- package/dist/compiler/internal/Recipes.js.map +0 -1
- package/dist/compiler/internal/Selectors.d.ts +0 -12
- package/dist/compiler/internal/Selectors.d.ts.map +0 -1
- package/dist/compiler/internal/Selectors.js +0 -268
- package/dist/compiler/internal/Selectors.js.map +0 -1
- package/dist/compiler/internal/Static.d.ts +0 -39
- package/dist/compiler/internal/Static.d.ts.map +0 -1
- package/dist/compiler/internal/Static.js +0 -534
- package/dist/compiler/internal/Static.js.map +0 -1
- package/dist/compiler/internal/Themes.d.ts +0 -190
- package/dist/compiler/internal/Themes.d.ts.map +0 -1
- package/dist/compiler/internal/Themes.js +0 -1577
- package/dist/compiler/internal/Themes.js.map +0 -1
- package/dist/compiler/internal/Vars.d.ts +0 -33
- package/dist/compiler/internal/Vars.d.ts.map +0 -1
- package/dist/compiler/internal/Vars.js +0 -387
- package/dist/compiler/internal/Vars.js.map +0 -1
- package/dist/compiler/internal/ViewTransitions.d.ts +0 -3
- package/dist/compiler/internal/ViewTransitions.d.ts.map +0 -1
- package/dist/compiler/internal/ViewTransitions.js +0 -68
- package/dist/compiler/internal/ViewTransitions.js.map +0 -1
- package/dist/internal/Cascade.d.ts +0 -74
- package/dist/internal/Cascade.d.ts.map +0 -1
- package/dist/internal/Cascade.js +0 -210
- package/dist/internal/Cascade.js.map +0 -1
- package/src/compiler/internal/Applications.ts +0 -554
- package/src/compiler/internal/ColorProfiles.ts +0 -93
- package/src/compiler/internal/CompositionBindings.ts +0 -120
- package/src/compiler/internal/Compositions.ts +0 -678
- package/src/compiler/internal/Configurations.ts +0 -349
- package/src/compiler/internal/Contract.ts +0 -1028
- package/src/compiler/internal/Contributions.ts +0 -1561
- package/src/compiler/internal/Descriptors.ts +0 -242
- package/src/compiler/internal/Dynamic.ts +0 -275
- package/src/compiler/internal/Expression.ts +0 -218
- package/src/compiler/internal/Functions.ts +0 -206
- package/src/compiler/internal/Keyframes.ts +0 -62
- package/src/compiler/internal/Names.ts +0 -48
- package/src/compiler/internal/NativeBindings.ts +0 -235
- package/src/compiler/internal/NativeMedia.ts +0 -342
- package/src/compiler/internal/NativeVars.ts +0 -231
- package/src/compiler/internal/PackedStyles.ts +0 -473
- package/src/compiler/internal/Properties.ts +0 -121
- package/src/compiler/internal/RecipeConditions.ts +0 -139
- package/src/compiler/internal/RecipePayloads.ts +0 -132
- package/src/compiler/internal/Recipes.ts +0 -531
- package/src/compiler/internal/Selectors.ts +0 -339
- package/src/compiler/internal/Static.ts +0 -784
- package/src/compiler/internal/Themes.ts +0 -2398
- package/src/compiler/internal/Vars.ts +0 -516
- package/src/compiler/internal/ViewTransitions.ts +0 -82
|
@@ -29,39 +29,62 @@ export function create(options: create.Options) {
|
|
|
29
29
|
...input,
|
|
30
30
|
classes: new Set(input.className.split(/\s+/).filter(Boolean)),
|
|
31
31
|
}))
|
|
32
|
+
// Only conditional arguments select a precompiled case.
|
|
33
|
+
const conditional = inputs.some((input) => input.condition !== undefined)
|
|
32
34
|
|
|
33
35
|
return (...entries: readonly Entry[]) => {
|
|
34
36
|
let mask = 0
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
if (conditional)
|
|
38
|
+
for (let index = 0; index < inputs.length; index++) {
|
|
39
|
+
const condition = inputs[index]!.condition
|
|
40
|
+
if (condition !== undefined && entries[index]) mask |= 1 << condition
|
|
41
|
+
}
|
|
38
42
|
const className = options.cases?.[mask] ?? options.className
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
// Mutable while entries merge, then returned as immutable props.
|
|
44
|
+
const result: {
|
|
45
|
+
className: string
|
|
46
|
+
style?: Record<string, string | number | undefined>
|
|
47
|
+
} & Record<string, unknown> = { className }
|
|
48
|
+
let attributes = false
|
|
49
|
+
let external: string[] | undefined
|
|
50
|
+
let style: Record<string, string | number | undefined> | undefined
|
|
51
|
+
for (let index = 0; index < entries.length; index++) {
|
|
52
|
+
const entry = entries[index]
|
|
45
53
|
if (!entry) continue
|
|
46
54
|
const input = inputs[index]!
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
for (const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
// Owners replace only what earlier entries added, so the first contributions skip deletion.
|
|
56
|
+
if (attributes || style)
|
|
57
|
+
for (const owner of input.owners) {
|
|
58
|
+
if (attributes)
|
|
59
|
+
for (const attribute of owner.attributes) delete result[attribute]
|
|
60
|
+
if (style) for (const slot of owner.slots) delete style[slot]
|
|
61
|
+
}
|
|
62
|
+
// An application's own class list adds nothing beyond the composition class.
|
|
63
|
+
if (entry.className !== input.className)
|
|
64
|
+
for (const name of entry.className.split(/\s+/))
|
|
65
|
+
if (name && !input.classes.has(name)) (external ??= []).push(name)
|
|
66
|
+
for (const name in entry)
|
|
67
|
+
if (name.startsWith('data-') && Object.hasOwn(entry, name)) {
|
|
68
|
+
result[name] = entry[name as `data-${string}`]
|
|
69
|
+
attributes = true
|
|
70
|
+
}
|
|
71
|
+
const inline = entry.style
|
|
72
|
+
if (inline) {
|
|
73
|
+
style ??= {}
|
|
74
|
+
for (const name in inline) {
|
|
75
|
+
if (!Object.hasOwn(inline, name)) continue
|
|
76
|
+
// Reinsert overwritten keys so inline shorthand/longhand ordering follows arguments.
|
|
77
|
+
delete style[name]
|
|
78
|
+
style[name] = inline[name as keyof typeof inline]
|
|
79
|
+
}
|
|
59
80
|
}
|
|
60
81
|
}
|
|
61
|
-
|
|
62
|
-
...
|
|
63
|
-
|
|
64
|
-
|
|
82
|
+
result.className = external
|
|
83
|
+
? [className, ...external].filter(Boolean).join(' ')
|
|
84
|
+
: className || ''
|
|
85
|
+
if (style && Object.keys(style).length) result.style = style
|
|
86
|
+
return result as style.Props & {
|
|
87
|
+
readonly [name: `data-${string}`]: string | undefined
|
|
65
88
|
}
|
|
66
89
|
}
|
|
67
90
|
}
|
package/src/runtime/Recipe.ts
CHANGED
|
@@ -37,25 +37,32 @@ export type Payload = {
|
|
|
37
37
|
*/
|
|
38
38
|
export function create(options: create.Options) {
|
|
39
39
|
const props = Props.create({ className: options.className })
|
|
40
|
-
|
|
40
|
+
// Attribute names and defaults are fixed, so calls only read the selection.
|
|
41
|
+
const axes = Object.keys(options.axes).map((axis) => ({
|
|
42
|
+
attribute: `data-${axis}` as const,
|
|
43
|
+
axis,
|
|
44
|
+
fallback: Object.hasOwn(options.defaults, axis)
|
|
45
|
+
? options.defaults[axis]
|
|
46
|
+
: undefined,
|
|
47
|
+
}))
|
|
41
48
|
|
|
42
49
|
return (input: Record<string, unknown> & style.Options = {}) => {
|
|
43
50
|
const overrides: style.Options = input
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
51
|
+
// Props are fresh on every call, so selection attributes extend them in place.
|
|
52
|
+
const result = props(overrides) as style.Props &
|
|
53
|
+
Record<`data-${string}`, string>
|
|
47
54
|
|
|
48
|
-
for (const
|
|
49
|
-
const selected = Object.hasOwn(input, axis)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
for (const entry of axes) {
|
|
56
|
+
const selected = Object.hasOwn(input, entry.axis)
|
|
57
|
+
? input[entry.axis]
|
|
58
|
+
: undefined
|
|
59
|
+
const value = (selected === undefined ? entry.fallback : selected) as
|
|
60
|
+
| string
|
|
61
|
+
| boolean
|
|
62
|
+
| null
|
|
63
|
+
| undefined
|
|
57
64
|
if (value !== null && value !== undefined)
|
|
58
|
-
result[
|
|
65
|
+
result[entry.attribute] = String(value)
|
|
59
66
|
}
|
|
60
67
|
|
|
61
68
|
return options.html ? Html.from(result) : result
|
package/src/styleFunction.ts
CHANGED
|
@@ -29,9 +29,21 @@ type VariableOptions<input> = input extends {
|
|
|
29
29
|
}
|
|
30
30
|
: unknown
|
|
31
31
|
|
|
32
|
+
// Composition entries are static definitions or exact literal objects.
|
|
33
|
+
type Entries<entries> = {
|
|
34
|
+
readonly [index in keyof entries]: Entry<entries[index]>
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Distributes over mixed element unions so each member keeps its own contract.
|
|
38
|
+
type Entry<entry> = entry extends (...args: never) => unknown
|
|
39
|
+
? style.Composable<entry>
|
|
40
|
+
: entry & NoInfer<Style.Accepted<entry, {}, true>> & Completion.Properties
|
|
41
|
+
|
|
32
42
|
/**
|
|
33
43
|
* Declares literal styles for source extraction. Requires a compile-time transform.
|
|
34
|
-
*
|
|
44
|
+
* An array composes static definitions and literal objects in order, so later entries
|
|
45
|
+
* win as later declarations do.
|
|
46
|
+
* @param styles - Token-free literal CSS properties, or an array of static definitions and literal objects. Omit for an empty definition.
|
|
35
47
|
* @returns A callable style definition after source rewriting.
|
|
36
48
|
* @throws {Error} When a definition needs an explicit identity and none is supplied.
|
|
37
49
|
*/
|
|
@@ -53,16 +65,29 @@ export function style<
|
|
|
53
65
|
? [options?: style.DefinitionOptions]
|
|
54
66
|
: [invalid: never, unavailable: never]
|
|
55
67
|
: [invalid: never, unavailable: never]
|
|
56
|
-
|
|
68
|
+
// TypeScript types a call that matches no overload with this signature. Other
|
|
69
|
+
// inputs leave `callback` at its constraint, so their definitions stay static.
|
|
70
|
+
): ((...args: never[]) => unknown) extends callback
|
|
71
|
+
? style.ReturnType
|
|
72
|
+
: style.Dynamic<values>
|
|
57
73
|
export function style<const styles extends Record<string, unknown>>(
|
|
58
74
|
styles: styles &
|
|
59
75
|
NoInfer<Style.Accepted<styles, {}, true>> &
|
|
60
76
|
Completion.Properties,
|
|
61
77
|
options?: style.DefinitionOptions,
|
|
62
78
|
): style.ReturnType
|
|
79
|
+
export function style<const entries>(
|
|
80
|
+
styles: entries & Entries<entries>,
|
|
81
|
+
// Exclude non-array inputs by arity so they cannot mask object-property diagnostics.
|
|
82
|
+
...options: entries extends readonly unknown[]
|
|
83
|
+
? [options?: style.DefinitionOptions]
|
|
84
|
+
: [invalid: never, unavailable: never]
|
|
85
|
+
): style.ReturnType
|
|
63
86
|
export function style(
|
|
64
87
|
styles?: unknown,
|
|
65
88
|
options: style.DefinitionOptions = {},
|
|
89
|
+
// Matches the arity-gated overloads, whose invalid branches add parameters.
|
|
90
|
+
..._: readonly never[]
|
|
66
91
|
): style.ReturnType {
|
|
67
92
|
return Authoring.create(styles, options)
|
|
68
93
|
}
|
|
@@ -73,6 +98,10 @@ type Reference = { readonly [identity]: true }
|
|
|
73
98
|
|
|
74
99
|
/** Contracts for the literal authoring boundary. */
|
|
75
100
|
export declare namespace style {
|
|
101
|
+
/** Accepts a static definition as a composition entry. Dynamic definitions and variants require cx. */
|
|
102
|
+
type Composable<entry> = entry extends Reference & (() => unknown)
|
|
103
|
+
? entry
|
|
104
|
+
: ReturnType<Output>
|
|
76
105
|
/** Stable identity for selectors and definitions that cannot be content-addressed. */
|
|
77
106
|
type DefinitionOptions = { readonly id?: string | undefined }
|
|
78
107
|
/** Callable compiled bindings with required scalar inputs and styling overrides. */
|
package/src/unplugin/index.ts
CHANGED
|
@@ -5,15 +5,14 @@ import * as Fs from 'node:fs/promises'
|
|
|
5
5
|
import * as Path from 'node:path'
|
|
6
6
|
import * as Reset from '../node/Reset.js'
|
|
7
7
|
import * as Snapshot from '../node/internal/Snapshot.js'
|
|
8
|
-
import * as Syntax from '../compiler/internal/Syntax.js'
|
|
9
8
|
import { createUnplugin } from 'unplugin'
|
|
10
9
|
import type { UnpluginBuildContext } from 'unplugin'
|
|
11
10
|
import * as Graph from '../compiler/Graph.js'
|
|
12
11
|
import * as AtRules from '../compiler/internal/AtRules.js'
|
|
13
12
|
import * as Catalogs from '../compiler/internal/Catalogs.js'
|
|
14
13
|
import * as ClassName from '../web/internal/ClassName.js'
|
|
15
|
-
import * as Contract from '../compiler/internal/Contract.js'
|
|
16
14
|
import * as Contracts from '../node/internal/Contracts.js'
|
|
15
|
+
import * as Results from '../compiler/internal/Results.js'
|
|
17
16
|
import * as Vite from '../vite/index.js'
|
|
18
17
|
import * as ThemeRules from '../web/internal/Themes.js'
|
|
19
18
|
|
|
@@ -218,10 +217,12 @@ const portable = createUnplugin<Options | undefined, false>(
|
|
|
218
217
|
})
|
|
219
218
|
if (source === undefined) return false
|
|
220
219
|
contracts[file] = source
|
|
221
|
-
const
|
|
222
|
-
|
|
220
|
+
for (const dependency of Results.dependencies(
|
|
221
|
+
contracts[file]!,
|
|
222
|
+
file,
|
|
223
|
+
)) {
|
|
223
224
|
let owner = file
|
|
224
|
-
for (const specifier of
|
|
225
|
+
for (const specifier of dependency) {
|
|
225
226
|
const target = await resolve(specifier, owner)
|
|
226
227
|
if (!target)
|
|
227
228
|
throw new Error(
|
|
@@ -289,7 +290,6 @@ const portable = createUnplugin<Options | undefined, false>(
|
|
|
289
290
|
const result = compiler.compile({
|
|
290
291
|
[ClassName.complete]: true,
|
|
291
292
|
[ThemeRules.shared]: 'all',
|
|
292
|
-
[Syntax.cache]: snapshot.programs(modules),
|
|
293
293
|
compiler: options.compiler,
|
|
294
294
|
reset: options.reset ? Reset.read() : undefined,
|
|
295
295
|
contracts,
|