import { IRScene } from '@retikz/core'; import { ReactNode } from 'react'; import { ScopeStyleProps, EmbeddableContributionRecord, EmbeddableTier2Adapter } from '../protocol'; /** * 拣出真正携带样式指令的根样式字段 * @description 在 `pickDefined`(仅取 `!== undefined`)基础上,再剔除**空对象的四通道 default** * (`nodeDefault={{}}` / `pathDefault={{}}` 等)——空 default 不携带任何样式指令,留着只会让 `` * 无谓地包一层空合成 ``、改变 IR / Scene 拓扑却无视觉差异(避免无谓的空 scope)。 * 标量通道的 falsy-但-defined 值(`strokeWidth={0}` / `opacity={0}`)是有意义的样式、保留 */ export declare const pickScopeStyle: (style: ScopeStyleProps) => Partial; /** * 按需把 children 包进合成根 `` 承载全图级联默认样式(`` 顶层样式 props 的落地) * @description 至少一个字段真正携带样式指令时才包一层合成 ``(字段经 `pickScopeStyle` 透传); * 全缺省 / 仅空 default 时原样返回 children,保持 IR 形态与改动前逐字段一致(round-trip 稳定、不引入空 scope)。 * 合成 scope 经 buildIR 产出标准 IRScope 节点,走既有 cascade,行为与用户手写 `` 完全一致。 * 用 createElement 而非 JSX 以留在非组件模块(避免 react-refresh 报「组件文件混出函数」) */ export declare const wrapRootScope: (children: ReactNode, style: ScopeStyleProps) => ReactNode; /** * buildIR + 收集可嵌入 Tier2 贡献(Layout 用);公开 buildIR 丢弃 contributions、签名不变 * @description 在递归扫描期透传共享累加上下文,可嵌入子组件经 adapter 贡献 IR 节点同时把 datasets / composites 工厂平铺收集到 contributions */ export declare const buildIRWithContributions: (children: ReactNode, embeddables?: ReadonlyArray) => { ir: IRScene; contributions: Array; }; /** * 把 React DSL children 同步翻译为 JSON IR * @description 纯函数,不依赖 effect/state;适合在编辑器、持久化、服务端渲染或测试场景中复用 JSX 输入 */ export declare const buildIR: (children: ReactNode) => IRScene; //# sourceMappingURL=builder.d.ts.map