@dxos/plugin-kanban 0.8.4-main.7996785055 → 0.8.4-main.8baae0fced
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/LICENSE +102 -5
- package/README.md +1 -1
- package/dist/lib/neutral/KanbanArticle-36W7ADME.mjs +133 -0
- package/dist/lib/neutral/KanbanArticle-36W7ADME.mjs.map +7 -0
- package/dist/lib/neutral/KanbanPlugin.mjs +36 -0
- package/dist/lib/neutral/KanbanPlugin.mjs.map +7 -0
- package/dist/lib/neutral/KanbanPlugin.node.mjs +27 -0
- package/dist/lib/neutral/KanbanPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/KanbanPlugin.workerd.mjs +21 -0
- package/dist/lib/neutral/KanbanPlugin.workerd.mjs.map +7 -0
- package/dist/lib/{browser/KanbanViewEditor-FV3FIO46.mjs → neutral/KanbanSettings-G6M47NSK.mjs} +36 -19
- package/dist/lib/neutral/KanbanSettings-G6M47NSK.mjs.map +7 -0
- package/dist/lib/{browser/blueprint-definition-C22Z6VBC.mjs → neutral/blueprint-definition-FHVIEKTQ.mjs} +4 -6
- package/dist/lib/neutral/blueprint-definition-FHVIEKTQ.mjs.map +7 -0
- package/dist/lib/{browser → neutral}/blueprints/index.mjs +1 -1
- package/dist/lib/neutral/capabilities/index.mjs +19 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/chunk-6FPBLOS3.mjs +8 -0
- package/dist/lib/neutral/chunk-6FPBLOS3.mjs.map +7 -0
- package/dist/lib/neutral/chunk-OQ72EEGU.mjs +254 -0
- package/dist/lib/neutral/chunk-OQ72EEGU.mjs.map +7 -0
- package/dist/lib/{browser/chunk-VMHXRZL3.mjs → neutral/chunk-U2JP6GKP.mjs} +2 -1
- package/dist/lib/neutral/chunk-U2JP6GKP.mjs.map +7 -0
- package/dist/lib/{browser/chunk-K257QHQ2.mjs → neutral/chunk-ZTQW5KQS.mjs} +2 -2
- package/dist/lib/neutral/chunk-ZTQW5KQS.mjs.map +7 -0
- package/dist/lib/{browser/KanbanContainer-TOQ5IQUP.mjs → neutral/components/index.mjs} +65 -145
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +11 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/neutral/create-object-DKBSI46K.mjs +40 -0
- package/dist/lib/neutral/create-object-DKBSI46K.mjs.map +7 -0
- package/dist/lib/{browser/delete-card-PGP7VINZ.mjs → neutral/delete-card-356CBACE.mjs} +6 -15
- package/dist/lib/neutral/delete-card-356CBACE.mjs.map +7 -0
- package/dist/lib/{browser/delete-card-field-IOA7VBDK.mjs → neutral/delete-card-field-IRCZL2BR.mjs} +6 -15
- package/dist/lib/neutral/delete-card-field-IRCZL2BR.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-XICG3O5N.mjs → neutral/hooks/index.mjs} +128 -82
- package/dist/lib/neutral/hooks/index.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +34 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +8 -0
- package/dist/lib/neutral/migrations-IWBT35UT.mjs +31 -0
- package/dist/lib/neutral/migrations-IWBT35UT.mjs.map +7 -0
- package/dist/lib/{browser/operation-handler-2HUIIBUB.mjs → neutral/operation-handler-B7IW6MXU.mjs} +3 -7
- package/dist/lib/neutral/operation-handler-B7IW6MXU.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +8 -0
- package/dist/lib/neutral/plugin.mjs +16 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/{browser/react-surface-WE6SXZYG.mjs → neutral/react-surface-ULW7657D.mjs} +23 -31
- package/dist/lib/neutral/react-surface-ULW7657D.mjs.map +7 -0
- package/dist/lib/{browser/restore-card-QP6EDZWT.mjs → neutral/restore-card-P25Y4YSE.mjs} +6 -15
- package/dist/lib/neutral/restore-card-P25Y4YSE.mjs.map +7 -0
- package/dist/lib/{browser/restore-card-field-KDMOEC2M.mjs → neutral/restore-card-field-NHR3R4XI.mjs} +6 -15
- package/dist/lib/neutral/restore-card-field-NHR3R4XI.mjs.map +7 -0
- package/dist/lib/neutral/testing/index.mjs +60 -0
- package/dist/lib/neutral/testing/index.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +44 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/{browser → neutral}/types/index.mjs +7 -3
- package/dist/lib/{browser/undo-mappings-FNXY6NTT.mjs → neutral/undo-mappings-6CHW6BOF.mjs} +10 -15
- package/dist/lib/neutral/undo-mappings-6CHW6BOF.mjs.map +7 -0
- package/dist/types/src/KanbanPlugin.d.ts +1 -0
- package/dist/types/src/KanbanPlugin.d.ts.map +1 -1
- package/dist/types/src/KanbanPlugin.node.d.ts +4 -0
- package/dist/types/src/KanbanPlugin.node.d.ts.map +1 -0
- package/dist/types/src/KanbanPlugin.test.d.ts +2 -0
- package/dist/types/src/KanbanPlugin.test.d.ts.map +1 -0
- package/dist/types/src/KanbanPlugin.workerd.d.ts +4 -0
- package/dist/types/src/KanbanPlugin.workerd.d.ts.map +1 -0
- package/dist/types/src/blueprints/kanban-blueprint.d.ts +2 -2
- package/dist/types/src/blueprints/kanban-blueprint.d.ts.map +1 -1
- package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/create-object.d.ts +11 -0
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +13 -4
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/migrations.d.ts +6 -0
- package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
- package/dist/types/src/capabilities/{operation-handler/operation-handler.d.ts → operation-handler.d.ts} +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
- package/dist/types/src/components/KanbanBoard/KanbanBoard.d.ts +9 -37
- package/dist/types/src/components/KanbanBoard/KanbanBoard.d.ts.map +1 -1
- package/dist/types/src/components/KanbanBoard/KanbanBoard.stories.d.ts +48 -48
- package/dist/types/src/components/KanbanBoard/KanbanBoard.stories.d.ts.map +1 -1
- package/dist/types/src/components/KanbanBoard/KanbanCard.d.ts +2 -3
- package/dist/types/src/components/KanbanBoard/KanbanCard.d.ts.map +1 -1
- package/dist/types/src/components/KanbanBoard/KanbanColumn.d.ts +2 -3
- package/dist/types/src/components/KanbanBoard/KanbanColumn.d.ts.map +1 -1
- package/dist/types/src/components/KanbanBoard/context.d.ts +38 -0
- package/dist/types/src/components/KanbanBoard/context.d.ts.map +1 -0
- package/dist/types/src/containers/KanbanArticle/KanbanArticle.d.ts +6 -0
- package/dist/types/src/containers/KanbanArticle/KanbanArticle.d.ts.map +1 -0
- package/dist/types/src/containers/KanbanArticle/KanbanArticle.stories.d.ts +79 -0
- package/dist/types/src/containers/KanbanArticle/KanbanArticle.stories.d.ts.map +1 -0
- package/dist/types/src/containers/KanbanArticle/index.d.ts +2 -0
- package/dist/types/src/containers/KanbanArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/KanbanSettings/KanbanSettings.d.ts +13 -0
- package/dist/types/src/containers/KanbanSettings/KanbanSettings.d.ts.map +1 -0
- package/dist/types/src/containers/KanbanSettings/index.d.ts +2 -0
- package/dist/types/src/containers/KanbanSettings/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +2 -2
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useEchoChangeCallback.d.ts +1 -1
- package/dist/types/src/hooks/useEchoChangeCallback.d.ts.map +1 -1
- package/dist/types/src/hooks/useItemsProjection.d.ts +10 -0
- package/dist/types/src/hooks/useItemsProjection.d.ts.map +1 -0
- package/dist/types/src/hooks/useKanbanBoardModel.browser.test.d.ts +2 -0
- package/dist/types/src/hooks/useKanbanBoardModel.browser.test.d.ts.map +1 -0
- package/dist/types/src/hooks/useKanbanBoardModel.d.ts +1 -1
- package/dist/types/src/hooks/useKanbanBoardModel.d.ts.map +1 -1
- package/dist/types/src/hooks/useKanbanColumnEventHandler.d.ts +2 -2
- package/dist/types/src/hooks/useKanbanColumnEventHandler.d.ts.map +1 -1
- package/dist/types/src/hooks/useKanbanItemEventHandler.d.ts +2 -2
- package/dist/types/src/hooks/useKanbanItemEventHandler.d.ts.map +1 -1
- package/dist/types/src/hooks/useProjectionModel.d.ts +1 -1
- package/dist/types/src/hooks/useProjectionModel.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +3 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/delete-card-field.d.ts +3 -3
- package/dist/types/src/operations/delete-card-field.d.ts.map +1 -1
- package/dist/types/src/operations/delete-card.d.ts +3 -3
- package/dist/types/src/operations/delete-card.d.ts.map +1 -1
- package/dist/types/src/operations/index.d.ts +1 -2
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/restore-card-field.d.ts +3 -3
- package/dist/types/src/operations/restore-card-field.d.ts.map +1 -1
- package/dist/types/src/operations/restore-card.d.ts +3 -3
- package/dist/types/src/operations/restore-card.d.ts.map +1 -1
- package/dist/types/src/playwright/board-manager.d.ts.map +1 -1
- package/dist/types/src/playwright/playwright.config.d.ts.map +1 -1
- package/dist/types/src/plugin.d.ts +4 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/testing/KanbanCardTileSimple.d.ts +1 -1
- package/dist/types/src/testing/KanbanCardTileSimple.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +48 -48
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Kanban.d.ts +78 -7
- package/dist/types/src/types/Kanban.d.ts.map +1 -1
- package/dist/types/src/{operations/definitions.d.ts → types/KanbanOperation.d.ts} +3 -3
- package/dist/types/src/types/KanbanOperation.d.ts.map +1 -0
- package/dist/types/src/types/constants.d.ts +3 -3
- package/dist/types/src/types/constants.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +2 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/migrations.test.d.ts +2 -0
- package/dist/types/src/types/migrations.test.d.ts.map +1 -0
- package/dist/types/src/types/schema.d.ts +15 -1
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +2 -2
- package/dist/types/src/util/arrangement.d.ts +8 -4
- package/dist/types/src/util/arrangement.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +108 -69
- package/src/KanbanPlugin.node.ts +21 -0
- package/src/KanbanPlugin.test.ts +31 -0
- package/src/KanbanPlugin.tsx +20 -40
- package/src/KanbanPlugin.workerd.ts +18 -0
- package/src/blueprints/kanban-blueprint.ts +2 -3
- package/src/capabilities/{artifact-definition/artifact-definition.ts → artifact-definition.ts} +6 -7
- package/src/capabilities/{blueprint-definition/blueprint-definition.ts → blueprint-definition.ts} +3 -1
- package/src/capabilities/create-object.ts +40 -0
- package/src/capabilities/index.ts +13 -4
- package/src/capabilities/migrations.ts +35 -0
- package/src/capabilities/{operation-handler/operation-handler.ts → operation-handler.ts} +2 -2
- package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +25 -17
- package/src/capabilities/{undo-mappings/undo-mappings.ts → undo-mappings.ts} +4 -4
- package/src/components/KanbanBoard/KanbanBoard.stories.tsx +21 -18
- package/src/components/KanbanBoard/KanbanBoard.tsx +22 -51
- package/src/components/KanbanBoard/KanbanCard.tsx +77 -62
- package/src/components/KanbanBoard/KanbanColumn.tsx +18 -15
- package/src/components/KanbanBoard/context.ts +54 -0
- package/src/containers/{KanbanContainer/KanbanContainer.stories.tsx → KanbanArticle/KanbanArticle.stories.tsx} +45 -33
- package/src/containers/KanbanArticle/KanbanArticle.tsx +178 -0
- package/src/containers/KanbanArticle/index.ts +5 -0
- package/src/containers/KanbanSettings/KanbanSettings.tsx +94 -0
- package/src/containers/KanbanSettings/index.ts +5 -0
- package/src/containers/index.ts +2 -2
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useEchoChangeCallback.ts +3 -3
- package/src/hooks/useItemsProjection.ts +44 -0
- package/src/hooks/{useKanbanBoardModel.test.ts → useKanbanBoardModel.browser.test.ts} +5 -6
- package/src/hooks/useKanbanBoardModel.ts +20 -6
- package/src/hooks/useKanbanColumnEventHandler.ts +1 -1
- package/src/hooks/useKanbanItemEventHandler.ts +1 -1
- package/src/hooks/useProjectionModel.ts +3 -3
- package/src/index.ts +3 -2
- package/src/meta.ts +1 -0
- package/src/operations/delete-card-field.ts +3 -3
- package/src/operations/delete-card.ts +3 -3
- package/src/operations/index.ts +1 -3
- package/src/operations/restore-card-field.ts +3 -3
- package/src/operations/restore-card.ts +3 -3
- package/src/playwright/smoke.spec.ts +3 -3
- package/src/plugin.ts +11 -0
- package/src/testing/KanbanCardTileSimple.tsx +4 -4
- package/src/translations.ts +26 -26
- package/src/types/Kanban.ts +93 -14
- package/src/{operations/definitions.ts → types/KanbanOperation.ts} +6 -2
- package/src/types/index.ts +3 -1
- package/src/types/migrations.test.ts +82 -0
- package/src/types/schema.ts +20 -2
- package/src/types/types.ts +2 -2
- package/src/util/arrangement.test.ts +12 -3
- package/src/util/arrangement.ts +25 -15
- package/dist/lib/browser/KanbanContainer-TOQ5IQUP.mjs.map +0 -7
- package/dist/lib/browser/KanbanViewEditor-FV3FIO46.mjs.map +0 -7
- package/dist/lib/browser/blueprint-definition-C22Z6VBC.mjs.map +0 -7
- package/dist/lib/browser/chunk-3DUKCHGS.mjs +0 -107
- package/dist/lib/browser/chunk-3DUKCHGS.mjs.map +0 -7
- package/dist/lib/browser/chunk-FFXPRP7K.mjs +0 -8
- package/dist/lib/browser/chunk-FFXPRP7K.mjs.map +0 -7
- package/dist/lib/browser/chunk-K257QHQ2.mjs.map +0 -7
- package/dist/lib/browser/chunk-KJBNGSQ2.mjs +0 -385
- package/dist/lib/browser/chunk-KJBNGSQ2.mjs.map +0 -7
- package/dist/lib/browser/chunk-SGS2JHHC.mjs +0 -101
- package/dist/lib/browser/chunk-SGS2JHHC.mjs.map +0 -7
- package/dist/lib/browser/chunk-VMHXRZL3.mjs.map +0 -7
- package/dist/lib/browser/delete-card-PGP7VINZ.mjs.map +0 -7
- package/dist/lib/browser/delete-card-field-IOA7VBDK.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -122
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/operation-handler-2HUIIBUB.mjs.map +0 -7
- package/dist/lib/browser/operations/index.mjs +0 -13
- package/dist/lib/browser/react-surface-WE6SXZYG.mjs.map +0 -7
- package/dist/lib/browser/restore-card-QP6EDZWT.mjs.map +0 -7
- package/dist/lib/browser/restore-card-field-KDMOEC2M.mjs.map +0 -7
- package/dist/lib/browser/undo-mappings-FNXY6NTT.mjs.map +0 -7
- package/dist/lib/node-esm/KanbanContainer-V4NNNXAN.mjs +0 -324
- package/dist/lib/node-esm/KanbanContainer-V4NNNXAN.mjs.map +0 -7
- package/dist/lib/node-esm/KanbanViewEditor-JBRGWUR6.mjs +0 -67
- package/dist/lib/node-esm/KanbanViewEditor-JBRGWUR6.mjs.map +0 -7
- package/dist/lib/node-esm/blueprint-definition-VR5JBUKE.mjs +0 -18
- package/dist/lib/node-esm/blueprint-definition-VR5JBUKE.mjs.map +0 -7
- package/dist/lib/node-esm/blueprints/index.mjs +0 -9
- package/dist/lib/node-esm/chunk-3BDNUQXA.mjs +0 -108
- package/dist/lib/node-esm/chunk-3BDNUQXA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-D2OSWM2N.mjs +0 -10
- package/dist/lib/node-esm/chunk-D2OSWM2N.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-H2OOPYT7.mjs +0 -28
- package/dist/lib/node-esm/chunk-H2OOPYT7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PITNXJLT.mjs +0 -23
- package/dist/lib/node-esm/chunk-PITNXJLT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XICG3O5N.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XS6P7H5Q.mjs +0 -102
- package/dist/lib/node-esm/chunk-XS6P7H5Q.mjs.map +0 -7
- package/dist/lib/node-esm/delete-card-MA77QA6T.mjs +0 -34
- package/dist/lib/node-esm/delete-card-MA77QA6T.mjs.map +0 -7
- package/dist/lib/node-esm/delete-card-field-GD6WTWSQ.mjs +0 -52
- package/dist/lib/node-esm/delete-card-field-GD6WTWSQ.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -123
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/operation-handler-75U3UBGX.mjs +0 -18
- package/dist/lib/node-esm/operation-handler-75U3UBGX.mjs.map +0 -7
- package/dist/lib/node-esm/operations/index.mjs +0 -14
- package/dist/lib/node-esm/react-surface-B7HHAGQG.mjs +0 -102
- package/dist/lib/node-esm/react-surface-B7HHAGQG.mjs.map +0 -7
- package/dist/lib/node-esm/restore-card-VL6DLCIA.mjs +0 -31
- package/dist/lib/node-esm/restore-card-VL6DLCIA.mjs.map +0 -7
- package/dist/lib/node-esm/restore-card-field-WRMO6VQX.mjs +0 -50
- package/dist/lib/node-esm/restore-card-field-WRMO6VQX.mjs.map +0 -7
- package/dist/lib/node-esm/types/index.mjs +0 -19
- package/dist/lib/node-esm/types/index.mjs.map +0 -7
- package/dist/lib/node-esm/undo-mappings-G52XWAE4.mjs +0 -48
- package/dist/lib/node-esm/undo-mappings-G52XWAE4.mjs.map +0 -7
- package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/artifact-definition/index.d.ts +0 -3
- package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +0 -6
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -3
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-handler/index.d.ts +0 -4
- package/dist/types/src/capabilities/operation-handler/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/undo-mappings/index.d.ts +0 -3
- package/dist/types/src/capabilities/undo-mappings/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/undo-mappings/undo-mappings.d.ts.map +0 -1
- package/dist/types/src/containers/KanbanContainer/KanbanContainer.d.ts +0 -6
- package/dist/types/src/containers/KanbanContainer/KanbanContainer.d.ts.map +0 -1
- package/dist/types/src/containers/KanbanContainer/KanbanContainer.stories.d.ts +0 -79
- package/dist/types/src/containers/KanbanContainer/KanbanContainer.stories.d.ts.map +0 -1
- package/dist/types/src/containers/KanbanContainer/index.d.ts +0 -3
- package/dist/types/src/containers/KanbanContainer/index.d.ts.map +0 -1
- package/dist/types/src/containers/KanbanViewEditor/KanbanViewEditor.d.ts +0 -6
- package/dist/types/src/containers/KanbanViewEditor/KanbanViewEditor.d.ts.map +0 -1
- package/dist/types/src/containers/KanbanViewEditor/index.d.ts +0 -3
- package/dist/types/src/containers/KanbanViewEditor/index.d.ts.map +0 -1
- package/dist/types/src/hooks/useKanbanBoardModel.test.d.ts +0 -2
- package/dist/types/src/hooks/useKanbanBoardModel.test.d.ts.map +0 -1
- package/dist/types/src/operations/definitions.d.ts.map +0 -1
- package/src/capabilities/artifact-definition/index.ts +0 -7
- package/src/capabilities/blueprint-definition/index.ts +0 -7
- package/src/capabilities/operation-handler/index.ts +0 -9
- package/src/capabilities/react-surface/index.ts +0 -7
- package/src/capabilities/undo-mappings/index.ts +0 -7
- package/src/containers/KanbanContainer/KanbanContainer.tsx +0 -96
- package/src/containers/KanbanContainer/index.ts +0 -7
- package/src/containers/KanbanViewEditor/KanbanViewEditor.tsx +0 -63
- package/src/containers/KanbanViewEditor/index.ts +0 -7
- /package/dist/lib/{browser → neutral}/blueprints/index.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
- /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs.map +0 -0
- /package/dist/lib/{browser/operations → neutral}/index.mjs.map +0 -0
- /package/dist/lib/{browser/types/index.mjs.map → neutral/meta.mjs.map} +0 -0
- /package/dist/lib/{node-esm/blueprints → neutral/operations}/index.mjs.map +0 -0
- /package/dist/lib/{node-esm/operations → neutral/types}/index.mjs.map +0 -0
- /package/dist/types/src/capabilities/{artifact-definition/artifact-definition.d.ts → artifact-definition.d.ts} +0 -0
- /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
- /package/dist/types/src/capabilities/{undo-mappings/undo-mappings.d.ts → undo-mappings.d.ts} +0 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__export
|
|
3
|
+
} from "./chunk-J5LGTIGS.mjs";
|
|
4
|
+
|
|
5
|
+
// src/types/constants.ts
|
|
6
|
+
var UNCATEGORIZED_VALUE = "__uncategorized__";
|
|
7
|
+
var UNCATEGORIZED_ATTRIBUTES = {
|
|
8
|
+
title: "Uncategorized",
|
|
9
|
+
color: "neutral"
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
// src/types/schema.ts
|
|
13
|
+
import * as Schema from "effect/Schema";
|
|
14
|
+
import { TypeInputOptionsAnnotation } from "@dxos/plugin-space";
|
|
15
|
+
var PivotColumnAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/plugin-kanban/annotation/PivotColumn");
|
|
16
|
+
var KanbanSettingsSchema = Schema.Struct({
|
|
17
|
+
hideUncategorized: Schema.Boolean.annotations({
|
|
18
|
+
title: "Hide uncategorized column",
|
|
19
|
+
description: "When enabled, items without a pivot value won\u2019t be shown as a column."
|
|
20
|
+
}).pipe(Schema.optional)
|
|
21
|
+
});
|
|
22
|
+
var KanbanViewSettingsSchema = Schema.Struct({
|
|
23
|
+
columnFieldId: Schema.String.annotations({
|
|
24
|
+
title: "Column field"
|
|
25
|
+
}),
|
|
26
|
+
...KanbanSettingsSchema.fields
|
|
27
|
+
});
|
|
28
|
+
var CreateKanbanSchema = Schema.Struct({
|
|
29
|
+
name: Schema.optional(Schema.String),
|
|
30
|
+
// TODO(wittjosiah): This should be a query input instead.
|
|
31
|
+
typename: Schema.String.pipe(Schema.annotations({
|
|
32
|
+
title: "Select card type"
|
|
33
|
+
}), TypeInputOptionsAnnotation.set({
|
|
34
|
+
location: [
|
|
35
|
+
"database",
|
|
36
|
+
"runtime"
|
|
37
|
+
],
|
|
38
|
+
kind: [
|
|
39
|
+
"user"
|
|
40
|
+
]
|
|
41
|
+
}), Schema.optional),
|
|
42
|
+
initialPivotColumn: Schema.optional(Schema.String.annotations({
|
|
43
|
+
[PivotColumnAnnotationId]: true,
|
|
44
|
+
title: "Pivot column"
|
|
45
|
+
}))
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// src/types/Kanban.ts
|
|
49
|
+
var Kanban_exports = {};
|
|
50
|
+
__export(Kanban_exports, {
|
|
51
|
+
Arrangement: () => Arrangement,
|
|
52
|
+
Kanban: () => Kanban,
|
|
53
|
+
KanbanItemsSpec: () => KanbanItemsSpec,
|
|
54
|
+
KanbanSpec: () => KanbanSpec,
|
|
55
|
+
KanbanV1: () => KanbanV1,
|
|
56
|
+
KanbanViewSpec: () => KanbanViewSpec,
|
|
57
|
+
isKanbanItems: () => isKanbanItems,
|
|
58
|
+
isKanbanView: () => isKanbanView,
|
|
59
|
+
make: () => make,
|
|
60
|
+
makeItems: () => makeItems
|
|
61
|
+
});
|
|
62
|
+
import * as Schema2 from "effect/Schema";
|
|
63
|
+
import { Annotation, Obj, Ref, Type, View } from "@dxos/echo";
|
|
64
|
+
import { FormInputAnnotation, LabelAnnotation } from "@dxos/echo/internal";
|
|
65
|
+
import { ViewAnnotation } from "@dxos/schema";
|
|
66
|
+
var ArrangementColumnEntry = Schema2.Struct({
|
|
67
|
+
ids: Schema2.Array(Obj.ID),
|
|
68
|
+
hidden: Schema2.Boolean.pipe(Schema2.optional)
|
|
69
|
+
});
|
|
70
|
+
var ArrangementColumns = Schema2.Record({
|
|
71
|
+
key: Schema2.String,
|
|
72
|
+
value: ArrangementColumnEntry
|
|
73
|
+
}).pipe(FormInputAnnotation.set(false));
|
|
74
|
+
var Arrangement = Schema2.Struct({
|
|
75
|
+
order: Schema2.Array(Schema2.String).pipe(FormInputAnnotation.set(false)),
|
|
76
|
+
columns: ArrangementColumns
|
|
77
|
+
}).pipe(FormInputAnnotation.set(false));
|
|
78
|
+
var KanbanV1 = Schema2.Struct({
|
|
79
|
+
name: Schema2.String.pipe(Schema2.optional),
|
|
80
|
+
view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false)),
|
|
81
|
+
arrangement: Arrangement
|
|
82
|
+
}).pipe(Type.object({
|
|
83
|
+
typename: "org.dxos.type.kanban",
|
|
84
|
+
version: "0.1.0"
|
|
85
|
+
}));
|
|
86
|
+
var KanbanViewSpec = Schema2.Struct({
|
|
87
|
+
kind: Schema2.Literal("view").pipe(FormInputAnnotation.set(false)),
|
|
88
|
+
view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false))
|
|
89
|
+
});
|
|
90
|
+
var KanbanItemsSpec = Schema2.Struct({
|
|
91
|
+
kind: Schema2.Literal("items").pipe(FormInputAnnotation.set(false)),
|
|
92
|
+
/** Property path on each item that drives column membership (e.g. `'listName'`). */
|
|
93
|
+
pivotField: Schema2.String,
|
|
94
|
+
/** Items owned directly by the kanban. */
|
|
95
|
+
items: Schema2.Array(Ref.Ref(Obj.Unknown)).pipe(FormInputAnnotation.set(false))
|
|
96
|
+
});
|
|
97
|
+
var KanbanSpec = Schema2.Union(KanbanViewSpec, KanbanItemsSpec);
|
|
98
|
+
var Kanban = Schema2.Struct({
|
|
99
|
+
name: Schema2.String.pipe(Schema2.optional),
|
|
100
|
+
arrangement: Arrangement,
|
|
101
|
+
/** How this kanban sources its items. Discriminated by `spec.kind`. */
|
|
102
|
+
spec: KanbanSpec
|
|
103
|
+
}).pipe(Type.object({
|
|
104
|
+
typename: "org.dxos.type.kanban",
|
|
105
|
+
version: "0.2.0"
|
|
106
|
+
}), LabelAnnotation.set([
|
|
107
|
+
"name"
|
|
108
|
+
]), ViewAnnotation.set([
|
|
109
|
+
"spec",
|
|
110
|
+
"view"
|
|
111
|
+
]), Annotation.IconAnnotation.set({
|
|
112
|
+
icon: "ph--kanban--regular",
|
|
113
|
+
hue: "green"
|
|
114
|
+
}));
|
|
115
|
+
var isKanbanView = (kanban) => kanban.spec.kind === "view";
|
|
116
|
+
var isKanbanItems = (kanban) => kanban.spec.kind === "items";
|
|
117
|
+
var make = (props) => {
|
|
118
|
+
const { name, view, arrangement } = props;
|
|
119
|
+
const order = arrangement?.order ?? [];
|
|
120
|
+
const columns = arrangement?.columns ?? {};
|
|
121
|
+
return Obj.make(Kanban, {
|
|
122
|
+
name,
|
|
123
|
+
arrangement: {
|
|
124
|
+
order,
|
|
125
|
+
columns
|
|
126
|
+
},
|
|
127
|
+
spec: {
|
|
128
|
+
kind: "view",
|
|
129
|
+
view: Ref.make(view)
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
var makeItems = (props) => {
|
|
134
|
+
const { name, arrangement, pivotField, items = [] } = props;
|
|
135
|
+
const order = arrangement?.order ?? [];
|
|
136
|
+
const columns = arrangement?.columns ?? {};
|
|
137
|
+
return Obj.make(Kanban, {
|
|
138
|
+
name,
|
|
139
|
+
arrangement: {
|
|
140
|
+
order,
|
|
141
|
+
columns
|
|
142
|
+
},
|
|
143
|
+
spec: {
|
|
144
|
+
kind: "items",
|
|
145
|
+
pivotField,
|
|
146
|
+
items
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
// src/types/KanbanOperation.ts
|
|
152
|
+
var KanbanOperation_exports = {};
|
|
153
|
+
__export(KanbanOperation_exports, {
|
|
154
|
+
DeleteCard: () => DeleteCard,
|
|
155
|
+
DeleteCardField: () => DeleteCardField,
|
|
156
|
+
DeleteCardFieldOutput: () => DeleteCardFieldOutput,
|
|
157
|
+
DeleteCardOutput: () => DeleteCardOutput,
|
|
158
|
+
RestoreCard: () => RestoreCard,
|
|
159
|
+
RestoreCardField: () => RestoreCardField
|
|
160
|
+
});
|
|
161
|
+
import * as Schema3 from "effect/Schema";
|
|
162
|
+
import { Capability } from "@dxos/app-framework";
|
|
163
|
+
import { Operation } from "@dxos/compute";
|
|
164
|
+
import { View as View2 } from "@dxos/echo";
|
|
165
|
+
import { meta } from "#meta";
|
|
166
|
+
var KANBAN_OPERATION = `${meta.id}.operation`;
|
|
167
|
+
var DeleteCardFieldOutput = Schema3.Struct({
|
|
168
|
+
field: View2.FieldSchema.annotations({
|
|
169
|
+
description: "The deleted field schema."
|
|
170
|
+
}),
|
|
171
|
+
props: Schema3.Any.annotations({
|
|
172
|
+
description: "The deleted field properties."
|
|
173
|
+
}),
|
|
174
|
+
index: Schema3.Number.annotations({
|
|
175
|
+
description: "The index the field was at."
|
|
176
|
+
})
|
|
177
|
+
});
|
|
178
|
+
var DeleteCardField = Operation.make({
|
|
179
|
+
meta: {
|
|
180
|
+
key: `${KANBAN_OPERATION}.delete-card-field`,
|
|
181
|
+
name: "Delete Card Field"
|
|
182
|
+
},
|
|
183
|
+
services: [
|
|
184
|
+
Capability.Service
|
|
185
|
+
],
|
|
186
|
+
input: Schema3.Struct({
|
|
187
|
+
view: View2.View,
|
|
188
|
+
fieldId: Schema3.String
|
|
189
|
+
}),
|
|
190
|
+
output: DeleteCardFieldOutput
|
|
191
|
+
});
|
|
192
|
+
var DeleteCardOutput = Schema3.Struct({
|
|
193
|
+
card: Schema3.Any.annotations({
|
|
194
|
+
description: "The deleted card."
|
|
195
|
+
})
|
|
196
|
+
});
|
|
197
|
+
var DeleteCard = Operation.make({
|
|
198
|
+
meta: {
|
|
199
|
+
key: `${KANBAN_OPERATION}.delete-card`,
|
|
200
|
+
name: "Delete Card"
|
|
201
|
+
},
|
|
202
|
+
input: Schema3.Struct({
|
|
203
|
+
card: Schema3.Any
|
|
204
|
+
}),
|
|
205
|
+
output: DeleteCardOutput
|
|
206
|
+
});
|
|
207
|
+
var RestoreCardField = Operation.make({
|
|
208
|
+
meta: {
|
|
209
|
+
key: `${KANBAN_OPERATION}.restore-card-field`,
|
|
210
|
+
name: "Restore Card Field"
|
|
211
|
+
},
|
|
212
|
+
services: [
|
|
213
|
+
Capability.Service
|
|
214
|
+
],
|
|
215
|
+
input: Schema3.Struct({
|
|
216
|
+
view: View2.View.annotations({
|
|
217
|
+
description: "The view to restore the field to."
|
|
218
|
+
}),
|
|
219
|
+
field: View2.FieldSchema.annotations({
|
|
220
|
+
description: "The field schema to restore."
|
|
221
|
+
}),
|
|
222
|
+
props: Schema3.Any.annotations({
|
|
223
|
+
description: "The field properties to restore."
|
|
224
|
+
}),
|
|
225
|
+
index: Schema3.Number.annotations({
|
|
226
|
+
description: "The index to restore the field at."
|
|
227
|
+
})
|
|
228
|
+
}),
|
|
229
|
+
output: Schema3.Void
|
|
230
|
+
});
|
|
231
|
+
var RestoreCard = Operation.make({
|
|
232
|
+
meta: {
|
|
233
|
+
key: `${KANBAN_OPERATION}.restore-card`,
|
|
234
|
+
name: "Restore Card"
|
|
235
|
+
},
|
|
236
|
+
input: Schema3.Struct({
|
|
237
|
+
card: Schema3.Any.annotations({
|
|
238
|
+
description: "The card to restore."
|
|
239
|
+
})
|
|
240
|
+
}),
|
|
241
|
+
output: Schema3.Void
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
export {
|
|
245
|
+
UNCATEGORIZED_VALUE,
|
|
246
|
+
UNCATEGORIZED_ATTRIBUTES,
|
|
247
|
+
PivotColumnAnnotationId,
|
|
248
|
+
KanbanSettingsSchema,
|
|
249
|
+
KanbanViewSettingsSchema,
|
|
250
|
+
CreateKanbanSchema,
|
|
251
|
+
Kanban_exports,
|
|
252
|
+
KanbanOperation_exports
|
|
253
|
+
};
|
|
254
|
+
//# sourceMappingURL=chunk-OQ72EEGU.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types/constants.ts", "../../../src/types/schema.ts", "../../../src/types/Kanban.ts", "../../../src/types/KanbanOperation.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nexport const UNCATEGORIZED_VALUE = '__uncategorized__' as const;\nexport const UNCATEGORIZED_ATTRIBUTES = {\n title: 'Uncategorized',\n color: 'neutral',\n} as const;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { TypeInputOptionsAnnotation } from '@dxos/plugin-space';\n\n/**\n * Kanban data model.\n * A Kanban board is a collection of columns, each of which contains a collection of items.\n * The layout of columns and items is controlled by models.\n * The underlying data model may be represented by direct object relationships\n * (e.g., a column object containing an array of ordered items) or projections constructed\n * by the model (e.g., a query of items based on metadata within a column object).\n */\n\n// TODO(wittjosiah): Factor out?\nexport const PivotColumnAnnotationId = Symbol.for('@dxos/plugin-kanban/annotation/PivotColumn');\n\n/**\n * Settings common to every Kanban (view or items). Rendered as form fields\n * by `KanbanSettings`.\n */\nexport const KanbanSettingsSchema = Schema.Struct({\n hideUncategorized: Schema.Boolean.annotations({\n title: 'Hide uncategorized column',\n description: 'When enabled, items without a pivot value won’t be shown as a column.',\n }).pipe(Schema.optional),\n});\n\n/**\n * Settings for view-variant Kanbans only. Spreads {@link KanbanSettingsSchema}'s\n * fields and adds a column-field picker that binds the View’s pivot field.\n * Items-variant kanbans use a hardcoded `spec.pivotField` and don’t expose\n * this control.\n */\nexport const KanbanViewSettingsSchema = Schema.Struct({\n columnFieldId: Schema.String.annotations({\n title: 'Column field',\n }),\n ...KanbanSettingsSchema.fields,\n});\n\nexport const CreateKanbanSchema = Schema.Struct({\n name: Schema.optional(Schema.String),\n // TODO(wittjosiah): This should be a query input instead.\n typename: Schema.String.pipe(\n Schema.annotations({ title: 'Select card type' }),\n TypeInputOptionsAnnotation.set({\n location: ['database', 'runtime'],\n kind: ['user'],\n }),\n Schema.optional,\n ),\n initialPivotColumn: Schema.optional(\n Schema.String.annotations({\n [PivotColumnAnnotationId]: true,\n title: 'Pivot column',\n }),\n ),\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Annotation, Obj, Ref, Type, View } from '@dxos/echo';\nimport { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/internal';\nimport { ViewAnnotation } from '@dxos/schema';\n\n/**\n * Per-column entry: ordered card ids plus an optional `hidden` flag that\n * removes the column from the rendered board (and from the model's column\n * list). Today only the uncategorized column is exposed in settings, but\n * the data structure supports per-column hiding generally.\n */\nconst ArrangementColumnEntry = Schema.Struct({\n ids: Schema.Array(Obj.ID),\n hidden: Schema.Boolean.pipe(Schema.optional),\n});\n\n/** Keyed by columnValue. */\nconst ArrangementColumns = Schema.Record({\n key: Schema.String,\n value: ArrangementColumnEntry,\n}).pipe(FormInputAnnotation.set(false));\n\n/** Column order and per-column card ids. */\nexport const Arrangement = Schema.Struct({\n order: Schema.Array(Schema.String).pipe(FormInputAnnotation.set(false)),\n columns: ArrangementColumns,\n}).pipe(FormInputAnnotation.set(false));\n\nexport type Arrangement = Schema.Schema.Type<typeof Arrangement>;\n\n/**\n * v1: pre-existing Kanban shape. Retained as the source for the v1→v2 migration.\n */\nexport const KanbanV1 = Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false)),\n arrangement: Arrangement,\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.kanban',\n version: '0.1.0',\n }),\n);\n\n//\n// v2 — `spec` is a discriminated union of how items are sourced.\n//\n// Mirrors the canonical DXOS pattern (see `Trigger.Spec` in\n// `@dxos/functions/src/types/Trigger.ts` and `Sequence.Source` in\n// `@dxos/plugin-zen`): the `Type.object` schema is a flat `Schema.Struct`,\n// and the discriminated union lives one level down as a single field whose\n// variants are tagged with a `kind` literal.\n//\n\n/** View-variant: items come from running the View's query (the original behaviour). */\nexport const KanbanViewSpec = Schema.Struct({\n kind: Schema.Literal('view').pipe(FormInputAnnotation.set(false)),\n view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false)),\n});\nexport type KanbanViewSpec = Schema.Schema.Type<typeof KanbanViewSpec>;\n\n/** Items-variant: kanban owns its items as an explicit ref array (used by externally-synced kanbans). */\nexport const KanbanItemsSpec = Schema.Struct({\n kind: Schema.Literal('items').pipe(FormInputAnnotation.set(false)),\n /** Property path on each item that drives column membership (e.g. `'listName'`). */\n pivotField: Schema.String,\n /** Items owned directly by the kanban. */\n items: Schema.Array(Ref.Ref(Obj.Unknown)).pipe(FormInputAnnotation.set(false)),\n});\nexport type KanbanItemsSpec = Schema.Schema.Type<typeof KanbanItemsSpec>;\n\n/** Discriminated union of source specs. Distinguished by `kind`. */\nexport const KanbanSpec = Schema.Union(KanbanViewSpec, KanbanItemsSpec);\nexport type KanbanSpec = Schema.Schema.Type<typeof KanbanSpec>;\n\nexport const Kanban = Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n arrangement: Arrangement,\n /** How this kanban sources its items. Discriminated by `spec.kind`. */\n spec: KanbanSpec,\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.kanban',\n version: '0.2.0',\n }),\n LabelAnnotation.set(['name']),\n ViewAnnotation.set(['spec', 'view']),\n Annotation.IconAnnotation.set({\n icon: 'ph--kanban--regular',\n hue: 'green',\n }),\n);\n\n/** Instance type; narrow on `kanban.spec.kind` (or use the guards below). */\nexport interface Kanban extends Schema.Schema.Type<typeof Kanban> {}\n\n/** Narrowed view-variant kanban. */\nexport type KanbanView = Kanban & { spec: KanbanViewSpec };\n\n/** Narrowed items-variant kanban. */\nexport type KanbanItems = Kanban & { spec: KanbanItemsSpec };\n\nexport const isKanbanView = (kanban: Kanban): kanban is KanbanView => kanban.spec.kind === 'view';\nexport const isKanbanItems = (kanban: Kanban): kanban is KanbanItems => kanban.spec.kind === 'items';\n\ntype MakeViewProps = {\n name?: string;\n view: View.View;\n arrangement?: Arrangement;\n};\n\n/**\n * Make a view-variant kanban (items sourced via the View's query).\n */\nexport const make = (props: MakeViewProps): Kanban => {\n const { name, view, arrangement } = props;\n const order = arrangement?.order ?? [];\n const columns = arrangement?.columns ?? {};\n return Obj.make(Kanban, {\n name,\n arrangement: { order, columns },\n spec: { kind: 'view' as const, view: Ref.make(view) },\n });\n};\n\ntype MakeItemsProps = {\n name?: string;\n arrangement?: Arrangement;\n pivotField: string;\n items?: ReadonlyArray<Ref.Ref<Obj.Unknown>>;\n};\n\n/**\n * Make an items-variant kanban (items list owned by the kanban itself, e.g. populated by a sync integration).\n */\nexport const makeItems = (props: MakeItemsProps): Kanban => {\n const { name, arrangement, pivotField, items = [] } = props;\n const order = arrangement?.order ?? [];\n const columns = arrangement?.columns ?? {};\n return Obj.make(Kanban, {\n name,\n arrangement: { order, columns },\n spec: { kind: 'items' as const, pivotField, items },\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/compute';\nimport { View } from '@dxos/echo';\n\nimport { meta } from '#meta';\n\nconst KANBAN_OPERATION = `${meta.id}.operation`;\n\nexport const DeleteCardFieldOutput = Schema.Struct({\n field: View.FieldSchema.annotations({ description: 'The deleted field schema.' }),\n props: Schema.Any.annotations({ description: 'The deleted field properties.' }),\n index: Schema.Number.annotations({ description: 'The index the field was at.' }),\n});\n\nexport type DeleteCardFieldOutput = Schema.Schema.Type<typeof DeleteCardFieldOutput>;\n\nexport const DeleteCardField = Operation.make({\n meta: { key: `${KANBAN_OPERATION}.delete-card-field`, name: 'Delete Card Field' },\n services: [Capability.Service],\n input: Schema.Struct({\n view: View.View,\n fieldId: Schema.String,\n }),\n output: DeleteCardFieldOutput,\n});\n\nexport const DeleteCardOutput = Schema.Struct({\n card: Schema.Any.annotations({ description: 'The deleted card.' }),\n});\n\nexport type DeleteCardOutput = Schema.Schema.Type<typeof DeleteCardOutput>;\n\nexport const DeleteCard = Operation.make({\n meta: { key: `${KANBAN_OPERATION}.delete-card`, name: 'Delete Card' },\n input: Schema.Struct({\n card: Schema.Any,\n }),\n output: DeleteCardOutput,\n});\n\nexport const RestoreCardField = Operation.make({\n meta: { key: `${KANBAN_OPERATION}.restore-card-field`, name: 'Restore Card Field' },\n services: [Capability.Service],\n input: Schema.Struct({\n view: View.View.annotations({ description: 'The view to restore the field to.' }),\n field: View.FieldSchema.annotations({ description: 'The field schema to restore.' }),\n props: Schema.Any.annotations({ description: 'The field properties to restore.' }),\n index: Schema.Number.annotations({ description: 'The index to restore the field at.' }),\n }),\n output: Schema.Void,\n});\n\nexport const RestoreCard = Operation.make({\n meta: { key: `${KANBAN_OPERATION}.restore-card`, name: 'Restore Card' },\n input: Schema.Struct({\n card: Schema.Any.annotations({ description: 'The card to restore.' }),\n }),\n output: Schema.Void,\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["UNCATEGORIZED_VALUE", "UNCATEGORIZED_ATTRIBUTES", "title", "color", "Schema", "TypeInputOptionsAnnotation", "PivotColumnAnnotationId", "Symbol", "for", "KanbanSettingsSchema", "Struct", "hideUncategorized", "Boolean", "annotations", "title", "description", "pipe", "optional", "KanbanViewSettingsSchema", "columnFieldId", "String", "fields", "CreateKanbanSchema", "name", "typename", "set", "location", "kind", "initialPivotColumn", "Schema", "Annotation", "Obj", "Ref", "Type", "View", "FormInputAnnotation", "LabelAnnotation", "ViewAnnotation", "ArrangementColumnEntry", "Struct", "ids", "Array", "ID", "hidden", "Boolean", "pipe", "optional", "ArrangementColumns", "Record", "key", "String", "value", "set", "Arrangement", "order", "columns", "KanbanV1", "name", "view", "arrangement", "object", "typename", "version", "KanbanViewSpec", "kind", "Literal", "KanbanItemsSpec", "pivotField", "items", "Unknown", "KanbanSpec", "Union", "Kanban", "spec", "IconAnnotation", "icon", "hue", "isKanbanView", "kanban", "isKanbanItems", "make", "props", "makeItems", "Schema", "Capability", "Operation", "View", "meta", "KANBAN_OPERATION", "id", "DeleteCardFieldOutput", "Struct", "field", "FieldSchema", "annotations", "description", "props", "Any", "index", "Number", "DeleteCardField", "make", "key", "name", "services", "Service", "input", "view", "fieldId", "String", "output", "DeleteCardOutput", "card", "DeleteCard", "RestoreCardField", "Void", "RestoreCard"]
|
|
7
|
+
}
|
|
@@ -3,6 +3,7 @@ import { trim } from "@dxos/util";
|
|
|
3
3
|
var meta = {
|
|
4
4
|
id: "org.dxos.plugin.kanban",
|
|
5
5
|
name: "Kanban",
|
|
6
|
+
author: "DXOS",
|
|
6
7
|
description: trim`
|
|
7
8
|
Visual project management using customizable kanban boards to track workflow progress.
|
|
8
9
|
Organize table data into columns, drag and drop items between stages, and trigger automations based on status changes.
|
|
@@ -18,4 +19,4 @@ var meta = {
|
|
|
18
19
|
export {
|
|
19
20
|
meta
|
|
20
21
|
};
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-U2JP6GKP.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/meta.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.kanban',\n name: 'Kanban',\n author: 'DXOS',\n description: trim`\n Visual project management using customizable kanban boards to track workflow progress.\n Organize table data into columns, drag and drop items between stages, and trigger automations based on status changes.\n `,\n icon: 'ph--kanban--regular',\n iconHue: 'green',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-kanban',\n screenshots: ['https://dxos.network/plugin-details-kanban-dark.png'],\n};\n"],
|
|
5
|
+
"mappings": ";AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,QAAQ;EACRC,aAAaL;;;;EAIbM,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,aAAa;IAAC;;AAChB;",
|
|
6
|
+
"names": ["trim", "meta", "id", "name", "author", "description", "icon", "iconHue", "source", "screenshots"]
|
|
7
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/blueprints/kanban-blueprint.ts
|
|
2
|
-
import { Blueprint, Template } from "@dxos/
|
|
2
|
+
import { Blueprint, Template } from "@dxos/compute";
|
|
3
3
|
import { trim } from "@dxos/util";
|
|
4
4
|
var BLUEPRINT_KEY = "org.dxos.blueprint.kanban";
|
|
5
5
|
var make = () => Blueprint.make({
|
|
@@ -23,4 +23,4 @@ var kanban_blueprint_default = blueprint;
|
|
|
23
23
|
export {
|
|
24
24
|
kanban_blueprint_default
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=chunk-
|
|
26
|
+
//# sourceMappingURL=chunk-ZTQW5KQS.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/blueprints/kanban-blueprint.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Blueprint, Template } from '@dxos/compute';\nimport { trim } from '@dxos/util';\n\nconst BLUEPRINT_KEY = 'org.dxos.blueprint.kanban';\n\nconst make = () =>\n Blueprint.make({\n key: BLUEPRINT_KEY,\n name: 'Kanban',\n tools: Blueprint.toolDefinitions({ tools: [] }),\n instructions: Template.make({\n source: trim`\n You can create and update kanban boards to show data in sorted columns defined by schema.\n `,\n }),\n });\n\nconst blueprint: Blueprint.Definition = {\n key: BLUEPRINT_KEY,\n make,\n};\n\nexport default blueprint;\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,WAAWC,gBAAgB;AACpC,SAASC,YAAY;AAErB,IAAMC,gBAAgB;AAEtB,IAAMC,OAAO,MACXJ,UAAUI,KAAK;EACbC,KAAKF;EACLG,MAAM;EACNC,OAAOP,UAAUQ,gBAAgB;IAAED,OAAO,CAAA;EAAG,CAAA;EAC7CE,cAAcR,SAASG,KAAK;IAC1BM,QAAQR;;;EAGV,CAAA;AACF,CAAA;AAEF,IAAMS,YAAkC;EACtCN,KAAKF;EACLC;AACF;AAEA,IAAA,2BAAeO;",
|
|
6
|
+
"names": ["Blueprint", "Template", "trim", "BLUEPRINT_KEY", "make", "key", "name", "tools", "toolDefinitions", "instructions", "source", "blueprint"]
|
|
7
|
+
}
|
|
@@ -1,56 +1,52 @@
|
|
|
1
|
-
import
|
|
2
|
-
useEchoChangeCallback,
|
|
3
|
-
useKanbanBoardModel,
|
|
4
|
-
useKanbanColumnEventHandler,
|
|
5
|
-
useKanbanItemEventHandler,
|
|
6
|
-
useProjectionModel
|
|
7
|
-
} from "./chunk-KJBNGSQ2.mjs";
|
|
8
|
-
import "./chunk-FFXPRP7K.mjs";
|
|
9
|
-
import {
|
|
10
|
-
UNCATEGORIZED_ATTRIBUTES,
|
|
11
|
-
UNCATEGORIZED_VALUE
|
|
12
|
-
} from "./chunk-SGS2JHHC.mjs";
|
|
13
|
-
import {
|
|
14
|
-
definitions_exports
|
|
15
|
-
} from "./chunk-3DUKCHGS.mjs";
|
|
16
|
-
import {
|
|
17
|
-
meta
|
|
18
|
-
} from "./chunk-VMHXRZL3.mjs";
|
|
19
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
20
|
-
|
|
21
|
-
// src/containers/KanbanContainer/KanbanContainer.tsx
|
|
22
|
-
import { RegistryContext as RegistryContext2 } from "@effect-atom/atom-react";
|
|
23
|
-
import React4, { useCallback as useCallback3, useContext as useContext2, useMemo as useMemo3 } from "react";
|
|
24
|
-
import { useCapabilities, useOperationInvoker } from "@dxos/app-framework/ui";
|
|
25
|
-
import { AppCapabilities } from "@dxos/app-toolkit";
|
|
26
|
-
import { Filter, Obj as Obj3, Query, Type } from "@dxos/echo";
|
|
27
|
-
import { AtomQuery } from "@dxos/echo-atom";
|
|
28
|
-
import { useObject, useSchema } from "@dxos/react-client/echo";
|
|
29
|
-
import { Panel, Toolbar as Toolbar2 } from "@dxos/react-ui";
|
|
30
|
-
import { getTagFromQuery, getTypenameFromQuery } from "@dxos/schema";
|
|
1
|
+
import "../chunk-J5LGTIGS.mjs";
|
|
31
2
|
|
|
32
3
|
// src/components/KanbanBoard/KanbanBoard.tsx
|
|
33
4
|
import { RegistryContext } from "@effect-atom/atom-react";
|
|
34
|
-
import { createContext } from "@radix-ui/react-context";
|
|
35
5
|
import React3, { useCallback as useCallback2, useContext, useMemo as useMemo2 } from "react";
|
|
36
6
|
import { Obj as Obj2 } from "@dxos/echo";
|
|
37
7
|
import { useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
38
8
|
import { Board as Board2, useBoard as useBoard3 } from "@dxos/react-ui-mosaic";
|
|
39
9
|
import { composable, composableProps } from "@dxos/ui-theme";
|
|
10
|
+
import { useKanbanBoardModel, useKanbanColumnEventHandler } from "#hooks";
|
|
11
|
+
import { meta as meta2 } from "#meta";
|
|
12
|
+
import { UNCATEGORIZED_ATTRIBUTES as UNCATEGORIZED_ATTRIBUTES2, UNCATEGORIZED_VALUE as UNCATEGORIZED_VALUE3 } from "#types";
|
|
13
|
+
|
|
14
|
+
// src/components/KanbanBoard/context.ts
|
|
15
|
+
import { createContext } from "@radix-ui/react-context";
|
|
16
|
+
import { UNCATEGORIZED_ATTRIBUTES, UNCATEGORIZED_VALUE } from "#types";
|
|
17
|
+
var KANBAN_BOARD_NAME = "KanbanBoard.Context";
|
|
18
|
+
var [KanbanBoardContext, useKanbanBoard] = createContext(KANBAN_BOARD_NAME, {
|
|
19
|
+
kanbanId: "never",
|
|
20
|
+
projection: void 0,
|
|
21
|
+
columnFieldPath: void 0,
|
|
22
|
+
change: {
|
|
23
|
+
kanban: () => {
|
|
24
|
+
},
|
|
25
|
+
setItemField: () => {
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
pivotFieldId: void 0,
|
|
29
|
+
getPivotAttributes: (id) => id === UNCATEGORIZED_VALUE ? UNCATEGORIZED_ATTRIBUTES : {
|
|
30
|
+
title: id,
|
|
31
|
+
color: "neutral"
|
|
32
|
+
},
|
|
33
|
+
itemTile: () => null
|
|
34
|
+
});
|
|
40
35
|
|
|
41
36
|
// src/components/KanbanBoard/KanbanCard.tsx
|
|
42
37
|
import React, { forwardRef, useCallback, useMemo, useState } from "react";
|
|
43
38
|
import { Surface } from "@dxos/app-framework/ui";
|
|
44
|
-
import { useObjectMenuItems } from "@dxos/app-toolkit/ui";
|
|
39
|
+
import { AppSurface, useObjectMenuItems } from "@dxos/app-toolkit/ui";
|
|
45
40
|
import { Obj } from "@dxos/echo";
|
|
46
41
|
import { Card, Toolbar, useTranslation } from "@dxos/react-ui";
|
|
47
42
|
import { Menu, createMenuAction } from "@dxos/react-ui-menu";
|
|
48
43
|
import { Focus, Mosaic, useBoard } from "@dxos/react-ui-mosaic";
|
|
44
|
+
import { meta } from "#meta";
|
|
49
45
|
var KANBAN_CARD_TILE_NAME = "KanbanBoard.Card";
|
|
50
|
-
var KanbanCard = /* @__PURE__ */ forwardRef(({ data, location, debug }, forwardedRef) => {
|
|
46
|
+
var KanbanCard = /* @__PURE__ */ forwardRef(({ data, location, debug, draggable }, forwardedRef) => {
|
|
51
47
|
const { t } = useTranslation(meta.id);
|
|
52
48
|
const { model } = useBoard(KANBAN_CARD_TILE_NAME);
|
|
53
|
-
const { projection, onCardRemove } = useKanbanBoard(KANBAN_CARD_TILE_NAME);
|
|
49
|
+
const { projection, columnFieldPath, onCardRemove } = useKanbanBoard(KANBAN_CARD_TILE_NAME);
|
|
54
50
|
const [dragHandle, setDragHandle] = useState(null);
|
|
55
51
|
const dragHandleRef = useCallback((el) => setDragHandle(el), []);
|
|
56
52
|
const objectMenuItems = useObjectMenuItems(data);
|
|
@@ -58,7 +54,7 @@ var KanbanCard = /* @__PURE__ */ forwardRef(({ data, location, debug }, forwarde
|
|
|
58
54
|
...objectMenuItems,
|
|
59
55
|
...onCardRemove ? [
|
|
60
56
|
createMenuAction("remove", () => onCardRemove(data), {
|
|
61
|
-
label: t("remove
|
|
57
|
+
label: t("remove-card.label"),
|
|
62
58
|
icon: "ph--trash--regular"
|
|
63
59
|
})
|
|
64
60
|
] : []
|
|
@@ -74,6 +70,7 @@ var KanbanCard = /* @__PURE__ */ forwardRef(({ data, location, debug }, forwarde
|
|
|
74
70
|
data,
|
|
75
71
|
location,
|
|
76
72
|
debug,
|
|
73
|
+
draggable,
|
|
77
74
|
dragHandle
|
|
78
75
|
}, /* @__PURE__ */ React.createElement(Focus.Item, {
|
|
79
76
|
asChild: true
|
|
@@ -92,30 +89,37 @@ var KanbanCard = /* @__PURE__ */ forwardRef(({ data, location, debug }, forwarde
|
|
|
92
89
|
iconOnly: true,
|
|
93
90
|
variant: "ghost",
|
|
94
91
|
icon: "ph--dots-three-vertical--regular",
|
|
95
|
-
label: t("action
|
|
92
|
+
label: t("action-menu.label")
|
|
96
93
|
})), /* @__PURE__ */ React.createElement(Menu.Content, {
|
|
97
94
|
items: menuItems
|
|
98
95
|
})), /* @__PURE__ */ React.createElement(Card.Content, null, projection && /* @__PURE__ */ React.createElement(Surface.Surface, {
|
|
99
|
-
|
|
96
|
+
type: AppSurface.Card,
|
|
100
97
|
limit: 1,
|
|
101
98
|
data: {
|
|
102
99
|
subject: data,
|
|
103
|
-
projection
|
|
100
|
+
projection,
|
|
101
|
+
// Hide the pivot field: its value is already conveyed by
|
|
102
|
+
// which column the card sits in.
|
|
103
|
+
ignorePaths: columnFieldPath ? [
|
|
104
|
+
columnFieldPath
|
|
105
|
+
] : void 0
|
|
104
106
|
}
|
|
105
107
|
}))))));
|
|
106
108
|
});
|
|
107
109
|
KanbanCard.displayName = KANBAN_CARD_TILE_NAME;
|
|
108
110
|
|
|
109
111
|
// src/components/KanbanBoard/KanbanColumn.tsx
|
|
110
|
-
import React2, { forwardRef as forwardRef2,
|
|
112
|
+
import React2, { forwardRef as forwardRef2, useState as useState2 } from "react";
|
|
111
113
|
import { Board, useBoard as useBoard2 } from "@dxos/react-ui-mosaic";
|
|
114
|
+
import { useKanbanItemEventHandler } from "#hooks";
|
|
115
|
+
import { UNCATEGORIZED_VALUE as UNCATEGORIZED_VALUE2 } from "#types";
|
|
112
116
|
var KANBAN_COLUMN_NAME = "KanbanBoard.Column";
|
|
113
|
-
var KanbanColumn = /* @__PURE__ */ forwardRef2(({ data: column, location, debug }, forwardedRef) => {
|
|
117
|
+
var KanbanColumn = /* @__PURE__ */ forwardRef2(({ data: column, location, debug, draggable }, forwardedRef) => {
|
|
114
118
|
const { model } = useBoard2(KANBAN_COLUMN_NAME);
|
|
115
119
|
const { columnFieldPath, change, onCardAdd, getPivotAttributes, itemTile } = useKanbanBoard(KANBAN_COLUMN_NAME);
|
|
116
120
|
const { title } = getPivotAttributes(column.columnValue);
|
|
117
|
-
const uncategorized = column.columnValue ===
|
|
118
|
-
const
|
|
121
|
+
const uncategorized = column.columnValue === UNCATEGORIZED_VALUE2;
|
|
122
|
+
const [dragHandle, setDragHandle] = useState2(null);
|
|
119
123
|
const eventHandler = useKanbanItemEventHandler({
|
|
120
124
|
column,
|
|
121
125
|
columnFieldPath,
|
|
@@ -127,7 +131,8 @@ var KanbanColumn = /* @__PURE__ */ forwardRef2(({ data: column, location, debug
|
|
|
127
131
|
location,
|
|
128
132
|
classNames: "grid grid-rows-[var(--dx-rail-action)_1fr_var(--dx-rail-action)]",
|
|
129
133
|
debug,
|
|
130
|
-
|
|
134
|
+
draggable,
|
|
135
|
+
dragHandle,
|
|
131
136
|
ref: forwardedRef
|
|
132
137
|
}, uncategorized ? /* @__PURE__ */ React2.createElement("div", {
|
|
133
138
|
className: "border-b border-separator p-2",
|
|
@@ -136,56 +141,42 @@ var KanbanColumn = /* @__PURE__ */ forwardRef2(({ data: column, location, debug
|
|
|
136
141
|
className: "font-medium"
|
|
137
142
|
}, title)) : /* @__PURE__ */ React2.createElement(Board.Column.Header, {
|
|
138
143
|
label: title,
|
|
139
|
-
dragHandleRef
|
|
144
|
+
dragHandleRef: setDragHandle
|
|
140
145
|
}), /* @__PURE__ */ React2.createElement(Board.Column.Body, {
|
|
141
146
|
data: column,
|
|
142
147
|
eventHandler,
|
|
143
148
|
Tile: itemTile
|
|
144
|
-
}),
|
|
145
|
-
onAdd: () => onCardAdd(column.columnValue ===
|
|
149
|
+
}), /* @__PURE__ */ React2.createElement(Board.Column.Footer, {
|
|
150
|
+
onAdd: onCardAdd ? () => onCardAdd(column.columnValue === UNCATEGORIZED_VALUE2 ? void 0 : column.columnValue) : void 0
|
|
146
151
|
}));
|
|
147
152
|
});
|
|
148
153
|
KanbanColumn.displayName = KANBAN_COLUMN_NAME;
|
|
149
154
|
|
|
150
155
|
// src/components/KanbanBoard/KanbanBoard.tsx
|
|
151
|
-
var KANBAN_BOARD_NAME = "KanbanBoard.Context";
|
|
152
|
-
var [KanbanBoardContext, useKanbanBoard] = createContext(KANBAN_BOARD_NAME, {
|
|
153
|
-
kanbanId: "never",
|
|
154
|
-
projection: void 0,
|
|
155
|
-
columnFieldPath: void 0,
|
|
156
|
-
change: {
|
|
157
|
-
kanban: () => {
|
|
158
|
-
},
|
|
159
|
-
setItemField: () => {
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
pivotFieldId: void 0,
|
|
163
|
-
getPivotAttributes: (id) => id === UNCATEGORIZED_VALUE ? UNCATEGORIZED_ATTRIBUTES : {
|
|
164
|
-
title: id,
|
|
165
|
-
color: "neutral"
|
|
166
|
-
},
|
|
167
|
-
itemTile: () => null
|
|
168
|
-
});
|
|
169
156
|
var KANBAN_BOARD_ROOT = "KanbanBoard.Root";
|
|
170
157
|
var KanbanBoardRoot = ({ children, kanban, projection, items, change, itemTile = KanbanCard, onCardAdd, onCardRemove }) => {
|
|
171
158
|
const registry = useContext(RegistryContext);
|
|
172
|
-
const { t } = useTranslation2(
|
|
159
|
+
const { t } = useTranslation2(meta2.id);
|
|
173
160
|
const model = useKanbanBoardModel(kanban, projection, items, registry);
|
|
174
161
|
const columns = model?.getColumns?.() ?? [];
|
|
175
|
-
const view = kanban?.view
|
|
162
|
+
const view = kanban?.spec.kind === "view" ? kanban.spec.view.target : void 0;
|
|
176
163
|
const pivotFieldId = view?.projection?.pivotFieldId;
|
|
177
164
|
const columnFieldPath = useMemo2(() => {
|
|
165
|
+
if (kanban?.spec.kind === "items") {
|
|
166
|
+
return kanban.spec.pivotField;
|
|
167
|
+
}
|
|
178
168
|
if (pivotFieldId === void 0 || !projection) {
|
|
179
169
|
return void 0;
|
|
180
170
|
}
|
|
181
171
|
return projection.tryGetFieldProjection(pivotFieldId)?.props.property;
|
|
182
172
|
}, [
|
|
173
|
+
kanban?.spec,
|
|
183
174
|
projection,
|
|
184
175
|
pivotFieldId
|
|
185
176
|
]);
|
|
186
177
|
const getPivotAttributes = useCallback2((columnValue) => {
|
|
187
|
-
if (columnValue ===
|
|
188
|
-
return
|
|
178
|
+
if (columnValue === UNCATEGORIZED_VALUE3) {
|
|
179
|
+
return UNCATEGORIZED_ATTRIBUTES2;
|
|
189
180
|
}
|
|
190
181
|
const options = projection?.tryGetFieldProjection(pivotFieldId ?? "")?.props.options ?? [];
|
|
191
182
|
const option = options.find((option2) => option2.id === columnValue);
|
|
@@ -199,9 +190,8 @@ var KanbanBoardRoot = ({ children, kanban, projection, items, change, itemTile =
|
|
|
199
190
|
]);
|
|
200
191
|
if (columns.length === 0) {
|
|
201
192
|
return /* @__PURE__ */ React3.createElement("div", {
|
|
202
|
-
role: "none",
|
|
203
193
|
className: "flex flex-1 items-center justify-center p-8 text-center text-description"
|
|
204
|
-
}, t("select
|
|
194
|
+
}, t("select-pivot.placeholder"));
|
|
205
195
|
}
|
|
206
196
|
return /* @__PURE__ */ React3.createElement(KanbanBoardContext, {
|
|
207
197
|
kanbanId: Obj2.getDXN(kanban).toString(),
|
|
@@ -244,80 +234,10 @@ var KanbanBoard = {
|
|
|
244
234
|
Column: KanbanColumn,
|
|
245
235
|
Card: KanbanCard
|
|
246
236
|
};
|
|
247
|
-
|
|
248
|
-
// src/containers/KanbanContainer/KanbanContainer.tsx
|
|
249
|
-
var KanbanContainer = ({ role, subject: object }) => {
|
|
250
|
-
const registry = useContext2(RegistryContext2);
|
|
251
|
-
const schemas = useCapabilities(AppCapabilities.Schema);
|
|
252
|
-
const db = Obj3.getDatabase(object);
|
|
253
|
-
const { invokePromise } = useOperationInvoker();
|
|
254
|
-
const [view] = useObject(object.view);
|
|
255
|
-
const typename = view?.query ? getTypenameFromQuery(view.query.ast) : void 0;
|
|
256
|
-
const tag = view?.query ? getTagFromQuery(view.query.ast) : void 0;
|
|
257
|
-
const schemaFromDb = useSchema(db, typename);
|
|
258
|
-
const cardSchema = useMemo3(() => schemaFromDb ?? schemas.flat().find((schema) => Type.getTypename(schema) === typename), [
|
|
259
|
-
schemaFromDb,
|
|
260
|
-
schemas,
|
|
261
|
-
typename
|
|
262
|
-
]);
|
|
263
|
-
const items = useMemo3(() => {
|
|
264
|
-
if (!db) {
|
|
265
|
-
return null;
|
|
266
|
-
}
|
|
267
|
-
const baseFilter = cardSchema ? Filter.type(cardSchema) : Filter.nothing();
|
|
268
|
-
const query = tag ? Query.select(baseFilter).select(Filter.tag(tag)) : Query.select(baseFilter);
|
|
269
|
-
return AtomQuery.make(db, query);
|
|
270
|
-
}, [
|
|
271
|
-
db,
|
|
272
|
-
cardSchema,
|
|
273
|
-
tag
|
|
274
|
-
]);
|
|
275
|
-
const projection = useProjectionModel(cardSchema, object, registry);
|
|
276
|
-
const change = useEchoChangeCallback(object);
|
|
277
|
-
const pivotFieldId = view?.projection?.pivotFieldId;
|
|
278
|
-
const columnFieldPath = projection && pivotFieldId ? projection.tryGetFieldProjection(pivotFieldId)?.props.property : void 0;
|
|
279
|
-
const handleCardAdd = useCallback3((columnValue) => {
|
|
280
|
-
if (db && cardSchema && columnFieldPath) {
|
|
281
|
-
const card = Obj3.make(cardSchema, {
|
|
282
|
-
[columnFieldPath]: columnValue
|
|
283
|
-
});
|
|
284
|
-
db.add(card);
|
|
285
|
-
return card.id;
|
|
286
|
-
}
|
|
287
|
-
}, [
|
|
288
|
-
db,
|
|
289
|
-
cardSchema,
|
|
290
|
-
columnFieldPath
|
|
291
|
-
]);
|
|
292
|
-
const handleCardRemove = useCallback3((card) => {
|
|
293
|
-
void invokePromise(definitions_exports.DeleteCard, {
|
|
294
|
-
card
|
|
295
|
-
});
|
|
296
|
-
}, [
|
|
297
|
-
invokePromise
|
|
298
|
-
]);
|
|
299
|
-
if (!object || !db || !items || !projection || !change) {
|
|
300
|
-
return null;
|
|
301
|
-
}
|
|
302
|
-
return /* @__PURE__ */ React4.createElement(Panel.Root, {
|
|
303
|
-
role
|
|
304
|
-
}, /* @__PURE__ */ React4.createElement(Panel.Toolbar, {
|
|
305
|
-
asChild: true
|
|
306
|
-
}, /* @__PURE__ */ React4.createElement(Toolbar2.Root, null)), /* @__PURE__ */ React4.createElement(KanbanBoard.Root, {
|
|
307
|
-
kanban: object,
|
|
308
|
-
projection,
|
|
309
|
-
items,
|
|
310
|
-
change,
|
|
311
|
-
onCardAdd: handleCardAdd,
|
|
312
|
-
onCardRemove: handleCardRemove
|
|
313
|
-
}, /* @__PURE__ */ React4.createElement(Panel.Content, {
|
|
314
|
-
asChild: true
|
|
315
|
-
}, /* @__PURE__ */ React4.createElement(KanbanBoard.Content, null))));
|
|
316
|
-
};
|
|
317
|
-
|
|
318
|
-
// src/containers/KanbanContainer/index.ts
|
|
319
|
-
var KanbanContainer_default = KanbanContainer;
|
|
320
237
|
export {
|
|
321
|
-
|
|
238
|
+
KanbanBoard,
|
|
239
|
+
KanbanBoardContent,
|
|
240
|
+
KanbanBoardRoot,
|
|
241
|
+
useKanbanBoard
|
|
322
242
|
};
|
|
323
|
-
//# sourceMappingURL=
|
|
243
|
+
//# sourceMappingURL=index.mjs.map
|