@verbb/plugin-kit-react 1.0.9 → 2.0.0

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 (720) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +91 -16
  3. package/dist/app/PluginKitProvider.d.ts +28 -0
  4. package/dist/app/PluginKitProvider.d.ts.map +1 -0
  5. package/dist/app/PluginKitProvider.js +39 -0
  6. package/dist/app/PluginKitProvider.js.map +1 -0
  7. package/dist/app/configure.d.ts +29 -0
  8. package/dist/app/configure.d.ts.map +1 -0
  9. package/dist/app/configure.js +35 -0
  10. package/dist/app/configure.js.map +1 -0
  11. package/dist/app/index.d.ts +5 -0
  12. package/dist/app/index.d.ts.map +1 -0
  13. package/dist/app/index.js +5 -0
  14. package/dist/app/mountShadowApp.d.ts +6 -0
  15. package/dist/app/mountShadowApp.d.ts.map +1 -0
  16. package/dist/app/mountShadowApp.js +2 -0
  17. package/dist/components/Button.d.ts +26 -25
  18. package/dist/components/Button.d.ts.map +1 -1
  19. package/dist/components/Button.js +34 -141
  20. package/dist/components/Button.js.map +1 -1
  21. package/dist/components/ButtonGroup.d.ts +15 -10
  22. package/dist/components/ButtonGroup.d.ts.map +1 -1
  23. package/dist/components/ButtonGroup.js +24 -54
  24. package/dist/components/ButtonGroup.js.map +1 -1
  25. package/dist/components/Calendar.d.ts +17 -10
  26. package/dist/components/Calendar.d.ts.map +1 -1
  27. package/dist/components/Calendar.js +17 -129
  28. package/dist/components/Calendar.js.map +1 -1
  29. package/dist/components/Checkbox.d.ts +27 -4
  30. package/dist/components/Checkbox.d.ts.map +1 -1
  31. package/dist/components/Checkbox.js +37 -34
  32. package/dist/components/Checkbox.js.map +1 -1
  33. package/dist/components/CheckboxInput.d.ts +10 -10
  34. package/dist/components/CheckboxInput.d.ts.map +1 -1
  35. package/dist/components/CheckboxInput.js +30 -10
  36. package/dist/components/CheckboxInput.js.map +1 -1
  37. package/dist/components/CheckboxSelect.d.ts +18 -17
  38. package/dist/components/CheckboxSelect.d.ts.map +1 -1
  39. package/dist/components/CheckboxSelect.js +30 -58
  40. package/dist/components/CheckboxSelect.js.map +1 -1
  41. package/dist/components/CodeEditor.d.ts +16 -10
  42. package/dist/components/CodeEditor.d.ts.map +1 -1
  43. package/dist/components/CodeEditor.js +32 -71
  44. package/dist/components/CodeEditor.js.map +1 -1
  45. package/dist/components/ColorInput.d.ts +25 -12
  46. package/dist/components/ColorInput.d.ts.map +1 -1
  47. package/dist/components/ColorInput.js +42 -142
  48. package/dist/components/ColorInput.js.map +1 -1
  49. package/dist/components/Combobox.d.ts +31 -39
  50. package/dist/components/Combobox.d.ts.map +1 -1
  51. package/dist/components/Combobox.js +47 -385
  52. package/dist/components/Combobox.js.map +1 -1
  53. package/dist/components/ComboboxInput.d.ts +34 -17
  54. package/dist/components/ComboboxInput.d.ts.map +1 -1
  55. package/dist/components/ComboboxInput.js +81 -161
  56. package/dist/components/ComboboxInput.js.map +1 -1
  57. package/dist/components/CopyButton.d.ts +12 -8
  58. package/dist/components/CopyButton.d.ts.map +1 -1
  59. package/dist/components/CopyButton.js +15 -36
  60. package/dist/components/CopyButton.js.map +1 -1
  61. package/dist/components/DatePicker.d.ts +28 -7
  62. package/dist/components/DatePicker.d.ts.map +1 -1
  63. package/dist/components/DatePicker.js +82 -53
  64. package/dist/components/DatePicker.js.map +1 -1
  65. package/dist/components/Dialog.d.ts +20 -20
  66. package/dist/components/Dialog.d.ts.map +1 -1
  67. package/dist/components/Dialog.js +50 -175
  68. package/dist/components/Dialog.js.map +1 -1
  69. package/dist/components/DropdownMenu.d.ts +39 -46
  70. package/dist/components/DropdownMenu.d.ts.map +1 -1
  71. package/dist/components/DropdownMenu.js +40 -232
  72. package/dist/components/DropdownMenu.js.map +1 -1
  73. package/dist/components/EditableTable.d.ts +82 -27
  74. package/dist/components/EditableTable.d.ts.map +1 -1
  75. package/dist/components/EditableTable.js +183 -133
  76. package/dist/components/EditableTable.js.map +1 -1
  77. package/dist/components/Field.d.ts +13 -0
  78. package/dist/components/Field.d.ts.map +1 -0
  79. package/dist/components/Field.js +32 -0
  80. package/dist/components/Field.js.map +1 -0
  81. package/dist/components/Icon.d.ts +7 -0
  82. package/dist/components/Icon.d.ts.map +1 -0
  83. package/dist/components/Icon.js +15 -0
  84. package/dist/components/Icon.js.map +1 -0
  85. package/dist/components/Input.d.ts +20 -8
  86. package/dist/components/Input.d.ts.map +1 -1
  87. package/dist/components/Input.js +37 -34
  88. package/dist/components/Input.js.map +1 -1
  89. package/dist/components/InputGroup.d.ts +39 -19
  90. package/dist/components/InputGroup.d.ts.map +1 -1
  91. package/dist/components/InputGroup.js +83 -102
  92. package/dist/components/InputGroup.js.map +1 -1
  93. package/dist/components/Lightswitch.d.ts +15 -8
  94. package/dist/components/Lightswitch.d.ts.map +1 -1
  95. package/dist/components/Lightswitch.js +22 -47
  96. package/dist/components/Lightswitch.js.map +1 -1
  97. package/dist/components/Popover.d.ts +23 -11
  98. package/dist/components/Popover.d.ts.map +1 -1
  99. package/dist/components/Popover.js +46 -65
  100. package/dist/components/Popover.js.map +1 -1
  101. package/dist/components/Popup.d.ts +14 -0
  102. package/dist/components/Popup.d.ts.map +1 -0
  103. package/dist/components/Popup.js +19 -0
  104. package/dist/components/Popup.js.map +1 -0
  105. package/dist/components/RadioGroup.d.ts +26 -5
  106. package/dist/components/RadioGroup.d.ts.map +1 -1
  107. package/dist/components/RadioGroup.js +56 -26
  108. package/dist/components/RadioGroup.js.map +1 -1
  109. package/dist/components/RadioGroupInput.d.ts +19 -0
  110. package/dist/components/RadioGroupInput.d.ts.map +1 -0
  111. package/dist/components/RadioGroupInput.js +35 -0
  112. package/dist/components/RadioGroupInput.js.map +1 -0
  113. package/dist/components/ScrollArea.d.ts +11 -15
  114. package/dist/components/ScrollArea.d.ts.map +1 -1
  115. package/dist/components/ScrollArea.js +11 -42
  116. package/dist/components/ScrollArea.js.map +1 -1
  117. package/dist/components/Select.d.ts +46 -22
  118. package/dist/components/Select.d.ts.map +1 -1
  119. package/dist/components/Select.js +74 -196
  120. package/dist/components/Select.js.map +1 -1
  121. package/dist/components/SelectInput.d.ts +28 -21
  122. package/dist/components/SelectInput.d.ts.map +1 -1
  123. package/dist/components/SelectInput.js +62 -76
  124. package/dist/components/SelectInput.js.map +1 -1
  125. package/dist/components/Separator.d.ts +7 -3
  126. package/dist/components/Separator.d.ts.map +1 -1
  127. package/dist/components/Separator.js +11 -13
  128. package/dist/components/Separator.js.map +1 -1
  129. package/dist/components/Spinner.d.ts +12 -8
  130. package/dist/components/Spinner.d.ts.map +1 -1
  131. package/dist/components/Spinner.js +15 -34
  132. package/dist/components/Spinner.js.map +1 -1
  133. package/dist/components/Status.d.ts +7 -7
  134. package/dist/components/Status.d.ts.map +1 -1
  135. package/dist/components/Status.js +11 -51
  136. package/dist/components/Status.js.map +1 -1
  137. package/dist/components/Tabs.d.ts +31 -7
  138. package/dist/components/Tabs.d.ts.map +1 -1
  139. package/dist/components/Tabs.js +57 -30
  140. package/dist/components/Tabs.js.map +1 -1
  141. package/dist/components/Textarea.d.ts +18 -7
  142. package/dist/components/Textarea.d.ts.map +1 -1
  143. package/dist/components/Textarea.js +33 -18
  144. package/dist/components/Textarea.js.map +1 -1
  145. package/dist/components/TimePicker.d.ts +18 -8
  146. package/dist/components/TimePicker.d.ts.map +1 -1
  147. package/dist/components/TimePicker.js +38 -36
  148. package/dist/components/TimePicker.js.map +1 -1
  149. package/dist/components/Tiptap.d.ts +43 -0
  150. package/dist/components/Tiptap.d.ts.map +1 -0
  151. package/dist/components/Tiptap.js +96 -0
  152. package/dist/components/Tiptap.js.map +1 -0
  153. package/dist/components/Toggle.d.ts +13 -8
  154. package/dist/components/Toggle.d.ts.map +1 -1
  155. package/dist/components/Toggle.js +13 -42
  156. package/dist/components/Toggle.js.map +1 -1
  157. package/dist/components/ToggleGroup.d.ts +11 -10
  158. package/dist/components/ToggleGroup.d.ts.map +1 -1
  159. package/dist/components/ToggleGroup.js +11 -65
  160. package/dist/components/ToggleGroup.js.map +1 -1
  161. package/dist/components/Tooltip.d.ts +18 -8
  162. package/dist/components/Tooltip.d.ts.map +1 -1
  163. package/dist/components/Tooltip.js +18 -47
  164. package/dist/components/Tooltip.js.map +1 -1
  165. package/dist/components/index.d.ts +37 -45
  166. package/dist/components/index.d.ts.map +1 -1
  167. package/dist/components/index.js +35 -43
  168. package/dist/fault/AppFaultBoundary.d.ts +18 -0
  169. package/dist/fault/AppFaultBoundary.d.ts.map +1 -0
  170. package/dist/fault/AppFaultBoundary.js +24 -0
  171. package/dist/fault/AppFaultBoundary.js.map +1 -0
  172. package/dist/fault/AppFaultProvider.d.ts +43 -0
  173. package/dist/fault/AppFaultProvider.d.ts.map +1 -0
  174. package/dist/fault/AppFaultProvider.js +192 -0
  175. package/dist/fault/AppFaultProvider.js.map +1 -0
  176. package/dist/fault/FaultFallback.d.ts +16 -0
  177. package/dist/fault/FaultFallback.d.ts.map +1 -0
  178. package/dist/fault/FaultFallback.js +67 -0
  179. package/dist/fault/FaultFallback.js.map +1 -0
  180. package/dist/fault/buildSupportBundle.d.ts +3 -0
  181. package/dist/fault/buildSupportBundle.d.ts.map +1 -0
  182. package/dist/fault/buildSupportBundle.js +22 -0
  183. package/dist/fault/buildSupportBundle.js.map +1 -0
  184. package/dist/fault/index.d.ts +8 -0
  185. package/dist/fault/index.d.ts.map +1 -0
  186. package/dist/fault/index.js +7 -0
  187. package/dist/fault/isIgnorableGlobalError.d.ts +3 -0
  188. package/dist/fault/isIgnorableGlobalError.d.ts.map +1 -0
  189. package/dist/fault/isIgnorableGlobalError.js +14 -0
  190. package/dist/fault/isIgnorableGlobalError.js.map +1 -0
  191. package/dist/fault/types.d.ts +18 -0
  192. package/dist/fault/types.d.ts.map +1 -0
  193. package/dist/fault/useUiWatchdog.d.ts +13 -0
  194. package/dist/fault/useUiWatchdog.d.ts.map +1 -0
  195. package/dist/fault/useUiWatchdog.js +38 -0
  196. package/dist/fault/useUiWatchdog.js.map +1 -0
  197. package/dist/forms/Field.d.ts +19 -31
  198. package/dist/forms/Field.d.ts.map +1 -1
  199. package/dist/forms/Field.js +28 -164
  200. package/dist/forms/Field.js.map +1 -1
  201. package/dist/forms/SchemaFormEngine.d.ts +5 -4
  202. package/dist/forms/SchemaFormEngine.d.ts.map +1 -1
  203. package/dist/forms/SchemaFormEngine.js +36 -16
  204. package/dist/forms/SchemaFormEngine.js.map +1 -1
  205. package/dist/forms/SchemaFormFieldNode.d.ts +13 -0
  206. package/dist/forms/SchemaFormFieldNode.d.ts.map +1 -0
  207. package/dist/forms/SchemaFormFieldNode.js +48 -0
  208. package/dist/forms/SchemaFormFieldNode.js.map +1 -0
  209. package/dist/forms/assertSchemaRegistry.d.ts +18 -0
  210. package/dist/forms/assertSchemaRegistry.d.ts.map +1 -0
  211. package/dist/forms/assertSchemaRegistry.js +71 -0
  212. package/dist/forms/assertSchemaRegistry.js.map +1 -0
  213. package/dist/forms/builtin-field-loaders.d.ts +11 -0
  214. package/dist/forms/builtin-field-loaders.d.ts.map +1 -0
  215. package/dist/forms/builtin-field-loaders.js +31 -0
  216. package/dist/forms/builtin-field-loaders.js.map +1 -0
  217. package/dist/forms/components/FieldWrap.d.ts +7 -1
  218. package/dist/forms/components/FieldWrap.d.ts.map +1 -1
  219. package/dist/forms/components/FieldWrap.js +17 -23
  220. package/dist/forms/components/FieldWrap.js.map +1 -1
  221. package/dist/forms/components/ModalTabs.d.ts +28 -13
  222. package/dist/forms/components/ModalTabs.d.ts.map +1 -1
  223. package/dist/forms/components/ModalTabs.js +99 -30
  224. package/dist/forms/components/ModalTabs.js.map +1 -1
  225. package/dist/forms/components/index.d.ts +3 -2
  226. package/dist/forms/components/index.d.ts.map +1 -1
  227. package/dist/forms/components/schemaErrors.d.ts +5 -0
  228. package/dist/forms/components/schemaErrors.d.ts.map +1 -0
  229. package/dist/forms/components/schemaErrors.js +34 -0
  230. package/dist/forms/components/schemaErrors.js.map +1 -0
  231. package/dist/forms/datetime.d.ts +12 -0
  232. package/dist/forms/datetime.d.ts.map +1 -0
  233. package/dist/forms/datetime.js +34 -0
  234. package/dist/forms/datetime.js.map +1 -0
  235. package/dist/forms/engine/context.d.ts +4 -19
  236. package/dist/forms/engine/context.d.ts.map +1 -1
  237. package/dist/forms/engine/context.js.map +1 -1
  238. package/dist/forms/fields/CheckboxSelectField.d.ts +3 -3
  239. package/dist/forms/fields/CheckboxSelectField.d.ts.map +1 -1
  240. package/dist/forms/fields/CheckboxSelectField.js +1 -3
  241. package/dist/forms/fields/CheckboxSelectField.js.map +1 -1
  242. package/dist/forms/fields/CodeEditorField.d.ts +3 -3
  243. package/dist/forms/fields/CodeEditorField.d.ts.map +1 -1
  244. package/dist/forms/fields/CodeEditorField.js +7 -7
  245. package/dist/forms/fields/CodeEditorField.js.map +1 -1
  246. package/dist/forms/fields/ColorField.d.ts +1 -1
  247. package/dist/forms/fields/ColorField.d.ts.map +1 -1
  248. package/dist/forms/fields/ColorField.js +4 -5
  249. package/dist/forms/fields/ColorField.js.map +1 -1
  250. package/dist/forms/fields/ComboboxField.d.ts +4 -5
  251. package/dist/forms/fields/ComboboxField.d.ts.map +1 -1
  252. package/dist/forms/fields/ComboboxField.js +2 -5
  253. package/dist/forms/fields/ComboboxField.js.map +1 -1
  254. package/dist/forms/fields/DateTimeField.d.ts +1 -1
  255. package/dist/forms/fields/DateTimeField.d.ts.map +1 -1
  256. package/dist/forms/fields/DateTimeField.js +22 -18
  257. package/dist/forms/fields/DateTimeField.js.map +1 -1
  258. package/dist/forms/fields/GroupField.d.ts +2 -2
  259. package/dist/forms/fields/GroupField.d.ts.map +1 -1
  260. package/dist/forms/fields/GroupField.js +0 -1
  261. package/dist/forms/fields/GroupField.js.map +1 -1
  262. package/dist/forms/fields/LightswitchField.d.ts +1 -1
  263. package/dist/forms/fields/LightswitchField.d.ts.map +1 -1
  264. package/dist/forms/fields/LightswitchField.js +2 -6
  265. package/dist/forms/fields/LightswitchField.js.map +1 -1
  266. package/dist/forms/fields/NumberField.d.ts +1 -1
  267. package/dist/forms/fields/NumberField.d.ts.map +1 -1
  268. package/dist/forms/fields/NumberField.js +4 -5
  269. package/dist/forms/fields/NumberField.js.map +1 -1
  270. package/dist/forms/fields/RadioGroupField.d.ts +2 -2
  271. package/dist/forms/fields/RadioGroupField.d.ts.map +1 -1
  272. package/dist/forms/fields/RadioGroupField.js +14 -39
  273. package/dist/forms/fields/RadioGroupField.js.map +1 -1
  274. package/dist/forms/fields/SelectField.d.ts +2 -2
  275. package/dist/forms/fields/SelectField.d.ts.map +1 -1
  276. package/dist/forms/fields/SelectField.js +1 -2
  277. package/dist/forms/fields/SelectField.js.map +1 -1
  278. package/dist/forms/fields/TextField.d.ts +1 -1
  279. package/dist/forms/fields/TextField.d.ts.map +1 -1
  280. package/dist/forms/fields/TextField.js +3 -4
  281. package/dist/forms/fields/TextField.js.map +1 -1
  282. package/dist/forms/fields/TextareaField.d.ts +1 -1
  283. package/dist/forms/fields/TextareaField.d.ts.map +1 -1
  284. package/dist/forms/fields/TextareaField.js +3 -5
  285. package/dist/forms/fields/TextareaField.js.map +1 -1
  286. package/dist/forms/index.d.ts +12 -7
  287. package/dist/forms/index.d.ts.map +1 -1
  288. package/dist/forms/index.js +9 -7
  289. package/dist/forms/registry.d.ts +4 -1
  290. package/dist/forms/registry.d.ts.map +1 -1
  291. package/dist/forms/registry.js +18 -50
  292. package/dist/forms/registry.js.map +1 -1
  293. package/dist/forms/useEngineField.d.ts +1 -1
  294. package/dist/forms/useEngineField.d.ts.map +1 -1
  295. package/dist/forms/useEngineField.js.map +1 -1
  296. package/dist/forms/utils.d.ts +6 -0
  297. package/dist/forms/utils.d.ts.map +1 -0
  298. package/dist/forms/utils.js +14 -0
  299. package/dist/forms/utils.js.map +1 -0
  300. package/dist/hooks/index.d.ts +1 -2
  301. package/dist/hooks/index.d.ts.map +1 -1
  302. package/dist/hooks/index.js +1 -2
  303. package/dist/hooks/useTranslation.d.ts +2 -1
  304. package/dist/hooks/useTranslation.d.ts.map +1 -1
  305. package/dist/hooks/useTranslation.js +3 -5
  306. package/dist/hooks/useTranslation.js.map +1 -1
  307. package/dist/index.d.ts +2 -1
  308. package/dist/index.d.ts.map +1 -1
  309. package/dist/index.js +42 -2
  310. package/dist/utils/cn.d.ts +4 -0
  311. package/dist/utils/cn.d.ts.map +1 -0
  312. package/dist/utils/cn.js +11 -0
  313. package/dist/utils/cn.js.map +1 -0
  314. package/dist/utils/craftHostBridge.d.ts +3 -2
  315. package/dist/utils/craftHostBridge.d.ts.map +1 -1
  316. package/dist/utils/craftHostBridge.js +1 -0
  317. package/dist/utils/craftHostBridge.js.map +1 -1
  318. package/dist/utils/create-plugin-kit-component.d.ts +16 -0
  319. package/dist/utils/create-plugin-kit-component.d.ts.map +1 -0
  320. package/dist/utils/create-plugin-kit-component.js +97 -0
  321. package/dist/utils/create-plugin-kit-component.js.map +1 -0
  322. package/dist/utils/index.d.ts +8 -19
  323. package/dist/utils/index.d.ts.map +1 -1
  324. package/dist/utils/index.js +7 -73
  325. package/dist/utils/isHostEvent.d.ts +7 -0
  326. package/dist/utils/isHostEvent.d.ts.map +1 -0
  327. package/dist/utils/isHostEvent.js +13 -0
  328. package/dist/utils/isHostEvent.js.map +1 -0
  329. package/dist/utils/lit-react-booleans.d.ts +9 -0
  330. package/dist/utils/lit-react-booleans.d.ts.map +1 -0
  331. package/dist/utils/lit-react-booleans.js +17 -0
  332. package/dist/utils/lit-react-booleans.js.map +1 -0
  333. package/dist/utils/pk-change.d.ts +5 -0
  334. package/dist/utils/pk-change.d.ts.map +1 -0
  335. package/dist/utils/pk-change.js +13 -0
  336. package/dist/utils/pk-change.js.map +1 -0
  337. package/package.json +34 -80
  338. package/style.css +16 -0
  339. package/tailwind-preflight-scope.css +28 -0
  340. package/tailwind-theme.css +245 -0
  341. package/vite-dev.mjs +22 -2
  342. package/dist/_virtual/_rolldown/runtime.js +0 -34
  343. package/dist/components/Command.d.ts +0 -26
  344. package/dist/components/Command.d.ts.map +0 -1
  345. package/dist/components/Command.js +0 -94
  346. package/dist/components/Command.js.map +0 -1
  347. package/dist/components/FadeIn.d.ts +0 -12
  348. package/dist/components/FadeIn.d.ts.map +0 -1
  349. package/dist/components/FadeIn.js +0 -24
  350. package/dist/components/FadeIn.js.map +0 -1
  351. package/dist/components/Label.d.ts +0 -4
  352. package/dist/components/Label.d.ts.map +0 -1
  353. package/dist/components/Label.js +0 -15
  354. package/dist/components/Label.js.map +0 -1
  355. package/dist/components/Markdown.d.ts +0 -11
  356. package/dist/components/Markdown.d.ts.map +0 -1
  357. package/dist/components/Markdown.js +0 -46
  358. package/dist/components/Markdown.js.map +0 -1
  359. package/dist/components/MenuButton.d.ts +0 -40
  360. package/dist/components/MenuButton.d.ts.map +0 -1
  361. package/dist/components/MenuButton.js +0 -122
  362. package/dist/components/MenuButton.js.map +0 -1
  363. package/dist/components/ModalTabs.d.ts +0 -8
  364. package/dist/components/ModalTabs.d.ts.map +0 -1
  365. package/dist/components/ModalTabs.js +0 -37
  366. package/dist/components/ModalTabs.js.map +0 -1
  367. package/dist/components/PaneTabs.d.ts +0 -8
  368. package/dist/components/PaneTabs.d.ts.map +0 -1
  369. package/dist/components/PaneTabs.js +0 -37
  370. package/dist/components/PaneTabs.js.map +0 -1
  371. package/dist/components/SlideUp.d.ts +0 -12
  372. package/dist/components/SlideUp.d.ts.map +0 -1
  373. package/dist/components/SlideUp.js +0 -36
  374. package/dist/components/SlideUp.js.map +0 -1
  375. package/dist/components/Slot.d.ts +0 -6
  376. package/dist/components/Slot.d.ts.map +0 -1
  377. package/dist/components/Slot.js +0 -52
  378. package/dist/components/Slot.js.map +0 -1
  379. package/dist/components/Table.d.ts +0 -10
  380. package/dist/components/Table.d.ts.map +0 -1
  381. package/dist/components/Table.js +0 -64
  382. package/dist/components/Table.js.map +0 -1
  383. package/dist/components/TiptapContent.d.ts +0 -9
  384. package/dist/components/TiptapContent.d.ts.map +0 -1
  385. package/dist/components/TiptapContent.js +0 -43
  386. package/dist/components/TiptapContent.js.map +0 -1
  387. package/dist/components/TiptapEditor.d.ts +0 -43
  388. package/dist/components/TiptapEditor.d.ts.map +0 -1
  389. package/dist/components/TiptapEditor.js +0 -573
  390. package/dist/components/TiptapEditor.js.map +0 -1
  391. package/dist/components/TiptapInput.d.ts +0 -20
  392. package/dist/components/TiptapInput.d.ts.map +0 -1
  393. package/dist/components/TiptapInput.js +0 -140
  394. package/dist/components/TiptapInput.js.map +0 -1
  395. package/dist/components/VirtualizedScrollArea.d.ts +0 -25
  396. package/dist/components/VirtualizedScrollArea.d.ts.map +0 -1
  397. package/dist/components/VirtualizedScrollArea.js +0 -80
  398. package/dist/components/VirtualizedScrollArea.js.map +0 -1
  399. package/dist/components/editable-table/RowDataCells.d.ts +0 -3
  400. package/dist/components/editable-table/RowDataCells.d.ts.map +0 -1
  401. package/dist/components/editable-table/RowDataCells.js +0 -33
  402. package/dist/components/editable-table/RowDataCells.js.map +0 -1
  403. package/dist/components/editable-table/TableCell.d.ts +0 -13
  404. package/dist/components/editable-table/TableCell.d.ts.map +0 -1
  405. package/dist/components/editable-table/TableCell.js +0 -415
  406. package/dist/components/editable-table/TableCell.js.map +0 -1
  407. package/dist/components/editable-table/TableRow.d.ts +0 -3
  408. package/dist/components/editable-table/TableRow.d.ts.map +0 -1
  409. package/dist/components/editable-table/TableRow.js +0 -166
  410. package/dist/components/editable-table/TableRow.js.map +0 -1
  411. package/dist/components/editable-table/helpers.d.ts +0 -12
  412. package/dist/components/editable-table/helpers.d.ts.map +0 -1
  413. package/dist/components/editable-table/helpers.js +0 -23
  414. package/dist/components/editable-table/helpers.js.map +0 -1
  415. package/dist/components/editable-table/index.d.ts +0 -4
  416. package/dist/components/editable-table/index.d.ts.map +0 -1
  417. package/dist/components/editable-table/index.js +0 -4
  418. package/dist/components/editable-table/types.d.ts +0 -55
  419. package/dist/components/editable-table/types.d.ts.map +0 -1
  420. package/dist/components/editable-table/types.js +0 -0
  421. package/dist/components/editable-table/useEditableTableCellChange.d.ts +0 -17
  422. package/dist/components/editable-table/useEditableTableCellChange.d.ts.map +0 -1
  423. package/dist/components/editable-table/useEditableTableCellChange.js +0 -152
  424. package/dist/components/editable-table/useEditableTableCellChange.js.map +0 -1
  425. package/dist/components/editable-table/useEditableTableDnd.d.ts +0 -18
  426. package/dist/components/editable-table/useEditableTableDnd.d.ts.map +0 -1
  427. package/dist/components/editable-table/useEditableTableDnd.js +0 -55
  428. package/dist/components/editable-table/useEditableTableDnd.js.map +0 -1
  429. package/dist/components/editable-table/useEditableTableRows.d.ts +0 -17
  430. package/dist/components/editable-table/useEditableTableRows.d.ts.map +0 -1
  431. package/dist/components/editable-table/useEditableTableRows.js +0 -108
  432. package/dist/components/editable-table/useEditableTableRows.js.map +0 -1
  433. package/dist/components/tiptap/InlineVariablePickerPopover.d.ts +0 -24
  434. package/dist/components/tiptap/InlineVariablePickerPopover.d.ts.map +0 -1
  435. package/dist/components/tiptap/InlineVariablePickerPopover.js +0 -63
  436. package/dist/components/tiptap/InlineVariablePickerPopover.js.map +0 -1
  437. package/dist/components/tiptap/InsertLinkDialog.d.ts +0 -14
  438. package/dist/components/tiptap/InsertLinkDialog.d.ts.map +0 -1
  439. package/dist/components/tiptap/InsertLinkDialog.js +0 -145
  440. package/dist/components/tiptap/InsertLinkDialog.js.map +0 -1
  441. package/dist/components/tiptap/LinkBubbleMenu.d.ts +0 -10
  442. package/dist/components/tiptap/LinkBubbleMenu.d.ts.map +0 -1
  443. package/dist/components/tiptap/LinkBubbleMenu.js +0 -106
  444. package/dist/components/tiptap/LinkBubbleMenu.js.map +0 -1
  445. package/dist/components/tiptap/LinkDropdown.d.ts +0 -53
  446. package/dist/components/tiptap/LinkDropdown.d.ts.map +0 -1
  447. package/dist/components/tiptap/LinkDropdown.js +0 -155
  448. package/dist/components/tiptap/LinkDropdown.js.map +0 -1
  449. package/dist/components/tiptap/VariableCommandList.d.ts +0 -37
  450. package/dist/components/tiptap/VariableCommandList.d.ts.map +0 -1
  451. package/dist/components/tiptap/VariableCommandList.js +0 -166
  452. package/dist/components/tiptap/VariableCommandList.js.map +0 -1
  453. package/dist/components/tiptap/VariableDropdown.d.ts +0 -40
  454. package/dist/components/tiptap/VariableDropdown.d.ts.map +0 -1
  455. package/dist/components/tiptap/VariableDropdown.js +0 -121
  456. package/dist/components/tiptap/VariableDropdown.js.map +0 -1
  457. package/dist/components/tiptap/VariablePickerContext.d.ts +0 -58
  458. package/dist/components/tiptap/VariablePickerContext.d.ts.map +0 -1
  459. package/dist/components/tiptap/VariablePickerContext.js +0 -34
  460. package/dist/components/tiptap/VariablePickerContext.js.map +0 -1
  461. package/dist/components/tiptap/VariableTag.d.ts +0 -6
  462. package/dist/components/tiptap/VariableTag.d.ts.map +0 -1
  463. package/dist/components/tiptap/VariableTag.js +0 -153
  464. package/dist/components/tiptap/VariableTag.js.map +0 -1
  465. package/dist/components/tiptap/VariableTagView.d.ts +0 -3
  466. package/dist/components/tiptap/VariableTagView.d.ts.map +0 -1
  467. package/dist/components/tiptap/VariableTagView.js +0 -584
  468. package/dist/components/tiptap/VariableTagView.js.map +0 -1
  469. package/dist/components/tiptap/VariableTransformControls.d.ts +0 -37
  470. package/dist/components/tiptap/VariableTransformControls.d.ts.map +0 -1
  471. package/dist/components/tiptap/VariableTransformControls.js +0 -157
  472. package/dist/components/tiptap/VariableTransformControls.js.map +0 -1
  473. package/dist/components/tiptap/editorConfig.d.ts +0 -15
  474. package/dist/components/tiptap/editorConfig.d.ts.map +0 -1
  475. package/dist/components/tiptap/editorConfig.js +0 -191
  476. package/dist/components/tiptap/editorConfig.js.map +0 -1
  477. package/dist/components/tiptap/useInlineVariablePicker.d.ts +0 -34
  478. package/dist/components/tiptap/useInlineVariablePicker.d.ts.map +0 -1
  479. package/dist/components/tiptap/useInlineVariablePicker.js +0 -240
  480. package/dist/components/tiptap/useInlineVariablePicker.js.map +0 -1
  481. package/dist/components/tiptap/useVariablePicker.d.ts +0 -28
  482. package/dist/components/tiptap/useVariablePicker.d.ts.map +0 -1
  483. package/dist/components/tiptap/useVariablePicker.js +0 -122
  484. package/dist/components/tiptap/useVariablePicker.js.map +0 -1
  485. package/dist/components/tiptap/variablePickerUtils.d.ts +0 -11
  486. package/dist/components/tiptap/variablePickerUtils.d.ts.map +0 -1
  487. package/dist/components/tiptap/variablePickerUtils.js +0 -63
  488. package/dist/components/tiptap/variablePickerUtils.js.map +0 -1
  489. package/dist/components/tiptap/variableSerialization.d.ts +0 -53
  490. package/dist/components/tiptap/variableSerialization.d.ts.map +0 -1
  491. package/dist/components/tiptap/variableSerialization.js +0 -291
  492. package/dist/components/tiptap/variableSerialization.js.map +0 -1
  493. package/dist/css/core.css +0 -288
  494. package/dist/css/style.css +0 -295
  495. package/dist/forms/TranslationIcon.d.ts +0 -5
  496. package/dist/forms/TranslationIcon.d.ts.map +0 -1
  497. package/dist/forms/TranslationIcon.js +0 -18
  498. package/dist/forms/TranslationIcon.js.map +0 -1
  499. package/dist/forms/components/index.js +0 -3
  500. package/dist/forms/contexts/VariableCategoriesContext.d.ts +0 -19
  501. package/dist/forms/contexts/VariableCategoriesContext.d.ts.map +0 -1
  502. package/dist/forms/contexts/VariableCategoriesContext.js +0 -20
  503. package/dist/forms/contexts/VariableCategoriesContext.js.map +0 -1
  504. package/dist/forms/engine/FormStateStore.d.ts +0 -24
  505. package/dist/forms/engine/FormStateStore.d.ts.map +0 -1
  506. package/dist/forms/engine/FormStateStore.js +0 -97
  507. package/dist/forms/engine/FormStateStore.js.map +0 -1
  508. package/dist/forms/engine/SchemaIndex.d.ts +0 -33
  509. package/dist/forms/engine/SchemaIndex.d.ts.map +0 -1
  510. package/dist/forms/engine/SchemaIndex.js +0 -21
  511. package/dist/forms/engine/SchemaIndex.js.map +0 -1
  512. package/dist/forms/engine/ValidationEngine.d.ts +0 -13
  513. package/dist/forms/engine/ValidationEngine.d.ts.map +0 -1
  514. package/dist/forms/engine/ValidationEngine.js +0 -155
  515. package/dist/forms/engine/ValidationEngine.js.map +0 -1
  516. package/dist/forms/engine/buildGroupedMessage.d.ts +0 -2
  517. package/dist/forms/engine/buildGroupedMessage.d.ts.map +0 -1
  518. package/dist/forms/engine/buildGroupedMessage.js +0 -20
  519. package/dist/forms/engine/buildGroupedMessage.js.map +0 -1
  520. package/dist/forms/engine/rules/email.d.ts +0 -2
  521. package/dist/forms/engine/rules/email.d.ts.map +0 -1
  522. package/dist/forms/engine/rules/email.js +0 -11
  523. package/dist/forms/engine/rules/email.js.map +0 -1
  524. package/dist/forms/engine/rules/emailOrVariable.d.ts +0 -2
  525. package/dist/forms/engine/rules/emailOrVariable.d.ts.map +0 -1
  526. package/dist/forms/engine/rules/emailOrVariable.js +0 -13
  527. package/dist/forms/engine/rules/emailOrVariable.js.map +0 -1
  528. package/dist/forms/engine/rules/handle.d.ts +0 -2
  529. package/dist/forms/engine/rules/handle.d.ts.map +0 -1
  530. package/dist/forms/engine/rules/handle.js +0 -12
  531. package/dist/forms/engine/rules/handle.js.map +0 -1
  532. package/dist/forms/engine/rules/index.d.ts +0 -9
  533. package/dist/forms/engine/rules/index.d.ts.map +0 -1
  534. package/dist/forms/engine/rules/index.js +0 -35
  535. package/dist/forms/engine/rules/index.js.map +0 -1
  536. package/dist/forms/engine/rules/max.d.ts +0 -2
  537. package/dist/forms/engine/rules/max.d.ts.map +0 -1
  538. package/dist/forms/engine/rules/max.js +0 -16
  539. package/dist/forms/engine/rules/max.js.map +0 -1
  540. package/dist/forms/engine/rules/min.d.ts +0 -2
  541. package/dist/forms/engine/rules/min.d.ts.map +0 -1
  542. package/dist/forms/engine/rules/min.js +0 -16
  543. package/dist/forms/engine/rules/min.js.map +0 -1
  544. package/dist/forms/engine/rules/required.d.ts +0 -2
  545. package/dist/forms/engine/rules/required.d.ts.map +0 -1
  546. package/dist/forms/engine/rules/required.js +0 -11
  547. package/dist/forms/engine/rules/required.js.map +0 -1
  548. package/dist/forms/engine/rules/uniqueHandle.d.ts +0 -9
  549. package/dist/forms/engine/rules/uniqueHandle.d.ts.map +0 -1
  550. package/dist/forms/engine/rules/uniqueHandle.js +0 -95
  551. package/dist/forms/engine/rules/uniqueHandle.js.map +0 -1
  552. package/dist/forms/engine/rules/utils.d.ts +0 -3
  553. package/dist/forms/engine/rules/utils.d.ts.map +0 -1
  554. package/dist/forms/engine/rules/utils.js +0 -21
  555. package/dist/forms/engine/rules/utils.js.map +0 -1
  556. package/dist/forms/fields/CalculationsField.d.ts +0 -24
  557. package/dist/forms/fields/CalculationsField.d.ts.map +0 -1
  558. package/dist/forms/fields/CalculationsField.js +0 -215
  559. package/dist/forms/fields/CalculationsField.js.map +0 -1
  560. package/dist/forms/fields/CalculationsToolbar.d.ts +0 -17
  561. package/dist/forms/fields/CalculationsToolbar.d.ts.map +0 -1
  562. package/dist/forms/fields/CalculationsToolbar.js +0 -130
  563. package/dist/forms/fields/CalculationsToolbar.js.map +0 -1
  564. package/dist/forms/fields/EditableTableField.d.ts +0 -22
  565. package/dist/forms/fields/EditableTableField.d.ts.map +0 -1
  566. package/dist/forms/fields/EditableTableField.js +0 -37
  567. package/dist/forms/fields/EditableTableField.js.map +0 -1
  568. package/dist/forms/fields/ElementSelectField.d.ts +0 -20
  569. package/dist/forms/fields/ElementSelectField.d.ts.map +0 -1
  570. package/dist/forms/fields/ElementSelectField.js +0 -215
  571. package/dist/forms/fields/ElementSelectField.js.map +0 -1
  572. package/dist/forms/fields/HandleField.d.ts +0 -20
  573. package/dist/forms/fields/HandleField.d.ts.map +0 -1
  574. package/dist/forms/fields/HandleField.js +0 -70
  575. package/dist/forms/fields/HandleField.js.map +0 -1
  576. package/dist/forms/fields/ListField.d.ts +0 -18
  577. package/dist/forms/fields/ListField.d.ts.map +0 -1
  578. package/dist/forms/fields/ListField.js +0 -52
  579. package/dist/forms/fields/ListField.js.map +0 -1
  580. package/dist/forms/fields/RichTextField.d.ts +0 -24
  581. package/dist/forms/fields/RichTextField.d.ts.map +0 -1
  582. package/dist/forms/fields/RichTextField.js +0 -53
  583. package/dist/forms/fields/RichTextField.js.map +0 -1
  584. package/dist/forms/fields/StaticTableField.d.ts +0 -34
  585. package/dist/forms/fields/StaticTableField.d.ts.map +0 -1
  586. package/dist/forms/fields/StaticTableField.js +0 -128
  587. package/dist/forms/fields/StaticTableField.js.map +0 -1
  588. package/dist/forms/fields/VariablePickerField.d.ts +0 -21
  589. package/dist/forms/fields/VariablePickerField.d.ts.map +0 -1
  590. package/dist/forms/fields/VariablePickerField.js +0 -51
  591. package/dist/forms/fields/VariablePickerField.js.map +0 -1
  592. package/dist/forms/store/element-store.d.ts +0 -11
  593. package/dist/forms/store/element-store.d.ts.map +0 -1
  594. package/dist/forms/store/element-store.js +0 -41
  595. package/dist/forms/store/element-store.js.map +0 -1
  596. package/dist/forms/useEditableTableFieldBinding.d.ts +0 -13
  597. package/dist/forms/useEditableTableFieldBinding.d.ts.map +0 -1
  598. package/dist/forms/useEditableTableFieldBinding.js +0 -91
  599. package/dist/forms/useEditableTableFieldBinding.js.map +0 -1
  600. package/dist/hooks/useKeyboardShortcuts.d.ts +0 -14
  601. package/dist/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  602. package/dist/hooks/useKeyboardShortcuts.js +0 -67
  603. package/dist/hooks/useKeyboardShortcuts.js.map +0 -1
  604. package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +0 -15
  605. package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js.map +0 -1
  606. package/dist/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +0 -15
  607. package/dist/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js.map +0 -1
  608. package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js +0 -13
  609. package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js.map +0 -1
  610. package/dist/node_modules/@babel/runtime/helpers/createClass.js +0 -21
  611. package/dist/node_modules/@babel/runtime/helpers/createClass.js.map +0 -1
  612. package/dist/node_modules/@babel/runtime/helpers/defineProperty.js +0 -20
  613. package/dist/node_modules/@babel/runtime/helpers/defineProperty.js.map +0 -1
  614. package/dist/node_modules/@babel/runtime/helpers/interopRequireDefault.js +0 -13
  615. package/dist/node_modules/@babel/runtime/helpers/interopRequireDefault.js.map +0 -1
  616. package/dist/node_modules/@babel/runtime/helpers/iterableToArray.js +0 -13
  617. package/dist/node_modules/@babel/runtime/helpers/iterableToArray.js.map +0 -1
  618. package/dist/node_modules/@babel/runtime/helpers/nonIterableSpread.js +0 -13
  619. package/dist/node_modules/@babel/runtime/helpers/nonIterableSpread.js.map +0 -1
  620. package/dist/node_modules/@babel/runtime/helpers/toConsumableArray.js +0 -21
  621. package/dist/node_modules/@babel/runtime/helpers/toConsumableArray.js.map +0 -1
  622. package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js +0 -22
  623. package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js.map +0 -1
  624. package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js +0 -18
  625. package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js.map +0 -1
  626. package/dist/node_modules/@babel/runtime/helpers/typeof.js +0 -18
  627. package/dist/node_modules/@babel/runtime/helpers/typeof.js.map +0 -1
  628. package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +0 -19
  629. package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js.map +0 -1
  630. package/dist/node_modules/jexl/dist/Expression.js +0 -84
  631. package/dist/node_modules/jexl/dist/Expression.js.map +0 -1
  632. package/dist/node_modules/jexl/dist/Jexl.js +0 -165
  633. package/dist/node_modules/jexl/dist/Jexl.js.map +0 -1
  634. package/dist/node_modules/jexl/dist/Lexer.js +0 -152
  635. package/dist/node_modules/jexl/dist/Lexer.js.map +0 -1
  636. package/dist/node_modules/jexl/dist/PromiseSync.js +0 -87
  637. package/dist/node_modules/jexl/dist/PromiseSync.js.map +0 -1
  638. package/dist/node_modules/jexl/dist/evaluator/Evaluator.js +0 -98
  639. package/dist/node_modules/jexl/dist/evaluator/Evaluator.js.map +0 -1
  640. package/dist/node_modules/jexl/dist/evaluator/handlers.js +0 -162
  641. package/dist/node_modules/jexl/dist/evaluator/handlers.js.map +0 -1
  642. package/dist/node_modules/jexl/dist/grammar.js +0 -195
  643. package/dist/node_modules/jexl/dist/grammar.js.map +0 -1
  644. package/dist/node_modules/jexl/dist/parser/Parser.js +0 -135
  645. package/dist/node_modules/jexl/dist/parser/Parser.js.map +0 -1
  646. package/dist/node_modules/jexl/dist/parser/handlers.js +0 -205
  647. package/dist/node_modules/jexl/dist/parser/handlers.js.map +0 -1
  648. package/dist/node_modules/jexl/dist/parser/states.js +0 -158
  649. package/dist/node_modules/jexl/dist/parser/states.js.map +0 -1
  650. package/dist/types/global.d.d.ts +0 -1
  651. package/dist/types/global.d.js +0 -0
  652. package/dist/utils/classes.d.ts +0 -18
  653. package/dist/utils/classes.d.ts.map +0 -1
  654. package/dist/utils/classes.js +0 -25
  655. package/dist/utils/classes.js.map +0 -1
  656. package/dist/utils/config.d.ts +0 -14
  657. package/dist/utils/config.d.ts.map +0 -1
  658. package/dist/utils/config.js +0 -20
  659. package/dist/utils/config.js.map +0 -1
  660. package/dist/utils/datetime.d.ts +0 -10
  661. package/dist/utils/datetime.d.ts.map +0 -1
  662. package/dist/utils/datetime.js +0 -60
  663. package/dist/utils/datetime.js.map +0 -1
  664. package/dist/utils/documentScrollStability.d.ts +0 -7
  665. package/dist/utils/documentScrollStability.d.ts.map +0 -1
  666. package/dist/utils/documentScrollStability.js +0 -19
  667. package/dist/utils/documentScrollStability.js.map +0 -1
  668. package/dist/utils/handle.d.ts +0 -10
  669. package/dist/utils/handle.d.ts.map +0 -1
  670. package/dist/utils/handle.js +0 -51
  671. package/dist/utils/handle.js.map +0 -1
  672. package/dist/utils/hostBridge.d.ts +0 -40
  673. package/dist/utils/hostBridge.d.ts.map +0 -1
  674. package/dist/utils/hostBridge.js +0 -35
  675. package/dist/utils/hostBridge.js.map +0 -1
  676. package/dist/utils/index.js.map +0 -1
  677. package/dist/utils/portal.d.ts +0 -17
  678. package/dist/utils/portal.d.ts.map +0 -1
  679. package/dist/utils/portal.js +0 -51
  680. package/dist/utils/portal.js.map +0 -1
  681. package/dist/utils/schema.d.ts +0 -17
  682. package/dist/utils/schema.d.ts.map +0 -1
  683. package/dist/utils/schema.js +0 -56
  684. package/dist/utils/schema.js.map +0 -1
  685. package/dist/utils/schemaFieldNames.d.ts +0 -2
  686. package/dist/utils/schemaFieldNames.d.ts.map +0 -1
  687. package/dist/utils/schemaFieldNames.js +0 -16
  688. package/dist/utils/schemaFieldNames.js.map +0 -1
  689. package/dist/utils/schemaIndex.d.ts +0 -6
  690. package/dist/utils/schemaIndex.d.ts.map +0 -1
  691. package/dist/utils/schemaIndex.js +0 -31
  692. package/dist/utils/schemaIndex.js.map +0 -1
  693. package/dist/utils/schemaIndexCache.d.ts +0 -6
  694. package/dist/utils/schemaIndexCache.d.ts.map +0 -1
  695. package/dist/utils/schemaIndexCache.js +0 -32
  696. package/dist/utils/schemaIndexCache.js.map +0 -1
  697. package/dist/utils/schemaNormalize.d.ts +0 -13
  698. package/dist/utils/schemaNormalize.d.ts.map +0 -1
  699. package/dist/utils/schemaNormalize.js +0 -17
  700. package/dist/utils/schemaNormalize.js.map +0 -1
  701. package/dist/utils/store.d.ts +0 -7
  702. package/dist/utils/store.d.ts.map +0 -1
  703. package/dist/utils/store.js +0 -6
  704. package/dist/utils/store.js.map +0 -1
  705. package/dist/utils/timeOptions.d.ts +0 -6
  706. package/dist/utils/timeOptions.d.ts.map +0 -1
  707. package/dist/utils/timeOptions.js +0 -42
  708. package/dist/utils/timeOptions.js.map +0 -1
  709. package/dist/utils/tiptap.d.ts +0 -13
  710. package/dist/utils/tiptap.d.ts.map +0 -1
  711. package/dist/utils/tiptap.js +0 -39
  712. package/dist/utils/tiptap.js.map +0 -1
  713. package/dist/utils/translation.d.ts +0 -5
  714. package/dist/utils/translation.d.ts.map +0 -1
  715. package/dist/utils/translation.js +0 -21
  716. package/dist/utils/translation.js.map +0 -1
  717. package/dist/utils/validation.d.ts +0 -4
  718. package/dist/utils/validation.d.ts.map +0 -1
  719. package/dist/utils/validation.js +0 -253
  720. package/dist/utils/validation.js.map +0 -1
@@ -1,171 +1,35 @@
1
- import { cn } from "../utils/classes.js";
2
- import "../utils/index.js";
3
- import { useTranslation } from "../hooks/useTranslation.js";
4
- import "../hooks/index.js";
5
- import { Label } from "../components/Label.js";
6
- import { Markdown } from "../components/Markdown.js";
7
- import "../components/index.js";
8
- import { Slot } from "../components/Slot.js";
9
- import { TranslationIcon } from "./TranslationIcon.js";
10
- import { createContext, useContext, useId } from "react";
11
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
12
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
13
- import { faAsterisk, faTriangleExclamation } from "@fortawesome/pro-solid-svg-icons";
1
+ import { Field } from "../components/Field.js";
2
+ import "react";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
14
4
  //#region src/forms/Field.tsx
15
- var FieldContext = createContext(null);
16
- var InlineFieldErrorVisibilityContext = createContext(true);
17
- var useFieldContext = () => {
18
- const context = useContext(FieldContext);
19
- if (!context) throw new Error("Field components must be used within <FieldRoot>.");
20
- return context;
21
- };
22
- var FieldRoot = ({ name, errors = [], className, ...props }) => {
23
- const id = useId();
24
- return /* @__PURE__ */ jsx(FieldContext.Provider, {
25
- value: {
26
- id,
27
- name,
28
- errors
29
- },
30
- children: /* @__PURE__ */ jsx("div", {
31
- "data-slot": "field",
32
- className: cn("space-y-1.5", className),
33
- ...props
34
- })
35
- });
36
- };
37
- var FieldHeader = ({ className, ...props }) => {
38
- return /* @__PURE__ */ jsx("div", {
39
- "data-slot": "field-header",
40
- className: cn(className),
41
- ...props
42
- });
43
- };
44
- var FieldLabel = ({ className, ...props }) => {
45
- const { id, errors } = useFieldContext();
46
- return /* @__PURE__ */ jsx(Label, {
47
- "data-slot": "field-label",
48
- htmlFor: `${id}-control`,
49
- "data-error": errors.length > 0,
50
- className: cn("text-sm font-bold", className),
51
- ...props
52
- });
53
- };
54
- var FieldInstructions = ({ className, children, ...props }) => {
55
- const { id } = useFieldContext();
56
- const content = typeof children === "string" ? children : null;
57
- const baseProps = {
58
- "data-slot": "field-instructions",
59
- id: `${id}-description`,
60
- className: cn("text-sm text-gray-500", className)
61
- };
62
- if (content !== null) return /* @__PURE__ */ jsx(Markdown, {
63
- content,
64
- inline: true,
65
- as: "p",
66
- ...baseProps
67
- });
68
- return /* @__PURE__ */ jsx("p", {
69
- ...baseProps,
70
- ...props,
71
- children
72
- });
73
- };
74
- var FieldControl = ({ className, ...props }) => {
75
- const { id, errors } = useFieldContext();
76
- const isInvalid = errors.length > 0;
77
- return /* @__PURE__ */ jsx(Slot, {
78
- "data-slot": "field-control",
79
- id: `${id}-control`,
80
- "aria-invalid": isInvalid,
81
- "aria-describedby": `${id}-description ${id}-errors`,
82
- "aria-errormessage": isInvalid ? `${id}-errors` : void 0,
83
- className: cn(className),
84
- ...props
85
- });
86
- };
87
- var FieldErrors = ({ className, ...props }) => {
88
- const { id, errors } = useFieldContext();
89
- if (!errors.length) return null;
90
- return /* @__PURE__ */ jsx("ul", {
91
- "data-slot": "field-errors",
92
- id: `${id}-errors`,
93
- className: cn("list-[square] text-error", className),
94
- style: {
95
- marginBlockStart: "5px",
96
- paddingInlineStart: "20px"
97
- },
98
- ...props,
99
- children: errors.map((message, index) => {
100
- return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Markdown, {
101
- content: message,
102
- inline: true
103
- }) }, index);
104
- })
105
- });
106
- };
107
- var FieldLayout = ({ name, label, instructions, headerEnd, required, warning, errors = [], withControl = true, showInlineErrors, translatable = false, className, children, ...props }) => {
108
- const t = useTranslation();
109
- const contextShowInlineErrors = useContext(InlineFieldErrorVisibilityContext);
110
- const shouldShowInlineErrors = showInlineErrors ?? contextShowInlineErrors;
111
- return /* @__PURE__ */ jsxs(FieldRoot, {
112
- name,
113
- errors,
5
+ /**
6
+ * Schema-form field shell. Delegates label / instructions / errors / warning / tip /
7
+ * required / translatable rendering to the `<pk-field>` web component, so there is no
8
+ * Tailwind or per-framework styling in this facade — only tokens + shadow-DOM CSS.
9
+ *
10
+ * Do not force `width: auto` on unlabeled shells here — composite controls (conditions
11
+ * tables, etc.) need full width. FieldWrap clusters shrink nested hosts via
12
+ * `[data-pk-field-wrap-controls] pk-field` in `style.css`.
13
+ */
14
+ var FieldLayout = ({ name, label, instructions, warning, tip, required, translatable, errors = [], headerEnd, className, style, children }) => {
15
+ return /* @__PURE__ */ jsxs(Field, {
114
16
  className,
115
- ...props,
116
- children: [
117
- label || instructions || headerEnd ? /* @__PURE__ */ jsxs(FieldHeader, {
118
- className: cn(headerEnd ? "flex items-start justify-between gap-3" : "space-y-0.5"),
119
- children: [/* @__PURE__ */ jsxs("div", {
120
- className: "min-w-0 space-y-0.5",
121
- children: [label && /* @__PURE__ */ jsxs(FieldLabel, {
122
- className: "flex items-center gap-1",
123
- children: [
124
- label,
125
- required && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
126
- className: "sr-only",
127
- children: t("Required")
128
- }), /* @__PURE__ */ jsx("span", {
129
- className: "text-rose-600",
130
- "aria-hidden": "true",
131
- children: /* @__PURE__ */ jsx(FontAwesomeIcon, {
132
- icon: faAsterisk,
133
- className: "size-[10px]"
134
- })
135
- })] }),
136
- translatable ? /* @__PURE__ */ jsxs("span", {
137
- className: "inline-flex",
138
- title: t("Translatable"),
139
- children: [/* @__PURE__ */ jsx(TranslationIcon, {}), /* @__PURE__ */ jsx("span", {
140
- className: "sr-only",
141
- children: t("Translatable")
142
- })]
143
- }) : null
144
- ]
145
- }), instructions && /* @__PURE__ */ jsx(FieldInstructions, { children: instructions })]
146
- }), headerEnd && /* @__PURE__ */ jsx("div", {
147
- className: "shrink-0",
148
- children: headerEnd
149
- })]
150
- }) : null,
151
- withControl ? /* @__PURE__ */ jsx(FieldControl, { children }) : children,
152
- shouldShowInlineErrors && /* @__PURE__ */ jsx(FieldErrors, {}),
153
- warning && /* @__PURE__ */ jsxs("div", {
154
- className: "flex min-w-0 items-start gap-1 text-sm text-warning",
155
- children: [/* @__PURE__ */ jsx(FontAwesomeIcon, {
156
- icon: faTriangleExclamation,
157
- className: "mt-[0.3em] size-3 shrink-0"
158
- }), /* @__PURE__ */ jsx(Markdown, {
159
- className: "min-w-0",
160
- content: warning,
161
- inline: true,
162
- as: "p"
163
- })]
164
- })
165
- ]
17
+ label,
18
+ instructions,
19
+ warning,
20
+ tip,
21
+ required,
22
+ translatable,
23
+ errors,
24
+ "data-name": name,
25
+ style,
26
+ children: [headerEnd ? /* @__PURE__ */ jsx("div", {
27
+ slot: "header-end",
28
+ children: headerEnd
29
+ }) : null, children]
166
30
  });
167
31
  };
168
32
  //#endregion
169
- export { FieldControl, FieldErrors, FieldHeader, FieldInstructions, FieldLabel, FieldLayout, FieldRoot, InlineFieldErrorVisibilityContext, useFieldContext };
33
+ export { FieldLayout };
170
34
 
171
35
  //# sourceMappingURL=Field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","names":[],"sources":["../../src/forms/Field.tsx"],"sourcesContent":["import {\n createContext, useContext, useId, type ComponentProps, type ReactNode,\n} from 'react';\nimport { Label, Markdown } from '@verbb/plugin-kit-react/components';\nimport { Slot } from '@verbb/plugin-kit-react/components/Slot';\nimport { cn } from '@verbb/plugin-kit-react/utils';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faAsterisk, faTriangleExclamation } from '@fortawesome/pro-solid-svg-icons';\nimport { useTranslation } from '@verbb/plugin-kit-react/hooks';\n\nimport { TranslationIcon } from './TranslationIcon';\n\ntype FieldContextValue = {\n id: string;\n name: string;\n errors: string[];\n};\n\nconst FieldContext = createContext<FieldContextValue | null>(null);\nconst InlineFieldErrorVisibilityContext = createContext<boolean>(true);\n\nconst useFieldContext = () => {\n const context = useContext(FieldContext);\n if (!context) {\n throw new Error('Field components must be used within <FieldRoot>.');\n }\n return context;\n};\n\ntype FieldRootProps = ComponentProps<'div'> & {\n name: string;\n errors?: string[];\n};\n\nconst FieldRoot = ({\n name, errors = [], className, ...props\n}: FieldRootProps) => {\n const id = useId();\n return (\n <FieldContext.Provider value={{ id, name, errors }}>\n <div\n data-slot=\"field\"\n className={cn('space-y-1.5', className)}\n {...props}\n />\n </FieldContext.Provider>\n );\n};\n\nconst FieldHeader = ({ className, ...props }: ComponentProps<'div'>) => {\n return (\n <div data-slot=\"field-header\" className={cn(className)} {...props} />\n );\n};\n\nconst FieldLabel = ({ className, ...props }: ComponentProps<typeof Label>) => {\n const { id, errors } = useFieldContext();\n return (\n <Label\n data-slot=\"field-label\"\n htmlFor={`${id}-control`}\n data-error={errors.length > 0}\n className={cn('text-sm font-bold', className)}\n {...props}\n />\n );\n};\n\nconst FieldInstructions = ({ className, children, ...props }: ComponentProps<'p'>) => {\n const { id } = useFieldContext();\n const content = typeof children === 'string' ? children : null;\n\n const baseProps = {\n 'data-slot': 'field-instructions',\n id: `${id}-description`,\n className: cn('text-sm text-gray-500', className),\n };\n\n if (content !== null) {\n return (\n <Markdown\n content={content}\n inline\n as=\"p\"\n {...baseProps}\n />\n );\n }\n\n return (\n <p {...baseProps} {...props}>\n {children}\n </p>\n );\n};\n\ntype FieldControlProps = Omit<ComponentProps<typeof Slot>, 'className'> & {\n className?: string;\n};\n\nconst FieldControl = ({ className, ...props }: FieldControlProps) => {\n const { id, errors } = useFieldContext();\n const isInvalid = errors.length > 0;\n\n return (\n <Slot\n data-slot=\"field-control\"\n id={`${id}-control`}\n aria-invalid={isInvalid}\n aria-describedby={`${id}-description ${id}-errors`}\n aria-errormessage={isInvalid ? `${id}-errors` : undefined}\n className={cn(className)}\n {...props}\n />\n );\n};\n\nconst FieldErrors = ({ className, ...props }: ComponentProps<'ul'>) => {\n const { id, errors } = useFieldContext();\n if (!errors.length) {\n return null;\n }\n return (\n <ul\n data-slot=\"field-errors\"\n id={`${id}-errors`}\n className={cn('list-[square] text-error', className)}\n style={{ marginBlockStart: '5px', paddingInlineStart: '20px' }}\n {...props}\n >\n {errors.map((message, index) => {\n return (\n <li key={index}>\n <Markdown content={message} inline />\n </li>\n );\n })}\n </ul>\n );\n};\n\ntype FieldLayoutProps = ComponentProps<'div'> & {\n name: string;\n label?: string;\n instructions?: string;\n headerEnd?: ReactNode;\n required?: boolean;\n warning?: string;\n errors?: string[];\n withControl?: boolean;\n showInlineErrors?: boolean;\n translatable?: boolean;\n};\n\nconst FieldLayout = ({\n name,\n label,\n instructions,\n headerEnd,\n required,\n warning,\n errors = [],\n withControl = true,\n showInlineErrors,\n translatable = false,\n className,\n children,\n ...props\n}: FieldLayoutProps) => {\n const t = useTranslation();\n const contextShowInlineErrors = useContext(InlineFieldErrorVisibilityContext);\n const shouldShowInlineErrors = showInlineErrors ?? contextShowInlineErrors;\n\n return (\n <FieldRoot name={name} errors={errors} className={className} {...props}>\n {(label || instructions || headerEnd) ? (\n <FieldHeader className={cn(\n headerEnd ? 'flex items-start justify-between gap-3' : 'space-y-0.5',\n )}>\n <div className=\"min-w-0 space-y-0.5\">\n {label && (\n <FieldLabel className=\"flex items-center gap-1\">\n {label}\n {required && (\n <>\n <span className=\"sr-only\">{t('Required')}</span>\n <span className=\"text-rose-600\" aria-hidden=\"true\">\n <FontAwesomeIcon icon={faAsterisk} className=\"size-[10px]\" />\n </span>\n </>\n )}\n {translatable ? (\n <span\n className=\"inline-flex\"\n title={t('Translatable')}\n >\n <TranslationIcon />\n <span className=\"sr-only\">{t('Translatable')}</span>\n </span>\n ) : null}\n </FieldLabel>\n )}\n {instructions && (\n <FieldInstructions>{instructions}</FieldInstructions>\n )}\n </div>\n\n {headerEnd && (\n <div className=\"shrink-0\">\n {headerEnd}\n </div>\n )}\n </FieldHeader>\n ) : null}\n\n {withControl ? (\n <FieldControl>{children}</FieldControl>\n ) : (\n children\n )}\n\n {shouldShowInlineErrors && <FieldErrors />}\n\n {warning && (\n <div className=\"flex min-w-0 items-start gap-1 text-sm text-warning\">\n <FontAwesomeIcon icon={faTriangleExclamation} className=\"mt-[0.3em] size-3 shrink-0\" />\n\n <Markdown\n className=\"min-w-0\"\n content={warning}\n inline\n as=\"p\"\n />\n </div>\n )}\n </FieldRoot>\n );\n};\n\nexport {\n FieldRoot,\n FieldHeader,\n FieldLabel,\n FieldInstructions,\n FieldControl,\n FieldErrors,\n FieldLayout,\n InlineFieldErrorVisibilityContext,\n useFieldContext,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Field.js","names":[],"sources":["../../src/forms/Field.tsx"],"sourcesContent":["import React, { type ReactNode } from 'react';\n\nimport { Field as PkFieldFacade } from '../components/Field.js';\n\nexport type FieldLayoutProps = {\n name: string;\n label?: string;\n instructions?: string;\n warning?: string;\n tip?: string;\n required?: boolean;\n translatable?: boolean;\n errors?: string[];\n headerEnd?: ReactNode;\n className?: string;\n style?: React.CSSProperties;\n children?: ReactNode;\n};\n\n/**\n * Schema-form field shell. Delegates label / instructions / errors / warning / tip /\n * required / translatable rendering to the `<pk-field>` web component, so there is no\n * Tailwind or per-framework styling in this facade — only tokens + shadow-DOM CSS.\n *\n * Do not force `width: auto` on unlabeled shells here — composite controls (conditions\n * tables, etc.) need full width. FieldWrap clusters shrink nested hosts via\n * `[data-pk-field-wrap-controls] pk-field` in `style.css`.\n */\nexport const FieldLayout = ({\n name,\n label,\n instructions,\n warning,\n tip,\n required,\n translatable,\n errors = [],\n headerEnd,\n className,\n style,\n children,\n}: FieldLayoutProps) => {\n return (\n <PkFieldFacade\n className={className}\n label={label}\n instructions={instructions}\n warning={warning}\n tip={tip}\n required={required}\n translatable={translatable}\n errors={errors}\n data-name={name}\n style={style}\n >\n {headerEnd ? <div slot=\"header-end\">{headerEnd}</div> : null}\n {children}\n </PkFieldFacade>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AA4BA,IAAa,eAAe,EACxB,MACA,OACA,cACA,SACA,KACA,UACA,cACA,SAAS,EAAE,EACX,WACA,WACA,OACA,eACoB;AACpB,QACI,qBAAC,OAAD;EACe;EACJ;EACO;EACL;EACJ;EACK;EACI;EACN;EACR,aAAW;EACJ;YAVX,CAYK,YAAY,oBAAC,OAAD;GAAK,MAAK;aAAc;GAAgB,CAAA,GAAG,MACvD,SACW"}
@@ -1,5 +1,6 @@
1
- import { SchemaIndex, SchemaNode, SchemaRenderable } from './engine/SchemaIndex';
2
- import { FormValues, SchemaFormEngineApi } from './engine/context';
1
+ import { default as React } from 'react';
2
+ import { SchemaIndex, SchemaNode, SchemaRenderable } from '@verbb/plugin-kit-forms';
3
+ import { FormValues, SchemaFormEngineApi } from './engine/context.js';
3
4
  type SchemaFormEngineErrors = Record<string, unknown> | {
4
5
  errors?: unknown;
5
6
  } | unknown[];
@@ -14,10 +15,10 @@ type SchemaFormEngineOptions = {
14
15
  parentPath?: string;
15
16
  };
16
17
  export declare const useSchemaFormEngine: ({ schemaIndex, defaultValues, errors, onChange, getConditionContext, parentForm, parentPath, }: SchemaFormEngineOptions) => SchemaFormEngineApi;
17
- export declare const SchemaFormEngine: import('react').ForwardRefExoticComponent<{
18
+ export declare const SchemaFormEngine: React.ForwardRefExoticComponent<{
18
19
  form: SchemaFormEngineApi;
19
20
  className?: string;
20
21
  withoutForm?: boolean;
21
- } & import('react').RefAttributes<SchemaFormEngineApi>>;
22
+ } & React.RefAttributes<SchemaFormEngineApi>>;
22
23
  export {};
23
24
  //# sourceMappingURL=SchemaFormEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaFormEngine.d.ts","sourceRoot":"","sources":["../../src/forms/SchemaFormEngine.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,KAAK,EACR,UAAU,EAGV,mBAAmB,EACtB,MAAM,kBAAkB,CAAC;AAG1B,KAAK,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,EAAE,CAAC;AAEzF,KAAK,uBAAuB,GAAG;IAC3B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAChF,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1F,UAAU,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAmXF,eAAO,MAAM,mBAAmB,GAAI,gGAQjC,uBAAuB,KAAG,mBAiN5B,CAAC;AAEF,eAAO,MAAM,gBAAgB;UAKnB,mBAAmB;gBACb,MAAM;kBACJ,OAAO;uDAmCvB,CAAC"}
1
+ {"version":3,"file":"SchemaFormEngine.d.ts","sourceRoot":"","sources":["../../src/forms/SchemaFormEngine.tsx"],"names":[],"mappings":"AAAA,OAAO,KAaN,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMzF,OAAO,KAAK,EACR,UAAU,EAGV,mBAAmB,EACtB,MAAM,qBAAqB,CAAC;AAG7B,KAAK,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,EAAE,CAAC;AAEzF,KAAK,uBAAuB,GAAG;IAC3B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAChF,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1F,UAAU,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAoZF,eAAO,MAAM,mBAAmB,GAAI,gGAQjC,uBAAuB,KAAG,mBAiN5B,CAAC;AASF,eAAO,MAAM,gBAAgB;UAKnB,mBAAmB;gBACb,MAAM;kBACJ,OAAO;6CAoEvB,CAAC"}
@@ -1,12 +1,11 @@
1
- import { evaluateCondition, normalizeAttrs } from "../utils/schema.js";
1
+ import { Separator } from "../components/Separator.js";
2
+ import { normalizeAttrs } from "./utils.js";
2
3
  import { SchemaEngineContext } from "./engine/context.js";
3
- import { getFormComponentRegistry, getFormFieldRegistry } from "./registry.js";
4
- import { FormStateStore } from "./engine/FormStateStore.js";
5
- import { normalizeSchema } from "./engine/SchemaIndex.js";
6
- import { createValidationEngine } from "./engine/ValidationEngine.js";
7
- import { buildGroupedMessage } from "./engine/buildGroupedMessage.js";
4
+ import { getFormComponentRegistry } from "./registry.js";
5
+ import { SchemaFormFieldNode } from "./SchemaFormFieldNode.js";
8
6
  import { createContext, createElement, forwardRef, memo, useCallback, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState, useSyncExternalStore } from "react";
9
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { FormStateStore, buildGroupedMessage, createValidationEngine, evaluateCondition, normalizeSchema } from "@verbb/plugin-kit-forms";
10
9
  //#region src/forms/SchemaFormEngine.tsx
11
10
  var isRecord = (value) => {
12
11
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
@@ -84,21 +83,19 @@ var renderFormField = (schema, form) => {
84
83
  $field: schema.type,
85
84
  ...schema
86
85
  };
87
- const Component = getFormFieldRegistry()[$field];
88
- if (!Component) {
89
- console.warn(`Unknown form field type: ${$field}`);
90
- return null;
91
- }
92
- return createElement(Component, {
86
+ return /* @__PURE__ */ jsx(SchemaFormFieldNode, {
87
+ fieldType: String($field ?? ""),
93
88
  schema,
94
89
  field: { ...props },
95
- form
96
- }, props.children ? /* @__PURE__ */ jsx(SchemaRenderer, { schema: props.children }) : null);
90
+ form,
91
+ children: props.children ? /* @__PURE__ */ jsx(SchemaRenderer, { schema: props.children }) : null
92
+ });
97
93
  };
98
94
  var renderHtmlElement = (schema) => {
99
95
  const { $el, children, attrs = {} } = schema;
100
96
  const normalizedAttrs = normalizeAttrs(isRecord(attrs) ? attrs : {});
101
97
  if (typeof $el !== "string" || !$el) return null;
98
+ if ($el === "hr") return createElement(Separator, { ...normalizedAttrs });
102
99
  return createElement($el, { ...normalizedAttrs }, children ? /* @__PURE__ */ jsx(SchemaRenderer, { schema: children }) : null);
103
100
  };
104
101
  var renderFormComponent = (schema) => {
@@ -108,9 +105,10 @@ var renderFormComponent = (schema) => {
108
105
  console.warn(`Unknown form component: ${$cmp}`);
109
106
  return null;
110
107
  }
108
+ const { _id: _schemaId, _data: _schemaData, _scopePath: _schemaScopePath, schema: _nestedSchema, schemaChildPrefix: _schemaChildPrefix, $el: _schemaEl, $field: _schemaField, if: _schemaIf, hideOnIf: _schemaHideOnIf, attrs: _schemaAttrs, type: _schemaType, ...safeRest } = rest;
111
109
  const componentProps = {
112
110
  ...isRecord(props) ? props : {},
113
- ...rest
111
+ ...safeRest
114
112
  };
115
113
  if (Boolean(Component.usesSchemaNode)) componentProps.schemaNode = schema;
116
114
  else if ("schemaNode" in componentProps) delete componentProps.schemaNode;
@@ -310,7 +308,7 @@ var useSchemaFormEngine = ({ schemaIndex = null, defaultValues = {}, errors, onC
310
308
  const parentLabel = labelMap.get(path);
311
309
  const groupedMessages = [];
312
310
  childKeys.forEach((key) => {
313
- const wildcardPath = key.replace(/\\.\\d+(?=\\.|$)/g, ".*");
311
+ const wildcardPath = key.replace(/\.\d+(?=\.|$)/g, ".*");
314
312
  const childLabel = labelMap.get(wildcardPath) || key.split(".").slice(-1)[0];
315
313
  (currentErrors[key] || []).forEach((message) => {
316
314
  if (parentLabel) {
@@ -402,10 +400,31 @@ var useSchemaFormEngine = ({ schemaIndex = null, defaultValues = {}, errors, onC
402
400
  ]);
403
401
  return form;
404
402
  };
403
+ /**
404
+ * FACE shadow inputs (pk-input) cannot use HTML implicit submission. They
405
+ * dispatch this on the SchemaFormEngine <form>; keep in sync with
406
+ * plugin-kit-web `PK_IMPLICIT_SUBMIT_EVENT`.
407
+ */
408
+ var PK_IMPLICIT_SUBMIT_EVENT = "pk-implicit-submit";
405
409
  var SchemaFormEngine = forwardRef(({ form, className, withoutForm = false }, ref) => {
410
+ const formElementRef = useRef(null);
406
411
  useImperativeHandle(ref, () => {
407
412
  return form;
408
413
  });
414
+ useEffect(() => {
415
+ if (withoutForm) return;
416
+ const formElement = formElementRef.current;
417
+ if (!formElement) return;
418
+ const handleImplicitSubmit = (event) => {
419
+ event.preventDefault();
420
+ event.stopPropagation();
421
+ form.handleSubmit();
422
+ };
423
+ formElement.addEventListener(PK_IMPLICIT_SUBMIT_EVENT, handleImplicitSubmit);
424
+ return () => {
425
+ formElement.removeEventListener(PK_IMPLICIT_SUBMIT_EVENT, handleImplicitSubmit);
426
+ };
427
+ }, [form, withoutForm]);
409
428
  if (withoutForm) return /* @__PURE__ */ jsx(SchemaEngineContext.Provider, {
410
429
  value: form,
411
430
  children: /* @__PURE__ */ jsx(SchemaProvider, {
@@ -421,6 +440,7 @@ var SchemaFormEngine = forwardRef(({ form, className, withoutForm = false }, ref
421
440
  children: /* @__PURE__ */ jsx(SchemaProvider, {
422
441
  form,
423
442
  children: /* @__PURE__ */ jsxs("form", {
443
+ ref: formElementRef,
424
444
  onSubmit: (event) => {
425
445
  event.preventDefault();
426
446
  event.stopPropagation();
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaFormEngine.js","names":[],"sources":["../../src/forms/SchemaFormEngine.tsx"],"sourcesContent":["import {\n createContext,\n createElement,\n forwardRef,\n memo,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\n\nimport { evaluateCondition, normalizeAttrs } from '@verbb/plugin-kit-react/utils/schema';\nimport { getFormComponentRegistry, getFormFieldRegistry } from './registry';\n\nimport { FormStateStore } from './engine/FormStateStore';\nimport { normalizeSchema } from './engine/SchemaIndex';\nimport type { SchemaIndex, SchemaNode, SchemaRenderable } from './engine/SchemaIndex';\nimport { createValidationEngine } from './engine/ValidationEngine';\nimport { buildGroupedMessage } from './engine/buildGroupedMessage';\nimport type {\n FormValues,\n NestedFormApi,\n SchemaFieldApi,\n SchemaFormEngineApi,\n} from './engine/context';\nimport { SchemaEngineContext } from './engine/context';\n\ntype SchemaFormEngineErrors = Record<string, unknown> | { errors?: unknown } | unknown[];\n\ntype SchemaFormEngineOptions = {\n schema?: SchemaRenderable;\n schemaIndex: SchemaIndex | null;\n defaultValues?: FormValues;\n errors?: SchemaFormEngineErrors;\n onChange?: (values: Record<string, unknown>, form: SchemaFormEngineApi) => void;\n getConditionContext?: (values: FormValues, field?: SchemaNode) => Record<string, unknown>;\n parentForm?: SchemaFormEngineApi | null;\n parentPath?: string;\n};\n\ntype SchemaItemProviderProps = {\n children: React.ReactNode;\n [key: string]: unknown;\n};\n\ntype SchemaItemProps = {\n field: SchemaNode;\n children: React.ReactNode;\n};\n\ntype SchemaContextValue = {\n form: SchemaFormEngineApi;\n schema: SchemaRenderable;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n};\n\nconst hasEventTarget = (value: unknown): value is { target: { type?: string; checked?: boolean; value?: unknown } } => {\n return isRecord(value) && isRecord(value.target);\n};\n\nconst SchemaContext = createContext<SchemaContextValue | null>(null);\nconst SchemaItemContext = createContext<Record<string, unknown> | null>(null);\n\nconst SchemaItemProvider = ({ children, ...props }: SchemaItemProviderProps) => {\n return (\n <SchemaItemContext.Provider value={props}>\n {children}\n </SchemaItemContext.Provider>\n );\n};\n\nconst useSchemaContext = () => {\n const context = useContext(SchemaContext);\n\n if (!context) {\n throw new Error('useSchemaContext must be used within a SchemaProvider');\n }\n\n return context;\n};\n\nconst SchemaItem = memo(({ field, children }: SchemaItemProps) => {\n const { form } = useSchemaContext();\n\n const buildConditionData = useCallback((values: FormValues) => {\n const scopePath = typeof field._scopePath === 'string' ? field._scopePath : '';\n const scopedValues = scopePath ? form?.getFieldValue?.(scopePath) : null;\n const scopedObject = isRecord(scopedValues) ? scopedValues : {};\n const conditionContext = form?.getConditionContext?.(values, field);\n const normalizedConditionContext = isRecord(conditionContext) ? conditionContext : {};\n const fieldData = isRecord(field._data) ? field._data : {};\n\n return {\n ...values,\n ...scopedObject,\n ...fieldData,\n ...normalizedConditionContext,\n };\n }, [field, form]);\n\n const resolveVisibility = useCallback((values: FormValues) => {\n if (!field.if) {\n return true;\n }\n\n return evaluateCondition(field.if, buildConditionData(values));\n }, [buildConditionData, field.if]);\n\n const [shouldShow, setShouldShow] = useState(() => {\n const initialValues = form?.store?.state?.values;\n\n if (!initialValues || typeof initialValues !== 'object') {\n return !field.if;\n }\n\n return resolveVisibility(initialValues);\n });\n\n useEffect(() => {\n if (!field.if) {\n setShouldShow(true);\n return;\n }\n\n const initialValues = form?.store?.state?.values;\n if (initialValues && typeof initialValues === 'object') {\n setShouldShow(resolveVisibility(initialValues));\n }\n\n if (!form?.store?.subscribe) {\n return;\n }\n\n const unsubscribe = form.store.subscribe(() => {\n const { values } = form.store.state;\n const isVisible = resolveVisibility(values);\n\n setShouldShow(isVisible);\n });\n\n return unsubscribe;\n }, [field.if, form, resolveVisibility]);\n\n if (!shouldShow) {\n return (field.hideOnIf) ? <div style={{ display: 'none' }}>{children}</div> : null;\n }\n\n return children;\n});\n\nSchemaItem.displayName = 'SchemaItem';\n\n/* eslint-disable no-use-before-define */\nconst renderFormField = (schema: SchemaNode, form: SchemaFormEngineApi) => {\n const fieldProps = schema.$field ? { $field: schema.$field, ...schema } : { $field: schema.type, ...schema };\n const { $field, ...props } = fieldProps;\n\n const Component = getFormFieldRegistry()[$field];\n\n if (!Component) {\n console.warn(`Unknown form field type: ${$field}`);\n return null;\n }\n\n return createElement(Component, {\n schema,\n field: { ...props },\n form,\n }, props.children ? <SchemaRenderer schema={props.children} /> : null);\n};\n\nconst renderHtmlElement = (schema: SchemaNode) => {\n const { $el, children, attrs = {} } = schema;\n const normalizedAttrs = normalizeAttrs(isRecord(attrs) ? attrs : {});\n\n if (typeof $el !== 'string' || !$el) {\n return null;\n }\n\n return createElement($el, { ...normalizedAttrs }, children ? <SchemaRenderer schema={children} /> : null);\n};\n\nconst renderFormComponent = (schema: SchemaNode) => {\n const {\n $cmp, props = {}, children, ...rest\n } = schema;\n const Component = getFormComponentRegistry()[$cmp];\n\n if (!Component) {\n console.warn(`Unknown form component: ${$cmp}`);\n return null;\n }\n\n const componentProps = { ...(isRecord(props) ? props : {}), ...rest } as Record<string, unknown>;\n const usesSchemaNode = Boolean(Component.usesSchemaNode);\n\n if (usesSchemaNode) {\n componentProps.schemaNode = schema;\n } else if ('schemaNode' in componentProps) {\n delete componentProps.schemaNode;\n }\n\n return createElement(\n Component,\n componentProps,\n children ? <SchemaRenderer schema={children} /> : null,\n );\n};\n\ntype SchemaRendererProps = {\n schema: SchemaRenderable;\n};\n\nconst SchemaRenderer = memo(({ schema }: SchemaRendererProps) => {\n const { form } = useSchemaContext();\n\n if (typeof schema === 'string') {\n return schema;\n }\n\n if (Array.isArray(schema)) {\n return schema.map((schemaItem, index) => {\n if (typeof schemaItem === 'string') {\n return schemaItem;\n }\n\n if (!isRecord(schemaItem)) {\n return null;\n }\n\n const key = typeof schemaItem._id === 'string' ? schemaItem._id : `schema-item-${index}`;\n return (\n <SchemaItemProvider key={key}>\n <SchemaItem field={schemaItem}>\n <SchemaRenderer schema={schemaItem} />\n </SchemaItem>\n </SchemaItemProvider>\n );\n });\n }\n\n if (schema.$field || (schema.$cmp === 'Field')) {\n return renderFormField(schema, form);\n }\n\n if (schema.$el) {\n return renderHtmlElement(schema);\n }\n\n if (schema.$cmp) {\n return renderFormComponent(schema);\n }\n\n console.warn('Unknown schema item:', schema);\n return null;\n});\n\nSchemaRenderer.displayName = 'SchemaRenderer';\n/* eslint-enable no-use-before-define */\n\nconst SchemaProvider = ({ children, form }: { children: React.ReactNode; form: SchemaFormEngineApi }) => {\n const contextValue = useMemo(() => {\n return {\n form,\n schema: form.schema,\n };\n }, [form]);\n\n return (\n <SchemaContext.Provider value={contextValue}>\n {children}\n </SchemaContext.Provider>\n );\n};\n\nconst normalizeServerErrors = (rawErrors: SchemaFormEngineErrors | undefined) => {\n const normalized: Record<string, string[]> = {};\n\n if (!rawErrors) {\n return normalized;\n }\n\n const appendMessages = (path: string, messages: unknown[]) => {\n if (!path) {\n return;\n }\n\n const nextMessages = messages\n .filter((message) => { return message !== undefined && message !== null && message !== ''; })\n .map((message) => { return String(message); });\n\n if (!nextMessages.length) {\n return;\n }\n\n if (!normalized[path]) {\n normalized[path] = [];\n }\n\n normalized[path].push(...nextMessages);\n };\n\n const collectErrors = (node: unknown, path: string) => {\n if (Array.isArray(node)) {\n if (node.length === 0) {\n return;\n }\n\n const isMessageArray = node.every((entry) => { return typeof entry === 'string'; });\n if (isMessageArray) {\n appendMessages(path, node);\n return;\n }\n\n if (!path) {\n node.forEach((entry) => { collectErrors(entry, path); });\n return;\n }\n\n node.forEach((entry, index) => {\n collectErrors(entry, `${path}.${index}`);\n });\n return;\n }\n\n if (!node || typeof node !== 'object') {\n return;\n }\n\n Object.entries(node as Record<string, unknown>).forEach(([key, value]) => {\n const nextPath = path ? `${path}.${key}` : key;\n collectErrors(value, nextPath);\n });\n };\n\n if (Array.isArray(rawErrors)) {\n collectErrors(rawErrors, '');\n return normalized;\n }\n\n if (rawErrors && typeof rawErrors === 'object' && 'errors' in rawErrors) {\n collectErrors((rawErrors as { errors?: unknown }).errors, '');\n return normalized;\n }\n\n collectErrors(rawErrors, '');\n return normalized;\n};\n\nconst useStoreSelector = <T,>(\n store: FormStateStore | null | undefined,\n selector: (state: FormStateStore['state'] | null) => T,\n fallbackValue: T,\n) => {\n const subscribe = store\n ? store.subscribe.bind(store)\n : (() => {\n return () => {};\n });\n\n return useSyncExternalStore(\n subscribe,\n () => { return store ? selector(store.state) : fallbackValue; },\n () => { return store ? selector(store.state) : fallbackValue; },\n );\n};\n\nconst EngineField = ({ name, children }: { name: string; children: (fieldApi: SchemaFieldApi) => React.ReactNode }) => {\n const form = useContext(SchemaEngineContext);\n const store = form?.store ?? null;\n\n const value = useStoreSelector(\n store,\n () => { return form?.getFieldValue(name); },\n undefined,\n );\n const errors = useStoreSelector(\n store,\n (state) => { return state?.errors[name] || []; },\n [],\n );\n\n if (!form) {\n return null;\n }\n\n const fieldApi: SchemaFieldApi = {\n state: { value },\n handleChange: (valueOrEvent: unknown) => {\n if (hasEventTarget(valueOrEvent)) {\n const { type, checked, value: nextValue } = valueOrEvent.target;\n form.setFieldValue(name, type === 'checkbox' ? checked : nextValue);\n return;\n }\n\n form.setFieldValue(name, valueOrEvent);\n },\n handleBlur: () => {\n form.store.setTouched(name, true);\n },\n errors,\n };\n\n return children(fieldApi);\n};\n\nexport const useSchemaFormEngine = ({\n schemaIndex = null,\n defaultValues = {},\n errors,\n onChange,\n getConditionContext,\n parentForm,\n parentPath,\n}: SchemaFormEngineOptions): SchemaFormEngineApi => {\n const index = useMemo(() => {\n if (!schemaIndex) {\n throw new Error('SchemaFormEngine requires a compiled schemaIndex.');\n }\n const normalizedSchema = normalizeSchema(schemaIndex.schema);\n return { ...schemaIndex, schema: normalizedSchema };\n }, [schemaIndex]);\n const storeRef = useRef<FormStateStore | null>(null);\n\n if (!storeRef.current) {\n storeRef.current = new FormStateStore(defaultValues);\n }\n\n const store = storeRef.current;\n const validationEngine = useMemo(() => {\n return createValidationEngine(index, { conditionDataResolver: getConditionContext });\n }, [index, getConditionContext]);\n const labelMap = useMemo(() => {\n const map = new Map<string, string>();\n index.fieldEntries.forEach((entry) => {\n if (entry.path) {\n const label = String(entry.field?.label || entry.field?.name || entry.path);\n map.set(entry.path, label);\n }\n });\n return map;\n }, [index]);\n\n const onSubmitHandlerRef = useRef<((value: FormValues) => Promise<void> | void) | null>(null);\n const onErrorHandlerRef = useRef<((errors: Record<string, unknown>) => void) | null>(null);\n const onSuccessHandlerRef = useRef<((value: FormValues) => void) | null>(null);\n const onChangeHandlerRef = useRef<((value: FormValues) => void) | null>(null);\n const formRef = useRef<SchemaFormEngineApi | null>(null);\n\n const nestedFormsRef = useRef<Map<string, NestedFormApi>>(new Map());\n\n useEffect(() => {\n if (!onChange) {\n onChangeHandlerRef.current = null;\n return;\n }\n\n onChangeHandlerRef.current = (value: FormValues) => {\n if (formRef.current) {\n onChange(value, formRef.current);\n }\n };\n }, [onChange]);\n\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n if (onChangeHandlerRef.current) {\n onChangeHandlerRef.current(store.state.values);\n }\n });\n\n return unsubscribe;\n }, [store]);\n\n useEffect(() => {\n const normalized = normalizeServerErrors(errors);\n if (Object.keys(normalized).length) {\n store.setErrors(normalized);\n } else {\n store.clearErrors();\n }\n }, [errors, store]);\n\n const registerNestedForm = (path: string, api: NestedFormApi) => {\n nestedFormsRef.current.set(path, api);\n };\n\n const unregisterNestedForm = (path: string) => {\n nestedFormsRef.current.delete(path);\n };\n\n const validateNestedForms = () => {\n const nestedErrors: Record<string, string[]> = {};\n\n nestedFormsRef.current.forEach((api, path) => {\n const result = api.validate();\n if (result?.fields) {\n Object.entries(result.fields).forEach(([fieldPath, messages]) => {\n const mergedPath = fieldPath ? `${path}.${fieldPath}` : path;\n nestedErrors[mergedPath] = messages;\n });\n }\n });\n\n return nestedErrors;\n };\n\n const getGroupedErrorsForPath = (path: string) => {\n if (!path) {\n return [];\n }\n\n const currentErrors = store.state.errors || {};\n const rootErrors = currentErrors[path] || [];\n const childKeys = Object.keys(currentErrors).filter((key) => {\n return key.startsWith(`${path}.`);\n });\n\n if (!childKeys.length) {\n return rootErrors;\n }\n\n const parentLabel = labelMap.get(path);\n const groupedMessages: string[] = [];\n\n childKeys.forEach((key) => {\n const wildcardPath = key.replace(/\\\\.\\\\d+(?=\\\\.|$)/g, '.*');\n const childLabel = labelMap.get(wildcardPath) || key.split('.').slice(-1)[0];\n (currentErrors[key] || []).forEach((message) => {\n if (parentLabel) {\n groupedMessages.push(buildGroupedMessage(String(message), parentLabel, childLabel));\n return;\n }\n\n groupedMessages.push(String(message));\n });\n });\n\n return Array.from(new Set([...rootErrors, ...groupedMessages]));\n };\n\n const handleSubmit = async () => {\n const result = validationEngine.validate(store.state.values);\n const errorsMap = result?.fields || {};\n const nestedErrors = validateNestedForms();\n const mergedErrors = { ...errorsMap, ...nestedErrors };\n\n if (Object.keys(mergedErrors).length > 0) {\n store.setErrors(mergedErrors);\n if (onErrorHandlerRef.current) {\n onErrorHandlerRef.current(mergedErrors);\n }\n return;\n }\n\n store.clearErrors();\n\n if (onSubmitHandlerRef.current) {\n await onSubmitHandlerRef.current(store.state.values);\n }\n\n if (parentForm && parentPath) {\n parentForm.setFieldValue(parentPath, store.state.values);\n }\n\n if (onSuccessHandlerRef.current) {\n onSuccessHandlerRef.current(store.state.values);\n }\n };\n\n const form = {\n schema: index.schema,\n store,\n index,\n Field: EngineField,\n getFieldValue: (path: string) => { return store.getValue(path); },\n setFieldValue: (path: string, value: unknown) => { return store.setValue(path, value); },\n getErrorMapFields: () => { return store.state.errors || {}; },\n SchemaRenderer,\n handleSubmit,\n onChange: (handler) => { onChangeHandlerRef.current = handler; },\n onSubmit: (handler) => { onSubmitHandlerRef.current = handler; },\n onError: (handler) => { onErrorHandlerRef.current = handler; },\n onSuccess: (handler) => { onSuccessHandlerRef.current = handler; },\n registerNestedForm,\n unregisterNestedForm,\n getGroupedErrorsForPath,\n getConditionContext: (values: FormValues, field?: SchemaNode) => {\n return getConditionContext?.(values, field) || {};\n },\n } as SchemaFormEngineApi;\n\n formRef.current = form;\n\n useEffect(() => {\n if (!parentForm || !parentPath) {\n return;\n }\n\n const nestedApi: NestedFormApi = {\n path: parentPath,\n validate: () => {\n const result = validationEngine.validate(store.state.values);\n const fieldErrors = result?.fields || {};\n\n if (Object.keys(fieldErrors).length) {\n store.setErrors(fieldErrors);\n } else {\n store.clearErrors();\n }\n\n return result;\n },\n getValues: () => { return store.state.values; },\n };\n\n parentForm.registerNestedForm(parentPath, nestedApi);\n return () => {\n parentForm.unregisterNestedForm(parentPath);\n };\n }, [parentForm, parentPath, store, validationEngine]);\n\n return form;\n};\n\nexport const SchemaFormEngine = forwardRef(({\n form,\n className,\n withoutForm = false,\n}: {\n form: SchemaFormEngineApi;\n className?: string;\n withoutForm?: boolean;\n}, ref: React.Ref<SchemaFormEngineApi>) => {\n useImperativeHandle(ref, () => {\n return form;\n });\n\n if (withoutForm) {\n return (\n <SchemaEngineContext.Provider value={form}>\n <SchemaProvider form={form}>\n <div className={className}>\n <SchemaRenderer schema={form.schema} />\n </div>\n </SchemaProvider>\n </SchemaEngineContext.Provider>\n );\n }\n\n return (\n <SchemaEngineContext.Provider value={form}>\n <SchemaProvider form={form}>\n <form\n onSubmit={(event) => {\n event.preventDefault();\n event.stopPropagation();\n form.handleSubmit();\n }}\n className={className}\n >\n <SchemaRenderer schema={form.schema} />\n <button type=\"submit\" tabIndex={-1} aria-hidden=\"true\" className=\"sr-only\" />\n </form>\n </SchemaProvider>\n </SchemaEngineContext.Provider>\n );\n});\n\nSchemaFormEngine.displayName = 'SchemaFormEngine';\n"],"mappings":"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"}
1
+ {"version":3,"file":"SchemaFormEngine.js","names":[],"sources":["../../src/forms/SchemaFormEngine.tsx"],"sourcesContent":["import React, {\n createContext,\n createElement,\n forwardRef,\n memo,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\n\nimport {\n FormStateStore,\n buildGroupedMessage,\n createValidationEngine,\n evaluateCondition,\n normalizeSchema,\n} from '@verbb/plugin-kit-forms';\nimport type { SchemaIndex, SchemaNode, SchemaRenderable } from '@verbb/plugin-kit-forms';\n\nimport { Separator } from '../components/Separator.js';\nimport { normalizeAttrs } from './utils.js';\nimport { getFormComponentRegistry } from './registry.js';\nimport { SchemaFormFieldNode } from './SchemaFormFieldNode.js';\nimport type {\n FormValues,\n NestedFormApi,\n SchemaFieldApi,\n SchemaFormEngineApi,\n} from './engine/context.js';\nimport { SchemaEngineContext } from './engine/context.js';\n\ntype SchemaFormEngineErrors = Record<string, unknown> | { errors?: unknown } | unknown[];\n\ntype SchemaFormEngineOptions = {\n schema?: SchemaRenderable;\n schemaIndex: SchemaIndex | null;\n defaultValues?: FormValues;\n errors?: SchemaFormEngineErrors;\n onChange?: (values: Record<string, unknown>, form: SchemaFormEngineApi) => void;\n getConditionContext?: (values: FormValues, field?: SchemaNode) => Record<string, unknown>;\n parentForm?: SchemaFormEngineApi | null;\n parentPath?: string;\n};\n\ntype SchemaItemProviderProps = {\n children: React.ReactNode;\n [key: string]: unknown;\n};\n\ntype SchemaItemProps = {\n field: SchemaNode;\n children: React.ReactNode;\n};\n\ntype SchemaContextValue = {\n form: SchemaFormEngineApi;\n schema: SchemaRenderable;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n};\n\nconst hasEventTarget = (value: unknown): value is { target: { type?: string; checked?: boolean; value?: unknown } } => {\n return isRecord(value) && isRecord(value.target);\n};\n\nconst SchemaContext = createContext<SchemaContextValue | null>(null);\nconst SchemaItemContext = createContext<Record<string, unknown> | null>(null);\n\nconst SchemaItemProvider = ({ children, ...props }: SchemaItemProviderProps) => {\n return (\n <SchemaItemContext.Provider value={props}>\n {children}\n </SchemaItemContext.Provider>\n );\n};\n\nconst useSchemaContext = () => {\n const context = useContext(SchemaContext);\n\n if (!context) {\n throw new Error('useSchemaContext must be used within a SchemaProvider');\n }\n\n return context;\n};\n\nconst SchemaItem = memo(({ field, children }: SchemaItemProps) => {\n const { form } = useSchemaContext();\n\n const buildConditionData = useCallback((values: FormValues) => {\n const scopePath = typeof field._scopePath === 'string' ? field._scopePath : '';\n const scopedValues = scopePath ? form?.getFieldValue?.(scopePath) : null;\n const scopedObject = isRecord(scopedValues) ? scopedValues : {};\n const conditionContext = form?.getConditionContext?.(values, field);\n const normalizedConditionContext = isRecord(conditionContext) ? conditionContext : {};\n const fieldData = isRecord(field._data) ? field._data : {};\n\n return {\n ...values,\n ...scopedObject,\n ...fieldData,\n ...normalizedConditionContext,\n };\n }, [field, form]);\n\n const resolveVisibility = useCallback((values: FormValues) => {\n if (!field.if) {\n return true;\n }\n\n return evaluateCondition(field.if, buildConditionData(values));\n }, [buildConditionData, field.if]);\n\n const [shouldShow, setShouldShow] = useState(() => {\n const initialValues = form?.store?.state?.values;\n\n if (!initialValues || typeof initialValues !== 'object') {\n return !field.if;\n }\n\n return resolveVisibility(initialValues);\n });\n\n useEffect(() => {\n if (!field.if) {\n setShouldShow(true);\n return;\n }\n\n const initialValues = form?.store?.state?.values;\n if (initialValues && typeof initialValues === 'object') {\n setShouldShow(resolveVisibility(initialValues));\n }\n\n if (!form?.store?.subscribe) {\n return;\n }\n\n const unsubscribe = form.store.subscribe(() => {\n const { values } = form.store.state;\n const isVisible = resolveVisibility(values);\n\n setShouldShow(isVisible);\n });\n\n return unsubscribe;\n }, [field.if, form, resolveVisibility]);\n\n if (!shouldShow) {\n return (field.hideOnIf) ? <div style={{ display: 'none' }}>{children}</div> : null;\n }\n\n return children;\n});\n\nSchemaItem.displayName = 'SchemaItem';\n\n/* eslint-disable no-use-before-define */\nconst renderFormField = (schema: SchemaNode, form: SchemaFormEngineApi) => {\n const fieldProps = schema.$field ? { $field: schema.$field, ...schema } : { $field: schema.type, ...schema };\n const { $field, ...props } = fieldProps;\n const fieldType = String($field ?? '');\n\n return (\n <SchemaFormFieldNode\n fieldType={fieldType}\n schema={schema}\n field={{ ...props }}\n form={form}\n >\n {props.children ? <SchemaRenderer schema={props.children as SchemaRenderable} /> : null}\n </SchemaFormFieldNode>\n );\n};\n\nconst renderHtmlElement = (schema: SchemaNode) => {\n const { $el, children, attrs = {} } = schema;\n const normalizedAttrs = normalizeAttrs(isRecord(attrs) ? attrs : {});\n\n if (typeof $el !== 'string' || !$el) {\n return null;\n }\n\n // Schema chrome historically used raw <hr>; map to pk-separator so CP stacks stay on kit.\n if ($el === 'hr') {\n return createElement(Separator, { ...normalizedAttrs });\n }\n\n return createElement($el, { ...normalizedAttrs }, children ? <SchemaRenderer schema={children} /> : null);\n};\n\nconst renderFormComponent = (schema: SchemaNode) => {\n const {\n $cmp, props = {}, children, ...rest\n } = schema;\n const Component = getFormComponentRegistry()[$cmp as string];\n\n if (!Component) {\n console.warn(`Unknown form component: ${$cmp}`);\n return null;\n }\n\n // Schema bookkeeping must not land on DOM hosts — React stringifies objects to\n // `[object Object]` attributes (seen on pk-tabs: schema/_id/_data).\n const {\n _id: _schemaId,\n _data: _schemaData,\n _scopePath: _schemaScopePath,\n schema: _nestedSchema,\n schemaChildPrefix: _schemaChildPrefix,\n $el: _schemaEl,\n $field: _schemaField,\n if: _schemaIf,\n hideOnIf: _schemaHideOnIf,\n attrs: _schemaAttrs,\n type: _schemaType,\n ...safeRest\n } = rest as Record<string, unknown>;\n\n void _schemaId;\n void _schemaData;\n void _schemaScopePath;\n void _nestedSchema;\n void _schemaChildPrefix;\n void _schemaEl;\n void _schemaField;\n void _schemaIf;\n void _schemaHideOnIf;\n void _schemaAttrs;\n void _schemaType;\n\n const componentProps = { ...(isRecord(props) ? props : {}), ...safeRest } as Record<string, unknown>;\n const usesSchemaNode = Boolean(Component.usesSchemaNode);\n\n if (usesSchemaNode) {\n componentProps.schemaNode = schema;\n } else if ('schemaNode' in componentProps) {\n delete componentProps.schemaNode;\n }\n\n return createElement(\n Component,\n componentProps,\n children ? <SchemaRenderer schema={children as SchemaRenderable} /> : null,\n );\n};\n\ntype SchemaRendererProps = {\n schema: SchemaRenderable;\n};\n\nconst SchemaRenderer = memo(({ schema }: SchemaRendererProps) => {\n const { form } = useSchemaContext();\n\n if (typeof schema === 'string') {\n return schema;\n }\n\n if (Array.isArray(schema)) {\n return schema.map((schemaItem, index) => {\n if (typeof schemaItem === 'string') {\n return schemaItem;\n }\n\n if (!isRecord(schemaItem)) {\n return null;\n }\n\n const key = typeof schemaItem._id === 'string' ? schemaItem._id : `schema-item-${index}`;\n return (\n <SchemaItemProvider key={key}>\n <SchemaItem field={schemaItem as SchemaNode}>\n <SchemaRenderer schema={schemaItem as SchemaRenderable} />\n </SchemaItem>\n </SchemaItemProvider>\n );\n });\n }\n\n if (schema.$field || (schema.$cmp === 'Field')) {\n return renderFormField(schema, form);\n }\n\n if (schema.$el) {\n return renderHtmlElement(schema);\n }\n\n if (schema.$cmp) {\n return renderFormComponent(schema);\n }\n\n console.warn('Unknown schema item:', schema);\n return null;\n});\n\nSchemaRenderer.displayName = 'SchemaRenderer';\n/* eslint-enable no-use-before-define */\n\nconst SchemaProvider = ({ children, form }: { children: React.ReactNode; form: SchemaFormEngineApi }) => {\n const contextValue = useMemo(() => {\n return {\n form,\n schema: form.schema,\n };\n }, [form]);\n\n return (\n <SchemaContext.Provider value={contextValue}>\n {children}\n </SchemaContext.Provider>\n );\n};\n\nconst normalizeServerErrors = (rawErrors: SchemaFormEngineErrors | undefined) => {\n const normalized: Record<string, string[]> = {};\n\n if (!rawErrors) {\n return normalized;\n }\n\n const appendMessages = (path: string, messages: unknown[]) => {\n if (!path) {\n return;\n }\n\n const nextMessages = messages\n .filter((message) => { return message !== undefined && message !== null && message !== ''; })\n .map((message) => { return String(message); });\n\n if (!nextMessages.length) {\n return;\n }\n\n if (!normalized[path]) {\n normalized[path] = [];\n }\n\n normalized[path].push(...nextMessages);\n };\n\n const collectErrors = (node: unknown, path: string) => {\n if (Array.isArray(node)) {\n if (node.length === 0) {\n return;\n }\n\n const isMessageArray = node.every((entry) => { return typeof entry === 'string'; });\n if (isMessageArray) {\n appendMessages(path, node);\n return;\n }\n\n if (!path) {\n node.forEach((entry) => { collectErrors(entry, path); });\n return;\n }\n\n node.forEach((entry, index) => {\n collectErrors(entry, `${path}.${index}`);\n });\n return;\n }\n\n if (!node || typeof node !== 'object') {\n return;\n }\n\n Object.entries(node as Record<string, unknown>).forEach(([key, value]) => {\n const nextPath = path ? `${path}.${key}` : key;\n collectErrors(value, nextPath);\n });\n };\n\n if (Array.isArray(rawErrors)) {\n collectErrors(rawErrors, '');\n return normalized;\n }\n\n if (rawErrors && typeof rawErrors === 'object' && 'errors' in rawErrors) {\n collectErrors((rawErrors as { errors?: unknown }).errors, '');\n return normalized;\n }\n\n collectErrors(rawErrors, '');\n return normalized;\n};\n\nconst useStoreSelector = <T,>(\n store: FormStateStore | null | undefined,\n selector: (state: FormStateStore['state'] | null) => T,\n fallbackValue: T,\n) => {\n const subscribe = store\n ? store.subscribe.bind(store)\n : (() => {\n return () => {};\n });\n\n return useSyncExternalStore(\n subscribe,\n () => { return store ? selector(store.state) : fallbackValue; },\n () => { return store ? selector(store.state) : fallbackValue; },\n );\n};\n\nconst EngineField = ({ name, children }: { name: string; children: (fieldApi: SchemaFieldApi) => React.ReactNode }) => {\n const form = useContext(SchemaEngineContext);\n const store = form?.store ?? null;\n\n const value = useStoreSelector(\n store,\n () => { return form?.getFieldValue(name); },\n undefined,\n );\n const errors = useStoreSelector(\n store,\n (state) => { return state?.errors[name] || []; },\n [],\n );\n\n if (!form) {\n return null;\n }\n\n const fieldApi: SchemaFieldApi = {\n state: { value },\n handleChange: (valueOrEvent: unknown) => {\n if (hasEventTarget(valueOrEvent)) {\n const { type, checked, value: nextValue } = valueOrEvent.target;\n form.setFieldValue(name, type === 'checkbox' ? checked : nextValue);\n return;\n }\n\n form.setFieldValue(name, valueOrEvent);\n },\n handleBlur: () => {\n form.store.setTouched(name, true);\n },\n errors,\n };\n\n return children(fieldApi);\n};\n\nexport const useSchemaFormEngine = ({\n schemaIndex = null,\n defaultValues = {},\n errors,\n onChange,\n getConditionContext,\n parentForm,\n parentPath,\n}: SchemaFormEngineOptions): SchemaFormEngineApi => {\n const index = useMemo(() => {\n if (!schemaIndex) {\n throw new Error('SchemaFormEngine requires a compiled schemaIndex.');\n }\n const normalizedSchema = normalizeSchema(schemaIndex.schema);\n return { ...schemaIndex, schema: normalizedSchema };\n }, [schemaIndex]);\n const storeRef = useRef<FormStateStore | null>(null);\n\n if (!storeRef.current) {\n storeRef.current = new FormStateStore(defaultValues);\n }\n\n const store = storeRef.current;\n const validationEngine = useMemo(() => {\n return createValidationEngine(index, { conditionDataResolver: getConditionContext });\n }, [index, getConditionContext]);\n const labelMap = useMemo(() => {\n const map = new Map<string, string>();\n index.fieldEntries.forEach((entry) => {\n if (entry.path) {\n const label = String(entry.field?.label || entry.field?.name || entry.path);\n map.set(entry.path, label);\n }\n });\n return map;\n }, [index]);\n\n const onSubmitHandlerRef = useRef<((value: FormValues) => Promise<void> | void) | null>(null);\n const onErrorHandlerRef = useRef<((errors: Record<string, unknown>) => void) | null>(null);\n const onSuccessHandlerRef = useRef<((value: FormValues) => void) | null>(null);\n const onChangeHandlerRef = useRef<((value: FormValues) => void) | null>(null);\n const formRef = useRef<SchemaFormEngineApi | null>(null);\n\n const nestedFormsRef = useRef<Map<string, NestedFormApi>>(new Map());\n\n useEffect(() => {\n if (!onChange) {\n onChangeHandlerRef.current = null;\n return;\n }\n\n onChangeHandlerRef.current = (value: FormValues) => {\n if (formRef.current) {\n onChange(value, formRef.current);\n }\n };\n }, [onChange]);\n\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n if (onChangeHandlerRef.current) {\n onChangeHandlerRef.current(store.state.values);\n }\n });\n\n return unsubscribe;\n }, [store]);\n\n useEffect(() => {\n const normalized = normalizeServerErrors(errors);\n if (Object.keys(normalized).length) {\n store.setErrors(normalized);\n } else {\n store.clearErrors();\n }\n }, [errors, store]);\n\n const registerNestedForm = (path: string, api: NestedFormApi) => {\n nestedFormsRef.current.set(path, api);\n };\n\n const unregisterNestedForm = (path: string) => {\n nestedFormsRef.current.delete(path);\n };\n\n const validateNestedForms = () => {\n const nestedErrors: Record<string, string[]> = {};\n\n nestedFormsRef.current.forEach((api, path) => {\n const result = api.validate();\n if (result?.fields) {\n Object.entries(result.fields).forEach(([fieldPath, messages]) => {\n const mergedPath = fieldPath ? `${path}.${fieldPath}` : path;\n nestedErrors[mergedPath] = messages;\n });\n }\n });\n\n return nestedErrors;\n };\n\n const getGroupedErrorsForPath = (path: string) => {\n if (!path) {\n return [];\n }\n\n const currentErrors = store.state.errors || {};\n const rootErrors = currentErrors[path] || [];\n const childKeys = Object.keys(currentErrors).filter((key) => {\n return key.startsWith(`${path}.`);\n });\n\n if (!childKeys.length) {\n return rootErrors;\n }\n\n const parentLabel = labelMap.get(path);\n const groupedMessages: string[] = [];\n\n childKeys.forEach((key) => {\n const wildcardPath = key.replace(/\\.\\d+(?=\\.|$)/g, '.*');\n const childLabel = labelMap.get(wildcardPath) || key.split('.').slice(-1)[0];\n (currentErrors[key] || []).forEach((message) => {\n if (parentLabel) {\n groupedMessages.push(buildGroupedMessage(String(message), parentLabel, childLabel));\n return;\n }\n\n groupedMessages.push(String(message));\n });\n });\n\n return Array.from(new Set([...rootErrors, ...groupedMessages]));\n };\n\n const handleSubmit = async () => {\n const result = validationEngine.validate(store.state.values);\n const errorsMap = result?.fields || {};\n const nestedErrors = validateNestedForms();\n const mergedErrors = { ...errorsMap, ...nestedErrors };\n\n if (Object.keys(mergedErrors).length > 0) {\n store.setErrors(mergedErrors);\n if (onErrorHandlerRef.current) {\n onErrorHandlerRef.current(mergedErrors);\n }\n return;\n }\n\n store.clearErrors();\n\n if (onSubmitHandlerRef.current) {\n await onSubmitHandlerRef.current(store.state.values);\n }\n\n if (parentForm && parentPath) {\n parentForm.setFieldValue(parentPath, store.state.values);\n }\n\n if (onSuccessHandlerRef.current) {\n onSuccessHandlerRef.current(store.state.values);\n }\n };\n\n const form = {\n schema: index.schema,\n store,\n index,\n Field: EngineField,\n getFieldValue: (path: string) => { return store.getValue(path); },\n setFieldValue: (path: string, value: unknown) => { return store.setValue(path, value); },\n getErrorMapFields: () => { return store.state.errors || {}; },\n SchemaRenderer,\n handleSubmit,\n onChange: (handler) => { onChangeHandlerRef.current = handler; },\n onSubmit: (handler) => { onSubmitHandlerRef.current = handler; },\n onError: (handler) => { onErrorHandlerRef.current = handler; },\n onSuccess: (handler) => { onSuccessHandlerRef.current = handler; },\n registerNestedForm,\n unregisterNestedForm,\n getGroupedErrorsForPath,\n getConditionContext: (values: FormValues, field?: SchemaNode) => {\n return getConditionContext?.(values, field) || {};\n },\n } as SchemaFormEngineApi;\n\n formRef.current = form;\n\n useEffect(() => {\n if (!parentForm || !parentPath) {\n return;\n }\n\n const nestedApi: NestedFormApi = {\n path: parentPath,\n validate: () => {\n const result = validationEngine.validate(store.state.values);\n const fieldErrors = result?.fields || {};\n\n if (Object.keys(fieldErrors).length) {\n store.setErrors(fieldErrors);\n } else {\n store.clearErrors();\n }\n\n return result;\n },\n getValues: () => { return store.state.values; },\n };\n\n parentForm.registerNestedForm(parentPath, nestedApi);\n return () => {\n parentForm.unregisterNestedForm(parentPath);\n };\n }, [parentForm, parentPath, store, validationEngine]);\n\n return form;\n};\n\n/**\n * FACE shadow inputs (pk-input) cannot use HTML implicit submission. They\n * dispatch this on the SchemaFormEngine <form>; keep in sync with\n * plugin-kit-web `PK_IMPLICIT_SUBMIT_EVENT`.\n */\nconst PK_IMPLICIT_SUBMIT_EVENT = 'pk-implicit-submit';\n\nexport const SchemaFormEngine = forwardRef(({\n form,\n className,\n withoutForm = false,\n}: {\n form: SchemaFormEngineApi;\n className?: string;\n withoutForm?: boolean;\n}, ref: React.Ref<SchemaFormEngineApi>) => {\n const formElementRef = useRef<HTMLFormElement | null>(null);\n\n useImperativeHandle(ref, () => {\n return form;\n });\n\n // pk-input Enter → CustomEvent (not requestSubmit) so Craft’s #main never navigates.\n useEffect(() => {\n if (withoutForm) {\n return undefined;\n }\n\n const formElement = formElementRef.current;\n\n if (!formElement) {\n return undefined;\n }\n\n const handleImplicitSubmit = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n form.handleSubmit();\n };\n\n formElement.addEventListener(PK_IMPLICIT_SUBMIT_EVENT, handleImplicitSubmit);\n\n return () => {\n formElement.removeEventListener(PK_IMPLICIT_SUBMIT_EVENT, handleImplicitSubmit);\n };\n }, [form, withoutForm]);\n\n if (withoutForm) {\n return (\n <SchemaEngineContext.Provider value={form}>\n <SchemaProvider form={form}>\n <div className={className}>\n <SchemaRenderer schema={form.schema} />\n </div>\n </SchemaProvider>\n </SchemaEngineContext.Provider>\n );\n }\n\n return (\n <SchemaEngineContext.Provider value={form}>\n <SchemaProvider form={form}>\n <form\n ref={formElementRef}\n onSubmit={(event) => {\n event.preventDefault();\n event.stopPropagation();\n form.handleSubmit();\n }}\n className={className}\n >\n <SchemaRenderer schema={form.schema} />\n {/*\n * Hidden default submitter — v1 Enter-to-Apply for light-DOM\n * text inputs. FACE controls (pk-input) dispatch\n * `pk-implicit-submit` instead of requestSubmit() (Craft #main).\n */}\n <button type=\"submit\" tabIndex={-1} aria-hidden=\"true\" className=\"sr-only\" />\n </form>\n </SchemaProvider>\n </SchemaEngineContext.Provider>\n );\n});\n\nSchemaFormEngine.displayName = 'SchemaFormEngine';\n"],"mappings":";;;;;;;;;AAgEA,IAAM,YAAY,UAAqD;AACnE,QAAO,QAAQ,MAAM,IAAI,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,MAAM;;AAG/E,IAAM,kBAAkB,UAA+F;AACnH,QAAO,SAAS,MAAM,IAAI,SAAS,MAAM,OAAO;;AAGpD,IAAM,gBAAgB,cAAyC,KAAK;AACpE,IAAM,oBAAoB,cAA8C,KAAK;AAE7E,IAAM,sBAAsB,EAAE,UAAU,GAAG,YAAqC;AAC5E,QACI,oBAAC,kBAAkB,UAAnB;EAA4B,OAAO;EAC9B;EACwB,CAAA;;AAIrC,IAAM,yBAAyB;CAC3B,MAAM,UAAU,WAAW,cAAc;AAEzC,KAAI,CAAC,QACD,OAAM,IAAI,MAAM,wDAAwD;AAG5E,QAAO;;AAGX,IAAM,aAAa,MAAM,EAAE,OAAO,eAAgC;CAC9D,MAAM,EAAE,SAAS,kBAAkB;CAEnC,MAAM,qBAAqB,aAAa,WAAuB;EAC3D,MAAM,YAAY,OAAO,MAAM,eAAe,WAAW,MAAM,aAAa;EAC5E,MAAM,eAAe,YAAY,MAAM,gBAAgB,UAAU,GAAG;EACpE,MAAM,eAAe,SAAS,aAAa,GAAG,eAAe,EAAE;EAC/D,MAAM,mBAAmB,MAAM,sBAAsB,QAAQ,MAAM;EACnE,MAAM,6BAA6B,SAAS,iBAAiB,GAAG,mBAAmB,EAAE;EACrF,MAAM,YAAY,SAAS,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE;AAE1D,SAAO;GACH,GAAG;GACH,GAAG;GACH,GAAG;GACH,GAAG;GACN;IACF,CAAC,OAAO,KAAK,CAAC;CAEjB,MAAM,oBAAoB,aAAa,WAAuB;AAC1D,MAAI,CAAC,MAAM,GACP,QAAO;AAGX,SAAO,kBAAkB,MAAM,IAAI,mBAAmB,OAAO,CAAC;IAC/D,CAAC,oBAAoB,MAAM,GAAG,CAAC;CAElC,MAAM,CAAC,YAAY,iBAAiB,eAAe;EAC/C,MAAM,gBAAgB,MAAM,OAAO,OAAO;AAE1C,MAAI,CAAC,iBAAiB,OAAO,kBAAkB,SAC3C,QAAO,CAAC,MAAM;AAGlB,SAAO,kBAAkB,cAAc;GACzC;AAEF,iBAAgB;AACZ,MAAI,CAAC,MAAM,IAAI;AACX,iBAAc,KAAK;AACnB;;EAGJ,MAAM,gBAAgB,MAAM,OAAO,OAAO;AAC1C,MAAI,iBAAiB,OAAO,kBAAkB,SAC1C,eAAc,kBAAkB,cAAc,CAAC;AAGnD,MAAI,CAAC,MAAM,OAAO,UACd;AAUJ,SAPoB,KAAK,MAAM,gBAAgB;GAC3C,MAAM,EAAE,WAAW,KAAK,MAAM;AAG9B,iBAFkB,kBAAkB,OAEtB,CAAU;IAGrB;IACR;EAAC,MAAM;EAAI;EAAM;EAAkB,CAAC;AAEvC,KAAI,CAAC,WACD,QAAQ,MAAM,WAAY,oBAAC,OAAD;EAAK,OAAO,EAAE,SAAS,QAAQ;EAAG;EAAe,CAAA,GAAG;AAGlF,QAAO;EACT;AAEF,WAAW,cAAc;AAGzB,IAAM,mBAAmB,QAAoB,SAA8B;CAEvE,MAAM,EAAE,QAAQ,GAAG,UADA,OAAO,SAAS;EAAE,QAAQ,OAAO;EAAQ,GAAG;EAAQ,GAAG;EAAE,QAAQ,OAAO;EAAM,GAAG;EAAQ;AAI5G,QACI,oBAAC,qBAAD;EACe,WAJD,OAAO,UAAU,GAIhB;EACH;EACR,OAAO,EAAE,GAAG,OAAO;EACb;YAEL,MAAM,WAAW,oBAAC,gBAAD,EAAgB,QAAQ,MAAM,UAAgC,CAAA,GAAG;EACjE,CAAA;;AAI9B,IAAM,qBAAqB,WAAuB;CAC9C,MAAM,EAAE,KAAK,UAAU,QAAQ,EAAE,KAAK;CACtC,MAAM,kBAAkB,eAAe,SAAS,MAAM,GAAG,QAAQ,EAAE,CAAC;AAEpE,KAAI,OAAO,QAAQ,YAAY,CAAC,IAC5B,QAAO;AAIX,KAAI,QAAQ,KACR,QAAO,cAAc,WAAW,EAAE,GAAG,iBAAiB,CAAC;AAG3D,QAAO,cAAc,KAAK,EAAE,GAAG,iBAAiB,EAAE,WAAW,oBAAC,gBAAD,EAAgB,QAAQ,UAAY,CAAA,GAAG,KAAK;;AAG7G,IAAM,uBAAuB,WAAuB;CAChD,MAAM,EACF,MAAM,QAAQ,EAAE,EAAE,UAAU,GAAG,SAC/B;CACJ,MAAM,YAAY,0BAA0B,CAAC;AAE7C,KAAI,CAAC,WAAW;AACZ,UAAQ,KAAK,2BAA2B,OAAO;AAC/C,SAAO;;CAKX,MAAM,EACF,KAAK,WACL,OAAO,aACP,YAAY,kBACZ,QAAQ,eACR,mBAAmB,oBACnB,KAAK,WACL,QAAQ,cACR,IAAI,WACJ,UAAU,iBACV,OAAO,cACP,MAAM,aACN,GAAG,aACH;CAcJ,MAAM,iBAAiB;EAAE,GAAI,SAAS,MAAM,GAAG,QAAQ,EAAE;EAAG,GAAG;EAAU;AAGzE,KAFuB,QAAQ,UAAU,eAErC,CACA,gBAAe,aAAa;UACrB,gBAAgB,eACvB,QAAO,eAAe;AAG1B,QAAO,cACH,WACA,gBACA,WAAW,oBAAC,gBAAD,EAAgB,QAAQ,UAAgC,CAAA,GAAG,KACzE;;AAOL,IAAM,iBAAiB,MAAM,EAAE,aAAkC;CAC7D,MAAM,EAAE,SAAS,kBAAkB;AAEnC,KAAI,OAAO,WAAW,SAClB,QAAO;AAGX,KAAI,MAAM,QAAQ,OAAO,CACrB,QAAO,OAAO,KAAK,YAAY,UAAU;AACrC,MAAI,OAAO,eAAe,SACtB,QAAO;AAGX,MAAI,CAAC,SAAS,WAAW,CACrB,QAAO;EAGX,MAAM,MAAM,OAAO,WAAW,QAAQ,WAAW,WAAW,MAAM,eAAe;AACjF,SACI,oBAAC,oBAAD,EAAA,UACI,oBAAC,YAAD;GAAY,OAAO;aACf,oBAAC,gBAAD,EAAgB,QAAQ,YAAkC,CAAA;GACjD,CAAA,EACI,EAJI,IAIJ;GAE3B;AAGN,KAAI,OAAO,UAAW,OAAO,SAAS,QAClC,QAAO,gBAAgB,QAAQ,KAAK;AAGxC,KAAI,OAAO,IACP,QAAO,kBAAkB,OAAO;AAGpC,KAAI,OAAO,KACP,QAAO,oBAAoB,OAAO;AAGtC,SAAQ,KAAK,wBAAwB,OAAO;AAC5C,QAAO;EACT;AAEF,eAAe,cAAc;AAG7B,IAAM,kBAAkB,EAAE,UAAU,WAAqE;CACrG,MAAM,eAAe,cAAc;AAC/B,SAAO;GACH;GACA,QAAQ,KAAK;GAChB;IACF,CAAC,KAAK,CAAC;AAEV,QACI,oBAAC,cAAc,UAAf;EAAwB,OAAO;EAC1B;EACoB,CAAA;;AAIjC,IAAM,yBAAyB,cAAkD;CAC7E,MAAM,aAAuC,EAAE;AAE/C,KAAI,CAAC,UACD,QAAO;CAGX,MAAM,kBAAkB,MAAc,aAAwB;AAC1D,MAAI,CAAC,KACD;EAGJ,MAAM,eAAe,SAChB,QAAQ,YAAY;AAAE,UAAO,YAAY,KAAA,KAAa,YAAY,QAAQ,YAAY;IAAM,CAC5F,KAAK,YAAY;AAAE,UAAO,OAAO,QAAQ;IAAI;AAElD,MAAI,CAAC,aAAa,OACd;AAGJ,MAAI,CAAC,WAAW,MACZ,YAAW,QAAQ,EAAE;AAGzB,aAAW,MAAM,KAAK,GAAG,aAAa;;CAG1C,MAAM,iBAAiB,MAAe,SAAiB;AACnD,MAAI,MAAM,QAAQ,KAAK,EAAE;AACrB,OAAI,KAAK,WAAW,EAChB;AAIJ,OADuB,KAAK,OAAO,UAAU;AAAE,WAAO,OAAO,UAAU;KACnE,EAAgB;AAChB,mBAAe,MAAM,KAAK;AAC1B;;AAGJ,OAAI,CAAC,MAAM;AACP,SAAK,SAAS,UAAU;AAAE,mBAAc,OAAO,KAAK;MAAI;AACxD;;AAGJ,QAAK,SAAS,OAAO,UAAU;AAC3B,kBAAc,OAAO,GAAG,KAAK,GAAG,QAAQ;KAC1C;AACF;;AAGJ,MAAI,CAAC,QAAQ,OAAO,SAAS,SACzB;AAGJ,SAAO,QAAQ,KAAgC,CAAC,SAAS,CAAC,KAAK,WAAW;AAEtE,iBAAc,OADG,OAAO,GAAG,KAAK,GAAG,QAAQ,IACb;IAChC;;AAGN,KAAI,MAAM,QAAQ,UAAU,EAAE;AAC1B,gBAAc,WAAW,GAAG;AAC5B,SAAO;;AAGX,KAAI,aAAa,OAAO,cAAc,YAAY,YAAY,WAAW;AACrE,gBAAe,UAAmC,QAAQ,GAAG;AAC7D,SAAO;;AAGX,eAAc,WAAW,GAAG;AAC5B,QAAO;;AAGX,IAAM,oBACF,OACA,UACA,kBACC;AAOD,QAAO,qBANW,QACZ,MAAM,UAAU,KAAK,MAAM,UACpB;AACL,eAAa;WAKX;AAAE,SAAO,QAAQ,SAAS,MAAM,MAAM,GAAG;UACzC;AAAE,SAAO,QAAQ,SAAS,MAAM,MAAM,GAAG;GAClD;;AAGL,IAAM,eAAe,EAAE,MAAM,eAA0F;CACnH,MAAM,OAAO,WAAW,oBAAoB;CAC5C,MAAM,QAAQ,MAAM,SAAS;CAE7B,MAAM,QAAQ,iBACV,aACM;AAAE,SAAO,MAAM,cAAc,KAAK;IACxC,KAAA,EACH;CACD,MAAM,SAAS,iBACX,QACC,UAAU;AAAE,SAAO,OAAO,OAAO,SAAS,EAAE;IAC7C,EAAE,CACL;AAED,KAAI,CAAC,KACD,QAAO;AAoBX,QAAO,SAAS;EAhBZ,OAAO,EAAE,OAAO;EAChB,eAAe,iBAA0B;AACrC,OAAI,eAAe,aAAa,EAAE;IAC9B,MAAM,EAAE,MAAM,SAAS,OAAO,cAAc,aAAa;AACzD,SAAK,cAAc,MAAM,SAAS,aAAa,UAAU,UAAU;AACnE;;AAGJ,QAAK,cAAc,MAAM,aAAa;;EAE1C,kBAAkB;AACd,QAAK,MAAM,WAAW,MAAM,KAAK;;EAErC;EAGY,CAAS;;AAG7B,IAAa,uBAAuB,EAChC,cAAc,MACd,gBAAgB,EAAE,EAClB,QACA,UACA,qBACA,YACA,iBACgD;CAChD,MAAM,QAAQ,cAAc;AACxB,MAAI,CAAC,YACD,OAAM,IAAI,MAAM,oDAAoD;EAExE,MAAM,mBAAmB,gBAAgB,YAAY,OAAO;AAC5D,SAAO;GAAE,GAAG;GAAa,QAAQ;GAAkB;IACpD,CAAC,YAAY,CAAC;CACjB,MAAM,WAAW,OAA8B,KAAK;AAEpD,KAAI,CAAC,SAAS,QACV,UAAS,UAAU,IAAI,eAAe,cAAc;CAGxD,MAAM,QAAQ,SAAS;CACvB,MAAM,mBAAmB,cAAc;AACnC,SAAO,uBAAuB,OAAO,EAAE,uBAAuB,qBAAqB,CAAC;IACrF,CAAC,OAAO,oBAAoB,CAAC;CAChC,MAAM,WAAW,cAAc;EAC3B,MAAM,sBAAM,IAAI,KAAqB;AACrC,QAAM,aAAa,SAAS,UAAU;AAClC,OAAI,MAAM,MAAM;IACZ,MAAM,QAAQ,OAAO,MAAM,OAAO,SAAS,MAAM,OAAO,QAAQ,MAAM,KAAK;AAC3E,QAAI,IAAI,MAAM,MAAM,MAAM;;IAEhC;AACF,SAAO;IACR,CAAC,MAAM,CAAC;CAEX,MAAM,qBAAqB,OAA6D,KAAK;CAC7F,MAAM,oBAAoB,OAA2D,KAAK;CAC1F,MAAM,sBAAsB,OAA6C,KAAK;CAC9E,MAAM,qBAAqB,OAA6C,KAAK;CAC7E,MAAM,UAAU,OAAmC,KAAK;CAExD,MAAM,iBAAiB,uBAAmC,IAAI,KAAK,CAAC;AAEpE,iBAAgB;AACZ,MAAI,CAAC,UAAU;AACX,sBAAmB,UAAU;AAC7B;;AAGJ,qBAAmB,WAAW,UAAsB;AAChD,OAAI,QAAQ,QACR,UAAS,OAAO,QAAQ,QAAQ;;IAGzC,CAAC,SAAS,CAAC;AAEd,iBAAgB;AAOZ,SANoB,MAAM,gBAAgB;AACtC,OAAI,mBAAmB,QACnB,oBAAmB,QAAQ,MAAM,MAAM,OAAO;IAI/C;IACR,CAAC,MAAM,CAAC;AAEX,iBAAgB;EACZ,MAAM,aAAa,sBAAsB,OAAO;AAChD,MAAI,OAAO,KAAK,WAAW,CAAC,OACxB,OAAM,UAAU,WAAW;MAE3B,OAAM,aAAa;IAExB,CAAC,QAAQ,MAAM,CAAC;CAEnB,MAAM,sBAAsB,MAAc,QAAuB;AAC7D,iBAAe,QAAQ,IAAI,MAAM,IAAI;;CAGzC,MAAM,wBAAwB,SAAiB;AAC3C,iBAAe,QAAQ,OAAO,KAAK;;CAGvC,MAAM,4BAA4B;EAC9B,MAAM,eAAyC,EAAE;AAEjD,iBAAe,QAAQ,SAAS,KAAK,SAAS;GAC1C,MAAM,SAAS,IAAI,UAAU;AAC7B,OAAI,QAAQ,OACR,QAAO,QAAQ,OAAO,OAAO,CAAC,SAAS,CAAC,WAAW,cAAc;IAC7D,MAAM,aAAa,YAAY,GAAG,KAAK,GAAG,cAAc;AACxD,iBAAa,cAAc;KAC7B;IAER;AAEF,SAAO;;CAGX,MAAM,2BAA2B,SAAiB;AAC9C,MAAI,CAAC,KACD,QAAO,EAAE;EAGb,MAAM,gBAAgB,MAAM,MAAM,UAAU,EAAE;EAC9C,MAAM,aAAa,cAAc,SAAS,EAAE;EAC5C,MAAM,YAAY,OAAO,KAAK,cAAc,CAAC,QAAQ,QAAQ;AACzD,UAAO,IAAI,WAAW,GAAG,KAAK,GAAG;IACnC;AAEF,MAAI,CAAC,UAAU,OACX,QAAO;EAGX,MAAM,cAAc,SAAS,IAAI,KAAK;EACtC,MAAM,kBAA4B,EAAE;AAEpC,YAAU,SAAS,QAAQ;GACvB,MAAM,eAAe,IAAI,QAAQ,kBAAkB,KAAK;GACxD,MAAM,aAAa,SAAS,IAAI,aAAa,IAAI,IAAI,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC;AAC1E,IAAC,cAAc,QAAQ,EAAE,EAAE,SAAS,YAAY;AAC5C,QAAI,aAAa;AACb,qBAAgB,KAAK,oBAAoB,OAAO,QAAQ,EAAE,aAAa,WAAW,CAAC;AACnF;;AAGJ,oBAAgB,KAAK,OAAO,QAAQ,CAAC;KACvC;IACJ;AAEF,SAAO,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,YAAY,GAAG,gBAAgB,CAAC,CAAC;;CAGnE,MAAM,eAAe,YAAY;EAE7B,MAAM,YADS,iBAAiB,SAAS,MAAM,MAAM,OACnC,EAAQ,UAAU,EAAE;EACtC,MAAM,eAAe,qBAAqB;EAC1C,MAAM,eAAe;GAAE,GAAG;GAAW,GAAG;GAAc;AAEtD,MAAI,OAAO,KAAK,aAAa,CAAC,SAAS,GAAG;AACtC,SAAM,UAAU,aAAa;AAC7B,OAAI,kBAAkB,QAClB,mBAAkB,QAAQ,aAAa;AAE3C;;AAGJ,QAAM,aAAa;AAEnB,MAAI,mBAAmB,QACnB,OAAM,mBAAmB,QAAQ,MAAM,MAAM,OAAO;AAGxD,MAAI,cAAc,WACd,YAAW,cAAc,YAAY,MAAM,MAAM,OAAO;AAG5D,MAAI,oBAAoB,QACpB,qBAAoB,QAAQ,MAAM,MAAM,OAAO;;CAIvD,MAAM,OAAO;EACT,QAAQ,MAAM;EACd;EACA;EACA,OAAO;EACP,gBAAgB,SAAiB;AAAE,UAAO,MAAM,SAAS,KAAK;;EAC9D,gBAAgB,MAAc,UAAmB;AAAE,UAAO,MAAM,SAAS,MAAM,MAAM;;EACrF,yBAAyB;AAAE,UAAO,MAAM,MAAM,UAAU,EAAE;;EAC1D;EACA;EACA,WAAW,YAAY;AAAE,sBAAmB,UAAU;;EACtD,WAAW,YAAY;AAAE,sBAAmB,UAAU;;EACtD,UAAU,YAAY;AAAE,qBAAkB,UAAU;;EACpD,YAAY,YAAY;AAAE,uBAAoB,UAAU;;EACxD;EACA;EACA;EACA,sBAAsB,QAAoB,UAAuB;AAC7D,UAAO,sBAAsB,QAAQ,MAAM,IAAI,EAAE;;EAExD;AAED,SAAQ,UAAU;AAElB,iBAAgB;AACZ,MAAI,CAAC,cAAc,CAAC,WAChB;EAGJ,MAAM,YAA2B;GAC7B,MAAM;GACN,gBAAgB;IACZ,MAAM,SAAS,iBAAiB,SAAS,MAAM,MAAM,OAAO;IAC5D,MAAM,cAAc,QAAQ,UAAU,EAAE;AAExC,QAAI,OAAO,KAAK,YAAY,CAAC,OACzB,OAAM,UAAU,YAAY;QAE5B,OAAM,aAAa;AAGvB,WAAO;;GAEX,iBAAiB;AAAE,WAAO,MAAM,MAAM;;GACzC;AAED,aAAW,mBAAmB,YAAY,UAAU;AACpD,eAAa;AACT,cAAW,qBAAqB,WAAW;;IAEhD;EAAC;EAAY;EAAY;EAAO;EAAiB,CAAC;AAErD,QAAO;;;;;;;AAQX,IAAM,2BAA2B;AAEjC,IAAa,mBAAmB,YAAY,EACxC,MACA,WACA,cAAc,SAKf,QAAwC;CACvC,MAAM,iBAAiB,OAA+B,KAAK;AAE3D,qBAAoB,WAAW;AAC3B,SAAO;GACT;AAGF,iBAAgB;AACZ,MAAI,YACA;EAGJ,MAAM,cAAc,eAAe;AAEnC,MAAI,CAAC,YACD;EAGJ,MAAM,wBAAwB,UAAiB;AAC3C,SAAM,gBAAgB;AACtB,SAAM,iBAAiB;AACvB,QAAK,cAAc;;AAGvB,cAAY,iBAAiB,0BAA0B,qBAAqB;AAE5E,eAAa;AACT,eAAY,oBAAoB,0BAA0B,qBAAqB;;IAEpF,CAAC,MAAM,YAAY,CAAC;AAEvB,KAAI,YACA,QACI,oBAAC,oBAAoB,UAArB;EAA8B,OAAO;YACjC,oBAAC,gBAAD;GAAsB;aAClB,oBAAC,OAAD;IAAgB;cACZ,oBAAC,gBAAD,EAAgB,QAAQ,KAAK,QAAU,CAAA;IACrC,CAAA;GACO,CAAA;EACU,CAAA;AAIvC,QACI,oBAAC,oBAAoB,UAArB;EAA8B,OAAO;YACjC,oBAAC,gBAAD;GAAsB;aAClB,qBAAC,QAAD;IACI,KAAK;IACL,WAAW,UAAU;AACjB,WAAM,gBAAgB;AACtB,WAAM,iBAAiB;AACvB,UAAK,cAAc;;IAEZ;cAPf,CASI,oBAAC,gBAAD,EAAgB,QAAQ,KAAK,QAAU,CAAA,EAMvC,oBAAC,UAAD;KAAQ,MAAK;KAAS,UAAU;KAAI,eAAY;KAAO,WAAU;KAAY,CAAA,CAC1E;;GACM,CAAA;EACU,CAAA;EAErC;AAEF,iBAAiB,cAAc"}
@@ -0,0 +1,13 @@
1
+ import { ReactNode } from 'react';
2
+ import { SchemaNode } from '@verbb/plugin-kit-forms';
3
+ import { SchemaFormEngineApi } from './engine/context.js';
4
+ type SchemaFormFieldNodeProps = {
5
+ fieldType: string;
6
+ schema: SchemaNode;
7
+ field: Record<string, unknown>;
8
+ form: SchemaFormEngineApi;
9
+ children?: ReactNode;
10
+ };
11
+ export declare const SchemaFormFieldNode: import('react').MemoExoticComponent<({ fieldType, schema, field, form, children, }: SchemaFormFieldNodeProps) => import('react').ReactElement<import('./index.js').SchemaFormFieldComponentProps, string | import('react').JSXElementConstructor<any>> | null>;
12
+ export {};
13
+ //# sourceMappingURL=SchemaFormFieldNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaFormFieldNode.d.ts","sourceRoot":"","sources":["../../src/forms/SchemaFormFieldNode.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKH,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,KAAK,EAAE,mBAAmB,EAA4B,MAAM,qBAAqB,CAAC;AAMzF,KAAK,wBAAwB,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,mBAAmB,sFAM7B,wBAAwB,kJAyDzB,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { cacheLoadedBuiltinFormField, getRegisteredFormField } from "./registry.js";
2
+ import { isBuiltinFormFieldType, loadBuiltinFormField } from "./builtin-field-loaders.js";
3
+ import { createElement, memo, useEffect, useState } from "react";
4
+ //#region src/forms/SchemaFormFieldNode.tsx
5
+ var SchemaFormFieldNode = memo(({ fieldType, schema, field, form, children }) => {
6
+ const registeredField = getRegisteredFormField(fieldType);
7
+ const [Component, setComponent] = useState(() => registeredField ?? null);
8
+ const [loadFailed, setLoadFailed] = useState(false);
9
+ useEffect(() => {
10
+ if (registeredField) {
11
+ setComponent(() => registeredField);
12
+ setLoadFailed(false);
13
+ return;
14
+ }
15
+ if (!isBuiltinFormFieldType(fieldType)) {
16
+ console.warn(`Unknown form field type: ${fieldType}`);
17
+ setComponent(null);
18
+ setLoadFailed(true);
19
+ return;
20
+ }
21
+ let cancelled = false;
22
+ setLoadFailed(false);
23
+ loadBuiltinFormField(fieldType).then((loaded) => {
24
+ if (cancelled || !loaded) return;
25
+ cacheLoadedBuiltinFormField(fieldType, loaded);
26
+ setComponent(() => loaded);
27
+ }).catch((error) => {
28
+ if (cancelled) return;
29
+ console.error(`Failed to load form field "${fieldType}":`, error);
30
+ setComponent(null);
31
+ setLoadFailed(true);
32
+ });
33
+ return () => {
34
+ cancelled = true;
35
+ };
36
+ }, [fieldType, registeredField]);
37
+ if (loadFailed || !Component) return null;
38
+ return createElement(Component, {
39
+ schema,
40
+ field,
41
+ form
42
+ }, children);
43
+ });
44
+ SchemaFormFieldNode.displayName = "SchemaFormFieldNode";
45
+ //#endregion
46
+ export { SchemaFormFieldNode };
47
+
48
+ //# sourceMappingURL=SchemaFormFieldNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaFormFieldNode.js","names":[],"sources":["../../src/forms/SchemaFormFieldNode.tsx"],"sourcesContent":["import {\n createElement,\n memo,\n useEffect,\n useState,\n type ReactNode,\n} from 'react';\n\nimport type { SchemaNode } from '@verbb/plugin-kit-forms';\n\nimport { isBuiltinFormFieldType, loadBuiltinFormField } from './builtin-field-loaders.js';\nimport type { SchemaFormEngineApi, SchemaFormFieldComponent } from './engine/context.js';\nimport {\n cacheLoadedBuiltinFormField,\n getRegisteredFormField,\n} from './registry.js';\n\ntype SchemaFormFieldNodeProps = {\n fieldType: string;\n schema: SchemaNode;\n field: Record<string, unknown>;\n form: SchemaFormEngineApi;\n children?: ReactNode;\n};\n\nexport const SchemaFormFieldNode = memo(({\n fieldType,\n schema,\n field,\n form,\n children,\n}: SchemaFormFieldNodeProps) => {\n const registeredField = getRegisteredFormField(fieldType);\n const [Component, setComponent] = useState<SchemaFormFieldComponent | null>(\n () => registeredField ?? null,\n );\n const [loadFailed, setLoadFailed] = useState(false);\n\n useEffect(() => {\n if (registeredField) {\n setComponent(() => registeredField);\n setLoadFailed(false);\n return;\n }\n\n if (!isBuiltinFormFieldType(fieldType)) {\n console.warn(`Unknown form field type: ${fieldType}`);\n setComponent(null);\n setLoadFailed(true);\n return;\n }\n\n let cancelled = false;\n setLoadFailed(false);\n\n loadBuiltinFormField(fieldType)\n .then((loaded) => {\n if (cancelled || !loaded) {\n return;\n }\n\n cacheLoadedBuiltinFormField(fieldType, loaded);\n setComponent(() => loaded);\n })\n .catch((error) => {\n if (cancelled) {\n return;\n }\n\n console.error(`Failed to load form field \"${fieldType}\":`, error);\n setComponent(null);\n setLoadFailed(true);\n });\n\n return () => {\n cancelled = true;\n };\n }, [fieldType, registeredField]);\n\n if (loadFailed || !Component) {\n return null;\n }\n\n return createElement(Component, {\n schema,\n field,\n form,\n }, children);\n});\n\nSchemaFormFieldNode.displayName = 'SchemaFormFieldNode';\n"],"mappings":";;;;AAyBA,IAAa,sBAAsB,MAAM,EACrC,WACA,QACA,OACA,MACA,eAC4B;CAC5B,MAAM,kBAAkB,uBAAuB,UAAU;CACzD,MAAM,CAAC,WAAW,gBAAgB,eACxB,mBAAmB,KAC5B;CACD,MAAM,CAAC,YAAY,iBAAiB,SAAS,MAAM;AAEnD,iBAAgB;AACZ,MAAI,iBAAiB;AACjB,sBAAmB,gBAAgB;AACnC,iBAAc,MAAM;AACpB;;AAGJ,MAAI,CAAC,uBAAuB,UAAU,EAAE;AACpC,WAAQ,KAAK,4BAA4B,YAAY;AACrD,gBAAa,KAAK;AAClB,iBAAc,KAAK;AACnB;;EAGJ,IAAI,YAAY;AAChB,gBAAc,MAAM;AAEpB,uBAAqB,UAAU,CAC1B,MAAM,WAAW;AACd,OAAI,aAAa,CAAC,OACd;AAGJ,+BAA4B,WAAW,OAAO;AAC9C,sBAAmB,OAAO;IAC5B,CACD,OAAO,UAAU;AACd,OAAI,UACA;AAGJ,WAAQ,MAAM,8BAA8B,UAAU,KAAK,MAAM;AACjE,gBAAa,KAAK;AAClB,iBAAc,KAAK;IACrB;AAEN,eAAa;AACT,eAAY;;IAEjB,CAAC,WAAW,gBAAgB,CAAC;AAEhC,KAAI,cAAc,CAAC,UACf,QAAO;AAGX,QAAO,cAAc,WAAW;EAC5B;EACA;EACA;EACH,EAAE,SAAS;EACd;AAEF,oBAAoB,cAAc"}
@@ -0,0 +1,18 @@
1
+ import { SchemaIndex, SchemaRenderable } from '@verbb/plugin-kit-forms';
2
+ export type AssertSchemaRegistryOptions = {
3
+ /** When true, throw on the first missing registry key instead of collecting all. */
4
+ failFast?: boolean;
5
+ };
6
+ export type SchemaRegistryIssue = {
7
+ path: string;
8
+ kind: 'field' | 'component';
9
+ key: string;
10
+ };
11
+ /**
12
+ * Walk a SchemaForm tree and verify every `$field` / `$cmp` key is registered.
13
+ * Use in dev/test bootstraps for large plugins (Formie-scale) before shipping CP screens.
14
+ */
15
+ export declare const assertSchemaRegistry: (schema: SchemaRenderable, options?: AssertSchemaRegistryOptions) => SchemaRegistryIssue[];
16
+ /** Dev helper: log registry gaps for a schema index root tree. */
17
+ export declare const debugSchemaRegistry: (schemaIndex: SchemaIndex | null | undefined, options?: AssertSchemaRegistryOptions) => SchemaRegistryIssue[];
18
+ //# sourceMappingURL=assertSchemaRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertSchemaRegistry.d.ts","sourceRoot":"","sources":["../../src/forms/assertSchemaRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAc,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKzF,MAAM,MAAM,2BAA2B,GAAG;IACtC,oFAAoF;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;CACf,CAAC;AA4CF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC7B,QAAQ,gBAAgB,EACxB,UAAS,2BAAgC,KAC1C,mBAAmB,EAgCrB,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,mBAAmB,GAC5B,aAAa,WAAW,GAAG,IAAI,GAAG,SAAS,EAC3C,UAAU,2BAA2B,KACtC,mBAAmB,EAYrB,CAAC"}