From 93dbbd2f245565e228c30970cffc6dcf60459f93 Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Mon, 30 Mar 2026 15:11:36 +0300 Subject: [PATCH] Clean up JSX renderer lint config --- oxlint.json | 2 +- packages/core/src/render/render-jsx.ts | 67 -------------------------- 2 files changed, 1 insertion(+), 68 deletions(-) delete mode 100644 packages/core/src/render/render-jsx.ts diff --git a/oxlint.json b/oxlint.json index 2b2693bce..4840cbb50 100644 --- a/oxlint.json +++ b/oxlint.json @@ -150,7 +150,7 @@ }, { "files": [ - "**/render/render-jsx.ts" + "**/render/render.ts" ], "rules": { "typescript/no-implied-eval": "off" diff --git a/packages/core/src/render/render-jsx.ts b/packages/core/src/render/render-jsx.ts deleted file mode 100644 index a5bd1670f..000000000 --- a/packages/core/src/render/render-jsx.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { transform } from 'sucrase' - -import * as React from './mini-react' -import { renderTree, type RenderResult } from './renderer' -import { resolveToTree, type TreeNode } from './tree' - -import type { SceneGraph } from '../scene-graph' - -/** - * Build a component function from a JSX string using sucrase. - * Works in both Node/Bun and the browser (no native bindings). - */ -export function buildComponent(jsxString: string): () => unknown { - const code = ` - const __h = React.createElement - const Frame = 'frame', Text = 'text', Rectangle = 'rectangle', Ellipse = 'ellipse' - const Line = 'line', Star = 'star', Polygon = 'polygon', Vector = 'vector' - const Group = 'group', Section = 'section', View = 'frame', Rect = 'rectangle' - const Icon = 'icon' - return function Component() { return ${jsxString.trim()} } - ` - - const result = transform(code, { - transforms: ['typescript', 'jsx'], - jsxPragma: '__h', - production: true - }) - - return new Function('React', result.code)(React) as () => unknown -} - -interface RenderJSXOptions { - x?: number - y?: number - parentId?: string -} - -/** - * Render a JSX string into the scene graph. - * Works in both Node/Bun and the browser. - */ -export async function renderJSX( - graph: SceneGraph, - jsxString: string, - options?: RenderJSXOptions -): Promise { - const Component = buildComponent(jsxString) - const element = React.createElement(Component, null) - const tree = resolveToTree(element) - - if (!tree) { - throw new Error('JSX must return a Figma element (Frame, Text, etc)') - } - - return renderTree(graph, tree, options) -} - -/** - * Render a pre-built TreeNode into the scene graph. - */ -export async function renderTreeNode( - graph: SceneGraph, - tree: TreeNode, - options?: RenderJSXOptions -): Promise { - return renderTree(graph, tree, options) -}