@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.
- package/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +142 -0
- package/CLAUDE.md +59 -3
- package/dist/Pilotiq.d.ts +83 -0
- package/dist/Pilotiq.d.ts.map +1 -1
- package/dist/Pilotiq.js +39 -0
- package/dist/Pilotiq.js.map +1 -1
- package/dist/actions/Action.d.ts +27 -99
- package/dist/actions/Action.d.ts.map +1 -1
- package/dist/actions/Action.js +52 -754
- package/dist/actions/Action.js.map +1 -1
- package/dist/actions/bulkFactories.d.ts +46 -0
- package/dist/actions/bulkFactories.d.ts.map +1 -0
- package/dist/actions/bulkFactories.js +144 -0
- package/dist/actions/bulkFactories.js.map +1 -0
- package/dist/actions/crudFactories.d.ts +94 -0
- package/dist/actions/crudFactories.d.ts.map +1 -0
- package/dist/actions/crudFactories.js +209 -0
- package/dist/actions/crudFactories.js.map +1 -0
- package/dist/actions/factoryHelpers.d.ts +108 -0
- package/dist/actions/factoryHelpers.d.ts.map +1 -0
- package/dist/actions/factoryHelpers.js +138 -0
- package/dist/actions/factoryHelpers.js.map +1 -0
- package/dist/actions/m2mFactories.d.ts +47 -0
- package/dist/actions/m2mFactories.d.ts.map +1 -0
- package/dist/actions/m2mFactories.js +173 -0
- package/dist/actions/m2mFactories.js.map +1 -0
- package/dist/actions/relationFactories.d.ts +93 -0
- package/dist/actions/relationFactories.d.ts.map +1 -0
- package/dist/actions/relationFactories.js +321 -0
- package/dist/actions/relationFactories.js.map +1 -0
- package/dist/elements/dispatchForm.js +1 -1
- package/dist/elements/dispatchForm.js.map +1 -1
- package/dist/elements/dispatchTable.js +1 -1
- package/dist/elements/dispatchTable.js.map +1 -1
- package/dist/fields/Field.d.ts +31 -0
- package/dist/fields/Field.d.ts.map +1 -1
- package/dist/fields/Field.js +25 -0
- package/dist/fields/Field.js.map +1 -1
- package/dist/pageData/breadcrumbs.d.ts +42 -0
- package/dist/pageData/breadcrumbs.d.ts.map +1 -0
- package/dist/pageData/breadcrumbs.js +172 -0
- package/dist/pageData/breadcrumbs.js.map +1 -0
- package/dist/pageData/forms.d.ts +137 -0
- package/dist/pageData/forms.d.ts.map +1 -0
- package/dist/pageData/forms.js +427 -0
- package/dist/pageData/forms.js.map +1 -0
- package/dist/pageData/helpers.d.ts +239 -0
- package/dist/pageData/helpers.d.ts.map +1 -0
- package/dist/pageData/helpers.js +703 -0
- package/dist/pageData/helpers.js.map +1 -0
- package/dist/pageData/misc.d.ts +76 -0
- package/dist/pageData/misc.d.ts.map +1 -0
- package/dist/pageData/misc.js +263 -0
- package/dist/pageData/misc.js.map +1 -0
- package/dist/pageData/navigation.d.ts +292 -0
- package/dist/pageData/navigation.d.ts.map +1 -0
- package/dist/pageData/navigation.js +591 -0
- package/dist/pageData/navigation.js.map +1 -0
- package/dist/pageData/relationPages.d.ts +172 -0
- package/dist/pageData/relationPages.d.ts.map +1 -0
- package/dist/pageData/relationPages.js +867 -0
- package/dist/pageData/relationPages.js.map +1 -0
- package/dist/pageData/relationTabs.d.ts +65 -0
- package/dist/pageData/relationTabs.d.ts.map +1 -0
- package/dist/pageData/relationTabs.js +258 -0
- package/dist/pageData/relationTabs.js.map +1 -0
- package/dist/pageData/resourcePages.d.ts +48 -0
- package/dist/pageData/resourcePages.d.ts.map +1 -0
- package/dist/pageData/resourcePages.js +504 -0
- package/dist/pageData/resourcePages.js.map +1 -0
- package/dist/pageData.d.ts +12 -792
- package/dist/pageData.d.ts.map +1 -1
- package/dist/pageData.js +24 -3797
- package/dist/pageData.js.map +1 -1
- package/dist/react/AppShell.d.ts +8 -0
- package/dist/react/AppShell.d.ts.map +1 -1
- package/dist/react/AppShell.js +11 -1
- package/dist/react/AppShell.js.map +1 -1
- package/dist/react/CollabExtensionFactoryRegistry.d.ts +47 -0
- package/dist/react/CollabExtensionFactoryRegistry.d.ts.map +1 -0
- package/dist/react/CollabExtensionFactoryRegistry.js +14 -0
- package/dist/react/CollabExtensionFactoryRegistry.js.map +1 -0
- package/dist/react/CollabRoomContext.d.ts +37 -0
- package/dist/react/CollabRoomContext.d.ts.map +1 -0
- package/dist/react/CollabRoomContext.js +12 -0
- package/dist/react/CollabRoomContext.js.map +1 -0
- package/dist/react/FormCollabBindingRegistry.d.ts +62 -0
- package/dist/react/FormCollabBindingRegistry.d.ts.map +1 -0
- package/dist/react/FormCollabBindingRegistry.js +14 -0
- package/dist/react/FormCollabBindingRegistry.js.map +1 -0
- package/dist/react/RecordWrapperGate.d.ts +25 -0
- package/dist/react/RecordWrapperGate.d.ts.map +1 -0
- package/dist/react/RecordWrapperGate.js +30 -0
- package/dist/react/RecordWrapperGate.js.map +1 -0
- package/dist/react/RecordWrapperRegistry.d.ts +31 -0
- package/dist/react/RecordWrapperRegistry.d.ts.map +1 -0
- package/dist/react/RecordWrapperRegistry.js +15 -0
- package/dist/react/RecordWrapperRegistry.js.map +1 -0
- package/dist/react/SchemaRenderer.d.ts +17 -23
- package/dist/react/SchemaRenderer.d.ts.map +1 -1
- package/dist/react/SchemaRenderer.js +71 -3647
- package/dist/react/SchemaRenderer.js.map +1 -1
- package/dist/react/component-slots.d.ts +103 -0
- package/dist/react/component-slots.d.ts.map +1 -0
- package/dist/react/component-slots.js +18 -0
- package/dist/react/component-slots.js.map +1 -0
- package/dist/react/fields/BuilderInput.d.ts.map +1 -1
- package/dist/react/fields/BuilderInput.js +21 -117
- package/dist/react/fields/BuilderInput.js.map +1 -1
- package/dist/react/fields/MarkdownInput.d.ts.map +1 -1
- package/dist/react/fields/MarkdownInput.js +1 -3
- package/dist/react/fields/MarkdownInput.js.map +1 -1
- package/dist/react/fields/RepeaterInput.d.ts.map +1 -1
- package/dist/react/fields/RepeaterInput.js +22 -127
- package/dist/react/fields/RepeaterInput.js.map +1 -1
- package/dist/react/fields/rowState.d.ts +40 -0
- package/dist/react/fields/rowState.d.ts.map +1 -0
- package/dist/react/fields/rowState.js +60 -0
- package/dist/react/fields/rowState.js.map +1 -0
- package/dist/react/fields/useRowReorderDnd.d.ts +28 -0
- package/dist/react/fields/useRowReorderDnd.d.ts.map +1 -0
- package/dist/react/fields/useRowReorderDnd.js +51 -0
- package/dist/react/fields/useRowReorderDnd.js.map +1 -0
- package/dist/react/index.d.ts +9 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +8 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/layouts/SidebarLayout.d.ts +1 -1
- package/dist/react/layouts/SidebarLayout.d.ts.map +1 -1
- package/dist/react/layouts/SidebarLayout.js +10 -2
- package/dist/react/layouts/SidebarLayout.js.map +1 -1
- package/dist/react/layouts/TopbarLayout.d.ts +1 -1
- package/dist/react/layouts/TopbarLayout.d.ts.map +1 -1
- package/dist/react/layouts/TopbarLayout.js +19 -11
- package/dist/react/layouts/TopbarLayout.js.map +1 -1
- package/dist/react/parseRecordEditUrl.d.ts +29 -0
- package/dist/react/parseRecordEditUrl.d.ts.map +1 -0
- package/dist/react/parseRecordEditUrl.js +25 -0
- package/dist/react/parseRecordEditUrl.js.map +1 -0
- package/dist/react/persistedState.d.ts +19 -0
- package/dist/react/persistedState.d.ts.map +1 -0
- package/dist/react/persistedState.js +51 -0
- package/dist/react/persistedState.js.map +1 -0
- package/dist/react/schemaRenderer/AlertRenderer.d.ts +12 -0
- package/dist/react/schemaRenderer/AlertRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/AlertRenderer.js +61 -0
- package/dist/react/schemaRenderer/AlertRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/EntryRenderer.d.ts +13 -0
- package/dist/react/schemaRenderer/EntryRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/EntryRenderer.js +277 -0
- package/dist/react/schemaRenderer/EntryRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/SectionRenderer.d.ts +16 -0
- package/dist/react/schemaRenderer/SectionRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/SectionRenderer.js +62 -0
- package/dist/react/schemaRenderer/SectionRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/SimpleElements.d.ts +25 -0
- package/dist/react/schemaRenderer/SimpleElements.d.ts.map +1 -0
- package/dist/react/schemaRenderer/SimpleElements.js +147 -0
- package/dist/react/schemaRenderer/SimpleElements.js.map +1 -0
- package/dist/react/schemaRenderer/TabsRenderer.d.ts +17 -0
- package/dist/react/schemaRenderer/TabsRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/TabsRenderer.js +31 -0
- package/dist/react/schemaRenderer/TabsRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/WizardRenderer.d.ts +34 -0
- package/dist/react/schemaRenderer/WizardRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/WizardRenderer.js +208 -0
- package/dist/react/schemaRenderer/WizardRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/action/ActionGroupTrigger.d.ts +21 -0
- package/dist/react/schemaRenderer/action/ActionGroupTrigger.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/ActionGroupTrigger.js +82 -0
- package/dist/react/schemaRenderer/action/ActionGroupTrigger.js.map +1 -0
- package/dist/react/schemaRenderer/action/ActionModalDialog.d.ts +30 -0
- package/dist/react/schemaRenderer/action/ActionModalDialog.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/ActionModalDialog.js +182 -0
- package/dist/react/schemaRenderer/action/ActionModalDialog.js.map +1 -0
- package/dist/react/schemaRenderer/action/ConfirmActionDialog.d.ts +17 -0
- package/dist/react/schemaRenderer/action/ConfirmActionDialog.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/ConfirmActionDialog.js +19 -0
- package/dist/react/schemaRenderer/action/ConfirmActionDialog.js.map +1 -0
- package/dist/react/schemaRenderer/action/HandlerActionButton.d.ts +16 -0
- package/dist/react/schemaRenderer/action/HandlerActionButton.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/HandlerActionButton.js +16 -0
- package/dist/react/schemaRenderer/action/HandlerActionButton.js.map +1 -0
- package/dist/react/schemaRenderer/action/MethodActionButton.d.ts +22 -0
- package/dist/react/schemaRenderer/action/MethodActionButton.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/MethodActionButton.js +26 -0
- package/dist/react/schemaRenderer/action/MethodActionButton.js.map +1 -0
- package/dist/react/schemaRenderer/action/buttons.d.ts +18 -0
- package/dist/react/schemaRenderer/action/buttons.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/buttons.js +74 -0
- package/dist/react/schemaRenderer/action/buttons.js.map +1 -0
- package/dist/react/schemaRenderer/action/helpers.d.ts +26 -0
- package/dist/react/schemaRenderer/action/helpers.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/helpers.js +126 -0
- package/dist/react/schemaRenderer/action/helpers.js.map +1 -0
- package/dist/react/schemaRenderer/action/renderAction.d.ts +21 -0
- package/dist/react/schemaRenderer/action/renderAction.d.ts.map +1 -0
- package/dist/react/schemaRenderer/action/renderAction.js +102 -0
- package/dist/react/schemaRenderer/action/renderAction.js.map +1 -0
- package/dist/react/schemaRenderer/columnFormat.d.ts +10 -0
- package/dist/react/schemaRenderer/columnFormat.d.ts.map +1 -0
- package/dist/react/schemaRenderer/columnFormat.js +76 -0
- package/dist/react/schemaRenderer/columnFormat.js.map +1 -0
- package/dist/react/schemaRenderer/constants.d.ts +8 -0
- package/dist/react/schemaRenderer/constants.d.ts.map +1 -0
- package/dist/react/schemaRenderer/constants.js +45 -0
- package/dist/react/schemaRenderer/constants.js.map +1 -0
- package/dist/react/schemaRenderer/form/FormRenderer.d.ts +29 -0
- package/dist/react/schemaRenderer/form/FormRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/form/FormRenderer.js +152 -0
- package/dist/react/schemaRenderer/form/FormRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/form/renderField.d.ts +6 -0
- package/dist/react/schemaRenderer/form/renderField.d.ts.map +1 -0
- package/dist/react/schemaRenderer/form/renderField.js +239 -0
- package/dist/react/schemaRenderer/form/renderField.js.map +1 -0
- package/dist/react/schemaRenderer/helpers.d.ts +32 -0
- package/dist/react/schemaRenderer/helpers.d.ts.map +1 -0
- package/dist/react/schemaRenderer/helpers.js +52 -0
- package/dist/react/schemaRenderer/helpers.js.map +1 -0
- package/dist/react/schemaRenderer/table/CardsLayoutBody.d.ts +60 -0
- package/dist/react/schemaRenderer/table/CardsLayoutBody.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/CardsLayoutBody.js +189 -0
- package/dist/react/schemaRenderer/table/CardsLayoutBody.js.map +1 -0
- package/dist/react/schemaRenderer/table/TableRenderer.d.ts +29 -0
- package/dist/react/schemaRenderer/table/TableRenderer.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/TableRenderer.js +85 -0
- package/dist/react/schemaRenderer/table/TableRenderer.js.map +1 -0
- package/dist/react/schemaRenderer/table/TableRendererBody.d.ts +18 -0
- package/dist/react/schemaRenderer/table/TableRendererBody.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/TableRendererBody.js +555 -0
- package/dist/react/schemaRenderer/table/TableRendererBody.js.map +1 -0
- package/dist/react/schemaRenderer/table/filters.d.ts +263 -0
- package/dist/react/schemaRenderer/table/filters.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/filters.js +497 -0
- package/dist/react/schemaRenderer/table/filters.js.map +1 -0
- package/dist/react/schemaRenderer/table/formatCell.d.ts +11 -0
- package/dist/react/schemaRenderer/table/formatCell.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/formatCell.js +172 -0
- package/dist/react/schemaRenderer/table/formatCell.js.map +1 -0
- package/dist/react/schemaRenderer/table/links.d.ts +42 -0
- package/dist/react/schemaRenderer/table/links.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/links.js +55 -0
- package/dist/react/schemaRenderer/table/links.js.map +1 -0
- package/dist/react/schemaRenderer/table/renderRowActions.d.ts +13 -0
- package/dist/react/schemaRenderer/table/renderRowActions.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/renderRowActions.js +25 -0
- package/dist/react/schemaRenderer/table/renderRowActions.js.map +1 -0
- package/dist/react/schemaRenderer/table/url.d.ts +41 -0
- package/dist/react/schemaRenderer/table/url.d.ts.map +1 -0
- package/dist/react/schemaRenderer/table/url.js +114 -0
- package/dist/react/schemaRenderer/table/url.js.map +1 -0
- package/dist/routes/globals.d.ts +13 -0
- package/dist/routes/globals.d.ts.map +1 -0
- package/dist/routes/globals.js +131 -0
- package/dist/routes/globals.js.map +1 -0
- package/dist/routes/helpers.d.ts +217 -0
- package/dist/routes/helpers.d.ts.map +1 -0
- package/dist/routes/helpers.js +498 -0
- package/dist/routes/helpers.js.map +1 -0
- package/dist/routes/pages.d.ts +15 -0
- package/dist/routes/pages.d.ts.map +1 -0
- package/dist/routes/pages.js +145 -0
- package/dist/routes/pages.js.map +1 -0
- package/dist/routes/panel.d.ts +19 -0
- package/dist/routes/panel.d.ts.map +1 -0
- package/dist/routes/panel.js +191 -0
- package/dist/routes/panel.js.map +1 -0
- package/dist/routes/relations.d.ts +21 -0
- package/dist/routes/relations.d.ts.map +1 -0
- package/dist/routes/relations.js +1239 -0
- package/dist/routes/relations.js.map +1 -0
- package/dist/routes/resources.d.ts +28 -0
- package/dist/routes/resources.d.ts.map +1 -0
- package/dist/routes/resources.js +741 -0
- package/dist/routes/resources.js.map +1 -0
- package/dist/routes/theme.d.ts +12 -0
- package/dist/routes/theme.d.ts.map +1 -0
- package/dist/routes/theme.js +82 -0
- package/dist/routes/theme.js.map +1 -0
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +64 -3078
- package/dist/routes.js.map +1 -1
- package/dist/vite.d.ts +1 -0
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +26 -5
- package/dist/vite.js.map +1 -1
- package/package.json +2 -1
- package/src/Pilotiq.ts +95 -0
- package/src/actions/Action.ts +79 -723
- package/src/actions/bulkFactories.ts +168 -0
- package/src/actions/crudFactories.ts +220 -0
- package/src/actions/factoryHelpers.ts +177 -0
- package/src/actions/m2mFactories.ts +193 -0
- package/src/actions/relationFactories.ts +372 -0
- package/src/elements/dispatchForm.ts +1 -1
- package/src/elements/dispatchTable.ts +1 -1
- package/src/fields/Field.ts +39 -0
- package/src/pageData/breadcrumbs.ts +288 -0
- package/src/pageData/forms.ts +578 -0
- package/src/pageData/helpers.ts +764 -0
- package/src/pageData/misc.ts +347 -0
- package/src/pageData/navigation.ts +779 -0
- package/src/pageData/relationPages.ts +1246 -0
- package/src/pageData/relationTabs.ts +286 -0
- package/src/pageData/resourcePages.ts +593 -0
- package/src/pageData.ts +122 -4731
- package/src/react/AppShell.tsx +27 -1
- package/src/react/CollabExtensionFactoryRegistry.ts +55 -0
- package/src/react/CollabRoomContext.ts +42 -0
- package/src/react/FormCollabBindingRegistry.ts +72 -0
- package/src/react/RecordWrapperGate.tsx +40 -0
- package/src/react/RecordWrapperRegistry.ts +39 -0
- package/src/react/SchemaRenderer.tsx +230 -6479
- package/src/react/component-slots.test.ts +103 -0
- package/src/react/component-slots.ts +116 -0
- package/src/react/fields/BuilderInput.tsx +29 -117
- package/src/react/fields/MarkdownInput.tsx +0 -1
- package/src/react/fields/RepeaterInput.tsx +29 -130
- package/src/react/fields/rowState.ts +106 -0
- package/src/react/fields/useRowReorderDnd.ts +78 -0
- package/src/react/index.ts +38 -0
- package/src/react/layouts/SidebarLayout.tsx +39 -28
- package/src/react/layouts/TopbarLayout.tsx +70 -57
- package/src/react/parseRecordEditUrl.test.ts +75 -0
- package/src/react/parseRecordEditUrl.ts +55 -0
- package/src/react/persistedState.ts +40 -0
- package/src/react/schemaRenderer/AlertRenderer.tsx +112 -0
- package/src/react/schemaRenderer/EntryRenderer.tsx +501 -0
- package/src/react/schemaRenderer/SectionRenderer.tsx +120 -0
- package/src/react/schemaRenderer/SimpleElements.tsx +306 -0
- package/src/react/schemaRenderer/TabsRenderer.tsx +62 -0
- package/src/react/schemaRenderer/WizardRenderer.tsx +338 -0
- package/src/react/schemaRenderer/action/ActionGroupTrigger.tsx +177 -0
- package/src/react/schemaRenderer/action/ActionModalDialog.tsx +273 -0
- package/src/react/schemaRenderer/action/ConfirmActionDialog.tsx +61 -0
- package/src/react/schemaRenderer/action/HandlerActionButton.tsx +43 -0
- package/src/react/schemaRenderer/action/MethodActionButton.tsx +64 -0
- package/src/react/schemaRenderer/action/buttons.tsx +99 -0
- package/src/react/schemaRenderer/action/helpers.ts +140 -0
- package/src/react/schemaRenderer/action/renderAction.tsx +245 -0
- package/src/react/schemaRenderer/columnFormat.ts +65 -0
- package/src/react/schemaRenderer/constants.ts +50 -0
- package/src/react/schemaRenderer/form/FormRenderer.tsx +233 -0
- package/src/react/schemaRenderer/form/renderField.tsx +511 -0
- package/src/react/schemaRenderer/helpers.tsx +81 -0
- package/src/react/schemaRenderer/table/CardsLayoutBody.tsx +308 -0
- package/src/react/schemaRenderer/table/TableRenderer.tsx +123 -0
- package/src/react/schemaRenderer/table/TableRendererBody.tsx +974 -0
- package/src/react/schemaRenderer/table/filters.tsx +1233 -0
- package/src/react/schemaRenderer/table/formatCell.tsx +264 -0
- package/src/react/schemaRenderer/table/links.tsx +112 -0
- package/src/react/schemaRenderer/table/renderRowActions.tsx +52 -0
- package/src/react/schemaRenderer/table/url.tsx +143 -0
- package/src/routes/globals.ts +154 -0
- package/src/routes/helpers.ts +668 -0
- package/src/routes/pages.ts +173 -0
- package/src/routes/panel.ts +204 -0
- package/src/routes/relations.ts +1219 -0
- package/src/routes/resources.ts +786 -0
- package/src/routes/theme.ts +109 -0
- package/src/routes.test.ts +1 -1
- package/src/routes.ts +64 -3176
- package/src/schema/TableWidget.test.ts +2 -2
- package/src/theme/migrate.test.ts +178 -0
- package/src/vite.test.ts +184 -0
- package/src/vite.ts +26 -4
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { CollabRoom } from './CollabRoomContext.js';
|
|
2
|
+
/**
|
|
3
|
+
* Binding contract that a collab plugin returns from
|
|
4
|
+
* `registerFormCollabBinding` — wraps a single form's value map in a
|
|
5
|
+
* shared CRDT type (typically a `Y.Map` on the surrounding record's
|
|
6
|
+
* `Y.Doc`) so every field on the form syncs across clients.
|
|
7
|
+
*
|
|
8
|
+
* Pilotiq's `FormStateProvider` calls into this contract when a
|
|
9
|
+
* `<RecordCollabRoom>` is mounted up-tree:
|
|
10
|
+
*
|
|
11
|
+
* - `get()` is read once on mount to overlay any already-synced
|
|
12
|
+
* state on top of the form's SSR-rendered defaults.
|
|
13
|
+
* - `set(name, v)` is called from `setValue` after the local React
|
|
14
|
+
* state update — every controlled field's edit lands in the CRDT.
|
|
15
|
+
* - `subscribe(fn)` registers a listener that fires when REMOTE
|
|
16
|
+
* changes land; `fn(snapshot)` receives the full updated map.
|
|
17
|
+
* The provider re-applies this snapshot onto its React state.
|
|
18
|
+
* - `destroy()` is called on unmount — gives the plugin a chance to
|
|
19
|
+
* remove its CRDT observer.
|
|
20
|
+
*
|
|
21
|
+
* `unknown` payloads keep pilotiq core Yjs-free; the binding owns its
|
|
22
|
+
* own type knowledge. Same posture as `CollabExtensionFactory`.
|
|
23
|
+
*/
|
|
24
|
+
export interface FormCollabBinding {
|
|
25
|
+
/** Snapshot of the current synced values. Called once on mount. */
|
|
26
|
+
get(): Record<string, unknown>;
|
|
27
|
+
/** Write the local edit to the CRDT. Triggers a broadcast to peers. */
|
|
28
|
+
set(name: string, value: unknown): void;
|
|
29
|
+
/** Subscribe to remote changes. Returns an unsubscribe function. */
|
|
30
|
+
subscribe(fn: (snapshot: Record<string, unknown>) => void): () => void;
|
|
31
|
+
/** Cleanup hook called when the form unmounts. */
|
|
32
|
+
destroy(): void;
|
|
33
|
+
}
|
|
34
|
+
export interface FormCollabBindingFactoryArgs {
|
|
35
|
+
/** Active collab room — provides `ydoc`, `provider`, `user`. Opaque to pilotiq core. */
|
|
36
|
+
room: CollabRoom;
|
|
37
|
+
/**
|
|
38
|
+
* Form identifier — used by the binding to partition CRDT state when
|
|
39
|
+
* multiple forms render against the same room (e.g. a record page that
|
|
40
|
+
* shows a primary form plus a side-mounted action form). Most pages
|
|
41
|
+
* only have one form, so most bindings use this as the `Y.Map` name.
|
|
42
|
+
*/
|
|
43
|
+
formId: string;
|
|
44
|
+
/**
|
|
45
|
+
* Initial values from pilotiq's normal SSR resolution. The binding
|
|
46
|
+
* uses these to perform the idempotent "first-load seed" (`!ymap.has(k)`
|
|
47
|
+
* gated write) so the first client to open a record populates the
|
|
48
|
+
* Y.Map with the DB-derived defaults; subsequent clients find the
|
|
49
|
+
* map already populated and skip.
|
|
50
|
+
*/
|
|
51
|
+
initial: Record<string, unknown>;
|
|
52
|
+
}
|
|
53
|
+
export type FormCollabBindingFactory = (args: FormCollabBindingFactoryArgs) => FormCollabBinding;
|
|
54
|
+
/**
|
|
55
|
+
* Register the form-level CRDT binding factory. Called once at boot by
|
|
56
|
+
* `@pilotiq-pro/collab`'s plugin. No-op when no plugin registers —
|
|
57
|
+
* `FormStateProvider` falls back to its plain local-state path.
|
|
58
|
+
*/
|
|
59
|
+
export declare function registerFormCollabBinding(factory: FormCollabBindingFactory): void;
|
|
60
|
+
/** Returns the registered binding factory, or `null`. */
|
|
61
|
+
export declare function getFormCollabBinding(): FormCollabBindingFactory | null;
|
|
62
|
+
//# sourceMappingURL=FormCollabBindingRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormCollabBindingRegistry.d.ts","sourceRoot":"","sources":["../../src/react/FormCollabBindingRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,GAAG,IAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,uEAAuE;IACvE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IACvC,oEAAoE;IACpE,SAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IACtE,kDAAkD;IAClD,OAAO,IAAO,IAAI,CAAA;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,wFAAwF;IACxF,IAAI,EAAK,UAAU,CAAA;IACnB;;;;;OAKG;IACH,MAAM,EAAG,MAAM,CAAA;IACf;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,MAAM,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,4BAA4B,KAAK,iBAAiB,CAAA;AAIhG;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAEjF;AAED,yDAAyD;AACzD,wBAAgB,oBAAoB,IAAI,wBAAwB,GAAG,IAAI,CAEtE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
let _factory = null;
|
|
2
|
+
/**
|
|
3
|
+
* Register the form-level CRDT binding factory. Called once at boot by
|
|
4
|
+
* `@pilotiq-pro/collab`'s plugin. No-op when no plugin registers —
|
|
5
|
+
* `FormStateProvider` falls back to its plain local-state path.
|
|
6
|
+
*/
|
|
7
|
+
export function registerFormCollabBinding(factory) {
|
|
8
|
+
_factory = factory;
|
|
9
|
+
}
|
|
10
|
+
/** Returns the registered binding factory, or `null`. */
|
|
11
|
+
export function getFormCollabBinding() {
|
|
12
|
+
return _factory;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=FormCollabBindingRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormCollabBindingRegistry.js","sourceRoot":"","sources":["../../src/react/FormCollabBindingRegistry.ts"],"names":[],"mappings":"AAyDA,IAAI,QAAQ,GAAoC,IAAI,CAAA;AAEpD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAiC;IACzE,QAAQ,GAAG,OAAO,CAAA;AACpB,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,oBAAoB;IAClC,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface RecordWrapperGateProps {
|
|
3
|
+
currentPath?: string;
|
|
4
|
+
basePath: string;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Conditionally wraps the page tree with the plugin-registered
|
|
9
|
+
* `RecordWrapper` when the current URL resolves to a record-bound edit
|
|
10
|
+
* page. Pass-through in every other case:
|
|
11
|
+
*
|
|
12
|
+
* - no plugin registered a wrapper (`getRecordWrapper() === null`)
|
|
13
|
+
* - the URL isn't a record-edit URL (list / create / view / dashboard / …)
|
|
14
|
+
* - `currentPath` not yet known on the very first SSR render
|
|
15
|
+
*
|
|
16
|
+
* Mounted once inside `AppShell` around the page content area so
|
|
17
|
+
* record-scoped plugins (collab room, audit trail, …) get one
|
|
18
|
+
* lifetimed mount per record-view-or-edit without each plugin having
|
|
19
|
+
* to thread URL parsing into its own provider.
|
|
20
|
+
*
|
|
21
|
+
* Scope limited to `/edit` URLs in v1; view-page support (read-only
|
|
22
|
+
* collab cursors on `ViewPage`) is a follow-up.
|
|
23
|
+
*/
|
|
24
|
+
export declare function RecordWrapperGate({ currentPath, basePath, children }: RecordWrapperGateProps): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=RecordWrapperGate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordWrapperGate.d.ts","sourceRoot":"","sources":["../../src/react/RecordWrapperGate.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAM,MAAM,CAAA;IACpB,QAAQ,EAAM,SAAS,CAAA;CACxB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CAY5F"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { getRecordWrapper } from './RecordWrapperRegistry.js';
|
|
3
|
+
import { parseRecordEditUrl } from './parseRecordEditUrl.js';
|
|
4
|
+
/**
|
|
5
|
+
* Conditionally wraps the page tree with the plugin-registered
|
|
6
|
+
* `RecordWrapper` when the current URL resolves to a record-bound edit
|
|
7
|
+
* page. Pass-through in every other case:
|
|
8
|
+
*
|
|
9
|
+
* - no plugin registered a wrapper (`getRecordWrapper() === null`)
|
|
10
|
+
* - the URL isn't a record-edit URL (list / create / view / dashboard / …)
|
|
11
|
+
* - `currentPath` not yet known on the very first SSR render
|
|
12
|
+
*
|
|
13
|
+
* Mounted once inside `AppShell` around the page content area so
|
|
14
|
+
* record-scoped plugins (collab room, audit trail, …) get one
|
|
15
|
+
* lifetimed mount per record-view-or-edit without each plugin having
|
|
16
|
+
* to thread URL parsing into its own provider.
|
|
17
|
+
*
|
|
18
|
+
* Scope limited to `/edit` URLs in v1; view-page support (read-only
|
|
19
|
+
* collab cursors on `ViewPage`) is a follow-up.
|
|
20
|
+
*/
|
|
21
|
+
export function RecordWrapperGate({ currentPath, basePath, children }) {
|
|
22
|
+
const Wrapper = getRecordWrapper();
|
|
23
|
+
if (!Wrapper || !currentPath)
|
|
24
|
+
return _jsx(_Fragment, { children: children });
|
|
25
|
+
const identity = parseRecordEditUrl(currentPath, basePath);
|
|
26
|
+
if (!identity)
|
|
27
|
+
return _jsx(_Fragment, { children: children });
|
|
28
|
+
return (_jsx(Wrapper, { resourceSlug: identity.resourceSlug, recordId: identity.recordId, children: children }));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=RecordWrapperGate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordWrapperGate.js","sourceRoot":"","sources":["../../src/react/RecordWrapperGate.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAQ5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAA0B;IAC3F,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAA;IAClC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW;QAAE,OAAO,4BAAG,QAAQ,GAAI,CAAA;IAEpD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC1D,IAAI,CAAC,QAAQ;QAAE,OAAO,4BAAG,QAAQ,GAAI,CAAA;IAErC,OAAO,CACL,KAAC,OAAO,IAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,YACtE,QAAQ,GACD,CACX,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ComponentType, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Props the page-record wrapper receives from `RecordWrapperGate` when
|
|
4
|
+
* the current URL resolves to a record-bound edit page (`${base}/.../:id/edit`).
|
|
5
|
+
*
|
|
6
|
+
* The wrapper is responsible for whatever record-scoped context the
|
|
7
|
+
* plugin owns — `@pilotiq-pro/collab` mounts a `<RecordCollabRoom>`
|
|
8
|
+
* here so every collab field inside the page shares one Y.Doc + WS
|
|
9
|
+
* connection. Other plugins could mount per-record presence, audit
|
|
10
|
+
* logging, or anything else that's record-bound rather than panel-bound.
|
|
11
|
+
*
|
|
12
|
+
* `resourceSlug` is the slash-joined slug-path (cluster-prefixed for
|
|
13
|
+
* clustered resources, parent-prefixed for nested-relation edits) so
|
|
14
|
+
* two URLs that target different records always produce distinct
|
|
15
|
+
* wrapper keys / room names.
|
|
16
|
+
*/
|
|
17
|
+
export interface RecordWrapperProps {
|
|
18
|
+
resourceSlug: string;
|
|
19
|
+
recordId: string;
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Register a component that wraps the page tree on every record-edit
|
|
24
|
+
* route. Called once at boot by a plugin (e.g. `@pilotiq-pro/collab`).
|
|
25
|
+
* No-op when no plugin registers — `RecordWrapperGate` passes through
|
|
26
|
+
* unchanged.
|
|
27
|
+
*/
|
|
28
|
+
export declare function registerRecordWrapper(C: ComponentType<RecordWrapperProps>): void;
|
|
29
|
+
/** Returns the registered wrapper component, or `null`. */
|
|
30
|
+
export declare function getRecordWrapper(): ComponentType<RecordWrapperProps> | null;
|
|
31
|
+
//# sourceMappingURL=RecordWrapperRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordWrapperRegistry.d.ts","sourceRoot":"","sources":["../../src/react/RecordWrapperRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAErD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAM,MAAM,CAAA;IACpB,QAAQ,EAAM,SAAS,CAAA;CACxB;AAID;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAEhF;AAED,2DAA2D;AAC3D,wBAAgB,gBAAgB,IAAI,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAE3E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
let _component = null;
|
|
2
|
+
/**
|
|
3
|
+
* Register a component that wraps the page tree on every record-edit
|
|
4
|
+
* route. Called once at boot by a plugin (e.g. `@pilotiq-pro/collab`).
|
|
5
|
+
* No-op when no plugin registers — `RecordWrapperGate` passes through
|
|
6
|
+
* unchanged.
|
|
7
|
+
*/
|
|
8
|
+
export function registerRecordWrapper(C) {
|
|
9
|
+
_component = C;
|
|
10
|
+
}
|
|
11
|
+
/** Returns the registered wrapper component, or `null`. */
|
|
12
|
+
export function getRecordWrapper() {
|
|
13
|
+
return _component;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=RecordWrapperRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordWrapperRegistry.js","sourceRoot":"","sources":["../../src/react/RecordWrapperRegistry.ts"],"names":[],"mappings":"AAuBA,IAAI,UAAU,GAA6C,IAAI,CAAA;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,CAAoC;IACxE,UAAU,GAAG,CAAC,CAAA;AAChB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,gBAAgB;IAC9B,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { ElementMeta } from '../schema/Element.js';
|
|
3
|
+
import { dispatchHandlerAction as actionDispatchHandlerAction } from './schemaRenderer/action/helpers.js';
|
|
4
|
+
/**
|
|
5
|
+
* Re-export `dispatchHandlerAction` from the action helpers so existing
|
|
6
|
+
* consumers (e.g. `RepeaterInput.tsx`) keep working through this barrel.
|
|
7
|
+
* Phase 4 may shift these imports onto the action subpath directly.
|
|
8
|
+
*/
|
|
9
|
+
export declare const dispatchHandlerAction: typeof actionDispatchHandlerAction;
|
|
3
10
|
/**
|
|
4
11
|
* Render a flat list of resolved field-meta as standalone form inputs,
|
|
5
12
|
* outside any pilotiq Form wrapper. Useful for embedding the schema
|
|
@@ -26,32 +33,20 @@ export interface FormFieldsProps {
|
|
|
26
33
|
values?: Record<string, unknown>;
|
|
27
34
|
}
|
|
28
35
|
export declare function FormFields({ elements, values }: FormFieldsProps): React.ReactElement;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
*
|
|
34
|
-
* just a button). Sends `ids[]` plus arbitrary `values` fields. Server
|
|
35
|
-
* returns `{ ok, redirect, notifications }` (or `{ ok: false, error }` on
|
|
36
|
-
* failure). On success: drain notifications, SPA-navigate; on failure:
|
|
37
|
-
* surface the error as a toast. No full page reload in any case.
|
|
38
|
-
*/
|
|
39
|
-
export declare function dispatchHandlerAction(url: string, ids: string[], navigate: Navigate, notify: Notify, values?: Record<string, string>, formSnapshot?: FormData): Promise<void>;
|
|
40
|
-
/**
|
|
41
|
-
* Render one child of a form's resolved schema with per-field values + errors.
|
|
42
|
-
*
|
|
43
|
-
* Exported so sibling renderers (e.g. `SelectFieldInput`'s inline-create
|
|
44
|
-
* modal) can render a sub-schema with the same FieldShell + error-stamping
|
|
45
|
-
* conventions as the parent form. Public surface beyond the file boundary
|
|
46
|
-
* stays narrow — callers should pass `child.type === 'field'` elements;
|
|
47
|
-
* non-field elements fall through to `renderElement`.
|
|
48
|
-
*/
|
|
36
|
+
/** Re-export the form-layer `renderFormChild` with `renderElement`
|
|
37
|
+
* pre-bound, so external consumers (e.g. `SelectFieldInput.tsx`) keep
|
|
38
|
+
* importing it from `SchemaRenderer.js` with the same four-arg signature.
|
|
39
|
+
* Internal callers (action layer dialogs, ActionGroupTrigger) get the
|
|
40
|
+
* same closure through prop injection. */
|
|
49
41
|
export declare function renderFormChild(child: ElementMeta, index: number, values: Record<string, unknown>, errors: Record<string, string[]>): React.ReactNode;
|
|
50
42
|
export interface SchemaRendererProps {
|
|
43
|
+
/** Resolved schema elements (server-side `resolveSchema` output) that
|
|
44
|
+
* the renderer walks recursively. */
|
|
51
45
|
elements: ElementMeta[];
|
|
52
46
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
47
|
+
* Initial widget data — a record keyed by widget id whose values are
|
|
48
|
+
* stamped onto the SSR pass by `tagWidgetUrls` + `resolveServerDataElements`.
|
|
49
|
+
* Surfaces through `<WidgetDataProvider>` so per-widget components
|
|
55
50
|
* can read their first-paint payload through `useInitialWidgetData`.
|
|
56
51
|
* Optional — pages with no widgets ship `undefined` and the provider
|
|
57
52
|
* is a no-op.
|
|
@@ -59,5 +54,4 @@ export interface SchemaRendererProps {
|
|
|
59
54
|
widgetData?: Record<string, unknown>;
|
|
60
55
|
}
|
|
61
56
|
export declare function SchemaRenderer({ elements, widgetData }: SchemaRendererProps): import("react/jsx-runtime").JSX.Element | null;
|
|
62
|
-
export {};
|
|
63
57
|
//# sourceMappingURL=SchemaRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaRenderer.d.ts","sourceRoot":"","sources":["../../src/react/SchemaRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"SchemaRenderer.d.ts","sourceRoot":"","sources":["../../src/react/SchemaRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAoCvD,OAAO,EACL,qBAAqB,IAAI,2BAA2B,EACrD,MAAM,oCAAoC,CAAA;AAa3C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,oCAA8B,CAAA;AAEhE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAG,WAAW,EAAE,CAAA;IACxB,MAAM,CAAC,EAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAapF;AA2BD;;;;2CAI2C;AAC3C,wBAAgB,eAAe,CAC7B,KAAK,EAAG,WAAW,EACnB,KAAK,EAAG,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC/B,KAAK,CAAC,SAAS,CAEjB;AAiYD,MAAM,WAAW,mBAAmB;IAClC;yCACqC;IACrC,QAAQ,EAAI,WAAW,EAAE,CAAA;IACzB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,mBAAmB,kDAW3E"}
|