@teacss/classes 0.3.0 → 0.3.1
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 +52 -41
- package/dist/index.d.ts +19 -18
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -22,15 +22,16 @@ Most applications should use `recipe` from `teacss`. It is pre-bound to
|
|
|
22
22
|
the official standard-and-icon `cn`, so conflicts are resolved inside each
|
|
23
23
|
recipe output.
|
|
24
24
|
|
|
25
|
-
Use a primitive string for `
|
|
26
|
-
choices and compound outputs are strings, and calling the
|
|
27
|
-
merged string directly. The call also accepts
|
|
25
|
+
Use a primitive string for the top-level `className` when a recipe styles one
|
|
26
|
+
element. Variant choices and compound outputs are strings, and calling the
|
|
27
|
+
recipe returns the merged string directly. The call also accepts caller
|
|
28
|
+
`className`:
|
|
28
29
|
|
|
29
30
|
```ts
|
|
30
31
|
import { recipe, type ClassProp, type VariantProps } from "teacss";
|
|
31
32
|
|
|
32
33
|
const badge = recipe({
|
|
33
|
-
|
|
34
|
+
className: "d:inline-flex align-items:center rd:full p-x:2",
|
|
34
35
|
variants: {
|
|
35
36
|
tone: {
|
|
36
37
|
neutral: "bg-color:gray-100 text-color:gray-900",
|
|
@@ -48,7 +49,7 @@ const badge = recipe({
|
|
|
48
49
|
badge({
|
|
49
50
|
tone: "accent",
|
|
50
51
|
className: "p-x:3",
|
|
51
|
-
}); // "d:inline-flex align-items:center
|
|
52
|
+
}); // "d:inline-flex align-items:center rd:full bg-color:blue-500 text-color:white font-weight:700 p-x:3"
|
|
52
53
|
|
|
53
54
|
type BadgeProps = VariantProps<typeof badge> & ClassProp;
|
|
54
55
|
|
|
@@ -57,14 +58,15 @@ function badgeClassName({ className, ...variants }: BadgeProps) {
|
|
|
57
58
|
}
|
|
58
59
|
```
|
|
59
60
|
|
|
60
|
-
Use a non-empty object for `
|
|
61
|
-
is no distinguished or required `root` key: every declared key
|
|
62
|
-
|
|
63
|
-
names with maps; compounds support a targeted map or a
|
|
61
|
+
Use a non-empty object for the top-level `className` when a recipe has multiple
|
|
62
|
+
elements. There is no distinguished or required `root` key: every declared key
|
|
63
|
+
is an ordinary named class and becomes a resolver in the result. Variant
|
|
64
|
+
choices target those names with maps; compounds support a targeted map or a
|
|
65
|
+
shared broadcast:
|
|
64
66
|
|
|
65
67
|
```ts
|
|
66
68
|
const button = recipe({
|
|
67
|
-
|
|
69
|
+
className: {
|
|
68
70
|
container: "d:inline-flex align-items:center p:2 p:4@md",
|
|
69
71
|
icon: "inline-size:4x",
|
|
70
72
|
label: "",
|
|
@@ -101,7 +103,7 @@ const button = recipe({
|
|
|
101
103
|
},
|
|
102
104
|
{
|
|
103
105
|
disabled: true,
|
|
104
|
-
|
|
106
|
+
classKeys: ["container", "icon"],
|
|
105
107
|
className: "opacity:80",
|
|
106
108
|
},
|
|
107
109
|
],
|
|
@@ -121,26 +123,34 @@ large.label();
|
|
|
121
123
|
type ButtonProps = VariantProps<typeof button> & ClassProp;
|
|
122
124
|
|
|
123
125
|
function buttonClassName({ className, ...variants }: ButtonProps) {
|
|
124
|
-
const
|
|
125
|
-
return
|
|
126
|
+
const classes = button(variants);
|
|
127
|
+
return classes.container({ className });
|
|
126
128
|
}
|
|
127
129
|
```
|
|
128
130
|
|
|
129
|
-
For an object-
|
|
131
|
+
For an object-form recipe, the recipe call accepts only shared variant
|
|
130
132
|
selections. Each resolver accepts all recipe selections plus `ClassProp`; its
|
|
131
133
|
local selections and `className` apply only to that resolver invocation.
|
|
132
134
|
Compounds are re-evaluated against that local selection without mutating the
|
|
133
|
-
captured recipe result or sibling resolvers. A string-
|
|
135
|
+
captured recipe result or sibling resolvers. A string-form recipe has no
|
|
134
136
|
resolver layer, so its recipe call accepts `className` and returns a string.
|
|
135
137
|
|
|
136
|
-
Multi-element variant choices are always
|
|
138
|
+
Multi-element variant choices are always class-target maps. Each compound uses
|
|
137
139
|
exactly one of two forms: a non-empty `className` target map, or a
|
|
138
|
-
primitive-string `className` paired with a non-empty `
|
|
139
|
-
broadcasts the class to every listed effective
|
|
140
|
-
declared or inherited
|
|
141
|
-
of unknown names. Matching entries contribute to the selected
|
|
142
|
-
compound declaration order. The two forms cannot be combined
|
|
143
|
-
reserved as a variant name
|
|
140
|
+
primitive-string `className` paired with a non-empty `classKeys` array that
|
|
141
|
+
broadcasts the class to every listed effective named class. `classKeys` may
|
|
142
|
+
contain declared or inherited class names and must be dense, duplicate-free,
|
|
143
|
+
and free of unknown names. Matching entries contribute to the selected classes
|
|
144
|
+
in compound declaration order. The two forms cannot be combined. `classKeys`
|
|
145
|
+
is reserved as a variant name, while `parts`, `styles`, and `styleKeys` are
|
|
146
|
+
available as ordinary variant names.
|
|
147
|
+
|
|
148
|
+
The field name `className` is intentionally reused only at distinct
|
|
149
|
+
boundaries: top-level `definition.className` supplies base classes and selects
|
|
150
|
+
string or object mode; `compoundVariants[].className` supplies a compound
|
|
151
|
+
output; and caller `className` is accepted by a single-element recipe call or a
|
|
152
|
+
named resolver. A multi-element recipe call does not accept caller
|
|
153
|
+
`className`.
|
|
144
154
|
|
|
145
155
|
The one-sided `disabled` variant above is boolean-capable. `true` is
|
|
146
156
|
branch-backed and emits its fragment; boolean `false` is a distinct branchless
|
|
@@ -153,9 +163,9 @@ suffix conditions such as `p:4@md` and `bg-color:blue-600@hover`; recipe props
|
|
|
153
163
|
do not introduce responsive objects.
|
|
154
164
|
|
|
155
165
|
Recipes extend one parent created by the exact same definer. An extending child
|
|
156
|
-
may omit `
|
|
157
|
-
and existing named
|
|
158
|
-
mode; an object child may add new names:
|
|
166
|
+
may omit `className` to inherit the parent's string or object mode, base
|
|
167
|
+
fragments, and existing named classes. If a child declares `className`, it must
|
|
168
|
+
preserve that mode; an object child may add new names:
|
|
159
169
|
|
|
160
170
|
```ts
|
|
161
171
|
const primaryButton = recipe({
|
|
@@ -171,25 +181,26 @@ const primaryButton = recipe({
|
|
|
171
181
|
|
|
172
182
|
const strongBadge = recipe({
|
|
173
183
|
extend: badge,
|
|
174
|
-
|
|
184
|
+
className: "font-weight:700",
|
|
175
185
|
});
|
|
176
186
|
```
|
|
177
187
|
|
|
178
188
|
Typed definitions require one finite, statically stable schema. Optional,
|
|
179
|
-
union-valued, or open index-signature key sets for object `
|
|
180
|
-
or variant choices are rejected because they could promise
|
|
181
|
-
selections absent from the runtime branch. A `string | object`
|
|
182
|
-
a union-typed `extend` parent must be narrowed before
|
|
183
|
-
required named interfaces are accepted without an
|
|
184
|
-
signature. `__proto__` is reserved as a statically
|
|
185
|
-
ordinary object-literal syntax does not create a
|
|
186
|
-
it; an explicitly constructed null-prototype
|
|
187
|
-
that own name safely.
|
|
188
|
-
|
|
189
|
-
Every definition without `extend` requires its own `
|
|
190
|
-
declared object `
|
|
191
|
-
top-level definition field `
|
|
192
|
-
|
|
189
|
+
union-valued, or open index-signature key sets for object-form `className`,
|
|
190
|
+
`variants`, or variant choices are rejected because they could promise
|
|
191
|
+
resolvers or selections absent from the runtime branch. A `string | object`
|
|
192
|
+
`className` value and a union-typed `extend` parent must be narrowed before
|
|
193
|
+
calling `recipe()`. Finite required named interfaces are accepted without an
|
|
194
|
+
artificial string index signature. `__proto__` is reserved as a statically
|
|
195
|
+
unsafe schema name because ordinary object-literal syntax does not create a
|
|
196
|
+
predictable own property for it; an explicitly constructed null-prototype
|
|
197
|
+
runtime record can still carry that own name safely.
|
|
198
|
+
|
|
199
|
+
Every definition without `extend` requires its own `className` field. An
|
|
200
|
+
explicitly declared object `className` value must contain at least one key. The
|
|
201
|
+
retired top-level definition field `styles` and former nested compound selector
|
|
202
|
+
`parts` are not compatibility aliases; broadcast compounds use
|
|
203
|
+
`compoundVariants[].classKeys`.
|
|
193
204
|
|
|
194
205
|
### Definer creation
|
|
195
206
|
|
|
@@ -204,7 +215,7 @@ export const merge = createMerger({ conflicts, plugins });
|
|
|
204
215
|
export const recipe = createDefiner({ merge });
|
|
205
216
|
|
|
206
217
|
export const libraryButton = recipe({
|
|
207
|
-
|
|
218
|
+
className: "p:2",
|
|
208
219
|
});
|
|
209
220
|
```
|
|
210
221
|
|
package/dist/index.d.ts
CHANGED
|
@@ -120,7 +120,7 @@ type RecipeDefinerOptions = {
|
|
|
120
120
|
readonly prototype?: never;
|
|
121
121
|
};
|
|
122
122
|
type ReservedPartName = "class" | "className" | "then" | "toJSON" | "toString" | "valueOf";
|
|
123
|
-
type ReservedVariantName = "class" | "className" | "
|
|
123
|
+
type ReservedVariantName = "class" | "className" | "classKeys";
|
|
124
124
|
type StaticallyUnsafeSchemaName = "__proto__";
|
|
125
125
|
type CanonicalKey<Key> = Key extends string ? Key : Key extends number ? `${Key}` : never;
|
|
126
126
|
type CanonicalKeys<Value> = CanonicalKey<Extract<keyof Value, string | number>>;
|
|
@@ -159,17 +159,17 @@ type SingleBrandedRecipe = BrandedRecipe & ((props?: any) => string);
|
|
|
159
159
|
type MultipartBrandedRecipe = BrandedRecipe & ((props?: any) => Readonly<Record<string, (props?: any) => string>>);
|
|
160
160
|
type SchemaFromSelections<Selections> = { readonly [Name in Exclude<Extract<keyof NonNullable<Selections>, string>, keyof ClassProp>]: Extract<NonNullable<Selections>[Name], string>; };
|
|
161
161
|
type ParentSchema<Parent> = [Parent] extends [RecipeCarrier & ((props?: infer Selections) => infer Result)] ? {
|
|
162
|
-
readonly
|
|
162
|
+
readonly classKeys: Result extends string ? never : Extract<keyof Result, string>;
|
|
163
163
|
readonly variants: SchemaFromSelections<Selections>;
|
|
164
164
|
} : {
|
|
165
|
-
readonly
|
|
165
|
+
readonly classKeys: never;
|
|
166
166
|
readonly variants: {};
|
|
167
167
|
};
|
|
168
|
-
type
|
|
168
|
+
type ParentClassKeys<Parent> = Extract<ParentSchema<Parent>["classKeys"], string>;
|
|
169
169
|
type ParentVariants<Parent> = ParentSchema<Parent>["variants"] extends (infer Variants extends VariantSchema) ? Variants : {};
|
|
170
170
|
type StylesInput = RecordInput;
|
|
171
171
|
type PartNames<Styles> = CanonicalKeys<Styles>;
|
|
172
|
-
type EffectiveParts<Parent, Styles> =
|
|
172
|
+
type EffectiveParts<Parent, Styles> = ParentClassKeys<Parent> | PartNames<Styles>;
|
|
173
173
|
type PartTargetMap<Parts extends string> = Readonly<Partial<Record<Parts, ClassValue>>>;
|
|
174
174
|
type VariantsInput = RecordInput;
|
|
175
175
|
type OwnVariantSchema<Variants> = [Variants] extends [VariantsInput] ? { readonly [Name in keyof Variants as CanonicalKey<Name>]: CanonicalKeys<Variants[Name]>; } : {};
|
|
@@ -182,10 +182,10 @@ type SingleCompoundDefinition<Variants extends VariantSchema> = {
|
|
|
182
182
|
} & CompoundConditions<Variants>;
|
|
183
183
|
type MultipartCompoundDefinition<Parts extends string, Variants extends VariantSchema> = ({
|
|
184
184
|
readonly className: PartTargetMap<NoInfer<Parts>>;
|
|
185
|
-
readonly
|
|
185
|
+
readonly classKeys?: never;
|
|
186
186
|
} | {
|
|
187
187
|
readonly className: string;
|
|
188
|
-
readonly
|
|
188
|
+
readonly classKeys: readonly [NoInfer<Parts>, ...NoInfer<Parts>[]];
|
|
189
189
|
}) & CompoundConditions<Variants>;
|
|
190
190
|
type InvalidPartNames<Styles> = Extract<PartNames<Styles>, ReservedPartName | StaticallyUnsafeSchemaName> | WhitespaceOnlyName<PartNames<Styles>>;
|
|
191
191
|
type InvalidVariantNames<Variants> = Extract<CanonicalKeys<NonNullable<Variants>>, ReservedVariantName | StaticallyUnsafeSchemaName> | WhitespaceOnlyName<CanonicalKeys<NonNullable<Variants>>>;
|
|
@@ -204,27 +204,28 @@ type ValidateMultipartVariants<Variants, Parts extends string> = [Variants] exte
|
|
|
204
204
|
type ValidateCompoundCondition<Condition> = undefined extends Condition ? never : Condition extends readonly [] ? never : Condition;
|
|
205
205
|
type ValidateSingleCompoundOutput<Output> = IsAny<Output> extends true ? unknown : [Output] extends [string] ? Output : never;
|
|
206
206
|
type ValidateMultipartCompoundOutput<Output, Parts extends string> = PartTargetNames<Output> extends never ? never : ValidatePartTargets<Output, Parts>;
|
|
207
|
-
type
|
|
207
|
+
type HasDuplicateClassKeys<Targets extends readonly unknown[], Seen = never> = Targets extends readonly [infer Target, ...infer Rest] ? (Extract<Target, Seen> extends never ? HasDuplicateClassKeys<Rest, Seen | Target> : true) : false;
|
|
208
|
+
type ValidateCompoundClassKeys<Targets, Parts extends string> = IsAny<Targets> extends true ? unknown : Targets extends readonly [unknown, ...unknown[]] ? (Exclude<Targets[number], Parts> extends never ? (HasDuplicateClassKeys<Targets> extends false ? Targets : never) : never) : never;
|
|
208
209
|
type ValidateSingleCompoundEntry<Entry, Variants extends VariantSchema> = true extends InvalidRecordShape<Entry> ? never : Entry extends RecordInput ? { readonly [Name in keyof Entry]: Name extends symbol ? Entry[Name] : Name extends "className" ? ValidateSingleCompoundOutput<Entry[Name]> : Name extends string | number ? (CanonicalKey<Name> extends keyof Variants ? ValidateCompoundCondition<Entry[Name]> : never) : never; } : never;
|
|
209
|
-
type ValidateMultipartCompoundEntry<Entry, Parts extends string, Variants extends VariantSchema> = true extends InvalidRecordShape<Entry> ? never : Entry extends RecordInput ? "
|
|
210
|
+
type ValidateMultipartCompoundEntry<Entry, Parts extends string, Variants extends VariantSchema> = true extends InvalidRecordShape<Entry> ? never : Entry extends RecordInput ? "classKeys" extends OptionalSchemaKeys<Entry> ? never : { readonly [Name in keyof Entry]: Name extends symbol ? Entry[Name] : Name extends "className" ? "classKeys" extends keyof Entry ? ValidateSingleCompoundOutput<Entry[Name]> : ValidateMultipartCompoundOutput<Entry[Name], Parts> : Name extends "classKeys" ? ValidateCompoundClassKeys<Entry[Name], Parts> : Name extends string | number ? CanonicalKey<Name> extends keyof Variants ? ValidateCompoundCondition<Entry[Name]> : never : never; } : never;
|
|
210
211
|
type ValidateSingleCompounds<Compounds, Variants extends VariantSchema> = Compounds extends readonly unknown[] ? { readonly [Index in keyof Compounds]: ValidateSingleCompoundEntry<Compounds[Index], Variants>; } : unknown;
|
|
211
212
|
type ValidateMultipartCompounds<Compounds, Parts extends string, Variants extends VariantSchema> = Compounds extends readonly unknown[] ? { readonly [Index in keyof Compounds]: ValidateMultipartCompoundEntry<Compounds[Index], Parts, Variants>; } : unknown;
|
|
212
213
|
type SingleRecipeDefinition<Style extends string, Parent extends SingleBrandedRecipe | undefined, Variants extends VariantsInput | undefined, Compounds extends readonly SingleCompoundDefinition<EffectiveVariants<Parent, Variants>>[] | undefined> = {
|
|
213
|
-
readonly
|
|
214
|
+
readonly className: Style;
|
|
214
215
|
readonly variants?: (Variants & ValidateStableSchema<Exclude<Variants, undefined>> & AllowedVariantNames<Variants> & ValidateSingleVariants<Variants>) | undefined;
|
|
215
216
|
readonly defaultVariants?: DefinitionVariantSelections<NoInfer<EffectiveVariants<Parent, Variants>>> | undefined;
|
|
216
217
|
readonly compoundVariants?: (Compounds & ValidateSingleCompounds<Compounds, EffectiveVariants<Parent, Variants>>) | undefined;
|
|
217
218
|
readonly extend?: (Parent & ValidateNonUnion<Parent>) | undefined;
|
|
218
219
|
};
|
|
219
220
|
type MultipartRecipeDefinition<Styles extends StylesInput, Parent extends MultipartBrandedRecipe | undefined, Variants extends VariantsInput | undefined, Compounds extends readonly MultipartCompoundDefinition<EffectiveParts<Parent, Styles>, EffectiveVariants<Parent, Variants>>[] | undefined> = {
|
|
220
|
-
readonly
|
|
221
|
+
readonly className: Styles & ValidateStyles<Styles> & ValidateStableSchema<Styles> & AllowedPartNames<Styles>;
|
|
221
222
|
readonly variants?: (Variants & ValidateStableSchema<Exclude<Variants, undefined>> & AllowedVariantNames<Variants> & ValidateMultipartVariants<Variants, EffectiveParts<Parent, Styles>>) | undefined;
|
|
222
223
|
readonly defaultVariants?: DefinitionVariantSelections<NoInfer<EffectiveVariants<Parent, Variants>>> | undefined;
|
|
223
224
|
readonly compoundVariants?: (Compounds & ValidateMultipartCompounds<Compounds, EffectiveParts<Parent, Styles>, EffectiveVariants<Parent, Variants>>) | undefined;
|
|
224
225
|
readonly extend?: (Parent & ValidateNonUnion<Parent>) | undefined;
|
|
225
226
|
};
|
|
226
227
|
type RecipeInference<Styles, Parent, Variants, Compounds> = {
|
|
227
|
-
readonly
|
|
228
|
+
readonly className: Styles;
|
|
228
229
|
readonly variants?: Variants | undefined;
|
|
229
230
|
readonly compoundVariants?: Compounds | undefined;
|
|
230
231
|
readonly extend?: Parent;
|
|
@@ -232,18 +233,18 @@ type RecipeInference<Styles, Parent, Variants, Compounds> = {
|
|
|
232
233
|
type ExtendedRecipeInference<Styles, Parent, Variants, Compounds> = Omit<RecipeInference<Styles, Parent, Variants, Compounds>, "extend"> & {
|
|
233
234
|
readonly extend: Parent;
|
|
234
235
|
};
|
|
235
|
-
type InheritedRecipeInference<Parent, Variants, Compounds> = Omit<ExtendedRecipeInference<never, Parent, Variants, Compounds>, "
|
|
236
|
-
type InheritedSingleRecipeDefinition<Parent extends SingleBrandedRecipe, Variants extends VariantsInput | undefined, Compounds extends readonly SingleCompoundDefinition<EffectiveVariants<Parent, Variants>>[] | undefined> = Omit<SingleRecipeDefinition<string, Parent, Variants, Compounds>, "
|
|
237
|
-
type InheritedMultipartRecipeDefinition<Parent extends MultipartBrandedRecipe, Variants extends VariantsInput | undefined, Compounds extends readonly MultipartCompoundDefinition<
|
|
238
|
-
type RecipeDefinitionField = "
|
|
236
|
+
type InheritedRecipeInference<Parent, Variants, Compounds> = Omit<ExtendedRecipeInference<never, Parent, Variants, Compounds>, "className">;
|
|
237
|
+
type InheritedSingleRecipeDefinition<Parent extends SingleBrandedRecipe, Variants extends VariantsInput | undefined, Compounds extends readonly SingleCompoundDefinition<EffectiveVariants<Parent, Variants>>[] | undefined> = Omit<SingleRecipeDefinition<string, Parent, Variants, Compounds>, "className">;
|
|
238
|
+
type InheritedMultipartRecipeDefinition<Parent extends MultipartBrandedRecipe, Variants extends VariantsInput | undefined, Compounds extends readonly MultipartCompoundDefinition<ParentClassKeys<Parent>, EffectiveVariants<Parent, Variants>>[] | undefined> = Omit<MultipartRecipeDefinition<{}, Parent, Variants, Compounds>, "className">;
|
|
239
|
+
type RecipeDefinitionField = "className" | "compoundVariants" | "defaultVariants" | "extend" | "variants";
|
|
239
240
|
type ValidateDefinitionInput<Definition> = ValidateRecordShape<Definition> & ValidateKnownKeys<Definition, RecipeDefinitionField>;
|
|
240
|
-
type ValidateInheritedDefinitionInput<Definition> = ValidateRecordShape<Definition> & ValidateKnownKeys<Definition, Exclude<RecipeDefinitionField, "
|
|
241
|
+
type ValidateInheritedDefinitionInput<Definition> = ValidateRecordShape<Definition> & ValidateKnownKeys<Definition, Exclude<RecipeDefinitionField, "className">>;
|
|
241
242
|
type RecipeDefiner = {
|
|
242
243
|
<const Style extends string, const Variants extends VariantsInput | undefined = undefined, const Compounds extends readonly SingleCompoundDefinition<EffectiveVariants<undefined, Variants>>[] | undefined = undefined, const Definition = unknown>(definition: RecipeInference<Style, undefined, Variants, Compounds> & Definition & NoInfer<SingleRecipeDefinition<Style, undefined, Variants, Compounds>> & NoInfer<ValidateDefinitionInput<Definition>>): TeaSingleRecipe<EffectiveVariants<undefined, Variants>>;
|
|
243
244
|
<const Parent extends SingleBrandedRecipe, const Style extends string, const Variants extends VariantsInput | undefined = undefined, const Compounds extends readonly SingleCompoundDefinition<EffectiveVariants<Parent, Variants>>[] | undefined = undefined, const Definition = unknown>(definition: ExtendedRecipeInference<Style, Parent, Variants, Compounds> & Definition & NoInfer<SingleRecipeDefinition<Style, Parent, Variants, Compounds>> & NoInfer<ValidateDefinitionInput<Definition>>): TeaSingleRecipe<EffectiveVariants<Parent, Variants>>;
|
|
244
245
|
<const Parent extends SingleBrandedRecipe, const Variants extends VariantsInput | undefined = undefined, const Compounds extends readonly SingleCompoundDefinition<EffectiveVariants<Parent, Variants>>[] | undefined = undefined, const Definition = unknown>(definition: InheritedRecipeInference<Parent, Variants, Compounds> & Definition & NoInfer<InheritedSingleRecipeDefinition<Parent, Variants, Compounds>> & NoInfer<ValidateInheritedDefinitionInput<Definition>>): TeaSingleRecipe<EffectiveVariants<Parent, Variants>>;
|
|
245
246
|
<const Styles extends StylesInput, const Variants extends VariantsInput | undefined = undefined, const Compounds extends readonly MultipartCompoundDefinition<EffectiveParts<undefined, Styles>, EffectiveVariants<undefined, Variants>>[] | undefined = undefined, const Definition = unknown>(definition: RecipeInference<Styles, undefined, Variants, Compounds> & Definition & NoInfer<MultipartRecipeDefinition<Styles, undefined, Variants, Compounds>> & NoInfer<ValidateDefinitionInput<Definition>>): TeaMultipartRecipe<EffectiveParts<undefined, Styles>, EffectiveVariants<undefined, Variants>>;
|
|
246
|
-
<const Parent extends MultipartBrandedRecipe, const Variants extends VariantsInput | undefined = undefined, const Compounds extends readonly MultipartCompoundDefinition<
|
|
247
|
+
<const Parent extends MultipartBrandedRecipe, const Variants extends VariantsInput | undefined = undefined, const Compounds extends readonly MultipartCompoundDefinition<ParentClassKeys<Parent>, EffectiveVariants<Parent, Variants>>[] | undefined = undefined, const Definition = unknown>(definition: InheritedRecipeInference<Parent, Variants, Compounds> & Definition & NoInfer<InheritedMultipartRecipeDefinition<Parent, Variants, Compounds>> & NoInfer<ValidateInheritedDefinitionInput<Definition>>): TeaMultipartRecipe<ParentClassKeys<Parent>, EffectiveVariants<Parent, Variants>>;
|
|
247
248
|
<const Parent extends MultipartBrandedRecipe, const Styles extends StylesInput, const Variants extends VariantsInput | undefined = undefined, const Compounds extends readonly MultipartCompoundDefinition<EffectiveParts<Parent, Styles>, EffectiveVariants<Parent, Variants>>[] | undefined = undefined, const Definition = unknown>(definition: ExtendedRecipeInference<Styles, Parent, Variants, Compounds> & Definition & NoInfer<MultipartRecipeDefinition<Styles, Parent, Variants, Compounds>> & NoInfer<ValidateDefinitionInput<Definition>>): TeaMultipartRecipe<EffectiveParts<Parent, Styles>, EffectiveVariants<Parent, Variants>>;
|
|
248
249
|
};
|
|
249
250
|
type VariantProps<Recipe> = Recipe extends RecipeCarrier & ((props?: infer Props) => unknown) ? VariantSelections<SchemaFromSelections<Props>> : never;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0})}function t(t,n){let r=t.length;r in t?e(t,r,n):t[r]=n}function n(e){let n=``,r,i=-1,a=-1,o=-1,s=[];for(let c=0;c<e.length;c++){let l=e[c];if(r){l===`\\`?c++:l===r&&(r=void 0);continue}if(n.length>0&&l===`\\`){c++;continue}if(n.length>0&&(l===`"`||l===`'`)){r=l;continue}if(n.length>0&&l===`/`&&e[c+1]===`*`){let t=e.indexOf(`*/`,c+2);if(t<0)break;c=t+1;continue}l===`(`||l===`[`?n+=l===`(`?`)`:`]`:l===n.at(-1)?n=n.slice(0,-1):n.length===0&&(l===`@`?(a===-1&&(a=c),t(s,c)):a===-1&&(l===`:`&&i===-1?i=c:l===`!`&&(o=c)))}let c=a===-1?e.length:a,l=e.slice(0,c),u=!1;o===c-1&&(u=!0,l=l.slice(0,-1));let d=[];for(let n=0;n<s.length;n++){let r=s[n]+1,i=n+1<s.length?s[n+1]:e.length;t(d,e.slice(r,i))}return i!==-1&&i<c?{raw:e,body:l,property:e.slice(0,i),value:l.slice(i+1),keyword:!1,important:u,conditions:d}:{raw:e,body:l,keyword:!0,important:u,conditions:d}}function r(e,t){let n=e.length;n in e?Object.defineProperty(e,n,{configurable:!0,enumerable:!0,value:t,writable:!0}):e[n]=t}function i(e){let t=[],n=[],i=new Map,a=!1,o,s;for(let c=0;c<e.length;c++){let l=e[c];if(n.length===0){l===`\\`?(/\s/.test(e[c+1]??``)&&(o=void 0),c++):/\s/.test(l)?o=void 0:l===`"`||l===`'`?o=o===l?void 0:o??l:!o&&l===`[`&&r(n,c);continue}if((s||a)&&l===`[`&&/[:@\s]/.test(e[c-1])){r(n,c),i.set(c,s??a),a=!1,s=void 0;continue}if(a){l===`*`&&e[c+1]===`/`&&(a=!1,c++);continue}if(s){l===`\\`?c++:l===s&&(s=void 0);continue}if(l===`/`&&e[c+1]===`*`)a=!0,c++;else if(l===`"`||l===`'`)s=l;else if(l===`\\`)c++;else if(l===`[`)r(n,c);else if(l===`]`){let o=n.pop(),l=i.get(o);(/[:@]/.test(e[o-1])||e[c+1]===`:`)&&r(t,{end:c+1,start:o}),l===!0?a=!0:l&&(s=l)}}let c=[];for(let e of t.sort((e,t)=>e.start-t.start||t.end-e.end))(!c.length||e.start>=c.at(-1).end)&&r(c,e);return c}function a(e,t,n){let r=e[t];if(n.blockComment)return r===`*`&&e[t+1]===`/`?(n.blockComment=!1,t+1):t;if(n.quote)return r===`\\`?t+1:(r===n.quote&&(n.quote=void 0),t);if(n.closers.length>0&&r===`/`&&e[t+1]===`*`)return n.blockComment=!0,t+1;if(n.closers.length>0&&(r===`"`||r===`'`))return n.quote=r,t;if(n.closers.length>0&&r===`\\`)return t+1;if(r===`(`||r===`[`)return u(n.closers,r===`(`?`)`:`]`),t;if(r===n.closers.at(-1))return n.closers.pop(),t}function o(e,t,n=e.length){let r={closers:[]};for(let i=t+1;i<n;i++){let t=e[i],n=a(e,i,r);if(n!==void 0){i=n;continue}if(r.closers.length===0){if(t===`}`)return{index:i,kind:`close`};if(t===`{`)return{index:i,kind:`open`}}}return{index:n,kind:`limit`}}const s=/[\s'"`;{},\])]/;function c(e,t,n=e.length){if(e[t]!==`@`)return{conds:``,end:t};let r={closers:[]},i=t;for(;i<n;i++){let t=e[i],n=a(e,i,r);if(n!==void 0){i=n;continue}if(t===`/`&&(e[i+1]===`/`||e[i+1]===`*`)&&r.closers.length===0||s.test(t)&&r.closers.length===0)break}return{conds:e.slice(t,i),end:i}}function l(e){let t=[],n={closers:[]},r=0;for(let i=0;i<e.length;i++){let o=e[i],s=a(e,i,n);if(s!==void 0){i=s;continue}o===`;`&&n.closers.length===0&&(u(t,e.slice(r,i)),r=i+1)}return u(t,e.slice(r)),t.map(e=>e.trim()).filter(Boolean)}function u(e,t){Object.defineProperty(e,e.length,{configurable:!0,enumerable:!0,value:t,writable:!0})}const d=/^(?:--?[\w-]+|[A-Z_$][\w$-]*|@teacss-skip-bracket-[\da-z]{6})$/i;function f(e,t){let n=t;for(;n>0&&/[\w-]/.test(e[n-1]);)n--;if(n===t||e[n-1]!==`:`)return!1;let r=n-1,i=r;for(;i>0&&/[\w$@-]/.test(e[i-1]);)i--;if(!d.test(e.slice(i,r)))return!1;let a=i-1;for(;a>=0&&/\s/.test(e[a]);)a--;return a<0||!`{,?`.includes(e[a])}function p(e){let t=[],n=[],r=[],i=!1,a;for(let o=0;o<e.length;o++){let s=e[o],c=e[o+1];if(n.length===0){s===`(`&&f(e,o)&&u(n,{attached:!0,start:o});continue}if(i)s===`*`&&c===`/`&&(i=!1,o++);else if(a)s===`\\`?o++:s===a&&(a=void 0);else if(s===`\\`)o++;else if(s===`/`&&c===`*`)i=!0,o++;else if(s===`'`||s===`"`||s==="`")a=s;else if(r.length>0)s===`[`||s===`(`?u(r,s===`[`?`]`:`)`):s===r.at(-1)&&r.pop();else if(s===`[`)u(r,`]`);else if(s===`(`)u(n,{attached:f(e,o),start:o});else if(s===`)`){let e=n.pop();e.attached&&u(t,{end:o+1,start:e.start})}}let o=[];for(let e of t.sort((e,t)=>e.start-t.start||t.end-e.end))(o.length===0||e.start>=o.at(-1).end)&&u(o,e);return o}function m(e){if(!e.includes(`{`))return e;let t=``,n=0,r=-1,s=0,u=0,d=e.includes(`[`)?i(e):[],f=e.includes(`(`)?p(e):[],m={closers:[]};for(;n<e.length;){for(;s<d.length&&d[s].end<=n;)s++;for(;u<f.length&&f[u].end<=n;)u++;let i=s<d.length?d[s]:void 0,p=u<f.length?f[u]:void 0,h=i?.start===n?i:p?.start===n?p:void 0;if(h&&m.blockComment!==!0&&m.quote===void 0){t+=e.slice(n,h.end),n=h.end;continue}m.closers.length>0&&/\s/.test(e[n])&&(m.blockComment=!1,m.closers.length=0,m.quote=void 0);let g=a(e,n,m);if(g!==void 0){t+=e.slice(n,g+1),n=g+1;continue}let _=e[n];if(m.closers.length>0||_!==`{`){t+=_,n++;continue}let v=o(e,n);if(v.kind!==`close`){t+=e.slice(n,v.index),n=v.index;continue}let y=v.index,b=e.slice(n+1,y),{conds:x,end:S}=c(e,y+1),C=l(b);if(C.length===0){t+=_,n++;continue}r===n&&t.length>0&&!/\s/.test(t.at(-1))&&(t+=` `),t+=C.map(e=>`${e}${x}`).join(` `),r=S,n=S}return t}function h(e){let t=e.split(/\s+/);return t[0]===``&&t.shift(),t.at(-1)===``&&t.pop(),t}function g(e){if(!e.includes(`[`))return h(e);let t=i(e);if(t.length===0)return h(e);let n=[],a=0,o=-1;for(let i=0;i<e.length;i++){let s=t[a];if(s&&i===s.start){o<0&&(o=i),i=s.end-1,a++;continue}/\s/.test(e[i])?(o>=0&&r(n,e.slice(o,i)),o=-1):o<0&&(o=i)}return o>=0&&r(n,e.slice(o)),n}const _=!1;var v=class extends TypeError{name=`MergerProtocolError`;code;plugin;hook;constructor(e,t,n,r){super(`[TeaCSS merge:${e}] ${t}`),this.code=e,n!==void 0&&(this.plugin=n),r!==void 0&&(this.hook=r)}};function y(){return Object.create(null)}const b=`must have an integer length from 0 through 4294967294`,x=Symbol(`missing-own-value`);function S(e,t){return`value`in t?t.value:t.get===void 0?void 0:Reflect.apply(t.get,e,[])}function C(e,t){let n=Reflect.getOwnPropertyDescriptor(e,t);return n===void 0?x:S(e,n)}function w(e,t){let n=C(e,t);return n===x?void 0:n}function ee(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0})}function T(e,t){let n=e.length;n in e?ee(e,n,t):e[n]=t}function E(e){let t=C(e,`length`);return typeof t==`number`&&Number.isInteger(t)&&t>=0&&t<4294967295?t:null}function te(e){let t=``,n=E(e);if(n===null)throw new v(`INVALID_ARRAY_LENGTH`,`class-value array ${b}`);for(let r=0;r<n;r++){let n=C(e,r);if(n===x)continue;let i=ne(n);i&&(t+=(t&&` `)+i)}return t}function ne(e){if(!e)return``;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`bigint`)return String(e);if(Array.isArray(e))return te(e);if(typeof e==`object`){let t=e,n=``;for(let e of Reflect.ownKeys(t)){if(typeof e!=`string`)continue;let r=Reflect.getOwnPropertyDescriptor(t,e);r===void 0||!r.enumerable||S(t,r)&&(n+=(n&&` `)+e)}return n}return``}function re(e,t){let n=e;for(let e of t){let t=n.children??=new Map,r=t.get(e);r===void 0&&(r=y(),t.set(e,r)),n=r}return n}function ie(e,t,n){let r=re(e,t);return n?r.keywords??=new Map:r.declarations??=new Map}function ae(e){if(e.length===0)return``;if(e.length===1){let t=C(e,0);return t===x?``:t??``}let t=y(),r=new Uint8Array(e.length),i=new Uint8Array(e.length);for(let a=0;a<e.length;a++){let o=n(e[a]),s=ie(t,o.conditions,o.keyword),c=o.property??o.body,l=s.get(c);r[a]=+!!o.important,l===void 0?s.set(c,a):r[l]!==0&&r[a]===0?i[a]=1:(i[l]=1,s.set(c,a))}let a=[];for(let t=0;t<e.length;t++)i[t]===0&&T(a,e[t]);return a.join(` `)}function oe(e,t){if(typeof e==`string`)return e.length===0?null:[e];if(!Array.isArray(e))return null;let n=E(e);if(n===null||n===0)return null;let r=[],i=null;for(let a=0;a<n;a++){let n=C(e,a);if(n===x||typeof n!=`string`||n.length===0)return null;(i===null?r.includes(n):i.has(n))||(T(r,n),i===null?r.length===(t?64:4)&&(i=new Set(r)):i.add(n))}return t&&r.length>1&&r.sort(),r}function se(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function D(e,t,n,r,i){for(let a of Reflect.ownKeys(t)){if(typeof a!=`string`)continue;let o=Reflect.getOwnPropertyDescriptor(t,a);if(o===void 0||!o.enumerable)continue;let s=oe(S(t,o),!0);if(s===null)throw new v(`INVALID_STATIC_CONFLICT`,`"${r}" ${n} "${a}" must contain at least one non-empty atom`,i);let c=e.get(a);if(c===void 0){e.set(a,{atoms:s,atomSet:s.length>4?new Set(s):null,source:r});continue}if(!se(c.atoms,s))throw new v(`STATIC_CONFLICT_COLLISION`,`static ${n} "${a}" has conflicting atom sets from "${c.source}" and "${r}"`,i)}}function O(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function k(e){if(!O(e))return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function ce(e,t,n){if(!O(e))throw new v(`INVALID_CONFLICT_META`,`"${t}" conflicts must be an object`,n);let r=w(e,`keywords`);if(!k(r))throw new v(`INVALID_CONFLICT_META`,`"${t}" keywords must be a record`,n);let i=w(e,`overlaps`);if(!k(i))throw new v(`INVALID_CONFLICT_META`,`"${t}" overlaps must be a record`,n);return{keywords:r,overlaps:i}}function A(e,t,n,r){if(n!==void 0){if(typeof n!=`function`)throw new v(`INVALID_PLUGIN_HOOK`,`plugin "${e}" ${t} must be a function`,e,r);return n}}function le(e){let t=[],n=[],r=[],i=[],a=[],o=new Set,s=E(e);if(s===null)throw new v(`INVALID_OPTIONS`,`options.plugins must be an array with an integer length from 0 through 4294967294`);for(let c=0;c<s;c++){let s=C(e,c),l=s===x?void 0:s;if(!O(l))throw new v(`INVALID_PLUGIN_NAME`,`plugin at index ${c} must have a non-empty name`);let u=w(l,`name`);if(typeof u!=`string`||u.length===0)throw new v(`INVALID_PLUGIN_NAME`,`plugin at index ${c} must have a non-empty name`);if(o.has(u))throw new v(`DUPLICATE_PLUGIN_NAME`,`duplicate plugin name "${u}"`,u);o.add(u);let d=w(l,`conflicts`),f=A(u,`tokens`,w(l,`tokens`),`tokens`),p=A(u,`group`,w(l,`group`),`group`),m=A(u,`finalize`,w(l,`finalize`),`finalize`),h=A(u,`resolveFamily`,w(l,`resolveFamily`),`resolveFamily`),g=A(u,`resolve`,w(l,`resolve`),`resolve`);if(h!==void 0&&g===void 0)throw new v(`INVALID_PLUGIN_HOOK`,`plugin "${u}" resolveFamily requires resolve`,u,`resolveFamily`);T(t,{name:u,conflicts:d===void 0?void 0:ce(d,u,u)}),f!==void 0&&T(n,{name:u,hook:f}),p!==void 0&&T(r,{name:u,hook:p}),m!==void 0&&T(i,{name:u,hook:m}),g!==void 0&&T(a,{name:u,hook:g,family:h})}return{metadata:t,tokens:n,groups:r,finalizers:i,resolvers:a}}function ue(e,t){let n=new Map,r=new Map;e!==void 0&&(D(n,e.keywords,`keyword`,`<options.conflicts>`),D(r,e.overlaps,`declaration`,`<options.conflicts>`));for(let e of t)e.conflicts!==void 0&&(D(n,e.conflicts.keywords,`keyword`,e.name,e.name),D(r,e.conflicts.overlaps,`declaration`,e.name,e.name));return{keywords:n,overlaps:r}}function de(e){let t=n(e);return{raw:e,prefix:t.property??t.body,body:t.body,value:t.value,keyword:t.keyword,conditions:t.conditions,important:t.important}}function fe(){let e=new Map;return t=>{let n=e.get(t);if(n!==void 0)return n;let r=de(t);return e.set(t,r),r}}function pe(e,t,n){if(t.length===0)return e;let r=e,i={viewToken:n};for(let e of t){let t=e.hook,n=t(r,i),a=`plugin "${e.name}" tokens() must return an array of individual non-empty class tokens`;if(!Array.isArray(n))throw new v(`INVALID_TOKEN_TRANSFORM_RESULT`,a,e.name,`tokens`);let o=[],s=E(n);if(s===null)throw new v(`INVALID_TOKEN_TRANSFORM_RESULT`,a,e.name,`tokens`);for(let t=0;t<s;t++){let r=C(n,t);if(r===x||typeof r!=`string`||r.length===0)throw new v(`INVALID_TOKEN_TRANSFORM_RESULT`,a,e.name,`tokens`);let i=g(r);if(i.length!==1||i[0]!==r)throw new v(`INVALID_TOKEN_TRANSFORM_RESULT`,a,e.name,`tokens`);T(o,r)}r=o}return r}function j(e,t){let n=null;for(let r=0;r<t.length;r++){let i=t[r];if(i.family===void 0)continue;let a=i.family,o=a(e);if(o!==null&&(typeof o!=`string`||o.length===0))throw new v(`INVALID_RESOLVE_FAMILY_RESULT`,`plugin "${i.name}" resolveFamily() must return null or a non-empty string`,i.name,`resolveFamily`);o!==null&&((n??=Array.from({length:t.length},()=>null))[r]=o)}return n}function me(e,t,n,r,i,a){let o=a(e),s;for(let e of n){let n=e.hook,i=n(o);if(i===null)continue;if(i===!1)return s={id:t,view:o,atoms:[],atomSet:null,dynamic:!0,opaque:!0},{...s,resolverFamilies:null};let a=oe(i,!1);if(a===null)throw new v(`INVALID_GROUP_RESULT`,`plugin "${e.name}" group() must return null, MERGE_OPAQUE, or at least one non-empty atom`,e.name,`group`);return s={id:t,view:o,atoms:a,atomSet:a.length>4?new Set(a):null,dynamic:!0,opaque:!1},{...s,resolverFamilies:j(o,r)}}let c=o.keyword?i.keywords.get(o.prefix):i.overlaps.get(o.prefix);return c===void 0?(s={id:t,view:o,atoms:[o.keyword?`@teacss/classes:keyword:${o.prefix}`:`@teacss/classes:declaration:${o.prefix}`],atomSet:null,opaque:!1},{...s,resolverFamilies:j(o,r)}):(s={id:t,view:o,atoms:c.atoms,atomSet:c.atomSet,opaque:!1},{...s,resolverFamilies:j(o,r)})}function he(e,t){let n=new Map;for(let r of e){if(!r.opaque)continue;let e=n.get(r.view.raw);e!==void 0&&(t[e]=1),n.set(r.view.raw,r.id)}}function M(e,t){return new v(`INVALID_FINALIZER_RESULT`,`plugin "${e}" finalize() returned invalid occurrence id ${typeof t==`bigint`?`${t}n`:typeof t==`number`||typeof t==`boolean`||t==null?String(t):typeof t}`,e,`finalize`)}function ge(e,t){let n=[];for(let r of e)!r.opaque&&t[r.id]===0&&T(n,r);return n}function _e(e,t,n,r){let i=!1,a=r;for(let r of t){let t=r.hook,o=t(a?ge(e,n):e.slice());if(o===null)continue;if(!Array.isArray(o))throw M(r.name,o);let s=E(o);if(s===null)throw new v(`INVALID_FINALIZER_RESULT`,`plugin "${r.name}" finalize() result ${b}`,r.name,`finalize`);if(s===0)continue;let c=new Set;for(let t=0;t<s;t++){let i=C(o,t);if(i===x)throw M(r.name,void 0);let a=i;if(!Number.isInteger(a))throw M(r.name,a);let s=a,l=e[s];if(l===void 0||l.opaque||n[s]!==0||c.has(s))throw M(r.name,a);c.add(s)}for(let e of c)n[e]=1;c.size!==0&&(i=!0,a=!0)}return i}function ve(e,t){return e.atomSet?.has(t)??e.atoms.includes(t)}function ye(e,t){return e.dynamic!==!0&&t.dynamic!==!0&&e.view.keyword===t.view.keyword&&e.view.prefix===t.view.prefix}function be(e,t){if(ye(e,t))return!0;if(e.atoms.length<t.atoms.length)return!1;for(let n of t.atoms)if(!ve(e,n))return!1;return!0}function xe(e,t){if(e.atomSet!==null){for(let n of t.atoms)if(e.atomSet.has(n))return!0;return!1}if(t.atomSet!==null){for(let n of e.atoms)if(t.atomSet.has(n))return!0;return!1}for(let n of t.atoms)if(e.atoms.includes(n))return!0;return!1}function Se(e,t){let n=re(e,t);return n.winners??=new Map}function Ce(e,t,n){let r=y();for(let i of e){if(i.opaque||t[i.id]!==0)continue;let a=Se(r,i.view.conditions),o=n?`${i.view.keyword?`keyword`:`declaration`}:${i.view.prefix}`:i.atoms[0],s=a.get(o);if(s===void 0){a.set(o,i.id);continue}e[s].view.important&&!i.view.important?t[i.id]=1:(t[s]=1,a.set(o,i.id))}}function we(e,t,n,r,i){return e.view.important===t.view.important?n||i===`symmetric`?`earlier`:`none`:t.view.important?n?`earlier`:`none`:r?`later`:`none`}function Te(e,t,n,r){let i=be(t,e),a=be(e,t),o=we(e,t,i,a,n);for(let n=0;n<r.length;n++){let s=r[n];if(s.family!==void 0){let r=e.resolverFamilies?.[n]??null,i=t.resolverFamilies?.[n]??null;if(r===null||r!==i)continue}let c=s.hook,l=c(e.view,t.view,{covers:i,earlierCoversLater:a,defaultDrop:o});if(l!==null){if(l===`earlier`||l===`later`||l===`none`)return l;throw new v(`INVALID_RESOLVE_RESULT`,`plugin "${s.name}" resolve() must return null, "earlier", "later", or "none"`,s.name,`resolve`)}}return o}function N(e,t,n,r,i){let a=Te(e,t,n,r);a===`earlier`?i[e.id]=1:a===`later`&&(i[t.id]=1)}function Ee(e,t,n,r,i){let a=t[e];for(let o=e+1;o<t.length;o++){let e=t[o];se(a.view.conditions,e.view.conditions)&&(!ye(a,e)&&!xe(a,e)||N(a,e,n,r,i))}}function De(e,t){let n=re(e,t);return n.postings??=new Map}function Oe(e){let t=y(),n=[],r=[],i=e.length*(e.length-1)/2,a=0;for(let o=0;o<e.length;o++){let s=e[o],c=De(t,s.view.conditions),l=[];T(n,c),T(r,l);for(let e of s.atoms){let t=c.get(e);if(t===void 0&&(t=[],c.set(e,t)),a+=t.length,a>i)return null;T(l,t.length),T(t,o)}}return{postingMaps:n,positions:r,postingPairVisits:a}}function ke(e,t,n,r){for(let i=0;i<e.length;i++)Ee(i,e,t,n,r)}function Ae(e,t,n,r,i,a){if(a!==null){Ce(e,r,a===`static-prefix`);return}let o=e;if(i){let t=[];for(let n of e)!n.opaque&&r[n.id]===0&&T(t,n);o=t}if(o.length<16){ke(o,t,n,r);return}let s=Oe(o);if(s===null){ke(o,t,n,r);return}if(s.postingPairVisits===0)return;let c=new Uint32Array(o.length),l=[];for(let e=0;e<o.length;e++){let i=o[e],a=s.postingMaps[e],u=s.positions[e];if(i.atoms.length===1){let e=a.get(i.atoms[0]);for(let a=u[0]+1;a<e.length;a++)N(i,o[e[a]],t,n,r);continue}let d=0;for(let e=0;e<i.atoms.length;e++){let t=a.get(i.atoms[e]);d+=t.length-u[e]-1}if(d>=o.length-e-1){Ee(e,o,t,n,r);continue}l.length=0;let f=!0,p=e+1;for(let e=0;e<i.atoms.length;e++){let t=a.get(i.atoms[e]);for(let n=u[e]+1;n<t.length;n++){let e=t[n];c[e]!==p&&(c[e]=p,l.length!==0&&e<l[l.length-1]&&(f=!1),T(l,e))}}f||l.sort((e,t)=>e-t);for(let e of l)N(i,o[e],t,n,r)}}function je(e,t,n,r,i){let a=pe(e,r.tokens,i);if(a.length<2&&r.groups.length===0&&r.finalizers.length===0&&r.resolvers.length===0){if(a.length===0)return``;let e=C(a,0);return e===x?``:e??``}let o=[],s=!1,c=a.length>=16&&r.resolvers.every(e=>e.family!==void 0),l=c,u=c,d,f,p=0;for(let e=0;e<a.length;e++){let n=me(a[e],e,r.groups,r.resolvers,t,i);if(n.opaque)s=!0;else if(p++,n.atoms.length!==1&&(l=!1),n.dynamic===!0?u=!1:d===void 0?(d=n.view.prefix,f=n.view.keyword):(n.view.prefix!==d||n.view.keyword!==f)&&(u=!1),n.resolverFamilies!==null){for(let e of n.resolverFamilies)if(e!==null){l=!1,u=!1;break}}T(o,n)}let m=new Uint8Array(o.length);s&&he(o,m);let h=_e(o,r.finalizers,m,s),g=p<16?null:l?`singleton`:u?`static-prefix`:null;Ae(o,n,r.resolvers,m,s||h,g);let _=[];for(let e of o)m[e.id]===0&&T(_,e.view.raw);return _.join(` `)}function Me(e,t,n){let r=C(e,n);if(r===x)return``;if(typeof r==`string`)return r;if(Array.isArray(t)){let e=C(t,n);if(typeof e==`string`)return e}return``}function Ne(e){return typeof e==`number`||typeof e==`bigint`?String(e):ne(e)}function Pe(e,t,n){let r=``,i=E(e);if(i===null)throw new v(`INVALID_ARRAY_LENGTH`,`tagged-template strings ${b}`);for(let a=0;a<i;a++)if(r+=Me(e,t,a),a+1<i&&a+1<n.length){let e=Ne(n[a+1]);r+=e}return r}function Fe(e={}){if(!k(e))throw new v(`INVALID_OPTIONS`,`options must be an object`);let t=w(e,`conflicts`),n=w(e,`overlap`),r=w(e,`plugins`),i=w(e,`cache`);if(n!==void 0&&n!==`precise`&&n!==`symmetric`)throw new v(`INVALID_OPTIONS`,`options.overlap must be "precise" or "symmetric"`);if(r!==void 0&&!Array.isArray(r))throw new v(`INVALID_OPTIONS`,`options.plugins must be an array`);let a=le(r===void 0?[]:r),o=ue(t===void 0?void 0:ce(t,`<options.conflicts>`),a.metadata),s=a.tokens.length!==0||a.groups.length!==0||a.finalizers.length!==0||a.resolvers.length!==0,c=!s&&o.keywords.size===0&&o.overlaps.size===0,l=n??`precise`,u=1500;if(i===!1)u=0;else if(i!==void 0){if(!k(i))throw new v(`INVALID_CACHE_OPTIONS`,`options.cache must be false or an object`);let e=w(i,`max`);if(e!==void 0){if(typeof e!=`number`||!Number.isFinite(e)||!Number.isInteger(e)||e<0)throw new v(`INVALID_CACHE_OPTIONS`,`options.cache.max must be a finite non-negative integer`);u=e}}let d=u>0?new Map:null;function f(e){if(d!==null){let t=d.get(e);if(t!==void 0)return d.delete(e),d.set(e,t),t}let t=g(m(e).trim()),n=c?ae(t):je(t,o,l,a,s?fe():de);return d!==null&&(d.set(e,n),d.size>u&&d.delete(d.keys().next().value)),n}function p(...e){let t=e[0],n=Array.isArray(t)?C(t,`raw`):x;return f(Array.isArray(n)?Pe(t,n,e):te(e))}return p}const P=Object.prototype.propertyIsEnumerable,F=`definition.styles`,I=`definition.variants`,L=`definition.defaultVariants`,R=`definition.compoundVariants`,z=`createDefiner options`,B=`${z}.merge`,V=`recipe props`,H=`className`,Ie=`parts`,Le=`null is not allowed`,Re=`required own enumerable field`,ze=new Set([`styles`,`variants`,`defaultVariants`,`compoundVariants`,`extend`]),Be=new Set([`class`,`className`,`then`,`toJSON`,`toString`,`valueOf`]),Ve=new Set([`class`,`className`,`parts`]);function U(e){return e.length>16?new Set(e):void 0}function W(e,t,n){return t?.has(n)??e.includes(n)}function G(e,t){return TypeError(`[TeaCSS recipe] ${e}: ${t}`)}function K(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw G(t,`expected a plain record`);let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw G(t,`expected Object.prototype or null prototype`);return Object.keys(e)}function He(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw G(t,`expected a non-null, non-array object`);return Object.keys(e)}function q(e,t,n){let r=Reflect.getOwnPropertyDescriptor(e,t);if(r===void 0||!r.enumerable)throw G(n,`expected an own enumerable field`);return`value`in r?r.value:r.get===void 0?void 0:Reflect.apply(r.get,e,[])}function Ue(e,t){let n=Reflect.getOwnPropertyDescriptor(e,`length`),r=n!==void 0&&`value`in n?n.value:void 0;if(typeof r!=`number`||!Number.isInteger(r)||r<0||r>=4294967295)throw G(t,`expected an array with a valid own length`);return r}function We(e,t,n){if(!Array.isArray(e))throw G(t,`expected an array`);let r=Object.keys(e),i=Ue(e,t);if(!n&&i===0)throw G(t,`expected a non-empty array`);if(r.length!==i)throw G(t,`expected a dense own-indexed array`);for(let e of r){let n=Number(e);if(!Number.isInteger(n)||n<0||n>=i||String(n)!==e)throw G(t,`expected a dense own-indexed array`)}let a=Z(i);for(let n=0;n<i;n++)a[n]=q(e,n,`${t}[${n}]`);return a}function Ge(e,t){if(e.trim().length===0)throw G(t,`name must contain a non-whitespace character`)}function J(e){let t=te([e]);return t.length===0?void 0:t}function Y(e,t,n){if(n===void 0)return;let r=P.call(e,t)?e[t]:void 0;e[t]=r===void 0?[n]:[...r,n]}function Ke(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0})}function X(e,t){let n=e.length;n in e?Ke(e,n,t):e[n]=t}function Z(e){return Array.from({length:e},()=>void 0)}function qe(){return[void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0]}const Je=qe().length;function Ye(e,t,n){t<Je||!(t in e)?e[t]=n:Ke(e,t,n)}function Q(e,t=e.length){let n=Z(t),r=Math.min(e.length,t);for(let t=0;t<r;t++){if(!P.call(e,t))continue;let r=e[t];r!==void 0&&(n[t]=[...r])}return n}function Xe(e,t){return e.map(e=>{let n=Object.create(null);for(let r of Object.keys(e.choices))n[r]={fragmentsByPart:Q(e.choices[r].fragmentsByPart,t)};return{name:e.name,choices:n,booleanCapable:e.booleanCapable}})}function $(e,t,n){if(e===null)return null;if(typeof e==`string`){if(!P.call(t.choices,e))throw G(n,`unknown choice ${JSON.stringify(e)}`);return e}if(typeof e==`number`){if(!Number.isFinite(e))throw G(n,`expected a finite numeric choice`);let r=String(e);if(!P.call(t.choices,r))throw G(n,`unknown choice ${JSON.stringify(r)}`);return r}if(typeof e==`boolean`){if(!t.booleanCapable)throw G(n,`boolean selection requires a true or false choice`);return String(e)}throw G(n,`expected null, a declared string or finite numeric choice, or a supported boolean state`)}function Ze(e,t,n){if(n&&(e=t.partNames.length===0?``:{}),typeof e==`string`){if(t!==void 0&&t.partNames.length>0)throw G(F,`must be a record when extending a multi-element recipe`);let n=t===void 0?Z(1):Q(t.baseFragmentsByPart,1);return Y(n,0,J(e)),{names:[],indexes:Object.create(null),baseFragments:n}}let r=K(e,F);if(t!==void 0&&t.partNames.length===0)throw G(F,`must be a string when extending a single-element recipe`);if(!n&&r.length===0)throw G(F,`expected at least one named style`);for(let e of r){let t=`${F}.${e}`;if(Ge(e,t),Be.has(e))throw G(t,`reserved style name`)}let i=t===void 0?[]:[...t.partNames],a=Object.create(null);for(let e=0;e<i.length;e++)a[i[e]]=e;let o=t===void 0?[]:Q(t.baseFragmentsByPart),s=e;for(let e of r){let t=a[e];t===void 0&&(t=i.length,X(i,e),a[e]=t,X(o,void 0)),Y(o,t,J(q(s,e,`${F}.${e}`)))}return{names:i,indexes:a,baseFragments:o}}function Qe(e,t,n,r,i,a){if(n){if(typeof t!=`string`)throw G(i,`expected a primitive string`);Y(e,0,J(t));return}let o=K(t,i);if(a&&o.length===0)throw G(i,`expected at least one style target`);let s=t;for(let t of o){let n=r[t];if(n===void 0)throw G(`${i}.${t}`,`unknown style target`);Y(e,n,J(q(s,t,`${i}.${t}`)))}}function $e(e,t,n,r,i){let a=t===void 0?[]:Xe(t.variants,i),o=Object.create(null);for(let e=0;e<a.length;e++)o[a[e].name]=e;if(e===void 0)return{variants:a,indexes:o};if(e===null)throw G(I,Le);let s=K(e,I),c=e;for(let e of s){let t=`${I}.${e}`;if(Ge(e,t),Ve.has(e))throw G(t,`reserved variant name`);let s=q(c,e,t),l=K(s,t);if(l.length===0)throw G(t,`expected at least one choice`);let u=s,d=o[e],f;d===void 0?(d=a.length,o[e]=d,f=Object.create(null),X(a,{name:e,choices:f,booleanCapable:!1})):f=a[d].choices;for(let e of l){let a=`${t}.${e}`,o=q(u,e,a),s=f[e],c=s===void 0?Z(i):Q(s.fragmentsByPart,i);Qe(c,o,n,r,a,!1),f[e]={fragmentsByPart:c}}a[d]={name:e,choices:f,booleanCapable:P.call(f,`true`)||P.call(f,`false`)}}return{variants:a,indexes:o}}function et(e,t,n,r){let i=Z(n.length);if(t!==void 0){let e=Math.min(t.defaultStates.length,n.length);for(let n=0;n<e;n++)P.call(t.defaultStates,n)&&(i[n]=t.defaultStates[n])}if(e===void 0)return i;if(e===null)throw G(L,Le);let a=K(e,L),o=U(a);for(let e of a)if(r[e]===void 0)throw G(`${L}.${e}`,`unknown variant`);let s=e;for(let e=0;e<n.length;e++){let t=n[e];if(!W(a,o,t.name))continue;let r=`${L}.${t.name}`,c=q(s,t.name,r);c!==void 0&&(i[e]=$(c,t,r))}return i}function tt(e,t,n){if(!Array.isArray(e)){if(e===void 0)throw G(n,`undefined is not a condition`);return[$(e,t,n)]}let r=We(e,n,!1),i=[];for(let e=0;e<r.length;e++){let a=r[e];if(a===void 0)throw G(`${n}[${e}]`,`undefined is not a condition`);X(i,$(a,t,`${n}[${e}]`))}return i}function nt(e,t,n,r,i,a,o){let s=t===void 0?[]:t.compounds.map(e=>({conditions:e.conditions,fragmentsByPart:Q(e.fragmentsByPart,i)}));if(e===void 0)return s;if(e===null)throw G(R,Le);let c=We(e,R,!0);for(let e=0;e<c.length;e++){let t=c[e],l=`${R}[${e}]`,u=K(t,l),d=U(u),f=W(u,d,Ie);if(!W(u,d,H))throw G(`${l}.className`,n||f?`required own enumerable string`:`required own enumerable style map`);for(let e of u)if(e!==H&&e!==Ie&&o[e]===void 0)throw G(`${l}.${e}`,`unknown variant condition`);let p=t,m=[];for(let e=0;e<a.length;e++){let t=a[e];if(!W(u,d,t.name))continue;let n=`${l}.${t.name}`;X(m,{variantIndex:e,states:tt(q(p,t.name,n),t,n)})}let h=`${l}.className`,g=q(p,H,h),_=Z(i);if(f){let e=`${l}.parts`;if(n)throw G(e,`only valid for multi-element recipes`);if(typeof g!=`string`)throw G(h,`expected a primitive string when parts is present`);let t=We(q(p,Ie,e),e,!1),i=J(g);for(let n=0;n<t.length;n++){let a=t[n],o=`${e}[${n}]`;if(typeof a!=`string`)throw G(o,`expected a declared style name`);let s=r[a];if(s===void 0)throw G(o,`unknown style target`);if(t.indexOf(a)!==n)throw G(o,`duplicate style target ${JSON.stringify(a)}`);Y(_,s,i)}}else Qe(_,g,n,r,h,!0);X(s,{conditions:m,fragmentsByPart:_})}return s}function rt(e,t){let n=K(e,`definition`);for(let e of n)if(!ze.has(e))throw G(`definition.${e}`,`unknown field`);let r=e,i;if(n.includes(`extend`)){let e=q(r,`extend`,`definition.extend`);if(e!==void 0&&(typeof e!=`function`||(i=t.get(e))===void 0))throw G(`definition.extend`,`expected a recipe from this exact definer`)}let a=n.includes(`styles`);if(!a&&i===void 0)throw G(F,Re);let o=Ze(a?q(r,`styles`,F):void 0,i,!a),s=o.baseFragments.length,c=o.names.length===0,l=$e(n.includes(`variants`)?q(r,`variants`,I):void 0,i,c,o.indexes,s),u=et(n.includes(`defaultVariants`)?q(r,`defaultVariants`,L):void 0,i,l.variants,l.indexes),d=nt(n.includes(`compoundVariants`)?q(r,`compoundVariants`,R):void 0,i,c,o.indexes,s,l.variants,l.indexes),f=Z(s);for(let e of d)for(let t=0;t<s;t++)e.fragmentsByPart[t]!==void 0&&X(f[t]??=[],e);return{partNames:o.names,baseFragmentsByPart:o.baseFragments,variants:l.variants,defaultStates:u,compounds:d,compoundsByPart:f}}function it(e,t){if(e===void 0)return t.defaultStates;let n=He(e,V),r=U(n);if(W(n,r,`class`))throw G(`${V}.class`,`reserved field`);if(W(n,r,H))throw G(`${V}.className`,`caller classes belong to a style resolver`);let i=e,a;for(let e=0;e<t.variants.length;e++){let o=t.variants[e];if(!W(n,r,o.name))continue;let s=`${V}.${o.name}`,c=q(i,o.name,s);c!==void 0&&(a??=[...t.defaultStates],a[e]=$(c,o,s))}return a??t.defaultStates}function at(e,t,n){if(t!==void 0){let e=n<Je||P.call(t,n)?t[n]:void 0;if(e!==void 0)return e}return e[n]}function ot(e,t,n){for(let r of e.conditions){let e=at(t,n,r.variantIndex),i=!1;for(let t of r.states)if(e===t){i=!0;break}if(!i)return!1}return!0}function st(e,t,n){if(n===void 0)return t;for(let r of n)Ye(e,t,r),t++;return t}function ct(e,t,n,r,i,a,o){let s,c;if(r!==void 0){let t=He(r,a),n=U(t);if(W(t,n,`class`))throw G(`${a}.class`,`reserved field`);let i=r;for(let r=0;r<e.variants.length;r++){let o=e.variants[r];if(!W(t,n,o.name))continue;let c=`${a}.${o.name}`,l=q(i,o.name,c);l!==void 0&&(s??=qe(),Ye(s,r,$(l,o,c)))}W(t,n,`className`)&&(c=q(i,`className`,`${a}.className`))}let l=qe(),u=st(l,0,e.baseFragmentsByPart[t]);for(let r=0;r<e.variants.length;r++){let i=at(n,s,r);if(i==null)continue;let a=e.variants[r].choices[i];a!==void 0&&(u=st(l,u,a.fragmentsByPart[t]))}for(let r of e.compoundsByPart[t]??[])ot(r,n,s)&&(u=st(l,u,r.fragmentsByPart[t]));c!==void 0&&(Ye(l,u,c),u++),l.length=u;let d=Reflect.apply(i,void 0,l);if(typeof d!=`string`)throw G(o,`merger must return a primitive string`);return d}function lt(e,t){return e.partNames.length===0?(n=>ct(e,0,e.defaultStates,n,t,V,`recipe result`)):(n=>{let r=it(n,e),i=Object.create(null);for(let n=0;n<e.partNames.length;n++){let a=e.partNames[n];i[a]=i=>ct(e,n,r,i,t,`style props.${a}`,`style result.${a}`)}return i})}function ut(e){let t=K(e,z);for(let e of t)if(e!==`merge`)throw G(z,`unknown field ${JSON.stringify(e)}`);if(!t.includes(`merge`))throw G(B,Re);let n=q(e,`merge`,B);if(typeof n!=`function`)throw G(B,`expected a callable merger`);let r=n,i=new WeakMap;return(e=>{let t=rt(e,i),n=lt(t,r);return i.set(n,t),n})}export{_ as MERGE_OPAQUE,v as MergerProtocolError,ut as createDefiner,Fe as createMerger};
|
|
1
|
+
function e(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0})}function t(t,n){let r=t.length;r in t?e(t,r,n):t[r]=n}function n(e){let n=``,r,i=-1,a=-1,o=-1,s=[];for(let c=0;c<e.length;c++){let l=e[c];if(r){l===`\\`?c++:l===r&&(r=void 0);continue}if(n.length>0&&l===`\\`){c++;continue}if(n.length>0&&(l===`"`||l===`'`)){r=l;continue}if(n.length>0&&l===`/`&&e[c+1]===`*`){let t=e.indexOf(`*/`,c+2);if(t<0)break;c=t+1;continue}l===`(`||l===`[`?n+=l===`(`?`)`:`]`:l===n.at(-1)?n=n.slice(0,-1):n.length===0&&(l===`@`?(a===-1&&(a=c),t(s,c)):a===-1&&(l===`:`&&i===-1?i=c:l===`!`&&(o=c)))}let c=a===-1?e.length:a,l=e.slice(0,c),u=!1;o===c-1&&(u=!0,l=l.slice(0,-1));let d=[];for(let n=0;n<s.length;n++){let r=s[n]+1,i=n+1<s.length?s[n+1]:e.length;t(d,e.slice(r,i))}return i!==-1&&i<c?{raw:e,body:l,property:e.slice(0,i),value:l.slice(i+1),keyword:!1,important:u,conditions:d}:{raw:e,body:l,keyword:!0,important:u,conditions:d}}function r(e,t){let n=e.length;n in e?Object.defineProperty(e,n,{configurable:!0,enumerable:!0,value:t,writable:!0}):e[n]=t}function i(e){let t=[],n=[],i=new Map,a=!1,o,s;for(let c=0;c<e.length;c++){let l=e[c];if(n.length===0){l===`\\`?(/\s/.test(e[c+1]??``)&&(o=void 0),c++):/\s/.test(l)?o=void 0:l===`"`||l===`'`?o=o===l?void 0:o??l:!o&&l===`[`&&r(n,c);continue}if((s||a)&&l===`[`&&/[:@\s]/.test(e[c-1])){r(n,c),i.set(c,s??a),a=!1,s=void 0;continue}if(a){l===`*`&&e[c+1]===`/`&&(a=!1,c++);continue}if(s){l===`\\`?c++:l===s&&(s=void 0);continue}if(l===`/`&&e[c+1]===`*`)a=!0,c++;else if(l===`"`||l===`'`)s=l;else if(l===`\\`)c++;else if(l===`[`)r(n,c);else if(l===`]`){let o=n.pop(),l=i.get(o);(/[:@]/.test(e[o-1])||e[c+1]===`:`)&&r(t,{end:c+1,start:o}),l===!0?a=!0:l&&(s=l)}}let c=[];for(let e of t.sort((e,t)=>e.start-t.start||t.end-e.end))(!c.length||e.start>=c.at(-1).end)&&r(c,e);return c}function a(e,t,n){let r=e[t];if(n.blockComment)return r===`*`&&e[t+1]===`/`?(n.blockComment=!1,t+1):t;if(n.quote)return r===`\\`?t+1:(r===n.quote&&(n.quote=void 0),t);if(n.closers.length>0&&r===`/`&&e[t+1]===`*`)return n.blockComment=!0,t+1;if(n.closers.length>0&&(r===`"`||r===`'`))return n.quote=r,t;if(n.closers.length>0&&r===`\\`)return t+1;if(r===`(`||r===`[`)return u(n.closers,r===`(`?`)`:`]`),t;if(r===n.closers.at(-1))return n.closers.pop(),t}function o(e,t,n=e.length){let r={closers:[]};for(let i=t+1;i<n;i++){let t=e[i],n=a(e,i,r);if(n!==void 0){i=n;continue}if(r.closers.length===0){if(t===`}`)return{index:i,kind:`close`};if(t===`{`)return{index:i,kind:`open`}}}return{index:n,kind:`limit`}}const s=/[\s'"`;{},\])]/;function c(e,t,n=e.length){if(e[t]!==`@`)return{conds:``,end:t};let r={closers:[]},i=t;for(;i<n;i++){let t=e[i],n=a(e,i,r);if(n!==void 0){i=n;continue}if(t===`/`&&(e[i+1]===`/`||e[i+1]===`*`)&&r.closers.length===0||s.test(t)&&r.closers.length===0)break}return{conds:e.slice(t,i),end:i}}function l(e){let t=[],n={closers:[]},r=0;for(let i=0;i<e.length;i++){let o=e[i],s=a(e,i,n);if(s!==void 0){i=s;continue}o===`;`&&n.closers.length===0&&(u(t,e.slice(r,i)),r=i+1)}return u(t,e.slice(r)),t.map(e=>e.trim()).filter(Boolean)}function u(e,t){Object.defineProperty(e,e.length,{configurable:!0,enumerable:!0,value:t,writable:!0})}const d=/^(?:--?[\w-]+|[A-Z_$][\w$-]*|@teacss-skip-bracket-[\da-z]{6})$/i;function f(e,t){let n=t;for(;n>0&&/[\w-]/.test(e[n-1]);)n--;if(n===t||e[n-1]!==`:`)return!1;let r=n-1,i=r;for(;i>0&&/[\w$@-]/.test(e[i-1]);)i--;if(!d.test(e.slice(i,r)))return!1;let a=i-1;for(;a>=0&&/\s/.test(e[a]);)a--;return a<0||!`{,?`.includes(e[a])}function p(e){let t=[],n=[],r=[],i=!1,a;for(let o=0;o<e.length;o++){let s=e[o],c=e[o+1];if(n.length===0){s===`(`&&f(e,o)&&u(n,{attached:!0,start:o});continue}if(i)s===`*`&&c===`/`&&(i=!1,o++);else if(a)s===`\\`?o++:s===a&&(a=void 0);else if(s===`\\`)o++;else if(s===`/`&&c===`*`)i=!0,o++;else if(s===`'`||s===`"`||s==="`")a=s;else if(r.length>0)s===`[`||s===`(`?u(r,s===`[`?`]`:`)`):s===r.at(-1)&&r.pop();else if(s===`[`)u(r,`]`);else if(s===`(`)u(n,{attached:f(e,o),start:o});else if(s===`)`){let e=n.pop();e.attached&&u(t,{end:o+1,start:e.start})}}let o=[];for(let e of t.sort((e,t)=>e.start-t.start||t.end-e.end))(o.length===0||e.start>=o.at(-1).end)&&u(o,e);return o}function m(e){if(!e.includes(`{`))return e;let t=``,n=0,r=-1,s=0,u=0,d=e.includes(`[`)?i(e):[],f=e.includes(`(`)?p(e):[],m={closers:[]};for(;n<e.length;){for(;s<d.length&&d[s].end<=n;)s++;for(;u<f.length&&f[u].end<=n;)u++;let i=s<d.length?d[s]:void 0,p=u<f.length?f[u]:void 0,h=i?.start===n?i:p?.start===n?p:void 0;if(h&&m.blockComment!==!0&&m.quote===void 0){t+=e.slice(n,h.end),n=h.end;continue}m.closers.length>0&&/\s/.test(e[n])&&(m.blockComment=!1,m.closers.length=0,m.quote=void 0);let g=a(e,n,m);if(g!==void 0){t+=e.slice(n,g+1),n=g+1;continue}let _=e[n];if(m.closers.length>0||_!==`{`){t+=_,n++;continue}let v=o(e,n);if(v.kind!==`close`){t+=e.slice(n,v.index),n=v.index;continue}let y=v.index,b=e.slice(n+1,y),{conds:x,end:S}=c(e,y+1),C=l(b);if(C.length===0){t+=_,n++;continue}r===n&&t.length>0&&!/\s/.test(t.at(-1))&&(t+=` `),t+=C.map(e=>`${e}${x}`).join(` `),r=S,n=S}return t}function h(e){let t=e.split(/\s+/);return t[0]===``&&t.shift(),t.at(-1)===``&&t.pop(),t}function g(e){if(!e.includes(`[`))return h(e);let t=i(e);if(t.length===0)return h(e);let n=[],a=0,o=-1;for(let i=0;i<e.length;i++){let s=t[a];if(s&&i===s.start){o<0&&(o=i),i=s.end-1,a++;continue}/\s/.test(e[i])?(o>=0&&r(n,e.slice(o,i)),o=-1):o<0&&(o=i)}return o>=0&&r(n,e.slice(o)),n}const _=!1;var v=class extends TypeError{name=`MergerProtocolError`;code;plugin;hook;constructor(e,t,n,r){super(`[TeaCSS merge:${e}] ${t}`),this.code=e,n!==void 0&&(this.plugin=n),r!==void 0&&(this.hook=r)}};function y(){return Object.create(null)}const b=`must have an integer length from 0 through 4294967294`,x=Symbol(`missing-own-value`);function S(e,t){return`value`in t?t.value:t.get===void 0?void 0:Reflect.apply(t.get,e,[])}function C(e,t){let n=Reflect.getOwnPropertyDescriptor(e,t);return n===void 0?x:S(e,n)}function w(e,t){let n=C(e,t);return n===x?void 0:n}function ee(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0})}function T(e,t){let n=e.length;n in e?ee(e,n,t):e[n]=t}function E(e){let t=C(e,`length`);return typeof t==`number`&&Number.isInteger(t)&&t>=0&&t<4294967295?t:null}function te(e){let t=``,n=E(e);if(n===null)throw new v(`INVALID_ARRAY_LENGTH`,`class-value array ${b}`);for(let r=0;r<n;r++){let n=C(e,r);if(n===x)continue;let i=ne(n);i&&(t+=(t&&` `)+i)}return t}function ne(e){if(!e)return``;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`bigint`)return String(e);if(Array.isArray(e))return te(e);if(typeof e==`object`){let t=e,n=``;for(let e of Reflect.ownKeys(t)){if(typeof e!=`string`)continue;let r=Reflect.getOwnPropertyDescriptor(t,e);r===void 0||!r.enumerable||S(t,r)&&(n+=(n&&` `)+e)}return n}return``}function re(e,t){let n=e;for(let e of t){let t=n.children??=new Map,r=t.get(e);r===void 0&&(r=y(),t.set(e,r)),n=r}return n}function ie(e,t,n){let r=re(e,t);return n?r.keywords??=new Map:r.declarations??=new Map}function ae(e){if(e.length===0)return``;if(e.length===1){let t=C(e,0);return t===x?``:t??``}let t=y(),r=new Uint8Array(e.length),i=new Uint8Array(e.length);for(let a=0;a<e.length;a++){let o=n(e[a]),s=ie(t,o.conditions,o.keyword),c=o.property??o.body,l=s.get(c);r[a]=+!!o.important,l===void 0?s.set(c,a):r[l]!==0&&r[a]===0?i[a]=1:(i[l]=1,s.set(c,a))}let a=[];for(let t=0;t<e.length;t++)i[t]===0&&T(a,e[t]);return a.join(` `)}function oe(e,t){if(typeof e==`string`)return e.length===0?null:[e];if(!Array.isArray(e))return null;let n=E(e);if(n===null||n===0)return null;let r=[],i=null;for(let a=0;a<n;a++){let n=C(e,a);if(n===x||typeof n!=`string`||n.length===0)return null;(i===null?r.includes(n):i.has(n))||(T(r,n),i===null?r.length===(t?64:4)&&(i=new Set(r)):i.add(n))}return t&&r.length>1&&r.sort(),r}function se(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function D(e,t,n,r,i){for(let a of Reflect.ownKeys(t)){if(typeof a!=`string`)continue;let o=Reflect.getOwnPropertyDescriptor(t,a);if(o===void 0||!o.enumerable)continue;let s=oe(S(t,o),!0);if(s===null)throw new v(`INVALID_STATIC_CONFLICT`,`"${r}" ${n} "${a}" must contain at least one non-empty atom`,i);let c=e.get(a);if(c===void 0){e.set(a,{atoms:s,atomSet:s.length>4?new Set(s):null,source:r});continue}if(!se(c.atoms,s))throw new v(`STATIC_CONFLICT_COLLISION`,`static ${n} "${a}" has conflicting atom sets from "${c.source}" and "${r}"`,i)}}function ce(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function O(e){if(!ce(e))return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function le(e,t,n){if(!ce(e))throw new v(`INVALID_CONFLICT_META`,`"${t}" conflicts must be an object`,n);let r=w(e,`keywords`);if(!O(r))throw new v(`INVALID_CONFLICT_META`,`"${t}" keywords must be a record`,n);let i=w(e,`overlaps`);if(!O(i))throw new v(`INVALID_CONFLICT_META`,`"${t}" overlaps must be a record`,n);return{keywords:r,overlaps:i}}function k(e,t,n,r){if(n!==void 0){if(typeof n!=`function`)throw new v(`INVALID_PLUGIN_HOOK`,`plugin "${e}" ${t} must be a function`,e,r);return n}}function ue(e){let t=[],n=[],r=[],i=[],a=[],o=new Set,s=E(e);if(s===null)throw new v(`INVALID_OPTIONS`,`options.plugins must be an array with an integer length from 0 through 4294967294`);for(let c=0;c<s;c++){let s=C(e,c),l=s===x?void 0:s;if(!ce(l))throw new v(`INVALID_PLUGIN_NAME`,`plugin at index ${c} must have a non-empty name`);let u=w(l,`name`);if(typeof u!=`string`||u.length===0)throw new v(`INVALID_PLUGIN_NAME`,`plugin at index ${c} must have a non-empty name`);if(o.has(u))throw new v(`DUPLICATE_PLUGIN_NAME`,`duplicate plugin name "${u}"`,u);o.add(u);let d=w(l,`conflicts`),f=k(u,`tokens`,w(l,`tokens`),`tokens`),p=k(u,`group`,w(l,`group`),`group`),m=k(u,`finalize`,w(l,`finalize`),`finalize`),h=k(u,`resolveFamily`,w(l,`resolveFamily`),`resolveFamily`),g=k(u,`resolve`,w(l,`resolve`),`resolve`);if(h!==void 0&&g===void 0)throw new v(`INVALID_PLUGIN_HOOK`,`plugin "${u}" resolveFamily requires resolve`,u,`resolveFamily`);T(t,{name:u,conflicts:d===void 0?void 0:le(d,u,u)}),f!==void 0&&T(n,{name:u,hook:f}),p!==void 0&&T(r,{name:u,hook:p}),m!==void 0&&T(i,{name:u,hook:m}),g!==void 0&&T(a,{name:u,hook:g,family:h})}return{metadata:t,tokens:n,groups:r,finalizers:i,resolvers:a}}function de(e,t){let n=new Map,r=new Map;e!==void 0&&(D(n,e.keywords,`keyword`,`<options.conflicts>`),D(r,e.overlaps,`declaration`,`<options.conflicts>`));for(let e of t)e.conflicts!==void 0&&(D(n,e.conflicts.keywords,`keyword`,e.name,e.name),D(r,e.conflicts.overlaps,`declaration`,e.name,e.name));return{keywords:n,overlaps:r}}function fe(e){let t=n(e);return{raw:e,prefix:t.property??t.body,body:t.body,value:t.value,keyword:t.keyword,conditions:t.conditions,important:t.important}}function pe(){let e=new Map;return t=>{let n=e.get(t);if(n!==void 0)return n;let r=fe(t);return e.set(t,r),r}}function me(e,t,n){if(t.length===0)return e;let r=e,i={viewToken:n};for(let e of t){let t=e.hook,n=t(r,i),a=`plugin "${e.name}" tokens() must return an array of individual non-empty class tokens`;if(!Array.isArray(n))throw new v(`INVALID_TOKEN_TRANSFORM_RESULT`,a,e.name,`tokens`);let o=[],s=E(n);if(s===null)throw new v(`INVALID_TOKEN_TRANSFORM_RESULT`,a,e.name,`tokens`);for(let t=0;t<s;t++){let r=C(n,t);if(r===x||typeof r!=`string`||r.length===0)throw new v(`INVALID_TOKEN_TRANSFORM_RESULT`,a,e.name,`tokens`);let i=g(r);if(i.length!==1||i[0]!==r)throw new v(`INVALID_TOKEN_TRANSFORM_RESULT`,a,e.name,`tokens`);T(o,r)}r=o}return r}function A(e,t){let n=null;for(let r=0;r<t.length;r++){let i=t[r];if(i.family===void 0)continue;let a=i.family,o=a(e);if(o!==null&&(typeof o!=`string`||o.length===0))throw new v(`INVALID_RESOLVE_FAMILY_RESULT`,`plugin "${i.name}" resolveFamily() must return null or a non-empty string`,i.name,`resolveFamily`);o!==null&&((n??=Array.from({length:t.length},()=>null))[r]=o)}return n}function he(e,t,n,r,i,a){let o=a(e),s;for(let e of n){let n=e.hook,i=n(o);if(i===null)continue;if(i===!1)return s={id:t,view:o,atoms:[],atomSet:null,dynamic:!0,opaque:!0},{...s,resolverFamilies:null};let a=oe(i,!1);if(a===null)throw new v(`INVALID_GROUP_RESULT`,`plugin "${e.name}" group() must return null, MERGE_OPAQUE, or at least one non-empty atom`,e.name,`group`);return s={id:t,view:o,atoms:a,atomSet:a.length>4?new Set(a):null,dynamic:!0,opaque:!1},{...s,resolverFamilies:A(o,r)}}let c=o.keyword?i.keywords.get(o.prefix):i.overlaps.get(o.prefix);return c===void 0?(s={id:t,view:o,atoms:[o.keyword?`@teacss/classes:keyword:${o.prefix}`:`@teacss/classes:declaration:${o.prefix}`],atomSet:null,opaque:!1},{...s,resolverFamilies:A(o,r)}):(s={id:t,view:o,atoms:c.atoms,atomSet:c.atomSet,opaque:!1},{...s,resolverFamilies:A(o,r)})}function ge(e,t){let n=new Map;for(let r of e){if(!r.opaque)continue;let e=n.get(r.view.raw);e!==void 0&&(t[e]=1),n.set(r.view.raw,r.id)}}function j(e,t){return new v(`INVALID_FINALIZER_RESULT`,`plugin "${e}" finalize() returned invalid occurrence id ${typeof t==`bigint`?`${t}n`:typeof t==`number`||typeof t==`boolean`||t==null?String(t):typeof t}`,e,`finalize`)}function _e(e,t){let n=[];for(let r of e)!r.opaque&&t[r.id]===0&&T(n,r);return n}function ve(e,t,n,r){let i=!1,a=r;for(let r of t){let t=r.hook,o=t(a?_e(e,n):e.slice());if(o===null)continue;if(!Array.isArray(o))throw j(r.name,o);let s=E(o);if(s===null)throw new v(`INVALID_FINALIZER_RESULT`,`plugin "${r.name}" finalize() result ${b}`,r.name,`finalize`);if(s===0)continue;let c=new Set;for(let t=0;t<s;t++){let i=C(o,t);if(i===x)throw j(r.name,void 0);let a=i;if(!Number.isInteger(a))throw j(r.name,a);let s=a,l=e[s];if(l===void 0||l.opaque||n[s]!==0||c.has(s))throw j(r.name,a);c.add(s)}for(let e of c)n[e]=1;c.size!==0&&(i=!0,a=!0)}return i}function ye(e,t){return e.atomSet?.has(t)??e.atoms.includes(t)}function be(e,t){return e.dynamic!==!0&&t.dynamic!==!0&&e.view.keyword===t.view.keyword&&e.view.prefix===t.view.prefix}function xe(e,t){if(be(e,t))return!0;if(e.atoms.length<t.atoms.length)return!1;for(let n of t.atoms)if(!ye(e,n))return!1;return!0}function Se(e,t){if(e.atomSet!==null){for(let n of t.atoms)if(e.atomSet.has(n))return!0;return!1}if(t.atomSet!==null){for(let n of e.atoms)if(t.atomSet.has(n))return!0;return!1}for(let n of t.atoms)if(e.atoms.includes(n))return!0;return!1}function Ce(e,t){let n=re(e,t);return n.winners??=new Map}function we(e,t,n){let r=y();for(let i of e){if(i.opaque||t[i.id]!==0)continue;let a=Ce(r,i.view.conditions),o=n?`${i.view.keyword?`keyword`:`declaration`}:${i.view.prefix}`:i.atoms[0],s=a.get(o);if(s===void 0){a.set(o,i.id);continue}e[s].view.important&&!i.view.important?t[i.id]=1:(t[s]=1,a.set(o,i.id))}}function Te(e,t,n,r,i){return e.view.important===t.view.important?n||i===`symmetric`?`earlier`:`none`:t.view.important?n?`earlier`:`none`:r?`later`:`none`}function Ee(e,t,n,r){let i=xe(t,e),a=xe(e,t),o=Te(e,t,i,a,n);for(let n=0;n<r.length;n++){let s=r[n];if(s.family!==void 0){let r=e.resolverFamilies?.[n]??null,i=t.resolverFamilies?.[n]??null;if(r===null||r!==i)continue}let c=s.hook,l=c(e.view,t.view,{covers:i,earlierCoversLater:a,defaultDrop:o});if(l!==null){if(l===`earlier`||l===`later`||l===`none`)return l;throw new v(`INVALID_RESOLVE_RESULT`,`plugin "${s.name}" resolve() must return null, "earlier", "later", or "none"`,s.name,`resolve`)}}return o}function M(e,t,n,r,i){let a=Ee(e,t,n,r);a===`earlier`?i[e.id]=1:a===`later`&&(i[t.id]=1)}function De(e,t,n,r,i){let a=t[e];for(let o=e+1;o<t.length;o++){let e=t[o];se(a.view.conditions,e.view.conditions)&&(!be(a,e)&&!Se(a,e)||M(a,e,n,r,i))}}function Oe(e,t){let n=re(e,t);return n.postings??=new Map}function ke(e){let t=y(),n=[],r=[],i=e.length*(e.length-1)/2,a=0;for(let o=0;o<e.length;o++){let s=e[o],c=Oe(t,s.view.conditions),l=[];T(n,c),T(r,l);for(let e of s.atoms){let t=c.get(e);if(t===void 0&&(t=[],c.set(e,t)),a+=t.length,a>i)return null;T(l,t.length),T(t,o)}}return{postingMaps:n,positions:r,postingPairVisits:a}}function Ae(e,t,n,r){for(let i=0;i<e.length;i++)De(i,e,t,n,r)}function je(e,t,n,r,i,a){if(a!==null){we(e,r,a===`static-prefix`);return}let o=e;if(i){let t=[];for(let n of e)!n.opaque&&r[n.id]===0&&T(t,n);o=t}if(o.length<16){Ae(o,t,n,r);return}let s=ke(o);if(s===null){Ae(o,t,n,r);return}if(s.postingPairVisits===0)return;let c=new Uint32Array(o.length),l=[];for(let e=0;e<o.length;e++){let i=o[e],a=s.postingMaps[e],u=s.positions[e];if(i.atoms.length===1){let e=a.get(i.atoms[0]);for(let a=u[0]+1;a<e.length;a++)M(i,o[e[a]],t,n,r);continue}let d=0;for(let e=0;e<i.atoms.length;e++){let t=a.get(i.atoms[e]);d+=t.length-u[e]-1}if(d>=o.length-e-1){De(e,o,t,n,r);continue}l.length=0;let f=!0,p=e+1;for(let e=0;e<i.atoms.length;e++){let t=a.get(i.atoms[e]);for(let n=u[e]+1;n<t.length;n++){let e=t[n];c[e]!==p&&(c[e]=p,l.length!==0&&e<l[l.length-1]&&(f=!1),T(l,e))}}f||l.sort((e,t)=>e-t);for(let e of l)M(i,o[e],t,n,r)}}function Me(e,t,n,r,i){let a=me(e,r.tokens,i);if(a.length<2&&r.groups.length===0&&r.finalizers.length===0&&r.resolvers.length===0){if(a.length===0)return``;let e=C(a,0);return e===x?``:e??``}let o=[],s=!1,c=a.length>=16&&r.resolvers.every(e=>e.family!==void 0),l=c,u=c,d,f,p=0;for(let e=0;e<a.length;e++){let n=he(a[e],e,r.groups,r.resolvers,t,i);if(n.opaque)s=!0;else if(p++,n.atoms.length!==1&&(l=!1),n.dynamic===!0?u=!1:d===void 0?(d=n.view.prefix,f=n.view.keyword):(n.view.prefix!==d||n.view.keyword!==f)&&(u=!1),n.resolverFamilies!==null){for(let e of n.resolverFamilies)if(e!==null){l=!1,u=!1;break}}T(o,n)}let m=new Uint8Array(o.length);s&&ge(o,m);let h=ve(o,r.finalizers,m,s),g=p<16?null:l?`singleton`:u?`static-prefix`:null;je(o,n,r.resolvers,m,s||h,g);let _=[];for(let e of o)m[e.id]===0&&T(_,e.view.raw);return _.join(` `)}function Ne(e,t,n){let r=C(e,n);if(r===x)return``;if(typeof r==`string`)return r;if(Array.isArray(t)){let e=C(t,n);if(typeof e==`string`)return e}return``}function Pe(e){return typeof e==`number`||typeof e==`bigint`?String(e):ne(e)}function Fe(e,t,n){let r=``,i=E(e);if(i===null)throw new v(`INVALID_ARRAY_LENGTH`,`tagged-template strings ${b}`);for(let a=0;a<i;a++)if(r+=Ne(e,t,a),a+1<i&&a+1<n.length){let e=Pe(n[a+1]);r+=e}return r}function Ie(e={}){if(!O(e))throw new v(`INVALID_OPTIONS`,`options must be an object`);let t=w(e,`conflicts`),n=w(e,`overlap`),r=w(e,`plugins`),i=w(e,`cache`);if(n!==void 0&&n!==`precise`&&n!==`symmetric`)throw new v(`INVALID_OPTIONS`,`options.overlap must be "precise" or "symmetric"`);if(r!==void 0&&!Array.isArray(r))throw new v(`INVALID_OPTIONS`,`options.plugins must be an array`);let a=ue(r===void 0?[]:r),o=de(t===void 0?void 0:le(t,`<options.conflicts>`),a.metadata),s=a.tokens.length!==0||a.groups.length!==0||a.finalizers.length!==0||a.resolvers.length!==0,c=!s&&o.keywords.size===0&&o.overlaps.size===0,l=n??`precise`,u=1500;if(i===!1)u=0;else if(i!==void 0){if(!O(i))throw new v(`INVALID_CACHE_OPTIONS`,`options.cache must be false or an object`);let e=w(i,`max`);if(e!==void 0){if(typeof e!=`number`||!Number.isFinite(e)||!Number.isInteger(e)||e<0)throw new v(`INVALID_CACHE_OPTIONS`,`options.cache.max must be a finite non-negative integer`);u=e}}let d=u>0?new Map:null;function f(e){if(d!==null){let t=d.get(e);if(t!==void 0)return d.delete(e),d.set(e,t),t}let t=g(m(e).trim()),n=c?ae(t):Me(t,o,l,a,s?pe():fe);return d!==null&&(d.set(e,n),d.size>u&&d.delete(d.keys().next().value)),n}function p(...e){let t=e[0],n=Array.isArray(t)?C(t,`raw`):x;return f(Array.isArray(n)?Fe(t,n,e):te(e))}return p}const N=Object.prototype.propertyIsEnumerable,P=`definition.className`,F=`definition.variants`,I=`definition.defaultVariants`,L=`definition.compoundVariants`,R=`createDefiner options`,z=`${R}.merge`,B=`recipe props`,V=`className`,Le=`classKeys`,Re=`null is not allowed`,ze=`required own enumerable field`,Be=new Set([`className`,`variants`,`defaultVariants`,`compoundVariants`,`extend`]),Ve=new Set([`class`,`className`,`then`,`toJSON`,`toString`,`valueOf`]),He=new Set([`class`,`className`,`classKeys`]);function H(e){return e.length>16?new Set(e):void 0}function U(e,t,n){return t?.has(n)??e.includes(n)}function W(e,t){return TypeError(`[TeaCSS recipe] ${e}: ${t}`)}function G(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw W(t,`expected a plain record`);let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw W(t,`expected Object.prototype or null prototype`);return Object.keys(e)}function Ue(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw W(t,`expected a non-null, non-array object`);return Object.keys(e)}function K(e,t,n){let r=Reflect.getOwnPropertyDescriptor(e,t);if(r===void 0||!r.enumerable)throw W(n,`expected an own enumerable field`);return`value`in r?r.value:r.get===void 0?void 0:Reflect.apply(r.get,e,[])}function We(e,t){let n=Reflect.getOwnPropertyDescriptor(e,`length`),r=n!==void 0&&`value`in n?n.value:void 0;if(typeof r!=`number`||!Number.isInteger(r)||r<0||r>=4294967295)throw W(t,`expected an array with a valid own length`);return r}function Ge(e,t,n){if(!Array.isArray(e))throw W(t,`expected an array`);let r=Object.keys(e),i=We(e,t);if(!n&&i===0)throw W(t,`expected a non-empty array`);if(r.length!==i)throw W(t,`expected a dense own-indexed array`);for(let e of r){let n=Number(e);if(!Number.isInteger(n)||n<0||n>=i||String(n)!==e)throw W(t,`expected a dense own-indexed array`)}let a=X(i);for(let n=0;n<i;n++)a[n]=K(e,n,`${t}[${n}]`);return a}function Ke(e,t){if(e.trim().length===0)throw W(t,`name must contain a non-whitespace character`)}function q(e){let t=te([e]);return t.length===0?void 0:t}function J(e,t,n){if(n===void 0)return;let r=N.call(e,t)?e[t]:void 0;e[t]=r===void 0?[n]:[...r,n]}function qe(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0})}function Y(e,t){let n=e.length;n in e?qe(e,n,t):e[n]=t}function X(e){return Array.from({length:e},()=>void 0)}function Je(){return[void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0]}const Ye=Je().length;function Xe(e,t,n){t<Ye||!(t in e)?e[t]=n:qe(e,t,n)}function Z(e,t=e.length){let n=X(t),r=Math.min(e.length,t);for(let t=0;t<r;t++){if(!N.call(e,t))continue;let r=e[t];r!==void 0&&(n[t]=[...r])}return n}function Ze(e,t){return e.map(e=>{let n=Object.create(null);for(let r of Object.keys(e.choices))n[r]={fragmentsByPart:Z(e.choices[r].fragmentsByPart,t)};return{name:e.name,choices:n,booleanCapable:e.booleanCapable}})}function Q(e,t,n){if(e===null)return null;if(typeof e==`string`){if(!N.call(t.choices,e))throw W(n,`unknown choice ${JSON.stringify(e)}`);return e}if(typeof e==`number`){if(!Number.isFinite(e))throw W(n,`expected a finite numeric choice`);let r=String(e);if(!N.call(t.choices,r))throw W(n,`unknown choice ${JSON.stringify(r)}`);return r}if(typeof e==`boolean`){if(!t.booleanCapable)throw W(n,`boolean selection requires a true or false choice`);return String(e)}throw W(n,`expected null, a declared string or finite numeric choice, or a supported boolean state`)}function Qe(e,t,n){if(n&&(e=t.partNames.length===0?``:{}),typeof e==`string`){if(t!==void 0&&t.partNames.length>0)throw W(P,`must be a record when extending a multi-element recipe`);let n=t===void 0?X(1):Z(t.baseFragmentsByPart,1);return J(n,0,q(e)),{names:[],indexes:Object.create(null),baseFragments:n}}let r=G(e,P);if(t!==void 0&&t.partNames.length===0)throw W(P,`must be a string when extending a single-element recipe`);if(!n&&r.length===0)throw W(P,`expected at least one named class`);for(let e of r){let t=`${P}.${e}`;if(Ke(e,t),Ve.has(e))throw W(t,`reserved class name`)}let i=t===void 0?[]:[...t.partNames],a=Object.create(null);for(let e=0;e<i.length;e++)a[i[e]]=e;let o=t===void 0?[]:Z(t.baseFragmentsByPart),s=e;for(let e of r){let t=a[e];t===void 0&&(t=i.length,Y(i,e),a[e]=t,Y(o,void 0)),J(o,t,q(K(s,e,`${P}.${e}`)))}return{names:i,indexes:a,baseFragments:o}}function $e(e,t,n,r,i,a){if(n){if(typeof t!=`string`)throw W(i,`expected a primitive string`);J(e,0,q(t));return}let o=G(t,i);if(a&&o.length===0)throw W(i,`expected at least one class target`);let s=t;for(let t of o){let n=r[t];if(n===void 0)throw W(`${i}.${t}`,`unknown class target`);J(e,n,q(K(s,t,`${i}.${t}`)))}}function et(e,t,n,r,i){let a=t===void 0?[]:Ze(t.variants,i),o=Object.create(null);for(let e=0;e<a.length;e++)o[a[e].name]=e;if(e===void 0)return{variants:a,indexes:o};if(e===null)throw W(F,Re);let s=G(e,F),c=e;for(let e of s){let t=`${F}.${e}`;if(Ke(e,t),He.has(e))throw W(t,`reserved variant name`);let s=K(c,e,t),l=G(s,t);if(l.length===0)throw W(t,`expected at least one choice`);let u=s,d=o[e],f;d===void 0?(d=a.length,o[e]=d,f=Object.create(null),Y(a,{name:e,choices:f,booleanCapable:!1})):f=a[d].choices;for(let e of l){let a=`${t}.${e}`,o=K(u,e,a),s=f[e],c=s===void 0?X(i):Z(s.fragmentsByPart,i);$e(c,o,n,r,a,!1),f[e]={fragmentsByPart:c}}a[d]={name:e,choices:f,booleanCapable:N.call(f,`true`)||N.call(f,`false`)}}return{variants:a,indexes:o}}function tt(e,t,n,r){let i=X(n.length);if(t!==void 0){let e=Math.min(t.defaultStates.length,n.length);for(let n=0;n<e;n++)N.call(t.defaultStates,n)&&(i[n]=t.defaultStates[n])}if(e===void 0)return i;if(e===null)throw W(I,Re);let a=G(e,I),o=H(a);for(let e of a)if(r[e]===void 0)throw W(`${I}.${e}`,`unknown variant`);let s=e;for(let e=0;e<n.length;e++){let t=n[e];if(!U(a,o,t.name))continue;let r=`${I}.${t.name}`,c=K(s,t.name,r);c!==void 0&&(i[e]=Q(c,t,r))}return i}function nt(e,t,n){if(!Array.isArray(e)){if(e===void 0)throw W(n,`undefined is not a condition`);return[Q(e,t,n)]}let r=Ge(e,n,!1),i=[];for(let e=0;e<r.length;e++){let a=r[e];if(a===void 0)throw W(`${n}[${e}]`,`undefined is not a condition`);Y(i,Q(a,t,`${n}[${e}]`))}return i}function rt(e,t,n,r,i,a,o){let s=t===void 0?[]:t.compounds.map(e=>({conditions:e.conditions,fragmentsByPart:Z(e.fragmentsByPart,i)}));if(e===void 0)return s;if(e===null)throw W(L,Re);let c=Ge(e,L,!0);for(let e=0;e<c.length;e++){let t=c[e],l=`${L}[${e}]`,u=G(t,l),d=H(u),f=U(u,d,Le);if(!U(u,d,V))throw W(`${l}.className`,n||f?`required own enumerable string`:`required own enumerable class map`);for(let e of u)if(e!==V&&e!==Le&&o[e]===void 0)throw W(`${l}.${e}`,`unknown variant condition`);let p=t,m=[];for(let e=0;e<a.length;e++){let t=a[e];if(!U(u,d,t.name))continue;let n=`${l}.${t.name}`;Y(m,{variantIndex:e,states:nt(K(p,t.name,n),t,n)})}let h=`${l}.className`,g=K(p,V,h),_=X(i);if(f){let e=`${l}.classKeys`;if(n)throw W(e,`only valid for multi-element recipes`);if(typeof g!=`string`)throw W(h,`expected a primitive string when classKeys is present`);let t=Ge(K(p,Le,e),e,!1),i=q(g);for(let n=0;n<t.length;n++){let a=t[n],o=`${e}[${n}]`;if(typeof a!=`string`)throw W(o,`expected a declared class name`);let s=r[a];if(s===void 0)throw W(o,`unknown class target`);if(t.indexOf(a)!==n)throw W(o,`duplicate class target ${JSON.stringify(a)}`);J(_,s,i)}}else $e(_,g,n,r,h,!0);Y(s,{conditions:m,fragmentsByPart:_})}return s}function it(e,t){let n=G(e,`definition`);for(let e of n)if(!Be.has(e))throw W(`definition.${e}`,`unknown field`);let r=e,i;if(n.includes(`extend`)){let e=K(r,`extend`,`definition.extend`);if(e!==void 0&&(typeof e!=`function`||(i=t.get(e))===void 0))throw W(`definition.extend`,`expected a recipe from this exact definer`)}let a=n.includes(V);if(!a&&i===void 0)throw W(P,ze);let o=Qe(a?K(r,V,P):void 0,i,!a),s=o.baseFragments.length,c=o.names.length===0,l=et(n.includes(`variants`)?K(r,`variants`,F):void 0,i,c,o.indexes,s),u=tt(n.includes(`defaultVariants`)?K(r,`defaultVariants`,I):void 0,i,l.variants,l.indexes),d=rt(n.includes(`compoundVariants`)?K(r,`compoundVariants`,L):void 0,i,c,o.indexes,s,l.variants,l.indexes),f=X(s);for(let e of d)for(let t=0;t<s;t++)e.fragmentsByPart[t]!==void 0&&Y(f[t]??=[],e);return{partNames:o.names,baseFragmentsByPart:o.baseFragments,variants:l.variants,defaultStates:u,compounds:d,compoundsByPart:f}}function at(e,t){if(e===void 0)return t.defaultStates;let n=Ue(e,B),r=H(n);if(U(n,r,`class`))throw W(`${B}.class`,`reserved field`);if(U(n,r,V))throw W(`${B}.className`,`caller classes belong to a style resolver`);let i=e,a;for(let e=0;e<t.variants.length;e++){let o=t.variants[e];if(!U(n,r,o.name))continue;let s=`${B}.${o.name}`,c=K(i,o.name,s);c!==void 0&&(a??=[...t.defaultStates],a[e]=Q(c,o,s))}return a??t.defaultStates}function ot(e,t,n){if(t!==void 0){let e=n<Ye||N.call(t,n)?t[n]:void 0;if(e!==void 0)return e}return e[n]}function st(e,t,n){for(let r of e.conditions){let e=ot(t,n,r.variantIndex),i=!1;for(let t of r.states)if(e===t){i=!0;break}if(!i)return!1}return!0}function $(e,t,n){if(n===void 0)return t;for(let r of n)Xe(e,t,r),t++;return t}function ct(e,t,n,r,i,a,o){let s,c;if(r!==void 0){let t=Ue(r,a),n=H(t);if(U(t,n,`class`))throw W(`${a}.class`,`reserved field`);let i=r;for(let r=0;r<e.variants.length;r++){let o=e.variants[r];if(!U(t,n,o.name))continue;let c=`${a}.${o.name}`,l=K(i,o.name,c);l!==void 0&&(s??=Je(),Xe(s,r,Q(l,o,c)))}U(t,n,`className`)&&(c=K(i,`className`,`${a}.className`))}let l=Je(),u=$(l,0,e.baseFragmentsByPart[t]);for(let r=0;r<e.variants.length;r++){let i=ot(n,s,r);if(i==null)continue;let a=e.variants[r].choices[i];a!==void 0&&(u=$(l,u,a.fragmentsByPart[t]))}for(let r of e.compoundsByPart[t]??[])st(r,n,s)&&(u=$(l,u,r.fragmentsByPart[t]));c!==void 0&&(Xe(l,u,c),u++),l.length=u;let d=Reflect.apply(i,void 0,l);if(typeof d!=`string`)throw W(o,`merger must return a primitive string`);return d}function lt(e,t){return e.partNames.length===0?(n=>ct(e,0,e.defaultStates,n,t,B,`recipe result`)):(n=>{let r=at(n,e),i=Object.create(null);for(let n=0;n<e.partNames.length;n++){let a=e.partNames[n];i[a]=i=>ct(e,n,r,i,t,`style props.${a}`,`style result.${a}`)}return i})}function ut(e){let t=G(e,R);for(let e of t)if(e!==`merge`)throw W(R,`unknown field ${JSON.stringify(e)}`);if(!t.includes(`merge`))throw W(z,ze);let n=K(e,`merge`,z);if(typeof n!=`function`)throw W(z,`expected a callable merger`);let r=n,i=new WeakMap;return(e=>{let t=it(e,i),n=lt(t,r);return i.set(n,t),n})}export{_ as MERGE_OPAQUE,v as MergerProtocolError,ut as createDefiner,Ie as createMerger};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teacss/classes",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "TeaCSS class composition — typed recipes, nested class-value joining, and semantic conflict resolution.",
|
|
5
5
|
"homepage": "https://css.teasim.com",
|
|
6
6
|
"funding": "https://github.com/sponsors/billgo",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dev": "tsdown --watch"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@teacss/core": "0.3.
|
|
25
|
+
"@teacss/core": "0.3.1"
|
|
26
26
|
},
|
|
27
27
|
"engines": {
|
|
28
28
|
"node": ">=22.12.0"
|