[fabric/core] Add variantConstructor utility for tagged variants
This commit is contained in:
parent
65432d1c54
commit
ab41ff028d
14
packages/fabric/core/variant/constructor.ts
Normal file
14
packages/fabric/core/variant/constructor.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import type { TaggedVariant, VariantTag } from "./variant.ts";
|
||||||
|
|
||||||
|
export function variantConstructor<
|
||||||
|
const T extends TaggedVariant<string>,
|
||||||
|
>(
|
||||||
|
tag: T[VariantTag],
|
||||||
|
) {
|
||||||
|
return <TOpts extends Omit<T, VariantTag>>(options: TOpts) => {
|
||||||
|
return {
|
||||||
|
_tag: tag,
|
||||||
|
...options,
|
||||||
|
} as const;
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -1,2 +1,3 @@
|
|||||||
|
export * from "./constructor.ts";
|
||||||
export * from "./match.ts";
|
export * from "./match.ts";
|
||||||
export * from "./variant.ts";
|
export * from "./variant.ts";
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user