From cb62aa4fe74ed211e4eaf98bb1b4ead69f912bdd Mon Sep 17 00:00:00 2001 From: andylovescode Date: Sat, 23 Aug 2025 18:55:41 -0700 Subject: [PATCH] Core: Improve Intrinsic implementation API --- packages/vortex-cli/src/corebind/index.ts | 4 ++-- packages/vortex-core/src/intrinsic.ts | 17 +++++++---------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/packages/vortex-cli/src/corebind/index.ts b/packages/vortex-cli/src/corebind/index.ts index 089f13b..9e39f8a 100644 --- a/packages/vortex-cli/src/corebind/index.ts +++ b/packages/vortex-cli/src/corebind/index.ts @@ -66,10 +66,10 @@ export function cli({ onUpdate }: { onUpdate?(): void; } = {}): Renderer { + Frame.implement((props) => { return jsx("box", props); }), - implementIntrinsic(TextIntrinsic, (props) => { + TextIntrinsic.implement((props) => { return jsx("text", props); }) ] diff --git a/packages/vortex-core/src/intrinsic.ts b/packages/vortex-core/src/intrinsic.ts index 84973a7..970be0a 100644 --- a/packages/vortex-core/src/intrinsic.ts +++ b/packages/vortex-core/src/intrinsic.ts @@ -4,6 +4,7 @@ export const IntrinsicKey = "~vortex:intrinsic"; export type IntrinsicComponent = { "~vortex:intrinsic": Id; + implement(impl: (args: Args) => JSXNode): IntrinsicImplementation; } & ((args: Args) => JSXNode); export function intrinsic(id: Id) { @@ -14,6 +15,12 @@ export function intrinsic(id: Id) { }) as unknown as IntrinsicComponent; impl[IntrinsicKey] = id; + impl.implement = (implementation) => { + return { + intrinsic: impl, + implementation, + }; + }; return impl; } @@ -25,13 +32,3 @@ export type IntrinsicImplementation< intrinsic: IntrinsicComponent; implementation: (args: Args) => JSXNode; }; - -export function implementIntrinsic( - intrinsic: IntrinsicComponent, - implementation: (args: Args) => JSXNode, -): IntrinsicImplementation { - return { - intrinsic, - implementation, - }; -}