Compare commits

..

2 Commits

Author SHA1 Message Date
a1578a770a 0.0.3 2026-02-12 07:45:29 -08:00
30db3822d6 don't regenerate root every render 2026-02-12 07:45:15 -08:00
2 changed files with 8 additions and 4 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "@because/forge", "name": "@because/forge",
"version": "0.0.2", "version": "0.0.3",
"type": "module", "type": "module",
"main": "src/index.tsx", "main": "src/index.tsx",
"module": "src/index.tsx", "module": "src/index.tsx",

View File

@ -286,14 +286,18 @@ export function define(nameOrDef: string | TagDef, defIfNamed?: TagDef) {
if (styles[`.${name}`]) throw `${name} is already defined! Must use unique names.` if (styles[`.${name}`]) throw `${name} is already defined! Must use unique names.`
registerStyles(name, def) registerStyles(name, def)
const currentProps: Record<string, any> = {}
const Root = makeComponent(name, def, currentProps)
return (props: Record<string, any>) => { return (props: Record<string, any>) => {
const parts: Record<string, Function> = {} for (const key in currentProps) delete currentProps[key]
Object.assign(currentProps, props)
const parts: Record<string, Function> = { Root }
for (const [part] of Object.entries(def.parts ?? {})) for (const [part] of Object.entries(def.parts ?? {}))
parts[part] = makeComponent(name, def, props, part) parts[part] = makeComponent(name, def, props, part)
parts.Root = makeComponent(name, def, props) return def.render?.({ props, parts }) ?? <Root {...props}>{props.children}</Root>
return def.render?.({ props, parts }) ?? <parts.Root {...props}>{props.children}</parts.Root>
} }
} }