@pebble-software/bonsai 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +31 -3
  2. package/dist/ast.js +1 -1
  3. package/dist/chunks/{builder.meta-WpXc5VBB.js → builder.meta-B7Y9M7Ab.js} +128 -122
  4. package/dist/chunks/builder.meta-B7Y9M7Ab.js.map +1 -0
  5. package/dist/chunks/create-renderer-C4nV9RV6.js +282 -0
  6. package/dist/chunks/create-renderer-C4nV9RV6.js.map +1 -0
  7. package/dist/chunks/index-CD5pykpk.js +367 -0
  8. package/dist/chunks/index-CD5pykpk.js.map +1 -0
  9. package/dist/chunks/{render-shared-Ci28BpkI.js → render-shared-Cwb527d4.js} +487 -445
  10. package/dist/chunks/render-shared-Cwb527d4.js.map +1 -0
  11. package/dist/components/core/render-shared.d.ts +25 -15
  12. package/dist/components/core/render-tree-client.d.ts +1 -1
  13. package/dist/components/ui/accordion.d.ts +1 -1
  14. package/dist/core.d.ts +1 -1
  15. package/dist/core.js +3 -3
  16. package/dist/core.js.map +1 -1
  17. package/dist/index.css +8 -0
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +14 -10
  20. package/dist/index.js.map +1 -1
  21. package/dist/lib/ast/evaluator.d.ts +1 -1
  22. package/dist/lib/ast/helpers.d.ts +3 -1
  23. package/dist/lib/ast/index.d.ts +1 -1
  24. package/dist/lib/ast/types.d.ts +4 -1
  25. package/dist/lib/ast/utils.d.ts +1 -1
  26. package/dist/lib/registry/json-schema-to-zod.d.ts +2 -2
  27. package/dist/lib/renderer/compile-template.d.ts +10 -2
  28. package/dist/lib/renderer/safe-props.d.ts +4 -0
  29. package/dist/library/schemas/src/bonsai.schema.d.ts +1 -2
  30. package/dist/presets/calendar.js.map +1 -1
  31. package/dist/presets/signature.js +1 -1
  32. package/dist/presets/signature.js.map +1 -1
  33. package/dist/renderer/core-registry.d.ts +1 -1
  34. package/dist/schemas.js +1 -1
  35. package/dist/styles/css/theme.css +8 -0
  36. package/dist/types.d.ts +8 -1
  37. package/package.json +7 -12
  38. package/dist/chunks/builder.meta-WpXc5VBB.js.map +0 -1
  39. package/dist/chunks/create-renderer-DHneTPd-.js +0 -280
  40. package/dist/chunks/create-renderer-DHneTPd-.js.map +0 -1
  41. package/dist/chunks/index-DzpRdatr.js +0 -359
  42. package/dist/chunks/index-DzpRdatr.js.map +0 -1
  43. package/dist/chunks/render-shared-Ci28BpkI.js.map +0 -1
  44. package/dist/components/ui/alert-dialog.d.ts +0 -23
  45. package/dist/components/ui/breadcrumb.d.ts +0 -10
  46. package/dist/components/ui/combobox.d.ts +0 -31
  47. package/dist/components/ui/command.d.ts +0 -23
  48. package/dist/components/ui/dialog.d.ts +0 -23
  49. package/dist/components/ui/drawer.d.ts +0 -22
  50. package/dist/components/ui/dropdown-menu.d.ts +0 -29
  51. package/dist/components/ui/form.d.ts +0 -24
  52. package/dist/components/ui/popover.d.ts +0 -9
  53. package/dist/components/ui/scroll-area.d.ts +0 -13
  54. package/dist/components/ui/sidebar.d.ts +0 -70
  55. package/dist/components/ui/toast.d.ts +0 -46
  56. package/dist/components/ui/tooltip.d.ts +0 -15
  57. package/dist/hooks/haptics.d.ts +0 -8
  58. package/dist/hooks/use-mobile.d.ts +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.meta-WpXc5VBB.js","sources":["../../../../library/schemas/src/bonsai.schema.ts","../../../../library/schemas/src/builder.meta.ts"],"sourcesContent":["import { COMPONENT } from \"@bonsai/constants\";\nimport { z } from \"zod\";\n\nconst CoreArgs = z.object({\n id: z.string().optional().meta({ description: \"Unique identifier for the element\" }),\n className: z\n .string()\n .optional()\n .meta({ description: \"CSS classes to apply to the element\" }),\n});\n\nconst AArgs = CoreArgs.extend({\n href: z\n .string({ error: \"Link destination (href) is required\" })\n .min(1, { message: \"Link destination (href) cannot be empty\" }),\n});\n\nconst HArgs = CoreArgs.extend({\n variant: z\n .enum([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"], {\n error:\n \"Invalid heading variant. Must be one of: h1, h2, h3, h4, h5, or h6\",\n })\n .optional()\n .meta({ description: \"Heading level variant (h1-h6)\" }),\n as: z\n .enum([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"], {\n error:\n \"Invalid heading element type. Must be one of: h1, h2, h3, h4, h5, or h6\",\n })\n .optional()\n .meta({ description: \"Render as a different heading element\" }),\n}).optional();\n\nconst PArgs = CoreArgs.extend({\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"], {\n error: \"Invalid paragraph size. Must be one of: xs, sm, md, lg, or xl\",\n })\n .optional()\n .meta({ description: \"Paragraph text size\" }),\n variant: z\n .enum([\"default\", \"muted\"])\n .optional()\n .meta({ description: \"Paragraph style variant\" }),\n as: z\n .enum([\"p\", \"div\", \"span\"])\n .optional()\n .meta({ description: \"Render as a different element\" }),\n}).optional();\n\nconst OLArgs = CoreArgs.optional();\nconst ULArgs = CoreArgs.optional();\nconst LIArgs = CoreArgs.optional();\n\nconst DivArgs = CoreArgs.optional();\n\nconst SpanArgs = CoreArgs.optional();\n\nconst SeparatorArgs = CoreArgs.optional();\n\nconst AlertArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"success\", \"warning\", \"destructive\"], {\n error: \"Invalid alert variant. Must be one of: default, success, warning, or destructive\",\n })\n .optional()\n .meta({ description: \"Alert style variant\" }),\n size: z\n .enum([\"default\", \"sm\", \"lg\"])\n .optional()\n .meta({ description: \"Alert size\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Alert shadow elevation\" }),\n}).optional();\n\nconst BadgeArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"secondary\", \"destructive\", \"outline\", \"ghost\"], {\n error: \"Invalid badge variant. Must be one of: default, secondary, destructive, outline, or ghost\",\n })\n .optional()\n .meta({ description: \"Badge style variant\" }),\n size: z\n .enum([\"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Badge size\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Badge shadow elevation\" }),\n extrude: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Badge extrude elevation\" }),\n}).optional();\n\nconst ButtonArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"secondary\", \"outline\", \"destructive\", \"warning\", \"ghost\"], {\n error:\n \"Invalid button variant. Must be one of: default, secondary, outline, destructive, warning, or ghost\",\n })\n .optional()\n .meta({ description: \"Button style variant\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"], {\n error: \"Invalid button size. Must be one of: xs, sm, md, or lg\",\n })\n .optional()\n .meta({ description: \"Button size\" }),\n icon: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Icon-only button size\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Button shadow elevation\" }),\n extrude: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Button extrude elevation\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the button is disabled\" }),\n loading: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether to show a loading spinner\" }),\n type: z\n .enum([\"button\", \"submit\"], {\n error: \"Invalid button type. Must be either 'button' or 'submit'\",\n })\n .optional()\n .meta({ description: \"Button type attribute\" }),\n}).optional();\n\nconst CardArgs = CoreArgs.extend({\n size: z\n .enum([\"sm\", \"md\"])\n .optional()\n .meta({ description: \"Card size\" }),\n raised: z\n .enum([\"none\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Card shadow elevation\" }),\n}).optional();\n\nconst CardHeaderArgs = CoreArgs.optional();\nconst CardTitleArgs = CoreArgs.optional();\nconst CardDescriptionArgs = CoreArgs.optional();\nconst CardContentArgs = CoreArgs.optional();\nconst CardFooterArgs = CoreArgs.optional();\nconst CardActionArgs = CoreArgs.optional();\nconst CardIconArgs = CoreArgs.optional();\n\nconst CheckboxArgs = CoreArgs.extend({\n checked: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Checkbox checked state\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the checkbox is disabled\" }),\n required: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the checkbox must be checked\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Checkbox size\" }),\n}).strict();\n\nconst ImageArgs = CoreArgs.extend({\n src: z.union(\n [\n z.url({ error: \"Image source (src) must be a valid URL\" }),\n z.string().min(1, { message: \"Image source (src) cannot be empty\" }),\n ],\n {\n error: \"Image source (src) is required\",\n },\n ),\n alt: z\n .string()\n .optional()\n .default(\"unknown image url\")\n .meta({ description: \"Alternative text for the image\" }),\n}).strict();\n\nconst OTPArgs = CoreArgs.extend({\n value: z\n .union([z.string(), z.number()], {\n error: \"OTP value is required\",\n })\n .meta({ description: \"Current OTP value\" }),\n placeholder: z\n .string()\n .optional()\n .meta({ description: \"Placeholder text for the OTP input\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the OTP input is disabled\" }),\n containerClassName: z\n .string()\n .optional()\n .meta({ description: \"Custom CSS class for the OTP input container\" }),\n}).strict();\n\nconst InputArgs = CoreArgs.extend({\n type: z\n .enum([\"text\", \"email\", \"password\", \"number\"], {\n error: \"Invalid input type. Must be one of: text, email, password, or number\",\n })\n .optional()\n .meta({ description: \"Input type; a number input stores a number\" }),\n value: z\n .union([z.string(), z.number()], {\n error: \"Input value is required\",\n })\n .meta({ description: \"Current input value\" }),\n placeholder: z\n .string()\n .optional()\n .meta({ description: \"Placeholder text shown when empty\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the input is disabled\" }),\n}).strict();\n\nconst LabelArgs = CoreArgs.extend({\n htmlFor: z\n .string()\n .min(1, {\n message:\n \"Label 'for' attribute is required and must reference an input ID\",\n })\n .meta({ description: \"ID of the associated input element\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Label text size\" }),\n variant: z\n .enum([\"default\", \"underline\", \"destructive\"])\n .optional()\n .meta({ description: \"Label style variant\" }),\n}).strict();\n\nconst SwitchArgs = CoreArgs.extend({\n checked: z\n .union([z.string(), z.boolean()], {\n error: \"Switch checked state is required\",\n })\n .meta({ description: \"Current switch state\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the switch is disabled\" }),\n required: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the switch must be turned on\" }),\n size: z\n .enum([\"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Switch size\" }),\n rounded: z\n .enum([\"none\", \"sm\", \"md\", \"lg\", \"full\"])\n .optional()\n .meta({ description: \"Switch border radius\" }),\n}).strict();\n\nconst TextareaArgs = CoreArgs.extend({\n value: z\n .string({ error: \"Textarea value is required\" })\n .meta({ description: \"Current textarea content\" }),\n placeholder: z\n .string()\n .optional()\n .meta({ description: \"Placeholder text shown when empty\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the textarea is disabled\" }),\n autosize: z\n .boolean()\n .optional()\n .meta({ description: \"Whether the textarea auto-resizes to fit content\" }),\n rows: z\n .number()\n .min(1, { message: \"Minimum number of rows is 1\" })\n .max(100, { message: \"Maximum number of rows is 100\" })\n .optional()\n .meta({ description: \"Number of visible text lines\" }),\n minLength: z\n .number()\n .min(0, { message: \"Minimum character length cannot be negative\" })\n .optional()\n .meta({ description: \"Minimum number of characters allowed\" }),\n maxLength: z\n .number()\n .max(10000, { message: \"Maximum character length cannot exceed 10,000\" })\n .optional()\n .meta({ description: \"Maximum number of characters allowed\" }),\n}).strict();\n\nconst InputGroupArgs = CoreArgs.optional();\n\nconst InputGroupTextArgs = CoreArgs.optional();\n\nconst InputGroupAddonArgs = CoreArgs.extend({\n align: z.enum([\"inline-start\", \"inline-end\", \"block-start\", \"block-end\"])\n .optional()\n .meta({ description: \"Alignment of the addon within the input group\" }),\n}).optional();\n\nconst InputGroupInputArgs = CoreArgs.extend({\n value: z.union([z.string(), z.number()], {\n error: \"Input value is required\",\n }).meta({ description: \"Current input value\" }),\n placeholder: z.string().optional().meta({ description: \"Placeholder text shown when empty\" }),\n disabled: z.union([z.string(), z.boolean()]).optional().meta({ description: \"Whether the input is disabled\" }),\n}).strict();\n\nconst InputGroupButtonArgs = CoreArgs.extend({\n variant: z.enum([\"default\", \"secondary\", \"outline\", \"destructive\", \"warning\", \"ghost\"]).optional(),\n size: z.enum([\"xs\", \"sm\", \"md\", \"lg\"]).optional(),\n}).optional();\n\nconst InputGroupTextareaArgs = CoreArgs.extend({\n value: z.string({ error: \"Textarea value is required\" }).meta({ description: \"Current textarea content\" }),\n placeholder: z.string().optional(),\n disabled: z.union([z.string(), z.boolean()]).optional(),\n}).strict();\n\nconst SignatureArgs = CoreArgs.extend({\n value: z\n .string()\n .nullable()\n .meta({ description: \"Current signature value (base64 or null if empty)\" }),\n canvasClassname: z\n .string()\n .optional()\n .meta({ description: \"Custom CSS class for the signature canvas\" }),\n imageType: z\n .enum([\"image/png\", \"image/jpeg\", \"image/webp\"])\n .optional()\n .meta({ description: \"Image format for the exported signature\" }),\n}).strict();\n\nconst CalendarArgs = CoreArgs.extend({\n selected: z\n .union([z.string(), z.date(), z.array(z.date())], {\n error:\n \"Invalid calendar selection. Must be a date string, Date object, or array of dates\",\n })\n .optional()\n .meta({ description: \"Currently selected date(s)\" }),\n buttonVariant: z\n .enum([\"default\", \"secondary\", \"outline\", \"destructive\", \"warning\", \"ghost\"])\n .optional()\n .meta({ description: \"Variant for calendar navigation buttons\" }),\n hideWeekends: z\n .boolean()\n .optional()\n .meta({ description: \"Whether to hide Saturday and Sunday columns\" }),\n}).optional();\n\nconst TableArgs = CoreArgs.optional();\nconst TableHeaderArgs = CoreArgs.optional();\nconst TableBodyArgs = CoreArgs.optional();\nconst TableFooterArgs = CoreArgs.optional();\nconst TableHeadArgs = CoreArgs.optional();\nconst TableRowArgs = CoreArgs.optional();\nconst TableCellArgs = CoreArgs.optional();\nconst TableCaptionArgs = CoreArgs.optional();\n\nconst AccordionArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"contained\", \"separated\"])\n .optional()\n .meta({ description: \"Accordion style variant\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Accordion shadow elevation\" }),\n extrude: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Accordion extrude elevation\" }),\n}).optional();\n\nconst AccordionItemArgs = CoreArgs.optional();\n\nconst AccordionTriggerArgs = CoreArgs.extend({\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the accordion trigger is disabled\" }),\n icon: z\n .any()\n .optional()\n .meta({ description: \"Custom icon component for the trigger\" }),\n}).optional();\n\nconst AccordionContentArgs = CoreArgs.optional();\n\nconst AvatarArgs = CoreArgs.extend({\n src: z\n .string()\n .optional()\n .meta({ description: \"Image source URL\" }),\n alt: z\n .string()\n .optional()\n .meta({ description: \"Alternative text for the avatar image\" }),\n size: z\n .enum([\"full\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Avatar size\" }),\n rounded: z\n .enum([\"none\", \"sm\", \"md\", \"lg\", \"full\"])\n .optional()\n .meta({ description: \"Avatar border radius\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Avatar shadow elevation\" }),\n fallback: z\n .string()\n .optional()\n .meta({ description: \"Fallback text or element when image fails to load\" }),\n badge: z\n .any()\n .optional()\n .meta({ description: \"Badge element to overlay on the avatar\" }),\n}).optional();\n\nconst CollapsibleArgs = CoreArgs.optional();\nconst CollapsibleTriggerArgs = CoreArgs.optional();\nconst CollapsibleContentArgs = CoreArgs.optional();\n\nconst LoaderArgs = CoreArgs.extend({\n variant: z\n .enum([\"spinner\", \"ping\"])\n .optional()\n .meta({ description: \"Loader animation variant\" }),\n fill: z\n .enum([\"default\", \"destructive\", \"warning\", \"pending\"])\n .optional()\n .meta({ description: \"Loader fill color\" }),\n size: z\n .enum([\"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Loader size\" }),\n icon: z\n .any()\n .optional()\n .meta({ description: \"Custom spinner icon component\" }),\n pingIcon: z\n .any()\n .optional()\n .meta({ description: \"Custom ping icon component\" }),\n iconProps: z\n .any()\n .optional()\n .meta({ description: \"Props to pass to the icon components\" }),\n}).optional();\n\nconst ProgressArgs = CoreArgs.extend({\n mode: z\n .enum([\"single\", \"multiple\"])\n .optional()\n .meta({ description: \"Progress display mode\" }),\n value: z\n .union([\n z.number().nullable(),\n z.array(\n z.object({\n name: z.string().optional(),\n value: z.number(),\n }),\n ),\n ])\n .optional()\n .meta({ description: \"Current progress value(s)\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Progress size\" }),\n raised: z\n .enum([\"default\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Progress shadow elevation\" }),\n stacked: z\n .enum([\"default\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Progress stacked spacing\" }),\n}).optional();\n\nconst SkeletonArgs = CoreArgs.extend({\n variant: z\n .enum([\"circle\", \"square\", \"default\", \"text\"])\n .optional()\n .meta({ description: \"Skeleton shape variant\" }),\n animate: z\n .boolean()\n .optional()\n .meta({ description: \"Whether to animate the skeleton\" }),\n}).optional();\n\nconst Node: z.ZodType<any> = z.lazy(() => z.union([z.string(), ComponentNode]));\n\nconst CoreNode = z.object({\n children: z\n .array(Node)\n .optional()\n .meta({ description: \"Child nodes to render inside this element\" }),\n});\n\nconst DivNode = CoreNode.extend({\n type: z.literal(COMPONENT.DIV),\n args: DivArgs,\n}).meta({ description: \"Container div element for grouping content\" });\n\nconst ANode = CoreNode.extend({\n type: z.literal(COMPONENT.A),\n args: AArgs,\n}).meta({ description: \"Anchor/link element\" });\n\nconst HNode = CoreNode.extend({\n type: z.literal(COMPONENT.H),\n args: HArgs,\n}).meta({ description: \"Heading element (h1-h6)\" });\n\nconst PNode = CoreNode.extend({\n type: z.literal(COMPONENT.P),\n args: PArgs,\n}).meta({ description: \"Paragraph text element\" });\n\nconst OLNode = CoreNode.extend({\n type: z.literal(COMPONENT.OL),\n args: OLArgs,\n}).meta({ description: \"Ordered list element\" });\n\nconst ULNode = CoreNode.extend({\n type: z.literal(COMPONENT.UL),\n args: ULArgs,\n}).meta({ description: \"Unordered list element\" });\n\nconst LINode = CoreNode.extend({\n type: z.literal(COMPONENT.LI),\n args: LIArgs,\n}).meta({ description: \"List item element\" });\n\nconst SpanNode = CoreNode.extend({\n type: z.literal(COMPONENT.SPAN),\n args: SpanArgs,\n}).meta({ description: \"Inline span element\" });\n\nconst SeparatorNode = CoreNode.extend({\n type: z.literal(COMPONENT.SEPARATOR),\n args: SeparatorArgs,\n}).meta({ description: \"Horizontal separator / divider element\" });\n\nconst AlertNode = CoreNode.extend({\n type: z.literal(COMPONENT.ALERT),\n args: AlertArgs,\n}).meta({ description: \"Alert message box\" });\n\nconst BadgeNode = CoreNode.extend({\n type: z.literal(COMPONENT.BADGE),\n args: BadgeArgs,\n}).meta({ description: \"Badge/status indicator\" });\n\nconst ButtonNode = CoreNode.extend({\n type: z.literal(COMPONENT.BUTTON),\n args: ButtonArgs,\n}).meta({ description: \"Clickable button element\" });\n\nconst CardNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD),\n args: CardArgs,\n}).meta({ description: \"Card container element\" });\n\nconst CheckboxNode = CoreNode.extend({\n type: z.literal(COMPONENT.CHECKBOX),\n args: CheckboxArgs,\n}).meta({ description: \"Checkbox input element\" });\n\nconst ImageNode = CoreNode.extend({\n type: z.literal(COMPONENT.IMAGE),\n args: ImageArgs,\n}).meta({ description: \"Image element\" });\n\nconst OTPNode = CoreNode.extend({\n type: z.literal(COMPONENT.OTP),\n args: OTPArgs,\n}).meta({ description: \"One-time password (OTP) input\" });\n\nconst InputNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT),\n args: InputArgs,\n}).meta({ description: \"Text input element\" });\n\nconst LabelNode = CoreNode.extend({\n type: z.literal(COMPONENT.LABEL),\n args: LabelArgs,\n}).meta({ description: \"Form label element\" });\n\nconst SwitchNode = CoreNode.extend({\n type: z.literal(COMPONENT.SWITCH),\n args: SwitchArgs,\n}).meta({ description: \"Toggle switch element\" });\n\nconst TextareaNode = CoreNode.extend({\n type: z.literal(COMPONENT.TEXTAREA),\n args: TextareaArgs,\n}).meta({ description: \"Multi-line text input\" });\n\nconst SignatureNode = CoreNode.extend({\n type: z.literal(COMPONENT.SIGNATURE),\n args: SignatureArgs,\n}).meta({ description: \"Signature pad input\" });\n\nconst CalendarNode = CoreNode.extend({\n type: z.literal(COMPONENT.CALENDAR),\n args: CalendarArgs,\n}).meta({ description: \"Date picker calendar\" });\n\nconst CardHeaderNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_HEADER),\n args: CardHeaderArgs,\n}).meta({ description: \"Card header container\" });\n\nconst CardTitleNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_TITLE),\n args: CardTitleArgs,\n}).meta({ description: \"Card title element\" });\n\nconst CardDescriptionNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_DESCRIPTION),\n args: CardDescriptionArgs,\n}).meta({ description: \"Card description element\" });\n\nconst CardContentNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_CONTENT),\n args: CardContentArgs,\n}).meta({ description: \"Card content body\" });\n\nconst CardFooterNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_FOOTER),\n args: CardFooterArgs,\n}).meta({ description: \"Card footer container\" });\n\nconst CardActionNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_ACTION),\n args: CardActionArgs,\n}).meta({ description: \"Card action slot\" });\n\nconst CardIconNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_ICON),\n args: CardIconArgs,\n}).meta({ description: \"Card icon slot\" });\n\nconst TableNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE),\n args: TableArgs,\n}).meta({ description: \"Table container\" });\n\nconst TableHeaderNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_HEADER),\n args: TableHeaderArgs,\n}).meta({ description: \"Table header section\" });\n\nconst TableBodyNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_BODY),\n args: TableBodyArgs,\n}).meta({ description: \"Table body section\" });\n\nconst TableFooterNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_FOOTER),\n args: TableFooterArgs,\n}).meta({ description: \"Table footer section\" });\n\nconst TableHeadNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_HEAD),\n args: TableHeadArgs,\n}).meta({ description: \"Table header cell\" });\n\nconst TableRowNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_ROW),\n args: TableRowArgs,\n}).meta({ description: \"Table row\" });\n\nconst TableCellNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_CELL),\n args: TableCellArgs,\n}).meta({ description: \"Table data cell\" });\n\nconst TableCaptionNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_CAPTION),\n args: TableCaptionArgs,\n}).meta({ description: \"Table caption\" });\n\nconst AccordionNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION),\n args: AccordionArgs,\n}).meta({ description: \"Accordion container\" });\n\nconst AccordionItemNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION_ITEM),\n args: AccordionItemArgs,\n}).meta({ description: \"Accordion item\" });\n\nconst AccordionTriggerNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION_TRIGGER),\n args: AccordionTriggerArgs,\n}).meta({ description: \"Accordion trigger\" });\n\nconst AccordionContentNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION_CONTENT),\n args: AccordionContentArgs,\n}).meta({ description: \"Accordion content panel\" });\n\nconst AvatarNode = CoreNode.extend({\n type: z.literal(COMPONENT.AVATAR),\n args: AvatarArgs,\n}).meta({ description: \"Avatar image or fallback\" });\n\nconst CollapsibleNode = CoreNode.extend({\n type: z.literal(COMPONENT.COLLAPSIBLE),\n args: CollapsibleArgs,\n}).meta({ description: \"Collapsible container\" });\n\nconst CollapsibleTriggerNode = CoreNode.extend({\n type: z.literal(COMPONENT.COLLAPSIBLE_TRIGGER),\n args: CollapsibleTriggerArgs,\n}).meta({ description: \"Collapsible trigger\" });\n\nconst CollapsibleContentNode = CoreNode.extend({\n type: z.literal(COMPONENT.COLLAPSIBLE_CONTENT),\n args: CollapsibleContentArgs,\n}).meta({ description: \"Collapsible content panel\" });\n\nconst LoaderNode = CoreNode.extend({\n type: z.literal(COMPONENT.LOADER),\n args: LoaderArgs,\n}).meta({ description: \"Loading spinner indicator\" });\n\nconst ProgressNode = CoreNode.extend({\n type: z.literal(COMPONENT.PROGRESS),\n args: ProgressArgs,\n}).meta({ description: \"Progress bar indicator\" });\n\nconst SkeletonNode = CoreNode.extend({\n type: z.literal(COMPONENT.SKELETON),\n args: SkeletonArgs,\n}).meta({ description: \"Skeleton loading placeholder\" });\n\nconst InputGroupNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP),\n args: InputGroupArgs,\n}).meta({ description: \"Input group container\" });\n\nconst InputGroupTextNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_TEXT),\n args: InputGroupTextArgs,\n}).meta({ description: \"Text element within input group\" });\n\nconst InputGroupAddonNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_ADDON),\n args: InputGroupAddonArgs,\n}).meta({ description: \"Addon container within input group\" });\n\nconst InputGroupInputNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_INPUT),\n args: InputGroupInputArgs,\n}).meta({ description: \"Input element within input group\" });\n\nconst InputGroupButtonNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_BUTTON),\n args: InputGroupButtonArgs,\n}).meta({ description: \"Button element within input group\" });\n\nconst InputGroupTextareaNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_TEXTAREA),\n args: InputGroupTextareaArgs,\n}).meta({ description: \"Textarea element within input group\" });\n\nconst EachArgs = z\n .object({\n items: z\n .string({ error: \"each.items is required\" })\n .min(1, { message: \"each.items cannot be empty\" })\n .meta({\n description:\n 'Binding path to the array to iterate, e.g. \"{{applicants}}\". Must be a plain path (not a computed/filtered expression) so each row maps back to a real store index for two-way binding.',\n }),\n as: z\n .string({ error: \"each.as is required\" })\n .min(1, { message: \"each.as cannot be empty\" })\n .meta({ description: \"Alias name bound to the current item, e.g. \\\"applicant\\\"\" }),\n index: z\n .string()\n .optional()\n .meta({ description: \"Alias name bound to the current numeric index\" }),\n key: z\n .string()\n .optional()\n .meta({\n description:\n 'Binding expression used as the React key per row, e.g. \"{{applicant.id}}\". Falls back to the row index when omitted.',\n }),\n })\n .strict();\n\nconst EachNode = CoreNode.extend({\n type: z.literal(COMPONENT.EACH),\n args: EachArgs,\n}).meta({ description: \"Repeats its children once per item in a bound array\" });\n\nconst IfArgs = z\n .object({\n condition: z\n .string({ error: \"if.condition is required\" })\n .min(1, { message: \"if.condition cannot be empty\" })\n .meta({ description: \"Binding expression; children render only when it evaluates truthy\" }),\n })\n .strict();\n\nconst IfNode = CoreNode.extend({\n type: z.literal(COMPONENT.IF),\n args: IfArgs,\n}).meta({ description: \"Conditionally renders its children based on a bound expression\" });\n\n// Extracts the `args` sub-schema and description back out of an already-built `*Node`\n// schema, so the registry-driven builder below can reuse every hand-written node\n// definition above without retyping its args schema or description.\nfunction argsOf(node: z.ZodType<any>): z.ZodType<any> {\n return (node as unknown as { shape: { args: z.ZodType<any> } }).shape.args;\n}\n\nfunction descriptionOf(node: z.ZodType<any>): string | undefined {\n return (node.meta() as { description?: string } | undefined)?.description;\n}\n\nexport interface TemplateSchemaComponent {\n argsSchema: z.ZodType<any>;\n description?: string;\n}\n\nexport interface GeneratedTemplateSchema {\n Node: z.ZodType<any>;\n ComponentNode: z.ZodDiscriminatedUnion<any>;\n}\n\n/**\n * Builds the same `CoreNode.extend({ type, args }).meta({ description })` shape used\n * above, from a registry's component list rather than a hand-written literal — the\n * union stops being static; it does not stop existing. See REGISTRY_SPIKE.md,\n * \"Schema strategy\".\n */\nexport function createTemplateSchema(\n components: Record<string, TemplateSchemaComponent>,\n): GeneratedTemplateSchema {\n if (Object.keys(components).length === 0) {\n throw new Error(\"createTemplateSchema: registry must declare at least one component\");\n }\n\n // Self-contained recursion (its own Node/CoreNode), not the module-level ones above —\n // those exist only so PEBBLE_COMPONENT_SCHEMAS can source args/descriptions from the\n // hand-written *Node consts. Reusing the module Node here would make `Config` a second,\n // structurally-identical-but-distinct lazy wrapper, which breaks zod-openapi's schema\n // dedup/naming (it stops emitting a named `BonsaiConfig` $ref and inlines it instead).\n let componentNode: z.ZodDiscriminatedUnion<any>;\n const localNode: z.ZodType<any> = z.lazy(() => z.union([z.string(), componentNode]));\n const localCoreNode = z.object({\n children: z\n .array(localNode)\n .optional()\n .meta({ description: \"Child nodes to render inside this element\" }),\n });\n\n const nodeSchemas = Object.entries(components).map(([type, { argsSchema, description }]) => {\n const node = localCoreNode.extend({\n type: z.literal(type),\n args: argsSchema,\n });\n return description ? node.meta({ description }) : node;\n });\n componentNode = z.discriminatedUnion(\n \"type\",\n nodeSchemas as [(typeof nodeSchemas)[number], ...(typeof nodeSchemas)[number][]],\n );\n return { Node: localNode, ComponentNode: componentNode };\n}\n\nexport const PEBBLE_COMPONENT_SCHEMAS: Record<string, TemplateSchemaComponent> = {\n [COMPONENT.DIV]: { argsSchema: argsOf(DivNode), description: descriptionOf(DivNode) },\n [COMPONENT.A]: { argsSchema: argsOf(ANode), description: descriptionOf(ANode) },\n [COMPONENT.H]: { argsSchema: argsOf(HNode), description: descriptionOf(HNode) },\n [COMPONENT.P]: { argsSchema: argsOf(PNode), description: descriptionOf(PNode) },\n [COMPONENT.OL]: { argsSchema: argsOf(OLNode), description: descriptionOf(OLNode) },\n [COMPONENT.UL]: { argsSchema: argsOf(ULNode), description: descriptionOf(ULNode) },\n [COMPONENT.LI]: { argsSchema: argsOf(LINode), description: descriptionOf(LINode) },\n [COMPONENT.SPAN]: { argsSchema: argsOf(SpanNode), description: descriptionOf(SpanNode) },\n [COMPONENT.SEPARATOR]: {\n argsSchema: argsOf(SeparatorNode),\n description: descriptionOf(SeparatorNode),\n },\n [COMPONENT.ALERT]: { argsSchema: argsOf(AlertNode), description: descriptionOf(AlertNode) },\n [COMPONENT.BADGE]: { argsSchema: argsOf(BadgeNode), description: descriptionOf(BadgeNode) },\n [COMPONENT.BUTTON]: { argsSchema: argsOf(ButtonNode), description: descriptionOf(ButtonNode) },\n [COMPONENT.CARD]: { argsSchema: argsOf(CardNode), description: descriptionOf(CardNode) },\n [COMPONENT.CARD_HEADER]: {\n argsSchema: argsOf(CardHeaderNode),\n description: descriptionOf(CardHeaderNode),\n },\n [COMPONENT.CARD_TITLE]: {\n argsSchema: argsOf(CardTitleNode),\n description: descriptionOf(CardTitleNode),\n },\n [COMPONENT.CARD_DESCRIPTION]: {\n argsSchema: argsOf(CardDescriptionNode),\n description: descriptionOf(CardDescriptionNode),\n },\n [COMPONENT.CARD_CONTENT]: {\n argsSchema: argsOf(CardContentNode),\n description: descriptionOf(CardContentNode),\n },\n [COMPONENT.CARD_FOOTER]: {\n argsSchema: argsOf(CardFooterNode),\n description: descriptionOf(CardFooterNode),\n },\n [COMPONENT.CARD_ACTION]: {\n argsSchema: argsOf(CardActionNode),\n description: descriptionOf(CardActionNode),\n },\n [COMPONENT.CARD_ICON]: {\n argsSchema: argsOf(CardIconNode),\n description: descriptionOf(CardIconNode),\n },\n [COMPONENT.CHECKBOX]: {\n argsSchema: argsOf(CheckboxNode),\n description: descriptionOf(CheckboxNode),\n },\n [COMPONENT.IMAGE]: { argsSchema: argsOf(ImageNode), description: descriptionOf(ImageNode) },\n [COMPONENT.OTP]: { argsSchema: argsOf(OTPNode), description: descriptionOf(OTPNode) },\n [COMPONENT.INPUT]: { argsSchema: argsOf(InputNode), description: descriptionOf(InputNode) },\n [COMPONENT.LABEL]: { argsSchema: argsOf(LabelNode), description: descriptionOf(LabelNode) },\n [COMPONENT.SWITCH]: { argsSchema: argsOf(SwitchNode), description: descriptionOf(SwitchNode) },\n [COMPONENT.TEXTAREA]: {\n argsSchema: argsOf(TextareaNode),\n description: descriptionOf(TextareaNode),\n },\n [COMPONENT.SIGNATURE]: {\n argsSchema: argsOf(SignatureNode),\n description: descriptionOf(SignatureNode),\n },\n [COMPONENT.CALENDAR]: {\n argsSchema: argsOf(CalendarNode),\n description: descriptionOf(CalendarNode),\n },\n [COMPONENT.TABLE]: { argsSchema: argsOf(TableNode), description: descriptionOf(TableNode) },\n [COMPONENT.TABLE_HEADER]: {\n argsSchema: argsOf(TableHeaderNode),\n description: descriptionOf(TableHeaderNode),\n },\n [COMPONENT.TABLE_BODY]: {\n argsSchema: argsOf(TableBodyNode),\n description: descriptionOf(TableBodyNode),\n },\n [COMPONENT.TABLE_FOOTER]: {\n argsSchema: argsOf(TableFooterNode),\n description: descriptionOf(TableFooterNode),\n },\n [COMPONENT.TABLE_HEAD]: {\n argsSchema: argsOf(TableHeadNode),\n description: descriptionOf(TableHeadNode),\n },\n [COMPONENT.TABLE_ROW]: {\n argsSchema: argsOf(TableRowNode),\n description: descriptionOf(TableRowNode),\n },\n [COMPONENT.TABLE_CELL]: {\n argsSchema: argsOf(TableCellNode),\n description: descriptionOf(TableCellNode),\n },\n [COMPONENT.TABLE_CAPTION]: {\n argsSchema: argsOf(TableCaptionNode),\n description: descriptionOf(TableCaptionNode),\n },\n [COMPONENT.ACCORDION]: {\n argsSchema: argsOf(AccordionNode),\n description: descriptionOf(AccordionNode),\n },\n [COMPONENT.ACCORDION_ITEM]: {\n argsSchema: argsOf(AccordionItemNode),\n description: descriptionOf(AccordionItemNode),\n },\n [COMPONENT.ACCORDION_TRIGGER]: {\n argsSchema: argsOf(AccordionTriggerNode),\n description: descriptionOf(AccordionTriggerNode),\n },\n [COMPONENT.ACCORDION_CONTENT]: {\n argsSchema: argsOf(AccordionContentNode),\n description: descriptionOf(AccordionContentNode),\n },\n [COMPONENT.AVATAR]: { argsSchema: argsOf(AvatarNode), description: descriptionOf(AvatarNode) },\n [COMPONENT.COLLAPSIBLE]: {\n argsSchema: argsOf(CollapsibleNode),\n description: descriptionOf(CollapsibleNode),\n },\n [COMPONENT.COLLAPSIBLE_TRIGGER]: {\n argsSchema: argsOf(CollapsibleTriggerNode),\n description: descriptionOf(CollapsibleTriggerNode),\n },\n [COMPONENT.COLLAPSIBLE_CONTENT]: {\n argsSchema: argsOf(CollapsibleContentNode),\n description: descriptionOf(CollapsibleContentNode),\n },\n [COMPONENT.LOADER]: { argsSchema: argsOf(LoaderNode), description: descriptionOf(LoaderNode) },\n [COMPONENT.PROGRESS]: {\n argsSchema: argsOf(ProgressNode),\n description: descriptionOf(ProgressNode),\n },\n [COMPONENT.SKELETON]: {\n argsSchema: argsOf(SkeletonNode),\n description: descriptionOf(SkeletonNode),\n },\n [COMPONENT.INPUT_GROUP]: {\n argsSchema: argsOf(InputGroupNode),\n description: descriptionOf(InputGroupNode),\n },\n [COMPONENT.INPUT_GROUP_TEXT]: {\n argsSchema: argsOf(InputGroupTextNode),\n description: descriptionOf(InputGroupTextNode),\n },\n [COMPONENT.INPUT_GROUP_ADDON]: {\n argsSchema: argsOf(InputGroupAddonNode),\n description: descriptionOf(InputGroupAddonNode),\n },\n [COMPONENT.INPUT_GROUP_INPUT]: {\n argsSchema: argsOf(InputGroupInputNode),\n description: descriptionOf(InputGroupInputNode),\n },\n [COMPONENT.INPUT_GROUP_BUTTON]: {\n argsSchema: argsOf(InputGroupButtonNode),\n description: descriptionOf(InputGroupButtonNode),\n },\n [COMPONENT.INPUT_GROUP_TEXTAREA]: {\n argsSchema: argsOf(InputGroupTextareaNode),\n description: descriptionOf(InputGroupTextareaNode),\n },\n [COMPONENT.EACH]: { argsSchema: argsOf(EachNode), description: descriptionOf(EachNode) },\n [COMPONENT.IF]: { argsSchema: argsOf(IfNode), description: descriptionOf(IfNode) },\n};\n\nconst pebbleTemplateSchema = createTemplateSchema(PEBBLE_COMPONENT_SCHEMAS);\n\nexport const ComponentNode = pebbleTemplateSchema.ComponentNode;\nexport const Config = pebbleTemplateSchema.Node;\nexport type Config = z.infer<typeof pebbleTemplateSchema.Node>;\n\n/** Every element (non-string) node schema, keyed by its `type` literal. */\nexport const NodeSchemas: Record<string, z.ZodObject<any>> = Object.fromEntries(\n (ComponentNode.options as z.ZodObject<any>[]).map((schema) => [schema.shape.type.value, schema]),\n);\n","import { z } from \"zod\";\nimport { COMPONENT } from \"@bonsai/constants\";\n\nimport { NodeSchemas } from \"./bonsai.schema\";\n\n// Editor-facing metadata for the Bonsai node schemas: nesting rules and\n// inspector UI hints. Kept in dedicated registries rather than `.meta()` so it\n// never leaks into `z.toJSONSchema` output (the OpenAPI document and the code\n// editor's JSON schema stay as they are).\n\n/**\n * Which children a node type may hold, and where it may be placed.\n * `each` / `if` are transparent: they are allowed wherever their children are,\n * and a child's `parent` rule is checked against the nearest element above them.\n */\nexport interface NodeRules {\n /** \"any\" (default), \"none\" (void / self-contained), or an allow-list of child types. */\n accepts: \"any\" | \"none\" | string[];\n /** Allow-list of direct parent types; absent means any parent. */\n parent?: string[];\n}\n\nexport type FieldControl =\n | \"text\"\n | \"textarea\"\n | \"select\"\n | \"switch\"\n | \"number\"\n | \"color\"\n | \"binding\"\n | \"json\";\n\nexport type FieldGroup = \"Content\" | \"Data\" | \"Style\" | \"Advanced\";\n\nexport interface FieldHints {\n label?: string;\n control?: FieldControl;\n group?: FieldGroup;\n placeholder?: string;\n}\n\nexport const nodeRules = z.registry<NodeRules>();\nexport const fieldHints = z.registry<FieldHints>();\n\nconst C = COMPONENT;\n\n// Components that render no children of their own (void elements throw when given any).\nconst SELF_CONTAINED = [\n C.INPUT,\n C.INPUT_GROUP_INPUT,\n C.INPUT_GROUP_TEXTAREA,\n C.TEXTAREA,\n C.IMAGE,\n C.SEPARATOR,\n C.CHECKBOX,\n C.SWITCH,\n C.OTP,\n C.SIGNATURE,\n C.CALENDAR,\n C.LOADER,\n C.SKELETON,\n C.PROGRESS,\n C.AVATAR,\n];\n\nconst TABLE_SECTIONS = [C.TABLE_HEADER, C.TABLE_BODY, C.TABLE_FOOTER];\nconst CARD_SLOTS = [C.CARD, C.CARD_HEADER, C.CARD_FOOTER];\nconst INPUT_GROUP_SLOTS = [C.INPUT_GROUP, C.INPUT_GROUP_ADDON];\n\nconst RULES: Partial<Record<string, Partial<NodeRules>>> = {\n [C.ACCORDION]: { accepts: [C.ACCORDION_ITEM] },\n [C.ACCORDION_ITEM]: { accepts: [C.ACCORDION_TRIGGER, C.ACCORDION_CONTENT], parent: [C.ACCORDION] },\n [C.ACCORDION_TRIGGER]: { parent: [C.ACCORDION_ITEM] },\n [C.ACCORDION_CONTENT]: { parent: [C.ACCORDION_ITEM] },\n [C.COLLAPSIBLE_TRIGGER]: { parent: [C.COLLAPSIBLE] },\n [C.COLLAPSIBLE_CONTENT]: { parent: [C.COLLAPSIBLE] },\n [C.TABLE]: { accepts: [...TABLE_SECTIONS, C.TABLE_CAPTION] },\n [C.TABLE_HEADER]: { accepts: [C.TABLE_ROW], parent: [C.TABLE] },\n [C.TABLE_BODY]: { accepts: [C.TABLE_ROW], parent: [C.TABLE] },\n [C.TABLE_FOOTER]: { accepts: [C.TABLE_ROW], parent: [C.TABLE] },\n [C.TABLE_CAPTION]: { parent: [C.TABLE] },\n [C.TABLE_ROW]: { accepts: [C.TABLE_CELL, C.TABLE_HEAD], parent: TABLE_SECTIONS },\n [C.TABLE_CELL]: { parent: [C.TABLE_ROW] },\n [C.TABLE_HEAD]: { parent: [C.TABLE_ROW] },\n [C.CARD_HEADER]: { parent: [C.CARD] },\n [C.CARD_CONTENT]: { parent: [C.CARD] },\n [C.CARD_FOOTER]: { parent: [C.CARD] },\n [C.CARD_TITLE]: { parent: CARD_SLOTS },\n [C.CARD_DESCRIPTION]: { parent: CARD_SLOTS },\n [C.CARD_ACTION]: { parent: CARD_SLOTS },\n [C.CARD_ICON]: { parent: CARD_SLOTS },\n [C.INPUT_GROUP_ADDON]: { parent: [C.INPUT_GROUP] },\n [C.INPUT_GROUP_TEXT]: { parent: INPUT_GROUP_SLOTS },\n [C.INPUT_GROUP_INPUT]: { parent: INPUT_GROUP_SLOTS },\n [C.INPUT_GROUP_BUTTON]: { parent: INPUT_GROUP_SLOTS },\n [C.INPUT_GROUP_TEXTAREA]: { parent: INPUT_GROUP_SLOTS },\n [C.OL]: { accepts: [C.LI] },\n [C.UL]: { accepts: [C.LI] },\n [C.LI]: { parent: [C.OL, C.UL] },\n};\n\nfor (const type of SELF_CONTAINED) RULES[type] = { ...RULES[type], accepts: \"none\" };\n\n// Inspector hints by arg name; `TYPE_FIELD_HINTS` refines a name for one type.\nconst FIELD_HINTS: Record<string, FieldHints> = {\n id: { label: \"Element ID\", group: \"Advanced\" },\n className: { label: \"Classes\", group: \"Advanced\" },\n href: { label: \"Link URL\", group: \"Content\", placeholder: \"https://\" },\n src: { label: \"Image URL\", group: \"Content\", placeholder: \"https:// or {{binding}}\" },\n alt: { label: \"Alt text\", group: \"Content\" },\n placeholder: { label: \"Placeholder\", group: \"Content\" },\n fallback: { label: \"Fallback text\", group: \"Content\" },\n value: { label: \"Bound value\", control: \"binding\", group: \"Data\" },\n checked: { label: \"Bound value\", control: \"binding\", group: \"Data\" },\n selected: { label: \"Bound value\", control: \"binding\", group: \"Data\" },\n htmlFor: { label: \"For input (ID)\", group: \"Data\" },\n disabled: { label: \"Disabled\", group: \"Data\" },\n required: { label: \"Required\", group: \"Data\" },\n loading: { label: \"Loading\", group: \"Data\" },\n readonly: { label: \"Read only\", group: \"Data\" },\n items: { label: \"Repeat over\", control: \"binding\", group: \"Data\", placeholder: \"{{items}}\" },\n index: { label: \"Index alias\", group: \"Data\" },\n key: { label: \"Row key\", control: \"binding\", group: \"Advanced\" },\n condition: { label: \"Show when\", control: \"binding\", group: \"Data\", placeholder: \"{{flag}}\" },\n variant: { label: \"Variant\", group: \"Style\" },\n size: { label: \"Size\", group: \"Style\" },\n raised: { label: \"Shadow\", group: \"Style\" },\n extrude: { label: \"Extrude\", group: \"Style\" },\n rounded: { label: \"Corners\", group: \"Style\" },\n align: { label: \"Alignment\", group: \"Style\" },\n fill: { label: \"Colour\", group: \"Style\" },\n stacked: { label: \"Stacked spacing\", group: \"Style\" },\n animate: { label: \"Animate\", group: \"Style\" },\n buttonVariant: { label: \"Button variant\", group: \"Style\" },\n mode: { label: \"Mode\", group: \"Style\" },\n rows: { label: \"Rows\", group: \"Style\" },\n autosize: { label: \"Auto-size\", group: \"Style\" },\n type: { label: \"Button type\", group: \"Content\" },\n imageType: { label: \"Image format\", group: \"Advanced\" },\n containerClassName: { label: \"Container classes\", group: \"Advanced\" },\n canvasClassname: { label: \"Canvas classes\", group: \"Advanced\" },\n minLength: { label: \"Min length\", group: \"Advanced\" },\n maxLength: { label: \"Max length\", group: \"Advanced\" },\n hideWeekends: { label: \"Hide weekends\", group: \"Advanced\" },\n pins: { label: \"Pins\", control: \"json\", group: \"Advanced\" },\n zoom: { label: \"Zoom\", group: \"Advanced\" },\n pitch: { label: \"Pitch\", group: \"Advanced\" },\n fixed: { label: \"Fixed viewport\", group: \"Advanced\" },\n allowMultiple: { label: \"Allow multiple pins\", group: \"Advanced\" },\n icon: { label: \"Icon\", group: \"Advanced\" },\n pingIcon: { label: \"Ping icon\", control: \"json\", group: \"Advanced\" },\n iconProps: { label: \"Icon props\", control: \"json\", group: \"Advanced\" },\n badge: { label: \"Badge\", control: \"json\", group: \"Advanced\" },\n};\n\nconst TYPE_FIELD_HINTS: Record<string, Record<string, FieldHints>> = {\n [C.EACH]: { as: { label: \"Item alias\", group: \"Data\" } },\n [C.H]: { as: { label: \"Render as\", group: \"Advanced\" } },\n [C.P]: { as: { label: \"Render as\", group: \"Advanced\" } },\n [C.BUTTON]: { icon: { label: \"Icon-only size\", group: \"Style\" } },\n};\n\n/** The args object schema of a node type, unwrapped from `.optional()`. */\nexport function getArgsSchema(type: string): z.ZodObject | undefined {\n let args: z.ZodType | undefined = NodeSchemas[type]?.shape.args;\n while (args instanceof z.ZodOptional) args = args.unwrap() as z.ZodType;\n return args instanceof z.ZodObject ? args : undefined;\n}\n\nfor (const [type, schema] of Object.entries(NodeSchemas)) {\n nodeRules.add(schema, { accepts: \"any\", ...RULES[type] });\n const shape = getArgsSchema(type)?.shape ?? {};\n for (const [name, field] of Object.entries(shape)) {\n // Shared field instances (CoreArgs) receive identical hints from every type.\n fieldHints.add(field as z.ZodType, { ...FIELD_HINTS[name], ...TYPE_FIELD_HINTS[type]?.[name] });\n }\n}\n\n/** Nesting rules for a node type; unknown types accept anything. */\nexport function getNodeRules(type: string): NodeRules {\n const schema = NodeSchemas[type];\n return (schema && nodeRules.get(schema)) || { accepts: \"any\" };\n}\n"],"names":["CoreArgs","z","AArgs","HArgs","PArgs","OLArgs","ULArgs","LIArgs","DivArgs","SpanArgs","SeparatorArgs","AlertArgs","BadgeArgs","ButtonArgs","CardArgs","CardHeaderArgs","CardTitleArgs","CardDescriptionArgs","CardContentArgs","CardFooterArgs","CardActionArgs","CardIconArgs","CheckboxArgs","ImageArgs","OTPArgs","InputArgs","LabelArgs","SwitchArgs","TextareaArgs","InputGroupArgs","InputGroupTextArgs","InputGroupAddonArgs","InputGroupInputArgs","InputGroupButtonArgs","InputGroupTextareaArgs","SignatureArgs","CalendarArgs","TableArgs","TableHeaderArgs","TableBodyArgs","TableFooterArgs","TableHeadArgs","TableRowArgs","TableCellArgs","TableCaptionArgs","AccordionArgs","AccordionItemArgs","AccordionTriggerArgs","AccordionContentArgs","AvatarArgs","CollapsibleArgs","CollapsibleTriggerArgs","CollapsibleContentArgs","LoaderArgs","ProgressArgs","SkeletonArgs","Node","ComponentNode","CoreNode","DivNode","COMPONENT","ANode","HNode","PNode","OLNode","ULNode","LINode","SpanNode","SeparatorNode","AlertNode","BadgeNode","ButtonNode","CardNode","CheckboxNode","ImageNode","OTPNode","InputNode","LabelNode","SwitchNode","TextareaNode","SignatureNode","CalendarNode","CardHeaderNode","CardTitleNode","CardDescriptionNode","CardContentNode","CardFooterNode","CardActionNode","CardIconNode","TableNode","TableHeaderNode","TableBodyNode","TableFooterNode","TableHeadNode","TableRowNode","TableCellNode","TableCaptionNode","AccordionNode","AccordionItemNode","AccordionTriggerNode","AccordionContentNode","AvatarNode","CollapsibleNode","CollapsibleTriggerNode","CollapsibleContentNode","LoaderNode","ProgressNode","SkeletonNode","InputGroupNode","InputGroupTextNode","InputGroupAddonNode","InputGroupInputNode","InputGroupButtonNode","InputGroupTextareaNode","EachArgs","EachNode","IfArgs","IfNode","argsOf","node","descriptionOf","createTemplateSchema","components","componentNode","localNode","localCoreNode","nodeSchemas","type","argsSchema","description","PEBBLE_COMPONENT_SCHEMAS","pebbleTemplateSchema","Config","NodeSchemas","schema","nodeRules","fieldHints","C","SELF_CONTAINED","TABLE_SECTIONS","CARD_SLOTS","INPUT_GROUP_SLOTS","RULES","FIELD_HINTS","TYPE_FIELD_HINTS","getArgsSchema","args","shape","name","field","getNodeRules"],"mappings":"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"}
@@ -1,280 +0,0 @@
1
- import { jsx as d } from "react/jsx-runtime";
2
- import { createElement as h, memo as S, useCallback as N, useRef as m, useEffect as j, createContext as M, useContext as P } from "react";
3
- import { i as T, B as O, r as b, j as w, k as D, l as V, m as y, n as $, o as W, p as E, q as A, V as L, s as q, t as J, v as z, f as F, b as G, w as H } from "./render-shared-Ci28BpkI.js";
4
- import { proxy as Q, snapshot as v, subscribe as U, useSnapshot as X } from "valtio";
5
- const Y = {
6
- dataSlice(t, e, r) {
7
- return V(t.dynamicKeys, (n) => n in r && n !== "data" ? r[n] : y(r.data ?? r, n));
8
- },
9
- rowCtx(t, e, r, n, o, s) {
10
- const { as: a, indexAlias: i } = o, c = {
11
- ...e,
12
- data: {
13
- ...e.data ?? e,
14
- [a]: r,
15
- ...i ? { [i]: n } : {}
16
- }
17
- }, u = s ? { ...t.scope, [a]: `${s}.${n}` } : t.scope;
18
- return { data: c, scope: u };
19
- },
20
- renderChild(t, e, r, n, o) {
21
- return /* @__PURE__ */ d(
22
- K,
23
- {
24
- node: t,
25
- index: e,
26
- path: r,
27
- data: n.data,
28
- scope: n.scope
29
- },
30
- o
31
- );
32
- }
33
- }, K = S(
34
- ({ node: t, index: e = 0, path: r = "root", data: n, scope: o }) => {
35
- const s = w(), a = N(() => {
36
- }, []);
37
- return D(
38
- t,
39
- e,
40
- r,
41
- { data: n, scope: o },
42
- n,
43
- s,
44
- a,
45
- Y
46
- );
47
- }
48
- );
49
- function Z({
50
- template: t,
51
- expiry: e,
52
- data: r,
53
- status: n = "pending",
54
- render: o = "web",
55
- as: s,
56
- registry: a
57
- }) {
58
- const i = {
59
- data: r ?? {},
60
- expiry: e ?? "",
61
- status: n,
62
- submitting: !1
63
- }, c = T(t).root, u = b(o, s);
64
- return /* @__PURE__ */ d(O, { registry: a, render: o, children: h(
65
- u,
66
- {
67
- "data-mode": o,
68
- className: `group bonsai-root${o === "pdf" ? " w-full" : ""}`
69
- },
70
- /* @__PURE__ */ d(K, { node: c, index: 0, path: "root", data: i })
71
- ) });
72
- }
73
- const _ = M(null);
74
- function g() {
75
- const t = P(_);
76
- if (!t)
77
- throw new Error("useBonsaiStore must be used within a <Bonsai> component");
78
- return t;
79
- }
80
- function k() {
81
- const t = g();
82
- return N(
83
- (e, r) => q(t.data, e, r),
84
- [t]
85
- );
86
- }
87
- function tt(t, e, r, n, o) {
88
- const s = J(t);
89
- return n && s in n ? t === s ? n[s] : void 0 : r && s in r ? y(e.data ?? e, z(t, r)) : o && Object.hasOwn(o, s) ? y(o, t) : t in e && t !== "data" ? e[t] : y(e.data ?? e, t);
90
- }
91
- const et = S(
92
- ({ node: t, index: e = 0, path: r = "root", scope: n, indexScope: o, valueScope: s }) => {
93
- const a = w(), i = t.source;
94
- if (!i) return null;
95
- if (t.isText)
96
- return i;
97
- try {
98
- const c = t.type, u = W(a, c), p = E(t, e, r), f = A(t, {}, p);
99
- if (t.isImage && (f.src === "" || f.src == null))
100
- return null;
101
- const l = t.children.length > 0 ? t.children.map(
102
- (I, R) => C(
103
- I,
104
- R,
105
- `${r}-${e}`,
106
- n,
107
- o,
108
- s,
109
- E(t, R, `${r}-${e}`)
110
- )
111
- ) : void 0, B = typeof u == "string" && L.has(u) ? void 0 : l;
112
- return B !== void 0 ? h(u, f, B) : h(u, f);
113
- } catch (c) {
114
- return console.error(`Error at ${r}-${e}:`, c), null;
115
- }
116
- }
117
- );
118
- function C(t, e, r, n, o, s, a) {
119
- return t.isStatic ? /* @__PURE__ */ d(
120
- et,
121
- {
122
- node: t,
123
- index: e,
124
- path: r,
125
- scope: n,
126
- indexScope: o,
127
- valueScope: s
128
- },
129
- a
130
- ) : /* @__PURE__ */ d(
131
- nt,
132
- {
133
- node: t,
134
- index: e,
135
- path: r,
136
- scope: n,
137
- indexScope: o,
138
- valueScope: s
139
- },
140
- a
141
- );
142
- }
143
- function x(t, e) {
144
- if (!t || !Object.hasOwn(t, e)) return t;
145
- const r = { ...t };
146
- return delete r[e], r;
147
- }
148
- const rt = {
149
- dataSlice(t, e, r) {
150
- return V(
151
- t.dynamicKeys,
152
- (n) => tt(n, r, e.scope, e.indexScope, e.valueScope)
153
- );
154
- },
155
- rowCtx(t, e, r, n, o, s) {
156
- const { as: a, indexAlias: i } = o, c = i ? { ...t.indexScope, [i]: n } : t.indexScope;
157
- return s ? {
158
- scope: { ...t.scope, [a]: `${s}.${n}` },
159
- indexScope: c,
160
- valueScope: x(t.valueScope, a)
161
- } : {
162
- scope: x(t.scope, a),
163
- indexScope: c,
164
- valueScope: { ...t.valueScope, [a]: r }
165
- };
166
- },
167
- renderChild(t, e, r, n, o) {
168
- return C(t, e, r, n.scope, n.indexScope, n.valueScope, o);
169
- }
170
- }, nt = S(
171
- ({ node: t, index: e = 0, path: r = "root", scope: n, indexScope: o, valueScope: s }) => {
172
- const a = w(), i = g(), c = X(i, { sync: !0 }), u = k();
173
- return D(
174
- t,
175
- e,
176
- r,
177
- { scope: n, indexScope: o, valueScope: s },
178
- c,
179
- a,
180
- u,
181
- rt
182
- );
183
- }
184
- );
185
- function ot({
186
- captureUrl: t,
187
- template: e,
188
- render: r = "web",
189
- as: n,
190
- onSubmit: o,
191
- onError: s,
192
- registry: a
193
- }) {
194
- const i = g(), c = async (f) => {
195
- if (f.preventDefault(), i.status === "pending" && !(!o && !t)) {
196
- i.submitting = !0;
197
- try {
198
- if (o)
199
- await o(v(i.data));
200
- else {
201
- const l = await fetch(t, {
202
- method: "POST",
203
- credentials: "include",
204
- headers: {
205
- "Content-Type": "application/json"
206
- },
207
- body: JSON.stringify({
208
- data: i.data
209
- })
210
- });
211
- if (!l.ok)
212
- throw new Error(`Capture failed: ${l.status} ${l.statusText}`.trim());
213
- }
214
- i.status = "captured";
215
- } catch (l) {
216
- if (!s) throw l;
217
- s(l);
218
- } finally {
219
- i.submitting = !1;
220
- }
221
- }
222
- }, u = T(e).root, p = b(r, n);
223
- return /* @__PURE__ */ d(O, { registry: a, render: r, children: h(
224
- p,
225
- {
226
- "data-mode": r,
227
- className: `group bonsai-root${r === "pdf" ? " w-full" : ""}`,
228
- ...p === "form" ? { onSubmit: c } : {}
229
- },
230
- C(u, 0, "root", void 0, void 0, void 0, "root-0")
231
- ) });
232
- }
233
- function st(t) {
234
- const e = m(null), r = m(t.data), n = m(!1), o = m(t.onDataChange);
235
- if (o.current = t.onDataChange, e.current === null)
236
- e.current = Q({
237
- status: t.status ?? "pending",
238
- expiry: t.expiry ?? "",
239
- data: $(t.data ?? {}),
240
- submitting: !1
241
- });
242
- else if (!Object.is(r.current, t.data)) {
243
- r.current = t.data, n.current = !0;
244
- try {
245
- e.current.data = $(t.data ?? {});
246
- } finally {
247
- n.current = !1;
248
- }
249
- }
250
- const s = e.current;
251
- return j(() => {
252
- let a = v(s.data);
253
- return U(
254
- s,
255
- () => {
256
- const i = v(s.data);
257
- i !== a && (a = i, !n.current && o.current?.(i));
258
- },
259
- !0
260
- );
261
- }, [s]), /* @__PURE__ */ d(_.Provider, { value: s, children: /* @__PURE__ */ d(ot, { ...t }) });
262
- }
263
- function at(t) {
264
- return typeof window > "u" ? /* @__PURE__ */ d(Z, { ...t }) : /* @__PURE__ */ d(st, { ...t });
265
- }
266
- function lt(t = {}) {
267
- const e = F(t.registry ?? G, {
268
- components: t.components,
269
- controlledInputs: t.controlledInputs
270
- });
271
- function r(n) {
272
- return /* @__PURE__ */ d(H.Provider, { value: e, children: /* @__PURE__ */ d(at, { ...n }) });
273
- }
274
- return r.displayName = "Bonsai", { Bonsai: r };
275
- }
276
- export {
277
- lt as c,
278
- k as u
279
- };
280
- //# sourceMappingURL=create-renderer-DHneTPd-.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-renderer-DHneTPd-.js","sources":["../../src/components/core/render-tree-server.tsx","../../src/components/core/render-tree-client.tsx","../../src/components/core/bonsai.tsx","../../src/renderer/create-renderer.tsx"],"sourcesContent":["import { createElement, memo, useCallback } from \"react\";\nimport { type CompiledNode } from \"../../lib/renderer/compile-template\";\nimport { compileTemplate } from \"../../lib/renderer/compile-template\";\nimport {\n BonsaiRoot,\n useBonsaiRegistry,\n buildDataSlice,\n getValue,\n resolveWrapper,\n renderCompiledNode,\n type NodeCtx,\n type RenderStrategy,\n type BonsaiProps,\n} from \"./render-shared\";\n\ninterface RenderTreeServerProps {\n // Precompiled metadata for this node; `node.source` is the raw template node.\n node: CompiledNode;\n index?: number;\n path?: string;\n data: Record<string, any>;\n // Alias -> real store path prefix set by an ancestor `each` (e.g. { applicant: \"applicants.3\" }); SSR-only.\n scope?: Record<string, string>;\n}\n\n// SSR ctx is the prop-drilled global data object plus the current `each` scope.\ninterface ServerCtx extends NodeCtx {\n data: Record<string, any>;\n}\n\nconst SERVER_MODE: RenderStrategy<ServerCtx> = {\n dataSlice(node, _ctx, globalData) {\n return buildDataSlice(node.dynamicKeys, (key) => {\n if (key in globalData && key !== \"data\") return globalData[key];\n return getValue(globalData.data ?? globalData, key);\n });\n },\n rowCtx(ctx, globalData, item, i, each, realItemsPath) {\n const { as, indexAlias } = each;\n const rowData = {\n ...globalData,\n data: {\n ...(globalData.data ?? globalData),\n [as]: item,\n ...(indexAlias ? { [indexAlias]: i } : {}),\n },\n };\n const rowScope = realItemsPath\n ? { ...ctx.scope, [as]: `${realItemsPath}.${i}` }\n : ctx.scope;\n return { data: rowData, scope: rowScope };\n },\n renderChild(child, i, path, ctx, key) {\n return (\n <RenderTreeServer\n key={key}\n node={child}\n index={i}\n path={path}\n data={ctx.data}\n scope={ctx.scope}\n />\n );\n },\n};\n\n// SSR: single-pass render over a plain, prop-drilled object — no store, no snapshots.\nconst RenderTreeServer = memo(\n ({ node, index = 0, path = \"root\", data, scope }: RenderTreeServerProps) => {\n const registry = useBonsaiRegistry();\n const updateData = useCallback(() => {\n // Attached for the controlled-component contract but never invoked during SSR.\n }, []);\n\n return renderCompiledNode(\n node,\n index,\n path,\n { data, scope },\n data,\n registry,\n updateData,\n SERVER_MODE,\n );\n },\n);\n\nexport function BonsaiServer({\n template,\n expiry,\n data,\n status = \"pending\",\n render = \"web\",\n as,\n registry,\n}: BonsaiProps) {\n const ctx = {\n data: data ?? {},\n expiry: expiry ?? \"\",\n status,\n submitting: false,\n };\n\n // Cached by template identity, so N instances of the same template compile once.\n const root = compileTemplate(template).root;\n const Wrapper = resolveWrapper(render, as);\n\n return (\n <BonsaiRoot registry={registry} render={render}>\n {createElement(\n Wrapper,\n {\n \"data-mode\": render,\n className: `group bonsai-root${render === \"pdf\" ? \" w-full\" : \"\"}`,\n },\n <RenderTreeServer node={root} index={0} path=\"root\" data={ctx} />,\n )}\n </BonsaiRoot>\n );\n}\n","import {\n createContext,\n createElement,\n memo,\n useCallback,\n useContext,\n useEffect,\n useRef,\n type SubmitEvent,\n} from \"react\";\nimport { proxy, snapshot, subscribe, useSnapshot } from \"valtio\";\nimport { type CompiledNode } from \"../../lib/renderer/compile-template\";\nimport { compileTemplate } from \"../../lib/renderer/compile-template\";\nimport {\n BonsaiRoot,\n useBonsaiRegistry,\n VOID_ELEMENTS,\n getKey,\n getValue,\n setValue,\n resolveScopedPath,\n pathRoot,\n buildDataSlice,\n resolveElementType,\n prepareState,\n resolveWrapper,\n cloneData,\n renderCompiledNode,\n type NodeCtx,\n type RenderStrategy,\n type BonsaiProps,\n} from \"./render-shared\";\n\n// scope/indexScope/valueScope are the only things an `each` row hands its children on the live path —\n// store data is never prop-drilled (valueScope carries only computed-row items, which have no store path).\ninterface RenderTreeClientProps {\n node: CompiledNode;\n index?: number;\n path?: string;\n scope?: Record<string, string>;\n indexScope?: Record<string, number>;\n valueScope?: Record<string, unknown>;\n}\n\ntype BonsaiState = {\n status: string;\n expiry: string;\n data: Record<string, any>;\n submitting: boolean;\n};\n\nconst BonsaiContext = createContext<ReturnType<\n typeof proxy<BonsaiState>\n> | null>(null);\n\nfunction useBonsaiStore(): ReturnType<typeof proxy<BonsaiState>> {\n const store = useContext(BonsaiContext);\n if (!store) {\n throw new Error(\"useBonsaiStore must be used within a <Bonsai> component\");\n }\n return store;\n}\n\nexport function useUpdateData() {\n const store = useBonsaiStore();\n return useCallback(\n (path: string, value: any) => setValue(store.data, path, value),\n [store],\n );\n}\n\n// Live-path lookup: resolves each-scoped aliases at read time against a fresh snapshot.\nfunction resolveKeyValue(\n key: string,\n globalData: Record<string, any>,\n scope: Record<string, string> | undefined,\n indexScope: Record<string, number> | undefined,\n valueScope: Record<string, unknown> | undefined,\n): any {\n const root = pathRoot(key);\n\n if (indexScope && root in indexScope) {\n return key === root ? indexScope[root] : undefined;\n }\n\n if (scope && root in scope) {\n return getValue(globalData.data ?? globalData, resolveScopedPath(key, scope));\n }\n\n if (valueScope && Object.hasOwn(valueScope, root)) {\n return getValue(valueScope, key);\n }\n\n if (key in globalData && key !== \"data\") {\n return globalData[key];\n }\n\n return getValue(globalData.data ?? globalData, key);\n}\n\n// Children still go through `renderClientNode`, so a binding nested inside an unbound wrapper stays reactive.\nconst StaticNode = memo(\n ({ node, index = 0, path = \"root\", scope, indexScope, valueScope }: RenderTreeClientProps) => {\n const registry = useBonsaiRegistry();\n const tree = node.source;\n\n if (!tree) return null;\n if (node.isText) {\n // `isStatic` guarantees this has no `{{...}}` binding to evaluate.\n return tree as unknown as string;\n }\n\n try {\n const type = node.type;\n const ElementType = resolveElementType(registry, type);\n const key = getKey(node, index, path);\n const props = prepareState(node, {}, key);\n\n if (node.isImage && (props.src === \"\" || props.src == null)) {\n return null;\n }\n\n const childNodes =\n node.children.length > 0\n ? node.children.map((branch: CompiledNode, i: number) =>\n renderClientNode(\n branch,\n i,\n `${path}-${index}`,\n scope,\n indexScope,\n valueScope,\n getKey(node, i, `${path}-${index}`),\n ),\n )\n : undefined;\n\n const safeChildNodes =\n typeof ElementType === \"string\" && VOID_ELEMENTS.has(ElementType)\n ? undefined\n : childNodes;\n\n if (safeChildNodes !== undefined) {\n return createElement(ElementType, props, safeChildNodes);\n }\n return createElement(ElementType, props);\n } catch (error) {\n console.error(`Error at ${path}-${index}:`, error);\n return null;\n }\n },\n);\n\n// A plain function, not a hook, since it decides which component type to mount — always a safe conditional.\nfunction renderClientNode(\n node: CompiledNode,\n index: number,\n path: string,\n scope: Record<string, string> | undefined,\n indexScope: Record<string, number> | undefined,\n valueScope: Record<string, unknown> | undefined,\n key: string,\n): React.ReactNode {\n return node.isStatic ? (\n <StaticNode\n key={key}\n node={node}\n index={index}\n path={path}\n scope={scope}\n indexScope={indexScope}\n valueScope={valueScope}\n />\n ) : (\n <RenderTreeClient\n key={key}\n node={node}\n index={index}\n path={path}\n scope={scope}\n indexScope={indexScope}\n valueScope={valueScope}\n />\n );\n}\n\n// Client ctx carries only what an `each` row hands its children on this path — no data is prop-drilled.\ninterface ClientCtx extends NodeCtx {\n indexScope?: Record<string, number>;\n}\n\nfunction omitKey<T>(\n obj: Record<string, T> | undefined,\n key: string,\n): Record<string, T> | undefined {\n if (!obj || !Object.hasOwn(obj, key)) return obj;\n const rest = { ...obj };\n delete rest[key];\n return rest;\n}\n\nconst CLIENT_MODE: RenderStrategy<ClientCtx> = {\n dataSlice(node, ctx, globalData) {\n return buildDataSlice(node.dynamicKeys, (key) =>\n resolveKeyValue(key, globalData, ctx.scope, ctx.indexScope, ctx.valueScope),\n );\n },\n rowCtx(ctx, _globalData, item, i, each, realItemsPath) {\n const { as, indexAlias } = each;\n const rowIndexScope = indexAlias\n ? { ...ctx.indexScope, [indexAlias]: i }\n : ctx.indexScope;\n // A plain-path row resolves its alias against the store; a computed row has no store path, so it\n // carries the item itself. Each clears the alias from the other map so an inner alias shadows an outer one.\n if (realItemsPath) {\n return {\n scope: { ...ctx.scope, [as]: `${realItemsPath}.${i}` },\n indexScope: rowIndexScope,\n valueScope: omitKey(ctx.valueScope, as),\n };\n }\n return {\n scope: omitKey(ctx.scope, as),\n indexScope: rowIndexScope,\n valueScope: { ...ctx.valueScope, [as]: item },\n };\n },\n renderChild(child, i, path, ctx, key) {\n return renderClientNode(child, i, path, ctx.scope, ctx.indexScope, ctx.valueScope, key);\n },\n};\n\n// Client: every node calls useSnapshot itself, so it only re-renders when a path it actually reads changes.\nconst RenderTreeClient = memo(\n ({ node, index = 0, path = \"root\", scope, indexScope, valueScope }: RenderTreeClientProps) => {\n const registry = useBonsaiRegistry();\n const store = useBonsaiStore();\n // sync: true keeps the store write and its re-render in the same event, avoiding a one-tick display lag.\n const globalData = useSnapshot(store, { sync: true });\n const updateData = useUpdateData();\n\n return renderCompiledNode(\n node,\n index,\n path,\n { scope, indexScope, valueScope },\n globalData,\n registry,\n updateData,\n CLIENT_MODE,\n );\n },\n);\n\nexport function BonsaiClient({\n captureUrl,\n template,\n render = \"web\",\n as,\n onSubmit,\n onError,\n registry,\n}: BonsaiProps) {\n const store = useBonsaiStore();\n\n const submit = async (e: SubmitEvent) => {\n e.preventDefault();\n // Already captured/completed/revoked: nothing to send, and the lifecycle flags stay as they are.\n if (store.status !== \"pending\") return;\n // Display-only instance: nothing to submit to, so don't touch the lifecycle.\n if (!onSubmit && !captureUrl) return;\n\n store.submitting = true;\n try {\n if (onSubmit) {\n await onSubmit(snapshot(store.data) as Record<string, unknown>);\n } else {\n const res = await fetch(captureUrl!, {\n method: \"POST\",\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n data: store.data,\n }),\n });\n // fetch only rejects on network failure; an error status must not count as captured.\n if (!res.ok) {\n throw new Error(`Capture failed: ${res.status} ${res.statusText}`.trim());\n }\n }\n\n store.status = \"captured\";\n } catch (error) {\n // Without an `onError`, this keeps the pre-existing behaviour of letting\n // the failure propagate out of the submit handler.\n if (!onError) throw error;\n onError(error);\n } finally {\n store.submitting = false;\n }\n };\n\n // Cached by template identity, so N instances of the same template compile once.\n const root = compileTemplate(template).root;\n const Wrapper = resolveWrapper(render, as);\n\n return (\n <BonsaiRoot registry={registry} render={render}>\n {createElement(\n Wrapper,\n {\n \"data-mode\": render,\n className: `group bonsai-root${render === \"pdf\" ? \" w-full\" : \"\"}`,\n ...(Wrapper === \"form\" ? { onSubmit: submit } : {}),\n },\n renderClientNode(root, 0, \"root\", undefined, undefined, undefined, \"root-0\"),\n )}\n </BonsaiRoot>\n );\n}\n\nexport function BonsaiProvider(props: BonsaiProps) {\n const storeRef = useRef<ReturnType<typeof proxy<BonsaiState>> | null>(null);\n // The `data` object identity this store was last seeded from.\n const seenDataRef = useRef<BonsaiProps[\"data\"]>(props.data);\n // Set while the provider itself writes to the store, so a parent-driven\n // resync isn't echoed back out through `onDataChange`.\n const resyncingRef = useRef(false);\n const onDataChangeRef = useRef(props.onDataChange);\n onDataChangeRef.current = props.onDataChange;\n\n if (storeRef.current === null) {\n storeRef.current = proxy<BonsaiState>({\n status: props.status ?? \"pending\",\n expiry: props.expiry ?? \"\",\n data: cloneData(props.data ?? {}),\n submitting: false,\n });\n } else if (!Object.is(seenDataRef.current, props.data)) {\n // A new `data` object arrived from the parent — adopt it. Same-reference\n // renders (including in-place mutations) are deliberately ignored.\n seenDataRef.current = props.data;\n resyncingRef.current = true;\n try {\n storeRef.current.data = cloneData(props.data ?? {});\n } finally {\n resyncingRef.current = false;\n }\n }\n\n const store = storeRef.current;\n\n useEffect(() => {\n // valtio only populates subscription `ops` when the (unstable) op tracking\n // is switched on globally, so changes are detected by snapshot identity\n // instead: `snapshot` is memoised per version, so an unchanged `data`\n // subtree returns the very same object and is filtered out here.\n //\n // Notify in sync: the resync flag below is only reliable if the callback\n // runs inside the write, not on a later microtask.\n let previous = snapshot(store.data);\n return subscribe(\n store,\n () => {\n const next = snapshot(store.data);\n if (next === previous) return;\n previous = next;\n // A parent-driven resync isn't a user edit — don't echo it back.\n if (resyncingRef.current) return;\n onDataChangeRef.current?.(next as Record<string, unknown>);\n },\n true,\n );\n }, [store]);\n\n return (\n <BonsaiContext.Provider value={store}>\n <BonsaiClient {...props} />\n </BonsaiContext.Provider>\n );\n}\n","import { BonsaiServer } from \"./render-tree-server\";\nimport { BonsaiProvider } from \"./render-tree-client\";\nimport type { BonsaiProps } from \"./render-shared\";\n\nexport {\n BonsaiRegistryContext,\n getValue,\n setValue,\n useBonsaiRenderMode,\n type BonsaiProps,\n type RenderMode,\n} from \"./render-shared\";\nexport { useUpdateData, BonsaiClient, BonsaiProvider } from \"./render-tree-client\";\nexport { BonsaiServer } from \"./render-tree-server\";\n\nexport function Bonsai(props: BonsaiProps) {\n if (typeof window === \"undefined\") {\n return <BonsaiServer {...props} />;\n }\n\n return <BonsaiProvider {...props} />;\n}\n","import {\n Bonsai as BonsaiRenderer,\n BonsaiRegistryContext,\n type BonsaiProps,\n} from \"../components/core/bonsai\";\nimport {\n coreRegistry,\n extendRegistry,\n type ComponentRegistry,\n type ControlledInputRegistry,\n} from \"./core-registry\";\nimport type { BonsaiRegistry } from \"../lib/registry/types\";\n\nexport interface BonsaiRendererOptions {\n /** Base registry. Defaults to the lightweight core registry. */\n registry?: BonsaiRegistry;\n /** Extra components layered over `registry` (they win on key collision). */\n components?: Partial<ComponentRegistry>;\n controlledInputs?: Partial<ControlledInputRegistry>;\n}\n\nexport interface BonsaiRendererInstance {\n Bonsai: React.ComponentType<BonsaiProps>;\n}\n\n/**\n * Builds a renderer bound to its own component registry.\n *\n * The registry is `options.registry` (the lightweight core set by default)\n * plus whatever components the caller supplies (caller entries win on key\n * collision); a `registry` prop on an individual `<Bonsai>` still overrides it. It is captured in a React context at\n * this call, so registries never leak between renderer instances and consumers\n * never have to mutate the exported `componentMap`.\n *\n * Heavy built-ins are opt-in via the presets in `renderer/presets/*`:\n *\n * ```ts\n * import { createBonsaiRenderer } from \"@pebble-software/bonsai/core\";\n * import { calendarPreset } from \"@pebble-software/bonsai/presets/calendar\";\n *\n * const { Bonsai } = createBonsaiRenderer({\n * components: { ...calendarPreset.components, rating: Rating },\n * controlledInputs: { ...calendarPreset.controlledInputs },\n * });\n * ```\n *\n * Call this at module scope: each call returns a fresh component type, so\n * calling it during render would remount the whole tree every time.\n */\nexport function createBonsaiRenderer(\n options: BonsaiRendererOptions = {},\n): BonsaiRendererInstance {\n // Cast: a `Partial<...>` widens values to `| undefined`, but it only ever\n // holds keys the caller actually supplied.\n const registry = extendRegistry(options.registry ?? coreRegistry, {\n components: options.components as ComponentRegistry | undefined,\n controlledInputs: options.controlledInputs as ControlledInputRegistry | undefined,\n });\n\n function Bonsai(props: BonsaiProps) {\n return (\n <BonsaiRegistryContext.Provider value={registry}>\n <BonsaiRenderer {...props} />\n </BonsaiRegistryContext.Provider>\n );\n }\n Bonsai.displayName = \"Bonsai\";\n\n return { Bonsai };\n}\n"],"names":["SERVER_MODE","node","_ctx","globalData","buildDataSlice","key","getValue","ctx","item","i","each","realItemsPath","as","indexAlias","rowData","rowScope","child","path","jsx","RenderTreeServer","memo","index","data","scope","registry","useBonsaiRegistry","updateData","useCallback","renderCompiledNode","BonsaiServer","template","expiry","status","render","root","compileTemplate","Wrapper","resolveWrapper","BonsaiRoot","createElement","BonsaiContext","createContext","useBonsaiStore","store","useContext","useUpdateData","value","setValue","resolveKeyValue","indexScope","valueScope","pathRoot","resolveScopedPath","StaticNode","tree","type","ElementType","resolveElementType","getKey","props","prepareState","childNodes","branch","renderClientNode","safeChildNodes","VOID_ELEMENTS","error","RenderTreeClient","omitKey","obj","rest","CLIENT_MODE","_globalData","rowIndexScope","useSnapshot","BonsaiClient","captureUrl","onSubmit","onError","submit","e","snapshot","res","BonsaiProvider","storeRef","useRef","seenDataRef","resyncingRef","onDataChangeRef","proxy","cloneData","useEffect","previous","subscribe","next","Bonsai","createBonsaiRenderer","options","extendRegistry","coreRegistry","BonsaiRegistryContext","BonsaiRenderer"],"mappings":"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"}