@pilotiq/pilotiq 0.7.2 → 0.8.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 (367) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/CHANGELOG.md +142 -0
  3. package/CLAUDE.md +59 -3
  4. package/dist/Pilotiq.d.ts +83 -0
  5. package/dist/Pilotiq.d.ts.map +1 -1
  6. package/dist/Pilotiq.js +39 -0
  7. package/dist/Pilotiq.js.map +1 -1
  8. package/dist/actions/Action.d.ts +27 -99
  9. package/dist/actions/Action.d.ts.map +1 -1
  10. package/dist/actions/Action.js +52 -754
  11. package/dist/actions/Action.js.map +1 -1
  12. package/dist/actions/bulkFactories.d.ts +46 -0
  13. package/dist/actions/bulkFactories.d.ts.map +1 -0
  14. package/dist/actions/bulkFactories.js +144 -0
  15. package/dist/actions/bulkFactories.js.map +1 -0
  16. package/dist/actions/crudFactories.d.ts +94 -0
  17. package/dist/actions/crudFactories.d.ts.map +1 -0
  18. package/dist/actions/crudFactories.js +209 -0
  19. package/dist/actions/crudFactories.js.map +1 -0
  20. package/dist/actions/factoryHelpers.d.ts +108 -0
  21. package/dist/actions/factoryHelpers.d.ts.map +1 -0
  22. package/dist/actions/factoryHelpers.js +138 -0
  23. package/dist/actions/factoryHelpers.js.map +1 -0
  24. package/dist/actions/m2mFactories.d.ts +47 -0
  25. package/dist/actions/m2mFactories.d.ts.map +1 -0
  26. package/dist/actions/m2mFactories.js +173 -0
  27. package/dist/actions/m2mFactories.js.map +1 -0
  28. package/dist/actions/relationFactories.d.ts +93 -0
  29. package/dist/actions/relationFactories.d.ts.map +1 -0
  30. package/dist/actions/relationFactories.js +321 -0
  31. package/dist/actions/relationFactories.js.map +1 -0
  32. package/dist/elements/dispatchForm.js +1 -1
  33. package/dist/elements/dispatchForm.js.map +1 -1
  34. package/dist/elements/dispatchTable.js +1 -1
  35. package/dist/elements/dispatchTable.js.map +1 -1
  36. package/dist/fields/Field.d.ts +31 -0
  37. package/dist/fields/Field.d.ts.map +1 -1
  38. package/dist/fields/Field.js +25 -0
  39. package/dist/fields/Field.js.map +1 -1
  40. package/dist/pageData/breadcrumbs.d.ts +42 -0
  41. package/dist/pageData/breadcrumbs.d.ts.map +1 -0
  42. package/dist/pageData/breadcrumbs.js +172 -0
  43. package/dist/pageData/breadcrumbs.js.map +1 -0
  44. package/dist/pageData/forms.d.ts +137 -0
  45. package/dist/pageData/forms.d.ts.map +1 -0
  46. package/dist/pageData/forms.js +427 -0
  47. package/dist/pageData/forms.js.map +1 -0
  48. package/dist/pageData/helpers.d.ts +239 -0
  49. package/dist/pageData/helpers.d.ts.map +1 -0
  50. package/dist/pageData/helpers.js +703 -0
  51. package/dist/pageData/helpers.js.map +1 -0
  52. package/dist/pageData/misc.d.ts +76 -0
  53. package/dist/pageData/misc.d.ts.map +1 -0
  54. package/dist/pageData/misc.js +263 -0
  55. package/dist/pageData/misc.js.map +1 -0
  56. package/dist/pageData/navigation.d.ts +292 -0
  57. package/dist/pageData/navigation.d.ts.map +1 -0
  58. package/dist/pageData/navigation.js +591 -0
  59. package/dist/pageData/navigation.js.map +1 -0
  60. package/dist/pageData/relationPages.d.ts +172 -0
  61. package/dist/pageData/relationPages.d.ts.map +1 -0
  62. package/dist/pageData/relationPages.js +867 -0
  63. package/dist/pageData/relationPages.js.map +1 -0
  64. package/dist/pageData/relationTabs.d.ts +65 -0
  65. package/dist/pageData/relationTabs.d.ts.map +1 -0
  66. package/dist/pageData/relationTabs.js +258 -0
  67. package/dist/pageData/relationTabs.js.map +1 -0
  68. package/dist/pageData/resourcePages.d.ts +48 -0
  69. package/dist/pageData/resourcePages.d.ts.map +1 -0
  70. package/dist/pageData/resourcePages.js +504 -0
  71. package/dist/pageData/resourcePages.js.map +1 -0
  72. package/dist/pageData.d.ts +12 -792
  73. package/dist/pageData.d.ts.map +1 -1
  74. package/dist/pageData.js +24 -3797
  75. package/dist/pageData.js.map +1 -1
  76. package/dist/react/AppShell.d.ts +8 -0
  77. package/dist/react/AppShell.d.ts.map +1 -1
  78. package/dist/react/AppShell.js +11 -1
  79. package/dist/react/AppShell.js.map +1 -1
  80. package/dist/react/CollabExtensionFactoryRegistry.d.ts +47 -0
  81. package/dist/react/CollabExtensionFactoryRegistry.d.ts.map +1 -0
  82. package/dist/react/CollabExtensionFactoryRegistry.js +14 -0
  83. package/dist/react/CollabExtensionFactoryRegistry.js.map +1 -0
  84. package/dist/react/CollabRoomContext.d.ts +37 -0
  85. package/dist/react/CollabRoomContext.d.ts.map +1 -0
  86. package/dist/react/CollabRoomContext.js +12 -0
  87. package/dist/react/CollabRoomContext.js.map +1 -0
  88. package/dist/react/FormCollabBindingRegistry.d.ts +62 -0
  89. package/dist/react/FormCollabBindingRegistry.d.ts.map +1 -0
  90. package/dist/react/FormCollabBindingRegistry.js +14 -0
  91. package/dist/react/FormCollabBindingRegistry.js.map +1 -0
  92. package/dist/react/RecordWrapperGate.d.ts +25 -0
  93. package/dist/react/RecordWrapperGate.d.ts.map +1 -0
  94. package/dist/react/RecordWrapperGate.js +30 -0
  95. package/dist/react/RecordWrapperGate.js.map +1 -0
  96. package/dist/react/RecordWrapperRegistry.d.ts +31 -0
  97. package/dist/react/RecordWrapperRegistry.d.ts.map +1 -0
  98. package/dist/react/RecordWrapperRegistry.js +15 -0
  99. package/dist/react/RecordWrapperRegistry.js.map +1 -0
  100. package/dist/react/SchemaRenderer.d.ts +17 -23
  101. package/dist/react/SchemaRenderer.d.ts.map +1 -1
  102. package/dist/react/SchemaRenderer.js +71 -3647
  103. package/dist/react/SchemaRenderer.js.map +1 -1
  104. package/dist/react/component-slots.d.ts +103 -0
  105. package/dist/react/component-slots.d.ts.map +1 -0
  106. package/dist/react/component-slots.js +18 -0
  107. package/dist/react/component-slots.js.map +1 -0
  108. package/dist/react/fields/BuilderInput.d.ts.map +1 -1
  109. package/dist/react/fields/BuilderInput.js +21 -117
  110. package/dist/react/fields/BuilderInput.js.map +1 -1
  111. package/dist/react/fields/MarkdownInput.d.ts.map +1 -1
  112. package/dist/react/fields/MarkdownInput.js +1 -3
  113. package/dist/react/fields/MarkdownInput.js.map +1 -1
  114. package/dist/react/fields/RepeaterInput.d.ts.map +1 -1
  115. package/dist/react/fields/RepeaterInput.js +22 -127
  116. package/dist/react/fields/RepeaterInput.js.map +1 -1
  117. package/dist/react/fields/rowState.d.ts +40 -0
  118. package/dist/react/fields/rowState.d.ts.map +1 -0
  119. package/dist/react/fields/rowState.js +60 -0
  120. package/dist/react/fields/rowState.js.map +1 -0
  121. package/dist/react/fields/useRowReorderDnd.d.ts +28 -0
  122. package/dist/react/fields/useRowReorderDnd.d.ts.map +1 -0
  123. package/dist/react/fields/useRowReorderDnd.js +51 -0
  124. package/dist/react/fields/useRowReorderDnd.js.map +1 -0
  125. package/dist/react/index.d.ts +9 -0
  126. package/dist/react/index.d.ts.map +1 -1
  127. package/dist/react/index.js +8 -0
  128. package/dist/react/index.js.map +1 -1
  129. package/dist/react/layouts/SidebarLayout.d.ts +1 -1
  130. package/dist/react/layouts/SidebarLayout.d.ts.map +1 -1
  131. package/dist/react/layouts/SidebarLayout.js +10 -2
  132. package/dist/react/layouts/SidebarLayout.js.map +1 -1
  133. package/dist/react/layouts/TopbarLayout.d.ts +1 -1
  134. package/dist/react/layouts/TopbarLayout.d.ts.map +1 -1
  135. package/dist/react/layouts/TopbarLayout.js +19 -11
  136. package/dist/react/layouts/TopbarLayout.js.map +1 -1
  137. package/dist/react/parseRecordEditUrl.d.ts +29 -0
  138. package/dist/react/parseRecordEditUrl.d.ts.map +1 -0
  139. package/dist/react/parseRecordEditUrl.js +25 -0
  140. package/dist/react/parseRecordEditUrl.js.map +1 -0
  141. package/dist/react/persistedState.d.ts +19 -0
  142. package/dist/react/persistedState.d.ts.map +1 -0
  143. package/dist/react/persistedState.js +51 -0
  144. package/dist/react/persistedState.js.map +1 -0
  145. package/dist/react/schemaRenderer/AlertRenderer.d.ts +12 -0
  146. package/dist/react/schemaRenderer/AlertRenderer.d.ts.map +1 -0
  147. package/dist/react/schemaRenderer/AlertRenderer.js +61 -0
  148. package/dist/react/schemaRenderer/AlertRenderer.js.map +1 -0
  149. package/dist/react/schemaRenderer/EntryRenderer.d.ts +13 -0
  150. package/dist/react/schemaRenderer/EntryRenderer.d.ts.map +1 -0
  151. package/dist/react/schemaRenderer/EntryRenderer.js +277 -0
  152. package/dist/react/schemaRenderer/EntryRenderer.js.map +1 -0
  153. package/dist/react/schemaRenderer/SectionRenderer.d.ts +16 -0
  154. package/dist/react/schemaRenderer/SectionRenderer.d.ts.map +1 -0
  155. package/dist/react/schemaRenderer/SectionRenderer.js +62 -0
  156. package/dist/react/schemaRenderer/SectionRenderer.js.map +1 -0
  157. package/dist/react/schemaRenderer/SimpleElements.d.ts +25 -0
  158. package/dist/react/schemaRenderer/SimpleElements.d.ts.map +1 -0
  159. package/dist/react/schemaRenderer/SimpleElements.js +147 -0
  160. package/dist/react/schemaRenderer/SimpleElements.js.map +1 -0
  161. package/dist/react/schemaRenderer/TabsRenderer.d.ts +17 -0
  162. package/dist/react/schemaRenderer/TabsRenderer.d.ts.map +1 -0
  163. package/dist/react/schemaRenderer/TabsRenderer.js +31 -0
  164. package/dist/react/schemaRenderer/TabsRenderer.js.map +1 -0
  165. package/dist/react/schemaRenderer/WizardRenderer.d.ts +34 -0
  166. package/dist/react/schemaRenderer/WizardRenderer.d.ts.map +1 -0
  167. package/dist/react/schemaRenderer/WizardRenderer.js +208 -0
  168. package/dist/react/schemaRenderer/WizardRenderer.js.map +1 -0
  169. package/dist/react/schemaRenderer/action/ActionGroupTrigger.d.ts +21 -0
  170. package/dist/react/schemaRenderer/action/ActionGroupTrigger.d.ts.map +1 -0
  171. package/dist/react/schemaRenderer/action/ActionGroupTrigger.js +82 -0
  172. package/dist/react/schemaRenderer/action/ActionGroupTrigger.js.map +1 -0
  173. package/dist/react/schemaRenderer/action/ActionModalDialog.d.ts +30 -0
  174. package/dist/react/schemaRenderer/action/ActionModalDialog.d.ts.map +1 -0
  175. package/dist/react/schemaRenderer/action/ActionModalDialog.js +182 -0
  176. package/dist/react/schemaRenderer/action/ActionModalDialog.js.map +1 -0
  177. package/dist/react/schemaRenderer/action/ConfirmActionDialog.d.ts +17 -0
  178. package/dist/react/schemaRenderer/action/ConfirmActionDialog.d.ts.map +1 -0
  179. package/dist/react/schemaRenderer/action/ConfirmActionDialog.js +19 -0
  180. package/dist/react/schemaRenderer/action/ConfirmActionDialog.js.map +1 -0
  181. package/dist/react/schemaRenderer/action/HandlerActionButton.d.ts +16 -0
  182. package/dist/react/schemaRenderer/action/HandlerActionButton.d.ts.map +1 -0
  183. package/dist/react/schemaRenderer/action/HandlerActionButton.js +16 -0
  184. package/dist/react/schemaRenderer/action/HandlerActionButton.js.map +1 -0
  185. package/dist/react/schemaRenderer/action/MethodActionButton.d.ts +22 -0
  186. package/dist/react/schemaRenderer/action/MethodActionButton.d.ts.map +1 -0
  187. package/dist/react/schemaRenderer/action/MethodActionButton.js +26 -0
  188. package/dist/react/schemaRenderer/action/MethodActionButton.js.map +1 -0
  189. package/dist/react/schemaRenderer/action/buttons.d.ts +18 -0
  190. package/dist/react/schemaRenderer/action/buttons.d.ts.map +1 -0
  191. package/dist/react/schemaRenderer/action/buttons.js +74 -0
  192. package/dist/react/schemaRenderer/action/buttons.js.map +1 -0
  193. package/dist/react/schemaRenderer/action/helpers.d.ts +26 -0
  194. package/dist/react/schemaRenderer/action/helpers.d.ts.map +1 -0
  195. package/dist/react/schemaRenderer/action/helpers.js +126 -0
  196. package/dist/react/schemaRenderer/action/helpers.js.map +1 -0
  197. package/dist/react/schemaRenderer/action/renderAction.d.ts +21 -0
  198. package/dist/react/schemaRenderer/action/renderAction.d.ts.map +1 -0
  199. package/dist/react/schemaRenderer/action/renderAction.js +102 -0
  200. package/dist/react/schemaRenderer/action/renderAction.js.map +1 -0
  201. package/dist/react/schemaRenderer/columnFormat.d.ts +10 -0
  202. package/dist/react/schemaRenderer/columnFormat.d.ts.map +1 -0
  203. package/dist/react/schemaRenderer/columnFormat.js +76 -0
  204. package/dist/react/schemaRenderer/columnFormat.js.map +1 -0
  205. package/dist/react/schemaRenderer/constants.d.ts +8 -0
  206. package/dist/react/schemaRenderer/constants.d.ts.map +1 -0
  207. package/dist/react/schemaRenderer/constants.js +45 -0
  208. package/dist/react/schemaRenderer/constants.js.map +1 -0
  209. package/dist/react/schemaRenderer/form/FormRenderer.d.ts +29 -0
  210. package/dist/react/schemaRenderer/form/FormRenderer.d.ts.map +1 -0
  211. package/dist/react/schemaRenderer/form/FormRenderer.js +152 -0
  212. package/dist/react/schemaRenderer/form/FormRenderer.js.map +1 -0
  213. package/dist/react/schemaRenderer/form/renderField.d.ts +6 -0
  214. package/dist/react/schemaRenderer/form/renderField.d.ts.map +1 -0
  215. package/dist/react/schemaRenderer/form/renderField.js +239 -0
  216. package/dist/react/schemaRenderer/form/renderField.js.map +1 -0
  217. package/dist/react/schemaRenderer/helpers.d.ts +32 -0
  218. package/dist/react/schemaRenderer/helpers.d.ts.map +1 -0
  219. package/dist/react/schemaRenderer/helpers.js +52 -0
  220. package/dist/react/schemaRenderer/helpers.js.map +1 -0
  221. package/dist/react/schemaRenderer/table/CardsLayoutBody.d.ts +60 -0
  222. package/dist/react/schemaRenderer/table/CardsLayoutBody.d.ts.map +1 -0
  223. package/dist/react/schemaRenderer/table/CardsLayoutBody.js +189 -0
  224. package/dist/react/schemaRenderer/table/CardsLayoutBody.js.map +1 -0
  225. package/dist/react/schemaRenderer/table/TableRenderer.d.ts +29 -0
  226. package/dist/react/schemaRenderer/table/TableRenderer.d.ts.map +1 -0
  227. package/dist/react/schemaRenderer/table/TableRenderer.js +85 -0
  228. package/dist/react/schemaRenderer/table/TableRenderer.js.map +1 -0
  229. package/dist/react/schemaRenderer/table/TableRendererBody.d.ts +18 -0
  230. package/dist/react/schemaRenderer/table/TableRendererBody.d.ts.map +1 -0
  231. package/dist/react/schemaRenderer/table/TableRendererBody.js +555 -0
  232. package/dist/react/schemaRenderer/table/TableRendererBody.js.map +1 -0
  233. package/dist/react/schemaRenderer/table/filters.d.ts +263 -0
  234. package/dist/react/schemaRenderer/table/filters.d.ts.map +1 -0
  235. package/dist/react/schemaRenderer/table/filters.js +497 -0
  236. package/dist/react/schemaRenderer/table/filters.js.map +1 -0
  237. package/dist/react/schemaRenderer/table/formatCell.d.ts +11 -0
  238. package/dist/react/schemaRenderer/table/formatCell.d.ts.map +1 -0
  239. package/dist/react/schemaRenderer/table/formatCell.js +172 -0
  240. package/dist/react/schemaRenderer/table/formatCell.js.map +1 -0
  241. package/dist/react/schemaRenderer/table/links.d.ts +42 -0
  242. package/dist/react/schemaRenderer/table/links.d.ts.map +1 -0
  243. package/dist/react/schemaRenderer/table/links.js +55 -0
  244. package/dist/react/schemaRenderer/table/links.js.map +1 -0
  245. package/dist/react/schemaRenderer/table/renderRowActions.d.ts +13 -0
  246. package/dist/react/schemaRenderer/table/renderRowActions.d.ts.map +1 -0
  247. package/dist/react/schemaRenderer/table/renderRowActions.js +25 -0
  248. package/dist/react/schemaRenderer/table/renderRowActions.js.map +1 -0
  249. package/dist/react/schemaRenderer/table/url.d.ts +41 -0
  250. package/dist/react/schemaRenderer/table/url.d.ts.map +1 -0
  251. package/dist/react/schemaRenderer/table/url.js +114 -0
  252. package/dist/react/schemaRenderer/table/url.js.map +1 -0
  253. package/dist/routes/globals.d.ts +13 -0
  254. package/dist/routes/globals.d.ts.map +1 -0
  255. package/dist/routes/globals.js +131 -0
  256. package/dist/routes/globals.js.map +1 -0
  257. package/dist/routes/helpers.d.ts +217 -0
  258. package/dist/routes/helpers.d.ts.map +1 -0
  259. package/dist/routes/helpers.js +498 -0
  260. package/dist/routes/helpers.js.map +1 -0
  261. package/dist/routes/pages.d.ts +15 -0
  262. package/dist/routes/pages.d.ts.map +1 -0
  263. package/dist/routes/pages.js +145 -0
  264. package/dist/routes/pages.js.map +1 -0
  265. package/dist/routes/panel.d.ts +19 -0
  266. package/dist/routes/panel.d.ts.map +1 -0
  267. package/dist/routes/panel.js +191 -0
  268. package/dist/routes/panel.js.map +1 -0
  269. package/dist/routes/relations.d.ts +21 -0
  270. package/dist/routes/relations.d.ts.map +1 -0
  271. package/dist/routes/relations.js +1239 -0
  272. package/dist/routes/relations.js.map +1 -0
  273. package/dist/routes/resources.d.ts +28 -0
  274. package/dist/routes/resources.d.ts.map +1 -0
  275. package/dist/routes/resources.js +741 -0
  276. package/dist/routes/resources.js.map +1 -0
  277. package/dist/routes/theme.d.ts +12 -0
  278. package/dist/routes/theme.d.ts.map +1 -0
  279. package/dist/routes/theme.js +82 -0
  280. package/dist/routes/theme.js.map +1 -0
  281. package/dist/routes.d.ts.map +1 -1
  282. package/dist/routes.js +64 -3078
  283. package/dist/routes.js.map +1 -1
  284. package/dist/vite.d.ts +1 -0
  285. package/dist/vite.d.ts.map +1 -1
  286. package/dist/vite.js +26 -5
  287. package/dist/vite.js.map +1 -1
  288. package/package.json +2 -1
  289. package/src/Pilotiq.ts +95 -0
  290. package/src/actions/Action.ts +79 -723
  291. package/src/actions/bulkFactories.ts +168 -0
  292. package/src/actions/crudFactories.ts +220 -0
  293. package/src/actions/factoryHelpers.ts +177 -0
  294. package/src/actions/m2mFactories.ts +193 -0
  295. package/src/actions/relationFactories.ts +372 -0
  296. package/src/elements/dispatchForm.ts +1 -1
  297. package/src/elements/dispatchTable.ts +1 -1
  298. package/src/fields/Field.ts +39 -0
  299. package/src/pageData/breadcrumbs.ts +288 -0
  300. package/src/pageData/forms.ts +578 -0
  301. package/src/pageData/helpers.ts +764 -0
  302. package/src/pageData/misc.ts +347 -0
  303. package/src/pageData/navigation.ts +779 -0
  304. package/src/pageData/relationPages.ts +1246 -0
  305. package/src/pageData/relationTabs.ts +286 -0
  306. package/src/pageData/resourcePages.ts +593 -0
  307. package/src/pageData.ts +122 -4731
  308. package/src/react/AppShell.tsx +27 -1
  309. package/src/react/CollabExtensionFactoryRegistry.ts +55 -0
  310. package/src/react/CollabRoomContext.ts +42 -0
  311. package/src/react/FormCollabBindingRegistry.ts +72 -0
  312. package/src/react/RecordWrapperGate.tsx +40 -0
  313. package/src/react/RecordWrapperRegistry.ts +39 -0
  314. package/src/react/SchemaRenderer.tsx +230 -6479
  315. package/src/react/component-slots.test.ts +103 -0
  316. package/src/react/component-slots.ts +116 -0
  317. package/src/react/fields/BuilderInput.tsx +29 -117
  318. package/src/react/fields/MarkdownInput.tsx +0 -1
  319. package/src/react/fields/RepeaterInput.tsx +29 -130
  320. package/src/react/fields/rowState.ts +106 -0
  321. package/src/react/fields/useRowReorderDnd.ts +78 -0
  322. package/src/react/index.ts +38 -0
  323. package/src/react/layouts/SidebarLayout.tsx +39 -28
  324. package/src/react/layouts/TopbarLayout.tsx +70 -57
  325. package/src/react/parseRecordEditUrl.test.ts +75 -0
  326. package/src/react/parseRecordEditUrl.ts +55 -0
  327. package/src/react/persistedState.ts +40 -0
  328. package/src/react/schemaRenderer/AlertRenderer.tsx +112 -0
  329. package/src/react/schemaRenderer/EntryRenderer.tsx +501 -0
  330. package/src/react/schemaRenderer/SectionRenderer.tsx +120 -0
  331. package/src/react/schemaRenderer/SimpleElements.tsx +306 -0
  332. package/src/react/schemaRenderer/TabsRenderer.tsx +62 -0
  333. package/src/react/schemaRenderer/WizardRenderer.tsx +338 -0
  334. package/src/react/schemaRenderer/action/ActionGroupTrigger.tsx +177 -0
  335. package/src/react/schemaRenderer/action/ActionModalDialog.tsx +273 -0
  336. package/src/react/schemaRenderer/action/ConfirmActionDialog.tsx +61 -0
  337. package/src/react/schemaRenderer/action/HandlerActionButton.tsx +43 -0
  338. package/src/react/schemaRenderer/action/MethodActionButton.tsx +64 -0
  339. package/src/react/schemaRenderer/action/buttons.tsx +99 -0
  340. package/src/react/schemaRenderer/action/helpers.ts +140 -0
  341. package/src/react/schemaRenderer/action/renderAction.tsx +245 -0
  342. package/src/react/schemaRenderer/columnFormat.ts +65 -0
  343. package/src/react/schemaRenderer/constants.ts +50 -0
  344. package/src/react/schemaRenderer/form/FormRenderer.tsx +233 -0
  345. package/src/react/schemaRenderer/form/renderField.tsx +511 -0
  346. package/src/react/schemaRenderer/helpers.tsx +81 -0
  347. package/src/react/schemaRenderer/table/CardsLayoutBody.tsx +308 -0
  348. package/src/react/schemaRenderer/table/TableRenderer.tsx +123 -0
  349. package/src/react/schemaRenderer/table/TableRendererBody.tsx +974 -0
  350. package/src/react/schemaRenderer/table/filters.tsx +1233 -0
  351. package/src/react/schemaRenderer/table/formatCell.tsx +264 -0
  352. package/src/react/schemaRenderer/table/links.tsx +112 -0
  353. package/src/react/schemaRenderer/table/renderRowActions.tsx +52 -0
  354. package/src/react/schemaRenderer/table/url.tsx +143 -0
  355. package/src/routes/globals.ts +154 -0
  356. package/src/routes/helpers.ts +668 -0
  357. package/src/routes/pages.ts +173 -0
  358. package/src/routes/panel.ts +204 -0
  359. package/src/routes/relations.ts +1219 -0
  360. package/src/routes/resources.ts +786 -0
  361. package/src/routes/theme.ts +109 -0
  362. package/src/routes.test.ts +1 -1
  363. package/src/routes.ts +64 -3176
  364. package/src/schema/TableWidget.test.ts +2 -2
  365. package/src/theme/migrate.test.ts +178 -0
  366. package/src/vite.test.ts +184 -0
  367. package/src/vite.ts +26 -4
@@ -0,0 +1,189 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronDownIcon } from 'lucide-react';
3
+ import { Checkbox } from '../../ui/checkbox.js';
4
+ import { GroupHeadingLink, useSpaNavClick } from './links.js';
5
+ import { GroupHeaderText } from './filters.js';
6
+ /**
7
+ * Lookup tables for responsive grid column-counts in `contentLayout:
8
+ * 'cards'`. Tailwind's JIT scanner needs **literal** class strings; we
9
+ * can't construct them at runtime via template literals (`grid-cols-${n}`
10
+ * would never be matched). Limit to 1–6 columns + 12 — covers every
11
+ * reasonable card grid; bigger values are silently capped at 6 for
12
+ * non-base breakpoints in `cardsPerRowClasses`.
13
+ */
14
+ const CARDS_GRID_COLS_BASE = {
15
+ 1: 'grid-cols-1',
16
+ 2: 'grid-cols-2',
17
+ 3: 'grid-cols-3',
18
+ 4: 'grid-cols-4',
19
+ 5: 'grid-cols-5',
20
+ 6: 'grid-cols-6',
21
+ 12: 'grid-cols-12',
22
+ };
23
+ const CARDS_GRID_COLS_SM = {
24
+ 1: 'sm:grid-cols-1', 2: 'sm:grid-cols-2', 3: 'sm:grid-cols-3',
25
+ 4: 'sm:grid-cols-4', 5: 'sm:grid-cols-5', 6: 'sm:grid-cols-6',
26
+ 12: 'sm:grid-cols-12',
27
+ };
28
+ const CARDS_GRID_COLS_MD = {
29
+ 1: 'md:grid-cols-1', 2: 'md:grid-cols-2', 3: 'md:grid-cols-3',
30
+ 4: 'md:grid-cols-4', 5: 'md:grid-cols-5', 6: 'md:grid-cols-6',
31
+ 12: 'md:grid-cols-12',
32
+ };
33
+ const CARDS_GRID_COLS_LG = {
34
+ 1: 'lg:grid-cols-1', 2: 'lg:grid-cols-2', 3: 'lg:grid-cols-3',
35
+ 4: 'lg:grid-cols-4', 5: 'lg:grid-cols-5', 6: 'lg:grid-cols-6',
36
+ 12: 'lg:grid-cols-12',
37
+ };
38
+ const CARDS_GRID_COLS_XL = {
39
+ 1: 'xl:grid-cols-1', 2: 'xl:grid-cols-2', 3: 'xl:grid-cols-3',
40
+ 4: 'xl:grid-cols-4', 5: 'xl:grid-cols-5', 6: 'xl:grid-cols-6',
41
+ 12: 'xl:grid-cols-12',
42
+ };
43
+ const CARDS_GRID_COLS_2XL = {
44
+ 1: '2xl:grid-cols-1', 2: '2xl:grid-cols-2', 3: '2xl:grid-cols-3',
45
+ 4: '2xl:grid-cols-4', 5: '2xl:grid-cols-5', 6: '2xl:grid-cols-6',
46
+ 12: '2xl:grid-cols-12',
47
+ };
48
+ export function pickCardCols(table, raw) {
49
+ if (raw === undefined)
50
+ return undefined;
51
+ if (table[raw])
52
+ return table[raw];
53
+ // Snap unsupported values to nearest available — values outside [1,6]∪{12}
54
+ // round down. Already-clamped to [1,12] server-side.
55
+ if (raw >= 12)
56
+ return table[12];
57
+ if (raw >= 6)
58
+ return table[6];
59
+ if (raw >= 5)
60
+ return table[5];
61
+ if (raw >= 4)
62
+ return table[4];
63
+ if (raw >= 3)
64
+ return table[3];
65
+ if (raw >= 2)
66
+ return table[2];
67
+ return table[1];
68
+ }
69
+ /** Build a Tailwind grid-cols class string from a per-row config. Default
70
+ * `{ default: 1, sm: 2, lg: 3 }` mirrors Filament's typical card grid. */
71
+ export function cardsPerRowClasses(opts) {
72
+ const cfg = opts ?? {};
73
+ const baseN = cfg['default'] ?? 1;
74
+ const out = [pickCardCols(CARDS_GRID_COLS_BASE, baseN)];
75
+ if (cfg['sm'] !== undefined) {
76
+ const c = pickCardCols(CARDS_GRID_COLS_SM, cfg['sm']);
77
+ if (c)
78
+ out.push(c);
79
+ }
80
+ if (cfg['md'] !== undefined) {
81
+ const c = pickCardCols(CARDS_GRID_COLS_MD, cfg['md']);
82
+ if (c)
83
+ out.push(c);
84
+ }
85
+ if (cfg['lg'] !== undefined) {
86
+ const c = pickCardCols(CARDS_GRID_COLS_LG, cfg['lg']);
87
+ if (c)
88
+ out.push(c);
89
+ }
90
+ if (cfg['xl'] !== undefined) {
91
+ const c = pickCardCols(CARDS_GRID_COLS_XL, cfg['xl']);
92
+ if (c)
93
+ out.push(c);
94
+ }
95
+ if (cfg['2xl'] !== undefined) {
96
+ const c = pickCardCols(CARDS_GRID_COLS_2XL, cfg['2xl']);
97
+ if (c)
98
+ out.push(c);
99
+ }
100
+ // Unset fallback covers Filament's typical default — 1 column on mobile,
101
+ // 2 on small screens, 3 on large.
102
+ if (Object.keys(cfg).length === 0) {
103
+ return 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3';
104
+ }
105
+ return out.join(' ');
106
+ }
107
+ /**
108
+ * Card-grid body for `Table.contentLayout('cards')`. Renders the rows
109
+ * area only — the surrounding chrome (heading / search / filters /
110
+ * pagination / bulk-action toolbar / "Sort by" picker) lives in the
111
+ * parent `TableRendererBody` so both layouts share it.
112
+ *
113
+ * Each card renders its `_cardChildren` schema via the standard
114
+ * `renderElement` walker, so any display-Element (Heading, Text, Image,
115
+ * Icon, Badge entries, layout primitives, etc.) drops in without a new
116
+ * renderer. Per-row chrome attaches via the same `_recordUrl` /
117
+ * `_recordClasses` / `_visibleActions` / `_disabledActions` keys the
118
+ * table-mode renderer reads from — `loadTableRecords` is unchanged.
119
+ *
120
+ * Group banding splits the rows into contiguous sections by
121
+ * `_groupValue`, emitting a heading row above each section. The user's
122
+ * configured per-card grid (`cardsPerRow`) re-applies inside every
123
+ * section so the column count stays consistent.
124
+ */
125
+ export function CardsLayoutBody({ rows, visibleIds, selected, toggleRow, hasBulkActions, hasRowActions, rowActions, hasRecordUrl, hasRecordClasses, activeEmpty, EmptyIcon, hasFilterOrSearch, defaultGroup, groupColumnLabel, groupCollapsible, collapsedGroups, toggleGroupCollapsed, cardsPerRow, navigate, groupHeadingScopable, buildGroupKeyHref, renderElement, renderRowActions, }) {
126
+ const gridClass = `grid gap-4 ${cardsPerRowClasses(cardsPerRow)}`;
127
+ if (rows.length === 0) {
128
+ return (_jsx("div", { className: "rounded-xl border bg-card py-12 text-center", children: _jsxs("div", { className: "flex flex-col items-center gap-2 text-muted-foreground", children: [_jsx(EmptyIcon, { className: "size-8 opacity-60" }), _jsx("p", { className: "text-base font-medium text-foreground", children: activeEmpty?.heading
129
+ ?? (hasFilterOrSearch ? 'No matching records' : 'No records yet') }), (activeEmpty?.description ||
130
+ (hasFilterOrSearch && !activeEmpty?.description)) && (_jsx("p", { className: "text-sm", children: activeEmpty?.description
131
+ ?? 'Try clearing filters or adjusting your search.' }))] }) }));
132
+ }
133
+ const sections = [];
134
+ if (defaultGroup === undefined) {
135
+ sections.push({ indices: rows.map((_, i) => i) });
136
+ }
137
+ else {
138
+ let current;
139
+ for (let i = 0; i < rows.length; i++) {
140
+ const r = rows[i];
141
+ const v = String(r['_groupValue'] ?? '');
142
+ if (current === undefined || current.groupValue !== v) {
143
+ const title = r['_groupTitle'];
144
+ const description = r['_groupDescription'];
145
+ current = { groupValue: v, indices: [], ...(title ? { title } : {}), ...(description ? { description } : {}) };
146
+ sections.push(current);
147
+ }
148
+ current.indices.push(i);
149
+ }
150
+ }
151
+ return (_jsx("div", { className: "flex flex-col gap-4", children: sections.map((section, si) => {
152
+ const collapsed = groupCollapsible
153
+ && section.groupValue !== undefined
154
+ && collapsedGroups[section.groupValue] === true;
155
+ return (_jsxs("div", { className: "flex flex-col gap-3", children: [section.groupValue !== undefined && (() => {
156
+ const drillable = groupHeadingScopable === true
157
+ && buildGroupKeyHref !== undefined
158
+ && section.groupValue !== '';
159
+ const headingText = (_jsx(GroupHeaderText, { label: groupColumnLabel, value: section.groupValue, title: section.title, description: section.description }));
160
+ const headingNode = drillable
161
+ ? _jsx(GroupHeadingLink, { href: buildGroupKeyHref(section.groupValue), navigate: navigate, children: headingText })
162
+ : headingText;
163
+ if (groupCollapsible) {
164
+ return (_jsxs("div", { className: "flex w-full items-center gap-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: [_jsx("button", { type: "button", className: "inline-flex items-center", onClick: () => toggleGroupCollapsed(section.groupValue), "aria-expanded": !collapsed, "aria-label": collapsed ? 'Expand group' : 'Collapse group', children: _jsx(ChevronDownIcon, { className: [
165
+ 'size-4 transition-transform',
166
+ collapsed ? '-rotate-90' : '',
167
+ ].filter(Boolean).join(' ') }) }), headingNode] }));
168
+ }
169
+ return (_jsx("div", { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: headingNode }));
170
+ })(), !collapsed && (_jsx("div", { className: gridClass, children: section.indices.map((ri) => {
171
+ const id = visibleIds[ri];
172
+ const recordObj = rows[ri];
173
+ const isSelected = selected.has(id);
174
+ const recordUrl = hasRecordUrl ? recordObj['_recordUrl'] : undefined;
175
+ const customRowClasses = hasRecordClasses
176
+ ? recordObj['_recordClasses'] ?? ''
177
+ : '';
178
+ const cardChildren = recordObj['_cardChildren'] ?? [];
179
+ const cardClassName = [
180
+ 'group relative flex flex-col gap-3 rounded-xl border bg-card p-4 transition-colors',
181
+ recordUrl ? 'hover:border-primary/40 hover:bg-accent/30' : '',
182
+ isSelected ? 'border-primary ring-2 ring-primary/20' : '',
183
+ customRowClasses,
184
+ ].filter(Boolean).join(' ');
185
+ return (_jsxs("div", { className: cardClassName, children: [recordUrl !== undefined && (_jsx("a", { href: recordUrl, onClick: useSpaNavClick(recordUrl, navigate), "aria-label": "Open record", className: "absolute inset-0 z-0 rounded-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: _jsx("span", { className: "sr-only", children: "Open record" }) })), hasBulkActions && (_jsx("div", { className: "absolute top-3 right-3 z-10", children: _jsx(Checkbox, { "aria-label": `Select row ${id}`, checked: isSelected, onCheckedChange: () => toggleRow(id), "data-no-row-nav": true }) })), _jsx("div", { className: "relative z-[1] flex flex-col gap-3", children: cardChildren.length === 0 ? (_jsx("div", { className: "text-xs italic text-muted-foreground", children: "No card content configured." })) : cardChildren.map((c, i) => renderElement(c, i)) }), hasRowActions && (_jsx("div", { className: "relative z-10 mt-auto flex items-center justify-end pt-2 border-t border-border/60", children: renderRowActions(id, recordObj, rowActions) }))] }, id));
186
+ }) }))] }, si));
187
+ }) }));
188
+ }
189
+ //# sourceMappingURL=CardsLayoutBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardsLayoutBody.js","sourceRoot":"","sources":["../../../../src/react/schemaRenderer/table/CardsLayoutBody.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { ElementMeta } from '../../../schema/Element.js';
2
+ import { type TableBodyDeps } from './TableRendererBody.js';
3
+ /**
4
+ * Tier-3 deferred-load shell. When `Resource.deferLoading = true`, the
5
+ * SSR pass marks each Table on the page as `deferred` + stamps a
6
+ * `tableUrl`. This wrapper paints a skeleton on first frame and fetches
7
+ * the actual rows from the JSON endpoint after mount; the inner
8
+ * `TableRendererBody` renders identically against either the SSR meta
9
+ * (non-deferred case) or the fetched meta (deferred case).
10
+ *
11
+ * SPA nav with a query change re-runs SSR, which re-stamps `deferred`
12
+ * — so the URL-change effect fires another fetch. The skeleton frame
13
+ * still shows current sort / search / page / filter chrome because the
14
+ * SSR pass mirrors URL state on the deferred Table.
15
+ */
16
+ export declare function TableRenderer({ el, deps }: {
17
+ el: ElementMeta;
18
+ deps: TableBodyDeps;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ /**
21
+ * Skeleton placeholder painted while a deferred-loaded table fetches
22
+ * its rows. Mirrors the table's heading + description chrome (already
23
+ * present on `el`) so the frame doesn't pop layout when the real rows
24
+ * arrive. Renders a small column header strip + 5 placeholder rows.
25
+ */
26
+ export declare function TableSkeleton({ el }: {
27
+ el: ElementMeta;
28
+ }): import("react/jsx-runtime").JSX.Element;
29
+ //# sourceMappingURL=TableRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableRenderer.d.ts","sourceRoot":"","sources":["../../../../src/react/schemaRenderer/table/TableRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAK9E;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IAAE,EAAE,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,2CA6DnF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE;IAAE,EAAE,EAAE,WAAW,CAAA;CAAE,2CAiCxD"}
@@ -0,0 +1,85 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
3
+ import { TableRendererBody } from './TableRendererBody.js';
4
+ // ─── Table wrapper + deferred-load shell ────────────────────
5
+ /**
6
+ * Tier-3 deferred-load shell. When `Resource.deferLoading = true`, the
7
+ * SSR pass marks each Table on the page as `deferred` + stamps a
8
+ * `tableUrl`. This wrapper paints a skeleton on first frame and fetches
9
+ * the actual rows from the JSON endpoint after mount; the inner
10
+ * `TableRendererBody` renders identically against either the SSR meta
11
+ * (non-deferred case) or the fetched meta (deferred case).
12
+ *
13
+ * SPA nav with a query change re-runs SSR, which re-stamps `deferred`
14
+ * — so the URL-change effect fires another fetch. The skeleton frame
15
+ * still shows current sort / search / page / filter chrome because the
16
+ * SSR pass mirrors URL state on the deferred Table.
17
+ */
18
+ export function TableRenderer({ el, deps }) {
19
+ const isDeferred = el['deferred'] === true && typeof el['tableUrl'] === 'string';
20
+ const tableUrl = isDeferred ? el['tableUrl'] : '';
21
+ // Track the URL search string so a navigation that changes filters /
22
+ // sort / page re-fires the fetch. Initialized lazy on first client
23
+ // render; on the SSR pass we just fall through to skeleton.
24
+ const [search, setSearch] = useState(() => typeof window === 'undefined' ? '' : window.location.search);
25
+ useEffect(() => {
26
+ if (!isDeferred)
27
+ return;
28
+ if (typeof window === 'undefined')
29
+ return;
30
+ setSearch(window.location.search);
31
+ }, [isDeferred, el]);
32
+ const [deferredMeta, setDeferredMeta] = useState(null);
33
+ const [deferredError, setDeferredError] = useState(null);
34
+ useEffect(() => {
35
+ if (!isDeferred || !tableUrl)
36
+ return;
37
+ if (typeof window === 'undefined')
38
+ return;
39
+ let cancelled = false;
40
+ setDeferredMeta(null);
41
+ setDeferredError(null);
42
+ fetch(tableUrl + search, {
43
+ headers: { 'Accept': 'application/json' },
44
+ credentials: 'same-origin',
45
+ })
46
+ .then(async (r) => {
47
+ const data = (await r.json());
48
+ if (cancelled)
49
+ return;
50
+ if (data.ok && Array.isArray(data.tables) && data.tables.length > 0) {
51
+ setDeferredMeta(data.tables[0]);
52
+ }
53
+ else {
54
+ setDeferredError(data.error ?? 'Failed to load table');
55
+ }
56
+ })
57
+ .catch(err => {
58
+ if (cancelled)
59
+ return;
60
+ setDeferredError(err instanceof Error ? err.message : 'Failed to load table');
61
+ });
62
+ return () => { cancelled = true; };
63
+ }, [isDeferred, tableUrl, search]);
64
+ if (isDeferred && deferredError) {
65
+ return (_jsxs("div", { className: "rounded-md border border-destructive/40 bg-destructive/10 px-4 py-3 text-sm text-destructive", children: ["Failed to load table: ", deferredError] }));
66
+ }
67
+ if (isDeferred && !deferredMeta) {
68
+ return _jsx(TableSkeleton, { el: el });
69
+ }
70
+ return _jsx(TableRendererBody, { el: isDeferred ? deferredMeta : el, deps: deps });
71
+ }
72
+ /**
73
+ * Skeleton placeholder painted while a deferred-loaded table fetches
74
+ * its rows. Mirrors the table's heading + description chrome (already
75
+ * present on `el`) so the frame doesn't pop layout when the real rows
76
+ * arrive. Renders a small column header strip + 5 placeholder rows.
77
+ */
78
+ export function TableSkeleton({ el }) {
79
+ const heading = typeof el['heading'] === 'string' ? el['heading'] : undefined;
80
+ const description = typeof el['description'] === 'string' ? el['description'] : undefined;
81
+ const children = el.children ?? [];
82
+ const colCount = Math.max(1, children.filter(c => c.type === 'column').length);
83
+ return (_jsxs("div", { className: "space-y-3", children: [(heading || description) ? (_jsxs("div", { className: "space-y-1", children: [heading ? _jsx("div", { className: "text-lg font-semibold", children: heading }) : null, description ? _jsx("div", { className: "text-sm text-muted-foreground", children: description }) : null] })) : null, _jsxs("div", { className: "rounded-md border", children: [_jsx("div", { className: "grid border-b bg-muted/50 px-4 py-2", style: { gridTemplateColumns: `repeat(${colCount}, minmax(0, 1fr))` }, children: Array.from({ length: colCount }).map((_, i) => (_jsx("div", { className: "h-4 w-20 rounded bg-muted-foreground/20" }, i))) }), _jsx("div", { className: "divide-y", children: Array.from({ length: 5 }).map((_, rowIdx) => (_jsx("div", { className: "grid items-center px-4 py-3", style: { gridTemplateColumns: `repeat(${colCount}, minmax(0, 1fr))` }, children: Array.from({ length: colCount }).map((_, colIdx) => (_jsx("div", { className: "h-4 w-2/3 rounded bg-muted-foreground/10 animate-pulse" }, colIdx))) }, rowIdx))) })] })] }));
84
+ }
85
+ //# sourceMappingURL=TableRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableRenderer.js","sourceRoot":"","sources":["../../../../src/react/schemaRenderer/table/TableRenderer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import type { ElementMeta } from '../../../schema/Element.js';
3
+ import type { RenderActionOptions } from '../action/buttons.js';
4
+ /** Dependencies threaded in from the top-level dispatch — the body
5
+ * recurses into the main element renderer (for column cells that hold
6
+ * Heading / Text / Element-typed content), dispatches row + bulk
7
+ * actions through `renderActionLike`, and reads form schema for
8
+ * inline-edit modals via `renderFormChild`. */
9
+ export interface TableBodyDeps {
10
+ renderElement: (el: ElementMeta, index: number) => React.ReactNode;
11
+ renderActionLike: (el: ElementMeta, index: number, opts?: RenderActionOptions) => React.ReactNode;
12
+ renderFormChild: (child: ElementMeta, index: number, values: Record<string, unknown>, errors: Record<string, string[]>) => React.ReactNode;
13
+ }
14
+ export declare function TableRendererBody({ el, deps }: {
15
+ el: ElementMeta;
16
+ deps: TableBodyDeps;
17
+ }): import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=TableRendererBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableRendererBody.d.ts","sourceRoot":"","sources":["../../../../src/react/schemaRenderer/table/TableRendererBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAY7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAuB/D;;;;gDAIgD;AAChD,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAK,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IACrE,gBAAgB,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAA;IACjG,eAAe,EAAG,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAA;CAC5I;AAGD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IAAE,EAAE,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,2CA25BvF"}