@dxos/plugin-sheet 0.8.4-main.fd6878d → 0.9.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/LICENSE +102 -5
- package/PLUGIN.mdl +359 -0
- package/dist/lib/neutral/RangeList-HYB5S6KQ.mjs +46 -0
- package/dist/lib/neutral/RangeList-HYB5S6KQ.mjs.map +7 -0
- package/dist/lib/neutral/SheetArticle-5AJRM3V3.mjs +33 -0
- package/dist/lib/neutral/SheetArticle-5AJRM3V3.mjs.map +7 -0
- package/dist/lib/neutral/SheetPlugin.mjs +63 -0
- package/dist/lib/neutral/SheetPlugin.mjs.map +7 -0
- package/dist/lib/neutral/SheetPlugin.node.mjs +27 -0
- package/dist/lib/neutral/SheetPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/SheetPlugin.workerd.mjs +21 -0
- package/dist/lib/neutral/SheetPlugin.workerd.mjs.map +7 -0
- package/dist/lib/neutral/anchor-sort-2POWTKTD.mjs +22 -0
- package/dist/lib/neutral/anchor-sort-2POWTKTD.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-2QP6GYB2.mjs +67 -0
- package/dist/lib/neutral/app-graph-builder-2QP6GYB2.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +29 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/chunk-BGR7FVNF.mjs +8 -0
- package/dist/lib/neutral/chunk-BGR7FVNF.mjs.map +7 -0
- package/dist/lib/{browser/chunk-VTTKAHAY.mjs → neutral/chunk-ERHMBRSU.mjs} +16 -16
- package/dist/lib/neutral/chunk-ERHMBRSU.mjs.map +7 -0
- package/dist/lib/neutral/chunk-FQHTXKMF.mjs +34 -0
- package/dist/lib/neutral/chunk-FQHTXKMF.mjs.map +7 -0
- package/dist/lib/neutral/chunk-HEN74ZWI.mjs +83 -0
- package/dist/lib/neutral/chunk-HEN74ZWI.mjs.map +7 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/neutral/chunk-KUWATEHB.mjs +374 -0
- package/dist/lib/neutral/chunk-KUWATEHB.mjs.map +7 -0
- package/dist/lib/neutral/chunk-S2UNH6VD.mjs +10 -0
- package/dist/lib/neutral/chunk-S2UNH6VD.mjs.map +7 -0
- package/dist/lib/neutral/comment-config-WGXXX5FG.mjs +22 -0
- package/dist/lib/neutral/comment-config-WGXXX5FG.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +1552 -0
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/compute-graph-registry-YYINTFC2.mjs +26 -0
- package/dist/lib/neutral/compute-graph-registry-YYINTFC2.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-TDQQ24IB.mjs +31 -0
- package/dist/lib/neutral/create-object-TDQQ24IB.mjs.map +7 -0
- package/dist/lib/neutral/drop-axis-WSWFOLQN.mjs +23 -0
- package/dist/lib/neutral/drop-axis-WSWFOLQN.mjs.map +7 -0
- package/dist/lib/{node-esm/types → neutral}/index.mjs +22 -13
- package/dist/lib/neutral/insert-axis-6UQJTIWC.mjs +16 -0
- package/dist/lib/neutral/insert-axis-6UQJTIWC.mjs.map +7 -0
- package/dist/lib/neutral/markdown-extension-HTJDICGT.mjs +28 -0
- package/dist/lib/neutral/markdown-extension-HTJDICGT.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +8 -0
- package/dist/lib/neutral/meta.mjs.map +7 -0
- package/dist/lib/neutral/navigation-resolver-FXEZYO7G.mjs +14 -0
- package/dist/lib/neutral/navigation-resolver-FXEZYO7G.mjs.map +7 -0
- package/dist/lib/neutral/operation-handler-TB6LFV2H.mjs +13 -0
- package/dist/lib/neutral/operation-handler-TB6LFV2H.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +8 -0
- package/dist/lib/neutral/operations/index.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +16 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-4H3PC4WG.mjs +44 -0
- package/dist/lib/neutral/react-surface-4H3PC4WG.mjs.map +7 -0
- package/dist/lib/neutral/restore-axis-AMMVTPS3.mjs +16 -0
- package/dist/lib/neutral/restore-axis-AMMVTPS3.mjs.map +7 -0
- package/dist/lib/neutral/scroll-to-anchor-FK2CXCQR.mjs +33 -0
- package/dist/lib/neutral/scroll-to-anchor-FK2CXCQR.mjs.map +7 -0
- package/dist/lib/neutral/state-HPA27MX2.mjs +29 -0
- package/dist/lib/neutral/state-HPA27MX2.mjs.map +7 -0
- package/dist/lib/neutral/testing/index.mjs +103 -0
- package/dist/lib/neutral/testing/index.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +56 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/{browser → neutral}/types/index.mjs +8 -12
- package/dist/lib/neutral/types/index.mjs.map +7 -0
- package/dist/lib/neutral/undo-mappings-3FQLSTCZ.mjs +31 -0
- package/dist/lib/neutral/undo-mappings-3FQLSTCZ.mjs.map +7 -0
- package/dist/types/src/SheetPlugin.d.ts +3 -1
- package/dist/types/src/SheetPlugin.d.ts.map +1 -1
- package/dist/types/src/SheetPlugin.node.d.ts +4 -0
- package/dist/types/src/SheetPlugin.node.d.ts.map +1 -0
- package/dist/types/src/SheetPlugin.test.d.ts +2 -0
- package/dist/types/src/SheetPlugin.test.d.ts.map +1 -0
- package/dist/types/src/SheetPlugin.workerd.d.ts +4 -0
- package/dist/types/src/SheetPlugin.workerd.d.ts.map +1 -0
- package/dist/types/src/capabilities/anchor-sort.d.ts +4 -4
- package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/comment-config.d.ts +6 -0
- package/dist/types/src/capabilities/comment-config.d.ts.map +1 -0
- package/dist/types/src/capabilities/compute-graph-registry.d.ts +9 -2
- package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
- 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 +19 -11
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown-extension.d.ts +5 -0
- package/dist/types/src/capabilities/markdown-extension.d.ts.map +1 -0
- package/dist/types/src/capabilities/navigation-resolver.d.ts +6 -0
- package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts +3 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +6 -0
- package/dist/types/src/capabilities/state.d.ts.map +1 -0
- package/dist/types/src/capabilities/undo-mappings.d.ts +5 -0
- package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
- package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts +1 -1
- package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
- package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts +9 -4
- package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts.map +1 -1
- package/dist/types/src/components/Sheet/Sheet.d.ts +17 -0
- package/dist/types/src/components/Sheet/Sheet.d.ts.map +1 -0
- package/dist/types/src/components/Sheet/index.d.ts +2 -0
- package/dist/types/src/components/Sheet/index.d.ts.map +1 -0
- package/dist/types/src/components/SheetContent/SheetCellEditor.stories.d.ts +16 -0
- package/dist/types/src/components/SheetContent/SheetCellEditor.stories.d.ts.map +1 -0
- package/dist/types/src/components/SheetContent/SheetContent.d.ts +6 -0
- package/dist/types/src/components/SheetContent/SheetContent.d.ts.map +1 -0
- package/dist/types/src/components/SheetContent/SheetContent.stories.d.ts +93 -0
- package/dist/types/src/components/SheetContent/SheetContent.stories.d.ts.map +1 -0
- package/dist/types/src/components/SheetContent/index.d.ts +2 -0
- package/dist/types/src/components/SheetContent/index.d.ts.map +1 -0
- package/dist/types/src/components/{GridSheet → SheetContent}/util.d.ts +1 -1
- package/dist/types/src/components/SheetContent/util.d.ts.map +1 -0
- package/dist/types/src/components/{SheetContext/SheetContext.d.ts → SheetRoot/SheetRoot.d.ts} +9 -7
- package/dist/types/src/components/SheetRoot/SheetRoot.d.ts.map +1 -0
- package/dist/types/src/components/SheetRoot/index.d.ts +2 -0
- package/dist/types/src/components/SheetRoot/index.d.ts.map +1 -0
- package/dist/types/src/components/SheetStatusbar/SheetStatusbar.d.ts +6 -0
- package/dist/types/src/components/SheetStatusbar/SheetStatusbar.d.ts.map +1 -0
- package/dist/types/src/components/SheetStatusbar/index.d.ts +2 -0
- package/dist/types/src/components/SheetStatusbar/index.d.ts.map +1 -0
- package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +5 -6
- package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +92 -4
- package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/align.d.ts +14 -21
- package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/style.d.ts +14 -20
- package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts +14 -1
- package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -4
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/RangeList/RangeList.d.ts +7 -0
- package/dist/types/src/containers/RangeList/RangeList.d.ts.map +1 -0
- package/dist/types/src/containers/RangeList/index.d.ts +2 -0
- package/dist/types/src/containers/RangeList/index.d.ts.map +1 -0
- package/dist/types/src/containers/SheetArticle/SheetArticle.d.ts +12 -0
- package/dist/types/src/containers/SheetArticle/SheetArticle.d.ts.map +1 -0
- package/dist/types/src/containers/SheetArticle/SheetArticle.stories.d.ts +92 -0
- package/dist/types/src/containers/SheetArticle/SheetArticle.stories.d.ts.map +1 -0
- package/dist/types/src/containers/SheetArticle/index.d.ts +2 -0
- package/dist/types/src/containers/SheetArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +4 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/extensions/compute.d.ts +2 -2
- package/dist/types/src/extensions/compute.d.ts.map +1 -1
- package/dist/types/src/extensions/compute.stories.d.ts +10 -13
- package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
- package/dist/types/src/extensions/editor/index.d.ts +1 -1
- package/dist/types/src/extensions/editor/index.d.ts.map +1 -1
- package/dist/types/src/extensions/editor/{extension.d.ts → sheet-extension.d.ts} +2 -2
- package/dist/types/src/extensions/editor/sheet-extension.d.ts.map +1 -0
- package/dist/types/src/extensions/editor/sheet-extension.test.d.ts +2 -0
- package/dist/types/src/extensions/editor/sheet-extension.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +3 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/integrations/thread-ranges.d.ts +1 -3
- package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -3
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/model/sheet-model.d.ts +31 -7
- package/dist/types/src/model/sheet-model.d.ts.map +1 -1
- package/dist/types/src/model/testing.d.ts +2 -2
- package/dist/types/src/model/testing.d.ts.map +1 -1
- package/dist/types/src/model/useSheetModel.d.ts +3 -3
- package/dist/types/src/model/useSheetModel.d.ts.map +1 -1
- package/dist/types/src/operations/drop-axis.d.ts +5 -0
- package/dist/types/src/operations/drop-axis.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts +3 -0
- package/dist/types/src/operations/index.d.ts.map +1 -0
- package/dist/types/src/operations/insert-axis.d.ts +5 -0
- package/dist/types/src/operations/insert-axis.d.ts.map +1 -0
- package/dist/types/src/operations/restore-axis.d.ts +5 -0
- package/dist/types/src/operations/restore-axis.d.ts.map +1 -0
- package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
- package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
- package/dist/types/src/paths.d.ts +3 -0
- package/dist/types/src/paths.d.ts.map +1 -0
- package/dist/types/src/playwright/playwright.config.d.ts.map +1 -1
- package/dist/types/src/playwright/sheet-manager.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/serializer.d.ts +3 -3
- package/dist/types/src/serializer.d.ts.map +1 -1
- package/dist/types/src/testing/data.d.ts +2 -2
- package/dist/types/src/testing/data.d.ts.map +1 -1
- package/dist/types/src/testing/testing.d.ts +28 -4
- package/dist/types/src/testing/testing.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +74 -38
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Sheet.d.ts +75 -0
- package/dist/types/src/types/Sheet.d.ts.map +1 -0
- package/dist/types/src/types/SheetCapabilities.d.ts +16 -0
- package/dist/types/src/types/SheetCapabilities.d.ts.map +1 -0
- package/dist/types/src/types/SheetOperation.d.ts +45 -0
- package/dist/types/src/types/SheetOperation.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +3 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/sheet-range-types.d.ts +2 -2
- package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +3 -78
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/types/util.d.ts +11 -11
- package/dist/types/src/types/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +132 -98
- package/src/SheetPlugin.node.ts +21 -0
- package/src/SheetPlugin.test.ts +30 -0
- package/src/SheetPlugin.tsx +55 -68
- package/src/SheetPlugin.workerd.ts +18 -0
- package/src/capabilities/anchor-sort.ts +20 -15
- package/src/capabilities/app-graph-builder.ts +63 -0
- package/src/capabilities/comment-config.ts +28 -0
- package/src/capabilities/compute-graph-registry.ts +34 -20
- package/src/capabilities/create-object.ts +33 -0
- package/src/capabilities/index.ts +22 -8
- package/src/capabilities/markdown-extension.ts +31 -0
- package/src/capabilities/navigation-resolver.ts +16 -0
- package/src/capabilities/operation-handler.ts +16 -0
- package/src/capabilities/react-surface.tsx +38 -29
- package/src/capabilities/state.ts +29 -0
- package/src/capabilities/undo-mappings.ts +30 -0
- package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +1 -1
- package/src/components/ComputeGraph/compute-graph.stories.tsx +35 -27
- package/src/components/Sheet/Sheet.tsx +20 -0
- package/src/components/Sheet/index.ts +5 -0
- package/src/components/SheetContent/SheetCellEditor.stories.tsx +95 -0
- package/src/components/SheetContent/SheetContent.stories.tsx +60 -0
- package/src/components/{GridSheet/GridSheet.tsx → SheetContent/SheetContent.tsx} +88 -58
- package/src/components/{RangeList → SheetContent}/index.ts +1 -1
- package/src/components/{GridSheet → SheetContent}/util.ts +17 -10
- package/src/components/{SheetContext/SheetContext.tsx → SheetRoot/SheetRoot.tsx} +55 -42
- package/src/components/{GridSheet → SheetRoot}/index.ts +1 -1
- package/src/components/{FunctionEditor/FunctionEditor.tsx → SheetStatusbar/SheetStatusbar.tsx} +20 -7
- package/src/components/{FunctionEditor → SheetStatusbar}/index.ts +1 -1
- package/src/components/SheetToolbar/SheetToolbar.stories.tsx +19 -14
- package/src/components/SheetToolbar/SheetToolbar.tsx +61 -56
- package/src/components/SheetToolbar/align.ts +50 -25
- package/src/components/SheetToolbar/style.ts +52 -22
- package/src/components/SheetToolbar/useToolbarState.ts +22 -5
- package/src/components/index.ts +1 -7
- package/src/containers/RangeList/RangeList.tsx +65 -0
- package/src/containers/RangeList/index.ts +5 -0
- package/src/containers/SheetArticle/SheetArticle.stories.tsx +110 -0
- package/src/containers/SheetArticle/SheetArticle.tsx +57 -0
- package/src/containers/SheetArticle/index.ts +5 -0
- package/src/containers/index.ts +8 -0
- package/src/extensions/compute.stories.tsx +49 -36
- package/src/extensions/compute.ts +3 -4
- package/src/extensions/editor/index.ts +1 -1
- package/src/extensions/editor/{extension.test.ts → sheet-extension.test.ts} +2 -2
- package/src/extensions/editor/{extension.ts → sheet-extension.ts} +18 -15
- package/src/index.ts +3 -2
- package/src/integrations/thread-ranges.ts +20 -62
- package/src/meta.ts +22 -8
- package/src/model/sheet-model.test.ts +34 -6
- package/src/model/sheet-model.ts +84 -52
- package/src/model/testing.ts +5 -5
- package/src/model/useSheetModel.ts +4 -3
- package/src/operations/drop-axis.ts +26 -0
- package/src/operations/index.ts +12 -0
- package/src/operations/insert-axis.ts +19 -0
- package/src/operations/restore-axis.ts +19 -0
- package/src/operations/scroll-to-anchor.ts +30 -0
- package/src/paths.ts +11 -0
- package/src/playwright/playwright.config.ts +1 -1
- package/src/playwright/sheet.spec.ts +4 -3
- package/src/plugin.ts +11 -0
- package/src/sanity.test.ts +9 -3
- package/src/serializer.ts +4 -12
- package/src/testing/data.ts +2 -2
- package/src/testing/testing.tsx +13 -7
- package/src/translations.ts +43 -36
- package/src/types/Sheet.ts +97 -0
- package/src/types/SheetCapabilities.ts +26 -0
- package/src/types/SheetOperation.ts +84 -0
- package/src/types/index.ts +4 -1
- package/src/types/sheet-range-types.ts +5 -5
- package/src/types/types.ts +6 -52
- package/src/types/util.ts +15 -42
- package/src/vite-env.d.ts +10 -0
- package/dist/lib/browser/SheetContainer-JZNFXBW3.mjs +0 -351
- package/dist/lib/browser/SheetContainer-JZNFXBW3.mjs.map +0 -7
- package/dist/lib/browser/anchor-sort-VRX3YZKT.mjs +0 -24
- package/dist/lib/browser/anchor-sort-VRX3YZKT.mjs.map +0 -7
- package/dist/lib/browser/chunk-6AKBCBL4.mjs +0 -18
- package/dist/lib/browser/chunk-6AKBCBL4.mjs.map +0 -7
- package/dist/lib/browser/chunk-BVTHIA5U.mjs +0 -847
- package/dist/lib/browser/chunk-BVTHIA5U.mjs.map +0 -7
- package/dist/lib/browser/chunk-ELAASQ5H.mjs +0 -899
- package/dist/lib/browser/chunk-ELAASQ5H.mjs.map +0 -7
- package/dist/lib/browser/chunk-KJWZUQVA.mjs +0 -15
- package/dist/lib/browser/chunk-KJWZUQVA.mjs.map +0 -7
- package/dist/lib/browser/chunk-VTTKAHAY.mjs.map +0 -7
- package/dist/lib/browser/compute-graph-registry-6YJHXORG.mjs +0 -30
- package/dist/lib/browser/compute-graph-registry-6YJHXORG.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -155
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-SSLPTP5O.mjs +0 -56
- package/dist/lib/browser/intent-resolver-SSLPTP5O.mjs.map +0 -7
- package/dist/lib/browser/markdown-3VPZYNGU.mjs +0 -26
- package/dist/lib/browser/markdown-3VPZYNGU.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/react-surface-Y7KTPJW2.mjs +0 -53
- package/dist/lib/browser/react-surface-Y7KTPJW2.mjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-GOIBAE2P.mjs +0 -352
- package/dist/lib/node-esm/SheetContainer-GOIBAE2P.mjs.map +0 -7
- package/dist/lib/node-esm/anchor-sort-YM2UBIKL.mjs +0 -25
- package/dist/lib/node-esm/anchor-sort-YM2UBIKL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3K5VNYOF.mjs +0 -20
- package/dist/lib/node-esm/chunk-3K5VNYOF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-4L5CIB7E.mjs +0 -900
- package/dist/lib/node-esm/chunk-4L5CIB7E.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-56HYMW55.mjs +0 -848
- package/dist/lib/node-esm/chunk-56HYMW55.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-6SK5LJ5S.mjs +0 -16
- package/dist/lib/node-esm/chunk-6SK5LJ5S.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FXRXBHWM.mjs +0 -236
- package/dist/lib/node-esm/chunk-FXRXBHWM.mjs.map +0 -7
- package/dist/lib/node-esm/compute-graph-registry-ET5KJNLV.mjs +0 -31
- package/dist/lib/node-esm/compute-graph-registry-ET5KJNLV.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -156
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-5P6DBGK2.mjs +0 -57
- package/dist/lib/node-esm/intent-resolver-5P6DBGK2.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-SFDGQWYE.mjs +0 -27
- package/dist/lib/node-esm/markdown-SFDGQWYE.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/react-surface-6Z5FAOBH.mjs +0 -54
- package/dist/lib/node-esm/react-surface-6Z5FAOBH.mjs.map +0 -7
- package/dist/types/src/capabilities/capabilities.d.ts +0 -5
- package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/markdown.d.ts +0 -6
- package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
- package/dist/types/src/components/FunctionEditor/FunctionEditor.d.ts +0 -3
- package/dist/types/src/components/FunctionEditor/FunctionEditor.d.ts.map +0 -1
- package/dist/types/src/components/FunctionEditor/index.d.ts +0 -2
- package/dist/types/src/components/FunctionEditor/index.d.ts.map +0 -1
- package/dist/types/src/components/GridSheet/GridSheet.d.ts +0 -3
- package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +0 -1
- package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +0 -7
- package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +0 -1
- package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts +0 -25
- package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts.map +0 -1
- package/dist/types/src/components/GridSheet/index.d.ts +0 -2
- package/dist/types/src/components/GridSheet/index.d.ts.map +0 -1
- package/dist/types/src/components/GridSheet/util.d.ts.map +0 -1
- package/dist/types/src/components/RangeList/RangeList.d.ts +0 -7
- package/dist/types/src/components/RangeList/RangeList.d.ts.map +0 -1
- package/dist/types/src/components/RangeList/index.d.ts +0 -2
- package/dist/types/src/components/RangeList/index.d.ts.map +0 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +0 -11
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +0 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +0 -8
- package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/SheetContainer/index.d.ts +0 -3
- package/dist/types/src/components/SheetContainer/index.d.ts.map +0 -1
- package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +0 -1
- package/dist/types/src/components/SheetContext/index.d.ts +0 -2
- package/dist/types/src/components/SheetContext/index.d.ts.map +0 -1
- package/dist/types/src/extensions/editor/extension.d.ts.map +0 -1
- package/dist/types/src/extensions/editor/extension.test.d.ts +0 -2
- package/dist/types/src/extensions/editor/extension.test.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts +0 -37
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/capabilities/capabilities.ts +0 -14
- package/src/capabilities/intent-resolver.ts +0 -38
- package/src/capabilities/markdown.ts +0 -23
- package/src/components/GridSheet/GridSheet.stories.tsx +0 -54
- package/src/components/GridSheet/SheetCellEditor.stories.tsx +0 -93
- package/src/components/RangeList/RangeList.tsx +0 -60
- package/src/components/SheetContainer/SheetContainer.stories.tsx +0 -90
- package/src/components/SheetContainer/SheetContainer.tsx +0 -36
- package/src/components/SheetContainer/index.ts +0 -7
- package/src/components/SheetContext/index.ts +0 -5
- package/src/types/schema.ts +0 -61
- /package/dist/lib/{browser/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/SheetPlugin.tsx", "raw-loader:/__w/dxos/dxos/packages/plugins/plugin-sheet/PLUGIN.mdl?raw"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { ActivationEvent, ActivationEvents, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { ClientEvents } from '@dxos/plugin-client';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\n\nimport {\n AnchorSort,\n AppGraphBuilder,\n NavigationResolver,\n CommentConfig,\n ComputeGraphRegistry,\n CreateObject,\n Markdown,\n OperationHandler,\n UndoMappings,\n ReactSurface,\n SheetState,\n} from '#capabilities';\nimport { meta } from '#meta';\nimport { translations } from '#translations';\nimport { Sheet } from '#types';\n\n// eslint-disable-next-line import/no-relative-packages\nimport pluginSpec from '../PLUGIN.mdl?raw';\n\nexport const SheetPlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addNavigationResolverModule({ activate: NavigationResolver }),\n AppPlugin.addCommentConfigModule({ activate: CommentConfig }),\n AppPlugin.addCreateObjectModule({ activate: CreateObject }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addUndoMappingsModule({ activate: UndoMappings }),\n AppPlugin.addSchemaModule({ schema: [Sheet.Sheet] }),\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.addModule({\n activatesOn: AppActivationEvents.SetupSettings,\n activate: SheetState,\n }),\n Plugin.addModule({\n activatesOn: ActivationEvent.allOf(ClientEvents.ClientReady, ActivationEvents.ProcessManagerReady),\n activate: ComputeGraphRegistry,\n }),\n Plugin.addModule({\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: Markdown,\n }),\n Plugin.addModule({\n // TODO(wittjosiah): More relevant event?\n activatesOn: AppActivationEvents.AppGraphReady,\n activate: AnchorSort,\n }),\n AppPlugin.addPluginAssetModule({\n asset: { pluginId: meta.id, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },\n }),\n Plugin.make,\n);\n\nexport default SheetPlugin;\n", "---\nid: org.dxos.plugin.sheet\nname: SheetPlugin\nversion: 0.1.0\n---\n\nSpreadsheet plugin for `DXOS` Composer \u2014 a full-featured grid backed by ECHO for local-first, real-time collaborative data entry, formula evaluation, and structured data display.\n\n## Extensions\n\nThe following extension dialects are used in this document.\nEach extension is defined in the Appendix or resolved via its URI.\n\n| Term | URI |\n|-------------|--------------------------------|\n| `type` | `org.dxos.mdl.type@1.0` |\n| `feat` | `org.dxos.mdl.feat@1.0` |\n| `test` | `org.dxos.mdl.test@1.0` |\n| `component` | `org.dxos.mdl.component@1.0` |\n| `op` | `org.dxos.mdl.op@1.0` |\n\n## Types\n\n```mdl\ntype CellValue\n fields:\n value: any # scalar: string | number | boolean | formula string\n```\n\n```mdl\ntype RowColumnMeta\n fields:\n size?: number # pixel width/height; absent means default\n```\n\n```mdl\ntype Range\n fields:\n range: string # A1-notation range (e.g. \"A1:C3\")\n key: string # formatting key: alignment | comment | style\n value: string # formatting value (e.g. \"center\", \"highlight\")\n```\n\n```mdl\ntype Axis\n literals: row | col\n```\n\n```mdl\ntype Sheet\n typename: org.dxos.type.sheet\n fields:\n name?: string\n cells: Map<string, CellValue> # sparse map keyed by internal cell index\n rows: string[] # ordered row indices\n columns: string[] # ordered column indices\n rowMeta: Map<string, RowColumnMeta>\n columnMeta: Map<string, RowColumnMeta>\n ranges: Range[] # range-based formatting annotations\n```\n\n## Components\n\n```mdl\ncomponent SheetArticle\n desc: Primary spreadsheet view rendered inside an article or section role surface.\n props:\n subject: Sheet\n attendableId: string\n space: Space\n registry: ComputeGraphRegistry\n state:\n selected?: CellAddress\n activeRefs?: GridContentProps['activeRefs']\n slots:\n toolbar?: ReactNode\n actions:\n selectCell(address: CellAddress)\n editCell(address: CellAddress, value: any)\n insertRow(index: number)\n insertColumn(index: number)\n dropRow(axisIndex: string)\n dropColumn(axisIndex: string)\n layout: |\n \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 [toolbar slot] \u2502\n \u251C\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 \u2502 A \u2502 B \u2502 C \u2502 \u2026 column header \u2502\n \u251C\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2524 \u2502\n \u2502 1 \u2502 \u2502 \u2502 \u2502 cell grid \u2502\n \u251C\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2524 \u2502\n \u2502 2 \u2502 \u2502 \u2502 \u2502 \u2502\n \u2502 \u2026 \u2502 \u2502 \u2502 \u2502 \u2502\n \u2514\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n```mdl\ncomponent RangeList\n desc: Object-properties panel listing named ranges and formatting annotations on a Sheet.\n props:\n sheet: Sheet\n state:\n selected?: Range\n actions:\n addRange(range: Range)\n removeRange(range: Range)\n updateRange(range: Range)\n```\n\n## Operations\n\n```mdl\nop insertAxis\n desc: Inserts one or more rows or columns at the given index in the sheet model.\n input:\n model: SheetModel\n axis: Axis\n index: number\n count?: number # defaults to 1\n output: void\n effects: [echo:write]\n```\n\n```mdl\nop dropAxis\n desc: Removes a row or column by axis index, returning data needed to restore it (undo).\n input:\n model: SheetModel\n axis: Axis\n axisIndex: string\n output: DropAxisOutput # axis, axisIndex, index, axisMeta, values\n effects: [echo:write]\n```\n\n```mdl\nop restoreAxis\n desc: Restores a previously dropped row or column (undo of dropAxis).\n input:\n model: SheetModel\n axis: Axis\n axisIndex: string # original axis index to restore\n index: number # original position\n axisMeta: RowColumnMeta\n values: any[] # cell values to re-insert\n output: void\n effects: [echo:write]\n```\n\n```mdl\nop scrollToAnchor\n desc: Programmatically scrolls and highlights a cell range in an active grid instance.\n input:\n subject: string # attendable ID of the target sheet\n cursor: string # A1-notation cell or range\n ref?: any # active refs for highlight overlay\n output: void\n effects: [ui:scroll]\n```\n\n## Features\n\n```mdl\nfeat F-1: Sheet Object\n\n req F-1.1: A Sheet is an ECHO object with typename org.dxos.type.sheet persisted in the user's space.\n req F-1.2: Cells are stored in a sparse map keyed by internal row/column indices.\n req F-1.3: Row and column order is maintained via ordered index arrays; insertion/deletion preserves existing cell references.\n req F-1.4: Range-based formatting annotations are stored as a flat array on the Sheet object.\n```\n\n```mdl\nfeat F-2: Formula Evaluation\n\n req F-2.1: Formulas are prefixed with \"=\" and evaluated by the HyperFormula engine via the ComputeGraph.\n req F-2.2: Over 400 built-in functions are available (arithmetic, statistical, text, date/time, financial, logical).\n req F-2.3:\n when: a cell value changes\n then: all dependent formula cells are recomputed reactively\n req F-2.4: Cell references in stored formulas are translated to internal indices; A1-notation is converted on read/write.\n```\n\n```mdl\nfeat F-3: Row and Column Management\n\n req F-3.1:\n when: op:insertAxis is called\n then: a new row or column is inserted at the specified index; existing cells shift accordingly\n\n req F-3.2:\n when: op:dropAxis is called\n then: the row or column is removed and undo data returned; op:restoreAxis reverses the operation\n\n req F-3.3: Row and column sizes are persisted in rowMeta/columnMeta; absent size means default grid size.\n```\n\n```mdl\nfeat F-4: Cell Formatting\n\n req F-4.1: Ranges support alignment values: start | center | end.\n req F-4.2: Ranges support comment annotations displayed as a visual overlay on the cell.\n req F-4.3: Ranges support style values: highlight | softwrap.\n req F-4.4: RangeList in the object-properties surface allows users to view and manage range annotations.\n```\n\n```mdl\nfeat F-5: Collaborative Editing\n\n req F-5.1: All cell edits are written through ECHO and replicated to peers in real time.\n req F-5.2:\n when: a peer writes a cell value\n then: the local grid re-renders with the updated value without full reload\n\n req F-5.3: ComputeGraphRegistry manages per-space HyperFormula instances so all peers share the same formula graph.\n```\n\n```mdl\nfeat F-6: Markdown Integration\n\n req F-6.1: SheetPlugin contributes a CodeMirror extension to plugin-markdown via MarkdownCapabilities.ExtensionProvider.\n req F-6.2:\n when: the extension is active in a document that belongs to a space\n then: formula references inside Markdown fenced code blocks resolve against the space's ComputeGraph\n```\n\n```mdl\nfeat F-7: Anchor Navigation\n\n req F-7.1:\n when: op:scrollToAnchor is invoked with a sheet attendable ID and cursor\n then: the corresponding SheetArticle scrolls to the target cell and applies the active-ref highlight\n\n req F-7.2: AnchorSort contributes a sort comparator so sheet anchors appear in canonical order in navigation menus.\n```\n\n## Acceptance\n\n```mdl\ntest T-1: Create sheet and enter a value\n given: a new Sheet is created in a space\n when: user types \"42\" into cell A1\n then:\n - Sheet.cells contains an entry for the A1 index with value 42\n - grid displays \"42\" in the A1 cell\n```\n\n```mdl\ntest T-2: Formula evaluation\n given: A1 = 10, A2 = 20\n when: user enters \"=A1+A2\" in A3\n then:\n - A3 displays 30\n - changing A1 to 15 causes A3 to update to 35\n```\n\n```mdl\ntest T-3: Insert and drop row\n given: a Sheet with values in rows 1 and 2\n when: op:insertAxis runs with axis=row, index=1\n then:\n - a blank row is inserted between existing rows 1 and 2\n - existing cell references remain valid\n\n when: op:dropAxis runs on the inserted row\n then:\n - the row is removed\n - op:restoreAxis re-inserts the row with its original values\n```\n\n```mdl\ntest T-4: Range formatting\n given: a Sheet open in SheetArticle\n when: user applies \"highlight\" style to range B2:C4\n then:\n - Sheet.ranges contains an entry with range=\"B2:C4\", key=\"style\", value=\"highlight\"\n - cells in B2:C4 render with the highlight background class\n```\n\n```mdl\ntest T-5: Real-time collaboration\n given: two peers have the same Sheet open\n when: peer A sets cell D5 to \"hello\"\n then:\n - peer B's grid displays \"hello\" in D5 without reload\n```\n\n```mdl\ntest T-6: Scroll to anchor\n given: a SheetArticle is mounted with attendableId \"sheet-1\"\n when: op:scrollToAnchor runs with subject=\"sheet-1\", cursor=\"E10\"\n then:\n - the grid scrolls so that E10 is visible\n - E10 is highlighted via activeRefs\n```\n\n---\n\n## Appendix: Extension Definitions\n\n```mdl\next type\n uri: org.dxos.mdl.type@1.0\n desc: A named data structure with typed fields and optional literals.\n fields:\n desc?: Prose\n fields?: FieldMap\n literals?: UnionList\n extends?: TypeRef[]\n```\n\n```mdl\next feat\n uri: org.dxos.mdl.feat@1.0\n desc: A named feature grouping one or more requirements.\n fields:\n desc?: Prose\n req: RequirementList\n nesting: self\n```\n\n```mdl\next test\n uri: org.dxos.mdl.test@1.0\n desc: An acceptance scenario expressed as given / when / then steps.\n fields:\n given?: Step | Step[]\n when?: Step | Step[]\n then: Step | Step[]\n tags?: TagList\n```\n\n```mdl\next component\n uri: org.dxos.mdl.component@1.0\n desc: A UI component with props, internal state, slots, actions, and events.\n fields:\n desc?: Prose\n props?: FieldMap\n state?: FieldMap\n slots?: FieldMap\n actions?: ActionMap\n emits?: EventMap\n layout?: CodeBlock\n```\n\n```mdl\next op\n uri: org.dxos.mdl.op@1.0\n desc: |\n A named operation with typed inputs, outputs, and declared errors.\n Pure ops have no effects or requires. Effectful ops declare both.\n fields:\n desc?: Prose\n input?: FieldMap\n output?: TypeExpr\n errors?: ErrorMap\n effects?: EffectList\n requires?: ServiceList\n note?: Prose\n```\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,iBAAiBC,kBAAkBC,cAAc;AAC1D,SAASC,qBAAqBC,iBAAiB;AAC/C,SAASC,oBAAoB;AAC7B,SAASC,sBAAsB;AAE/B,SACEC,YACAC,iBACAC,oBACAC,eACAC,sBACAC,cACAC,UACAC,kBACAC,cACAC,cACAC,kBACK;AACP,SAASC,YAAY;AACrB,SAASC,oBAAoB;AAC7B,SAASC,aAAa;;;ACxBtB;;;AD6BO,IAAMC,cAAcC,OAAOC,OAAOC,IAAAA,EAAMC,KAC7CC,UAAUC,kBAAkB;EAAEC,UAAUC;AAAgB,CAAA,GACxDH,UAAUI,4BAA4B;EAAEF,UAAUG;AAAmB,CAAA,GACrEL,UAAUM,uBAAuB;EAAEJ,UAAUK;AAAc,CAAA,GAC3DP,UAAUQ,sBAAsB;EAAEN,UAAUO;AAAa,CAAA,GACzDT,UAAUU,0BAA0B;EAAER,UAAUS;AAAiB,CAAA,GACjEX,UAAUY,sBAAsB;EAAEV,UAAUW;AAAa,CAAA,GACzDb,UAAUc,gBAAgB;EAAEC,QAAQ;IAACC,MAAMA;;AAAO,CAAA,GAClDhB,UAAUiB,iBAAiB;EAAEf,UAAUgB;AAAa,CAAA,GACpDlB,UAAUmB,sBAAsB;EAAEC;AAAa,CAAA,GAC/CxB,OAAOyB,UAAU;EACfC,aAAaC,oBAAoBC;EACjCtB,UAAUuB;AACZ,CAAA,GACA7B,OAAOyB,UAAU;EACfC,aAAaI,gBAAgBC,MAAMC,aAAaC,aAAaC,iBAAiBC,mBAAmB;EACjG7B,UAAU8B;AACZ,CAAA,GACApC,OAAOyB,UAAU;EACfC,aAAaW,eAAeC;EAC5BhC,UAAUiC;AACZ,CAAA,GACAvC,OAAOyB,UAAU;;EAEfC,aAAaC,oBAAoBa;EACjClC,UAAUmC;AACZ,CAAA,GACArC,UAAUsC,qBAAqB;EAC7BC,OAAO;IAAEC,UAAU1C,KAAK2C;IAAIC,MAAM;IAAcC,SAASC;IAAYC,UAAU;EAAoB;AACrG,CAAA,GACAjD,OAAOkD,IAAI;AAGb,IAAA,sBAAenD;",
|
|
6
|
+
"names": ["ActivationEvent", "ActivationEvents", "Plugin", "AppActivationEvents", "AppPlugin", "ClientEvents", "MarkdownEvents", "AnchorSort", "AppGraphBuilder", "NavigationResolver", "CommentConfig", "ComputeGraphRegistry", "CreateObject", "Markdown", "OperationHandler", "UndoMappings", "ReactSurface", "SheetState", "meta", "translations", "Sheet", "SheetPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addAppGraphModule", "activate", "AppGraphBuilder", "addNavigationResolverModule", "NavigationResolver", "addCommentConfigModule", "CommentConfig", "addCreateObjectModule", "CreateObject", "addOperationHandlerModule", "OperationHandler", "addUndoMappingsModule", "UndoMappings", "addSchemaModule", "schema", "Sheet", "addSurfaceModule", "ReactSurface", "addTranslationsModule", "translations", "addModule", "activatesOn", "AppActivationEvents", "SetupSettings", "SheetState", "ActivationEvent", "allOf", "ClientEvents", "ClientReady", "ActivationEvents", "ProcessManagerReady", "ComputeGraphRegistry", "MarkdownEvents", "SetupExtensions", "Markdown", "AppGraphReady", "AnchorSort", "addPluginAssetModule", "asset", "pluginId", "id", "path", "content", "pluginSpec", "mimeType", "make"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/SheetPlugin.node.ts
|
|
4
|
+
import { Plugin } from "@dxos/app-framework";
|
|
5
|
+
import { AppPlugin } from "@dxos/app-toolkit";
|
|
6
|
+
import { CommentConfig, CreateObject, OperationHandler, UndoMappings } from "#capabilities";
|
|
7
|
+
import { meta } from "#meta";
|
|
8
|
+
import { Sheet } from "#types";
|
|
9
|
+
var SheetPlugin = Plugin.define(meta).pipe(AppPlugin.addCommentConfigModule({
|
|
10
|
+
activate: CommentConfig
|
|
11
|
+
}), AppPlugin.addCreateObjectModule({
|
|
12
|
+
activate: CreateObject
|
|
13
|
+
}), AppPlugin.addOperationHandlerModule({
|
|
14
|
+
activate: OperationHandler
|
|
15
|
+
}), AppPlugin.addUndoMappingsModule({
|
|
16
|
+
activate: UndoMappings
|
|
17
|
+
}), AppPlugin.addSchemaModule({
|
|
18
|
+
schema: [
|
|
19
|
+
Sheet.Sheet
|
|
20
|
+
]
|
|
21
|
+
}), Plugin.make);
|
|
22
|
+
var SheetPlugin_node_default = SheetPlugin;
|
|
23
|
+
export {
|
|
24
|
+
SheetPlugin,
|
|
25
|
+
SheetPlugin_node_default as default
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=SheetPlugin.node.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/SheetPlugin.node.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\n\nimport { CommentConfig, CreateObject, OperationHandler, UndoMappings } from '#capabilities';\nimport { meta } from '#meta';\nimport { Sheet } from '#types';\n\nexport const SheetPlugin = Plugin.define(meta).pipe(\n AppPlugin.addCommentConfigModule({ activate: CommentConfig }),\n AppPlugin.addCreateObjectModule({ activate: CreateObject }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addUndoMappingsModule({ activate: UndoMappings }),\n AppPlugin.addSchemaModule({ schema: [Sheet.Sheet] }),\n Plugin.make,\n);\n\nexport default SheetPlugin;\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,cAAc;AACvB,SAASC,iBAAiB;AAE1B,SAASC,eAAeC,cAAcC,kBAAkBC,oBAAoB;AAC5E,SAASC,YAAY;AACrB,SAASC,aAAa;AAEf,IAAMC,cAAcR,OAAOS,OAAOH,IAAAA,EAAMI,KAC7CT,UAAUU,uBAAuB;EAAEC,UAAUV;AAAc,CAAA,GAC3DD,UAAUY,sBAAsB;EAAED,UAAUT;AAAa,CAAA,GACzDF,UAAUa,0BAA0B;EAAEF,UAAUR;AAAiB,CAAA,GACjEH,UAAUc,sBAAsB;EAAEH,UAAUP;AAAa,CAAA,GACzDJ,UAAUe,gBAAgB;EAAEC,QAAQ;IAACV,MAAMA;;AAAO,CAAA,GAClDP,OAAOkB,IAAI;AAGb,IAAA,2BAAeV;",
|
|
6
|
+
"names": ["Plugin", "AppPlugin", "CommentConfig", "CreateObject", "OperationHandler", "UndoMappings", "meta", "Sheet", "SheetPlugin", "define", "pipe", "addCommentConfigModule", "activate", "addCreateObjectModule", "addOperationHandlerModule", "addUndoMappingsModule", "addSchemaModule", "schema", "make"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/SheetPlugin.workerd.ts
|
|
4
|
+
import { Plugin } from "@dxos/app-framework";
|
|
5
|
+
import { AppPlugin } from "@dxos/app-toolkit";
|
|
6
|
+
import { OperationHandler } from "#capabilities";
|
|
7
|
+
import { meta } from "#meta";
|
|
8
|
+
import { Sheet } from "#types";
|
|
9
|
+
var SheetPlugin = Plugin.define(meta).pipe(AppPlugin.addOperationHandlerModule({
|
|
10
|
+
activate: OperationHandler
|
|
11
|
+
}), AppPlugin.addSchemaModule({
|
|
12
|
+
schema: [
|
|
13
|
+
Sheet.Sheet
|
|
14
|
+
]
|
|
15
|
+
}), Plugin.make);
|
|
16
|
+
var SheetPlugin_workerd_default = SheetPlugin;
|
|
17
|
+
export {
|
|
18
|
+
SheetPlugin,
|
|
19
|
+
SheetPlugin_workerd_default as default
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=SheetPlugin.workerd.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/SheetPlugin.workerd.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\n\nimport { OperationHandler } from '#capabilities';\nimport { meta } from '#meta';\nimport { Sheet } from '#types';\n\nexport const SheetPlugin = Plugin.define(meta).pipe(\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({ schema: [Sheet.Sheet] }),\n Plugin.make,\n);\n\nexport default SheetPlugin;\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,cAAc;AACvB,SAASC,iBAAiB;AAE1B,SAASC,wBAAwB;AACjC,SAASC,YAAY;AACrB,SAASC,aAAa;AAEf,IAAMC,cAAcL,OAAOM,OAAOH,IAAAA,EAAMI,KAC7CN,UAAUO,0BAA0B;EAAEC,UAAUP;AAAiB,CAAA,GACjED,UAAUS,gBAAgB;EAAEC,QAAQ;IAACP,MAAMA;;AAAO,CAAA,GAClDJ,OAAOY,IAAI;AAGb,IAAA,8BAAeP;",
|
|
6
|
+
"names": ["Plugin", "AppPlugin", "OperationHandler", "meta", "Sheet", "SheetPlugin", "define", "pipe", "addOperationHandlerModule", "activate", "addSchemaModule", "schema", "make"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/capabilities/anchor-sort.ts
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import { Capability } from "@dxos/app-framework";
|
|
6
|
+
import { AppCapabilities } from "@dxos/app-toolkit";
|
|
7
|
+
import { Relation, Type } from "@dxos/echo";
|
|
8
|
+
import { Sheet, compareIndexPositions } from "#types";
|
|
9
|
+
var anchor_sort_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(AppCapabilities.AnchorSort, {
|
|
10
|
+
key: Type.getTypename(Sheet.Sheet),
|
|
11
|
+
sort: (anchorA, anchorB) => {
|
|
12
|
+
const sheet = Relation.getTarget(anchorA);
|
|
13
|
+
if (sheet !== Relation.getTarget(anchorB)) {
|
|
14
|
+
return 0;
|
|
15
|
+
}
|
|
16
|
+
return !anchorA.anchor || !anchorB.anchor ? 0 : compareIndexPositions(sheet, anchorA.anchor, anchorB.anchor);
|
|
17
|
+
}
|
|
18
|
+
})));
|
|
19
|
+
export {
|
|
20
|
+
anchor_sort_default as default
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=anchor-sort-2POWTKTD.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/anchor-sort.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { Relation, Type } from '@dxos/echo';\n\nimport { Sheet, compareIndexPositions } from '#types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(AppCapabilities.AnchorSort, {\n key: Type.getTypename(Sheet.Sheet),\n sort: (anchorA, anchorB) => {\n const sheet = Relation.getTarget(anchorA) as Sheet.Sheet;\n if (sheet !== Relation.getTarget(anchorB)) {\n return 0;\n }\n\n return !anchorA.anchor || !anchorB.anchor ? 0 : compareIndexPositions(sheet, anchorA.anchor, anchorB.anchor);\n },\n }),\n ),\n);\n"],
|
|
5
|
+
"mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAChC,SAASC,UAAUC,YAAY;AAE/B,SAASC,OAAOC,6BAA6B;AAE7C,IAAA,sBAAeL,WAAWM,WAAW,MAC5BC,eACLP,WAAWQ,YAAYP,gBAAgBQ,YAAY;EACjDC,KAAKP,KAAKQ,YAAYP,MAAMA,KAAK;EACjCQ,MAAM,CAACC,SAASC,YAAAA;AACd,UAAMC,QAAQb,SAASc,UAAUH,OAAAA;AACjC,QAAIE,UAAUb,SAASc,UAAUF,OAAAA,GAAU;AACzC,aAAO;IACT;AAEA,WAAO,CAACD,QAAQI,UAAU,CAACH,QAAQG,SAAS,IAAIZ,sBAAsBU,OAAOF,QAAQI,QAAQH,QAAQG,MAAM;EAC7G;AACF,CAAA,CAAA,CAAA;",
|
|
6
|
+
"names": ["Effect", "Capability", "AppCapabilities", "Relation", "Type", "Sheet", "compareIndexPositions", "makeModule", "succeed", "contributes", "AnchorSort", "key", "getTypename", "sort", "anchorA", "anchorB", "sheet", "getTarget", "anchor"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getSheetsPath
|
|
3
|
+
} from "./chunk-S2UNH6VD.mjs";
|
|
4
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
5
|
+
|
|
6
|
+
// src/capabilities/app-graph-builder.ts
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Option from "effect/Option";
|
|
9
|
+
import { Capability } from "@dxos/app-framework";
|
|
10
|
+
import { AppCapabilities, LayoutOperation, createTypeSectionExtension } from "@dxos/app-toolkit";
|
|
11
|
+
import { isSpace } from "@dxos/client/echo";
|
|
12
|
+
import { Operation } from "@dxos/compute";
|
|
13
|
+
import { Type } from "@dxos/echo";
|
|
14
|
+
import { GraphBuilder, Node } from "@dxos/plugin-graph";
|
|
15
|
+
import { SpaceOperation } from "@dxos/plugin-space";
|
|
16
|
+
import { Sheet } from "#types";
|
|
17
|
+
var sheetTypename = Type.getTypename(Sheet.Sheet);
|
|
18
|
+
var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
|
|
19
|
+
const extensions = yield* Effect.all([
|
|
20
|
+
createTypeSectionExtension(Sheet.Sheet),
|
|
21
|
+
GraphBuilder.createExtension({
|
|
22
|
+
id: "sheetsSectionActions",
|
|
23
|
+
match: (node) => {
|
|
24
|
+
const space = isSpace(node.properties.space) ? node.properties.space : void 0;
|
|
25
|
+
return node.type === sheetTypename && space ? Option.some(space) : Option.none();
|
|
26
|
+
},
|
|
27
|
+
actions: (space) => Effect.succeed([
|
|
28
|
+
Node.makeAction({
|
|
29
|
+
id: "create-sheet",
|
|
30
|
+
data: () => Effect.gen(function* () {
|
|
31
|
+
const sheet = Sheet.make({});
|
|
32
|
+
const { subject } = yield* Operation.invoke(SpaceOperation.AddObject, {
|
|
33
|
+
object: sheet,
|
|
34
|
+
target: space.db,
|
|
35
|
+
hidden: true,
|
|
36
|
+
targetNodeId: getSheetsPath(space.db.spaceId)
|
|
37
|
+
}, {
|
|
38
|
+
spaceId: space.db.spaceId
|
|
39
|
+
});
|
|
40
|
+
yield* Operation.invoke(LayoutOperation.Open, {
|
|
41
|
+
subject: [
|
|
42
|
+
...subject
|
|
43
|
+
]
|
|
44
|
+
}, {
|
|
45
|
+
spaceId: space.db.spaceId
|
|
46
|
+
});
|
|
47
|
+
}),
|
|
48
|
+
properties: {
|
|
49
|
+
label: [
|
|
50
|
+
"add-object.label",
|
|
51
|
+
{
|
|
52
|
+
ns: sheetTypename
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
icon: "ph--plus--regular",
|
|
56
|
+
disposition: "list-item-primary"
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
])
|
|
60
|
+
})
|
|
61
|
+
]);
|
|
62
|
+
return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
|
|
63
|
+
}));
|
|
64
|
+
export {
|
|
65
|
+
app_graph_builder_default as default
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=app-graph-builder-2QP6GYB2.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities, LayoutOperation, createTypeSectionExtension } from '@dxos/app-toolkit';\nimport { isSpace } from '@dxos/client/echo';\nimport { Operation } from '@dxos/compute';\nimport { Type } from '@dxos/echo';\nimport { GraphBuilder, Node } from '@dxos/plugin-graph';\nimport { SpaceOperation } from '@dxos/plugin-space';\n\nimport { Sheet } from '#types';\n\nimport { getSheetsPath } from '../paths';\n\nconst sheetTypename = Type.getTypename(Sheet.Sheet);\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* Effect.all([\n createTypeSectionExtension(Sheet.Sheet),\n\n GraphBuilder.createExtension({\n id: 'sheetsSectionActions',\n match: (node) => {\n const space = isSpace(node.properties.space) ? node.properties.space : undefined;\n return node.type === sheetTypename && space ? Option.some(space) : Option.none();\n },\n actions: (space) =>\n Effect.succeed([\n Node.makeAction({\n id: 'create-sheet',\n data: () =>\n Effect.gen(function* () {\n const sheet = Sheet.make({});\n const { subject } = yield* Operation.invoke(\n SpaceOperation.AddObject,\n { object: sheet, target: space.db, hidden: true, targetNodeId: getSheetsPath(space.db.spaceId) },\n { spaceId: space.db.spaceId },\n );\n yield* Operation.invoke(\n LayoutOperation.Open,\n { subject: [...subject] },\n { spaceId: space.db.spaceId },\n );\n }),\n properties: {\n label: ['add-object.label', { ns: sheetTypename }],\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n },\n }),\n ]),\n }),\n ]);\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiBC,iBAAiBC,kCAAkC;AAC7E,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,YAAY;AACrB,SAASC,cAAcC,YAAY;AACnC,SAASC,sBAAsB;AAE/B,SAASC,aAAa;AAItB,IAAMC,gBAAgBC,KAAKC,YAAYC,MAAMA,KAAK;AAElD,IAAA,4BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,aAAa,OAAcC,WAAI;IACnCC,2BAA2BN,MAAMA,KAAK;IAEtCO,aAAaC,gBAAgB;MAC3BC,IAAI;MACJC,OAAO,CAACC,SAAAA;AACN,cAAMC,QAAQC,QAAQF,KAAKG,WAAWF,KAAK,IAAID,KAAKG,WAAWF,QAAQG;AACvE,eAAOJ,KAAKK,SAASnB,iBAAiBe,QAAeK,YAAKL,KAAAA,IAAgBM,YAAI;MAChF;MACAC,SAAS,CAACP,UACDQ,eAAQ;QACbC,KAAKC,WAAW;UACdb,IAAI;UACJc,MAAM,MACGC,WAAI,aAAA;AACT,kBAAMC,QAAQzB,MAAM0B,KAAK,CAAC,CAAA;AAC1B,kBAAM,EAAEC,QAAO,IAAK,OAAOC,UAAUC,OACnCC,eAAeC,WACf;cAAEC,QAAQP;cAAOQ,QAAQrB,MAAMsB;cAAIC,QAAQ;cAAMC,cAAcC,cAAczB,MAAMsB,GAAGI,OAAO;YAAE,GAC/F;cAAEA,SAAS1B,MAAMsB,GAAGI;YAAQ,CAAA;AAE9B,mBAAOV,UAAUC,OACfU,gBAAgBC,MAChB;cAAEb,SAAS;mBAAIA;;YAAS,GACxB;cAAEW,SAAS1B,MAAMsB,GAAGI;YAAQ,CAAA;UAEhC,CAAA;UACFxB,YAAY;YACV2B,OAAO;cAAC;cAAoB;gBAAEC,IAAI7C;cAAc;;YAChD8C,MAAM;YACNC,aAAa;UACf;QACF,CAAA;OACD;IACL,CAAA;GACD;AAED,SAAO3C,WAAW4C,YAAYC,gBAAgBC,iBAAiB3C,UAAAA;AACjE,CAAA,CAAA;",
|
|
6
|
+
"names": ["Effect", "Option", "Capability", "AppCapabilities", "LayoutOperation", "createTypeSectionExtension", "isSpace", "Operation", "Type", "GraphBuilder", "Node", "SpaceOperation", "Sheet", "sheetTypename", "Type", "getTypename", "Sheet", "Capability", "makeModule", "fnUntraced", "extensions", "all", "createTypeSectionExtension", "GraphBuilder", "createExtension", "id", "match", "node", "space", "isSpace", "properties", "undefined", "type", "some", "none", "actions", "succeed", "Node", "makeAction", "data", "gen", "sheet", "make", "subject", "Operation", "invoke", "SpaceOperation", "AddObject", "object", "target", "db", "hidden", "targetNodeId", "getSheetsPath", "spaceId", "LayoutOperation", "Open", "label", "ns", "icon", "disposition", "contributes", "AppCapabilities", "AppGraphBuilder"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import "../chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/capabilities/index.ts
|
|
4
|
+
import { Capability } from "@dxos/app-framework";
|
|
5
|
+
var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("../app-graph-builder-2QP6GYB2.mjs"));
|
|
6
|
+
var NavigationResolver = Capability.lazy("NavigationResolver", () => import("../navigation-resolver-FXEZYO7G.mjs"));
|
|
7
|
+
var AnchorSort = Capability.lazy("AnchorSort", () => import("../anchor-sort-2POWTKTD.mjs"));
|
|
8
|
+
var CommentConfig = Capability.lazy("CommentConfig", () => import("../comment-config-WGXXX5FG.mjs"));
|
|
9
|
+
var ComputeGraphRegistry = Capability.lazy("ComputeGraphRegistry", () => import("../compute-graph-registry-YYINTFC2.mjs"));
|
|
10
|
+
var CreateObject = Capability.lazy("CreateObject", () => import("../create-object-TDQQ24IB.mjs"));
|
|
11
|
+
var Markdown = Capability.lazy("MarkdownExtension", () => import("../markdown-extension-HTJDICGT.mjs"));
|
|
12
|
+
var OperationHandler = Capability.lazy("OperationHandler", () => import("../operation-handler-TB6LFV2H.mjs"));
|
|
13
|
+
var ReactSurface = Capability.lazy("ReactSurface", () => import("../react-surface-4H3PC4WG.mjs"));
|
|
14
|
+
var SheetState = Capability.lazy("SheetState", () => import("../state-HPA27MX2.mjs"));
|
|
15
|
+
var UndoMappings = Capability.lazy("UndoMappings", () => import("../undo-mappings-3FQLSTCZ.mjs"));
|
|
16
|
+
export {
|
|
17
|
+
AnchorSort,
|
|
18
|
+
AppGraphBuilder,
|
|
19
|
+
CommentConfig,
|
|
20
|
+
ComputeGraphRegistry,
|
|
21
|
+
CreateObject,
|
|
22
|
+
Markdown,
|
|
23
|
+
NavigationResolver,
|
|
24
|
+
OperationHandler,
|
|
25
|
+
ReactSurface,
|
|
26
|
+
SheetState,
|
|
27
|
+
UndoMappings
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/capabilities/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\nimport { type AppCapabilities } from '@dxos/app-toolkit';\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));\nexport const NavigationResolver = Capability.lazy('NavigationResolver', () => import('./navigation-resolver'));\nexport const AnchorSort = Capability.lazy('AnchorSort', () => import('./anchor-sort'));\n// The contributed capability type references Operation types from @dxos/compute, so the lazy\n// wrapper needs an explicit annotation to keep the inferred type portable (TS2883).\nexport const CommentConfig: Capability.LazyCapability<\n void,\n Capability.Capability<typeof AppCapabilities.CommentConfig>\n> = Capability.lazy('CommentConfig', () => import('./comment-config'));\nexport const ComputeGraphRegistry = Capability.lazy('ComputeGraphRegistry', () => import('./compute-graph-registry'));\nexport const CreateObject = Capability.lazy('CreateObject', () => import('./create-object'));\nexport const Markdown = Capability.lazy('MarkdownExtension', () => import('./markdown-extension'));\nexport const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(\n 'OperationHandler',\n () => import('./operation-handler'),\n);\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\nexport const SheetState = Capability.lazy('SheetState', () => import('./state'));\nexport const UndoMappings = Capability.lazy('UndoMappings', () => import('./undo-mappings'));\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,kBAAkB;AAIpB,IAAMC,kBAAkBD,WAAWE,KAAK,mBAAmB,MAAM,OAAO,mCAAA,CAAA;AACxE,IAAMC,qBAAqBH,WAAWE,KAAK,sBAAsB,MAAM,OAAO,qCAAA,CAAA;AAC9E,IAAME,aAAaJ,WAAWE,KAAK,cAAc,MAAM,OAAO,6BAAA,CAAA;AAG9D,IAAMG,gBAGTL,WAAWE,KAAK,iBAAiB,MAAM,OAAO,gCAAA,CAAA;AAC3C,IAAMI,uBAAuBN,WAAWE,KAAK,wBAAwB,MAAM,OAAO,wCAAA,CAAA;AAClF,IAAMK,eAAeP,WAAWE,KAAK,gBAAgB,MAAM,OAAO,+BAAA,CAAA;AAClE,IAAMM,WAAWR,WAAWE,KAAK,qBAAqB,MAAM,OAAO,oCAAA,CAAA;AACnE,IAAMO,mBAAmBT,WAAWE,KACzC,oBACA,MAAM,OAAO,mCAAA,CAAA;AAER,IAAMQ,eAAeV,WAAWE,KAAK,gBAAgB,MAAM,OAAO,+BAAA,CAAA;AAClE,IAAMS,aAAaX,WAAWE,KAAK,cAAc,MAAM,OAAO,uBAAA,CAAA;AAC9D,IAAMU,eAAeZ,WAAWE,KAAK,gBAAgB,MAAM,OAAO,+BAAA,CAAA;",
|
|
6
|
+
"names": ["Capability", "AppGraphBuilder", "lazy", "NavigationResolver", "AnchorSort", "CommentConfig", "ComputeGraphRegistry", "CreateObject", "Markdown", "OperationHandler", "ReactSurface", "SheetState", "UndoMappings"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// src/operations/index.ts
|
|
2
|
+
import { OperationHandlerSet } from "@dxos/compute";
|
|
3
|
+
var SheetOperationHandlerSet = OperationHandlerSet.lazy(() => import("./drop-axis-WSWFOLQN.mjs"), () => import("./insert-axis-6UQJTIWC.mjs"), () => import("./restore-axis-AMMVTPS3.mjs"), () => import("./scroll-to-anchor-FK2CXCQR.mjs"));
|
|
4
|
+
|
|
5
|
+
export {
|
|
6
|
+
SheetOperationHandlerSet
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=chunk-BGR7FVNF.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/operations/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport const SheetOperationHandlerSet = OperationHandlerSet.lazy(\n () => import('./drop-axis'),\n () => import('./insert-axis'),\n () => import('./restore-axis'),\n () => import('./scroll-to-anchor'),\n);\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,2BAA2B;AAE7B,IAAMC,2BAA2BD,oBAAoBE,KAC1D,MAAM,OAAO,0BAAA,GACb,MAAM,OAAO,4BAAA,GACb,MAAM,OAAO,6BAAA,GACb,MAAM,OAAO,iCAAA,CAAA;",
|
|
6
|
+
"names": ["OperationHandlerSet", "SheetOperationHandlerSet", "lazy"]
|
|
7
|
+
}
|
|
@@ -3,49 +3,49 @@ import { syntaxTree } from "@codemirror/language";
|
|
|
3
3
|
import { RangeSetBuilder, StateEffect, StateField } from "@codemirror/state";
|
|
4
4
|
import { Decoration, EditorView, ViewPlugin, WidgetType } from "@codemirror/view";
|
|
5
5
|
import { debounce } from "@dxos/async";
|
|
6
|
-
import { createSheetName } from "@dxos/compute";
|
|
6
|
+
import { createSheetName } from "@dxos/compute-hyperformula";
|
|
7
7
|
import { invariant } from "@dxos/invariant";
|
|
8
|
-
import { documentId, singleValueFacet } from "@dxos/
|
|
8
|
+
import { documentId, singleValueFacet } from "@dxos/ui-editor";
|
|
9
9
|
var updateAllDecorations = StateEffect.define();
|
|
10
10
|
var computeGraphFacet = singleValueFacet();
|
|
11
11
|
|
|
12
|
-
// src/extensions/editor/extension.ts
|
|
12
|
+
// src/extensions/editor/sheet-extension.ts
|
|
13
13
|
import { acceptCompletion, autocompletion, completionStatus, startCompletion } from "@codemirror/autocomplete";
|
|
14
14
|
import { HighlightStyle, syntaxHighlighting } from "@codemirror/language";
|
|
15
15
|
import { ViewPlugin as ViewPlugin2, keymap } from "@codemirror/view";
|
|
16
16
|
import { tags } from "@lezer/highlight";
|
|
17
17
|
import { spreadsheet } from "codemirror-lang-spreadsheet";
|
|
18
|
-
import { RANGE_NOTATION } from "@dxos/compute";
|
|
19
|
-
import { singleValueFacet as singleValueFacet2 } from "@dxos/
|
|
20
|
-
import { mx } from "@dxos/
|
|
18
|
+
import { RANGE_NOTATION } from "@dxos/compute-hyperformula";
|
|
19
|
+
import { singleValueFacet as singleValueFacet2 } from "@dxos/ui-editor";
|
|
20
|
+
import { mx } from "@dxos/ui-theme";
|
|
21
21
|
var highlightStyles = HighlightStyle.define([
|
|
22
22
|
// Function.
|
|
23
23
|
{
|
|
24
24
|
tag: tags.name,
|
|
25
|
-
class: "text-
|
|
25
|
+
class: "text-accent-text"
|
|
26
26
|
},
|
|
27
27
|
// Range.
|
|
28
28
|
{
|
|
29
29
|
tag: tags.tagName,
|
|
30
|
-
class: "text-
|
|
30
|
+
class: "text-pink-text"
|
|
31
31
|
},
|
|
32
32
|
// Values.
|
|
33
33
|
{
|
|
34
34
|
tag: tags.number,
|
|
35
|
-
class: "text-
|
|
35
|
+
class: "text-teal-text"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
tag: tags.bool,
|
|
39
|
-
class: "text-
|
|
39
|
+
class: "text-teal-text"
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
tag: tags.string,
|
|
43
|
-
class: "text-
|
|
43
|
+
class: "text-teal-text"
|
|
44
44
|
},
|
|
45
45
|
// Error.
|
|
46
46
|
{
|
|
47
47
|
tag: tags.invalid,
|
|
48
|
-
class: "text-
|
|
48
|
+
class: "text-un-accent"
|
|
49
49
|
}
|
|
50
50
|
]);
|
|
51
51
|
var languageFacet = singleValueFacet2();
|
|
@@ -67,7 +67,7 @@ var sheetExtension = ({ debug, functions = [] }) => {
|
|
|
67
67
|
root.className = "flex flex-col gap-2 text-sm";
|
|
68
68
|
const title = document.createElement("h2");
|
|
69
69
|
title.innerText = name;
|
|
70
|
-
title.className = "text-lg font-mono text-
|
|
70
|
+
title.className = "text-lg font-mono text-accent-text";
|
|
71
71
|
root.appendChild(title);
|
|
72
72
|
if (description) {
|
|
73
73
|
const info = document.createElement("p");
|
|
@@ -78,7 +78,7 @@ var sheetExtension = ({ debug, functions = [] }) => {
|
|
|
78
78
|
if (syntax) {
|
|
79
79
|
const detail = document.createElement("pre");
|
|
80
80
|
detail.innerText = syntax;
|
|
81
|
-
detail.className = "whitespace-pre-wrap text-
|
|
81
|
+
detail.className = "whitespace-pre-wrap text-green-text";
|
|
82
82
|
root.appendChild(detail);
|
|
83
83
|
}
|
|
84
84
|
return root;
|
|
@@ -127,7 +127,7 @@ var sheetExtension = ({ debug, functions = [] }) => {
|
|
|
127
127
|
activateOnTyping: true,
|
|
128
128
|
closeOnBlur: !debug,
|
|
129
129
|
icons: false,
|
|
130
|
-
tooltipClass: () => mx("!-left-[1px] !top-[33px] !-m-0 border
|
|
130
|
+
tooltipClass: () => mx("!-left-[1px] !top-[33px] !-m-0 border border-h-0! [&>ul]:!min-w-[198px]", "[&>ul>li[aria-selected]]:!bg-accent-bg", "border-separator")
|
|
131
131
|
}),
|
|
132
132
|
keymap.of([
|
|
133
133
|
{
|
|
@@ -231,4 +231,4 @@ export {
|
|
|
231
231
|
sheetExtension,
|
|
232
232
|
rangeExtension
|
|
233
233
|
};
|
|
234
|
-
//# sourceMappingURL=chunk-
|
|
234
|
+
//# sourceMappingURL=chunk-ERHMBRSU.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/extensions/compute.ts", "../../../src/extensions/editor/sheet-extension.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport {\n type EditorState,\n type Extension,\n type RangeSet,\n RangeSetBuilder,\n StateEffect,\n StateField,\n type Transaction,\n} from '@codemirror/state';\nimport { Decoration, EditorView, ViewPlugin, WidgetType } from '@codemirror/view';\n\nimport { type CleanupFn, debounce } from '@dxos/async';\nimport {\n type CellAddress,\n type CellScalarValue,\n type ComputeGraph,\n type ComputeNode,\n createSheetName,\n} from '@dxos/compute-hyperformula';\nimport { invariant } from '@dxos/invariant';\nimport { documentId, singleValueFacet } from '@dxos/ui-editor';\n\nconst LANGUAGE_TAG = 'dx';\n\n// TODO(burdon): Create marker just for our decorator?\nconst updateAllDecorations = StateEffect.define<void>();\n\nexport const computeGraphFacet = singleValueFacet<ComputeGraph>();\n\nexport type ComputeOptions = {};\n\nexport const compute = (_options: ComputeOptions = {}): Extension => {\n let computeNode: ComputeNode | undefined;\n\n const update = (state: EditorState, current?: RangeSet<Decoration>) => {\n const builder = new RangeSetBuilder<Decoration>();\n if (computeNode) {\n computeNode.clear();\n syntaxTree(state).iterate({\n enter: (node) => {\n switch (node.name) {\n case 'FencedCode': {\n const cursor = state.selection.main.head;\n if (state.readOnly || cursor < node.from || cursor > node.to) {\n const info = node.node.getChild('CodeInfo');\n if (info) {\n const type = state.sliceDoc(info.from, info.to);\n const text = node.node.getChild('CodeText');\n if (type === LANGUAGE_TAG && text) {\n const formula = state.sliceDoc(text.from, text.to);\n const iter = current?.iter(node.node.from);\n if (iter?.value && iter?.value.spec.formula === formula) {\n // Add existing widget.\n builder.add(node.from, node.to, iter.value);\n } else {\n // TODO(burdon): Create ordered list of cells on each decoration run.\n const cell: CellAddress = { col: node.node.from, row: 0 };\n invariant(computeNode);\n // NOTE: This triggers re-render (below).\n computeNode.setValue(cell, formula);\n const value = computeNode.getValue(cell);\n builder.add(\n node.from,\n node.to,\n Decoration.replace({\n widget: new ComputeWidget(formula, value),\n formula,\n }),\n );\n }\n }\n }\n }\n\n break;\n }\n }\n },\n });\n }\n\n return builder.finish();\n };\n\n return [\n ViewPlugin.fromClass(\n class {\n // Graph subscription.\n private _subscription?: CleanupFn;\n constructor(view: EditorView) {\n const id = view.state.facet(documentId);\n const computeGraph = view.state.facet(computeGraphFacet);\n if (id && computeGraph) {\n queueMicrotask(async () => {\n computeNode = computeGraph.getOrCreateNode(createSheetName({ type: '', id }));\n await computeNode.open();\n\n // Trigger re-render if values updated.\n // TODO(burdon): Trigger only if formula value updated (currently triggered during render).\n this._subscription = computeNode.update.on(\n debounce(({ type, ...rest }) => {\n if (type === 'valuesUpdated') {\n view.dispatch({\n effects: updateAllDecorations.of(),\n });\n }\n }, 250),\n );\n });\n }\n }\n\n destroy() {\n this._subscription?.();\n void computeNode?.close();\n computeNode = undefined;\n }\n },\n ),\n\n StateField.define<RangeSet<Decoration>>({\n create: (state) => update(state),\n update: (rangeSet: RangeSet<Decoration>, tr: Transaction) => update(tr.state, rangeSet),\n provide: (field) => EditorView.decorations.from(field),\n }),\n ];\n};\n\n// TODO(burdon): Click to edit.\nclass ComputeWidget extends WidgetType {\n constructor(\n private readonly formula: string,\n private readonly value: CellScalarValue,\n ) {\n super();\n }\n\n override toDOM(_view: EditorView): HTMLDivElement {\n const div = document.createElement('div');\n div.setAttribute('title', this.formula);\n div.innerText = String(this.value);\n return div;\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport {\n type Completion,\n type CompletionContext,\n type CompletionResult,\n acceptCompletion,\n autocompletion,\n completionStatus,\n startCompletion,\n} from '@codemirror/autocomplete';\nimport { HighlightStyle, type Language, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\nimport { type EditorView, ViewPlugin, type ViewUpdate, keymap } from '@codemirror/view';\nimport { type SyntaxNode } from '@lezer/common';\nimport { tags } from '@lezer/highlight';\nimport { spreadsheet } from 'codemirror-lang-spreadsheet';\n\nimport { type FunctionDefinition } from '@dxos/compute-hyperformula';\nimport { RANGE_NOTATION } from '@dxos/compute-hyperformula';\nimport { singleValueFacet } from '@dxos/ui-editor';\nimport { mx } from '@dxos/ui-theme';\n\n/**\n * https://codemirror.net/examples/styling\n * https://lezer.codemirror.net/docs/ref/#highlight\n * https://github.com/luizzappa/codemirror-lang-spreadsheet/blob/main/src/index.ts#L28 (mapping)\n */\n// TODO(burdon): Define light/dark.\nconst highlightStyles = HighlightStyle.define([\n // Function.\n {\n tag: tags.name,\n class: 'text-accent-text',\n },\n // Range.\n {\n tag: tags.tagName,\n class: 'text-pink-text',\n },\n // Values.\n {\n tag: tags.number,\n class: 'text-teal-text',\n },\n {\n tag: tags.bool,\n class: 'text-teal-text',\n },\n {\n tag: tags.string,\n class: 'text-teal-text',\n },\n // Error.\n {\n tag: tags.invalid,\n class: 'text-un-accent',\n },\n]);\n\nconst languageFacet = singleValueFacet<Language>();\n\nexport type SheetExtensionOptions = {\n debug?: boolean;\n functions?: FunctionDefinition[];\n};\n\n/**\n * Spreadsheet formula extension and parser.\n * https://github.com/luizzappa/codemirror-lang-spreadsheet\n * https://github.com/luizzappa/codemirror-app-spreadsheet/blob/master/src/editor.ts\n * https://github.com/codemirror/lang-example\n * https://hyperformula.handsontable.com/guide/key-concepts.html#grammar\n */\nexport const sheetExtension = ({ debug, functions = [] }: SheetExtensionOptions): Extension => {\n const { extension, language } = spreadsheet({\n idiom: 'en-US',\n decimalSeparator: '.',\n });\n\n const createCompletion = (name: string) => {\n const { section = 'Custom', description, syntax } = functions.find((value) => value.name === name) ?? {};\n\n return {\n section,\n label: name,\n info: () => {\n if (!description && !syntax) {\n return null;\n }\n\n // TODO(burdon): Standardize color styles.\n const root = document.createElement('div');\n root.className = 'flex flex-col gap-2 text-sm';\n\n const title = document.createElement('h2');\n title.innerText = name;\n title.className = 'text-lg font-mono text-accent-text';\n root.appendChild(title);\n\n if (description) {\n const info = document.createElement('p');\n info.innerText = description;\n info.className = 'text-subdued';\n root.appendChild(info);\n }\n\n if (syntax) {\n const detail = document.createElement('pre');\n detail.innerText = syntax;\n detail.className = 'whitespace-pre-wrap text-green-text';\n root.appendChild(detail);\n }\n\n return root;\n },\n apply: (view, completion, from, to) => {\n const insertParens = to === view.state.doc.toString().length;\n view.dispatch(\n view.state.update({\n changes: {\n from,\n to,\n insert: completion.label + (insertParens ? '()' : ''),\n },\n selection: {\n anchor: from + completion.label.length + 1,\n },\n }),\n );\n },\n } satisfies Completion;\n };\n\n return [\n extension,\n languageFacet.of(language),\n language.data.of({\n autocomplete: (context: CompletionContext): CompletionResult | null => {\n if (context.state.doc.toString()[0] !== '=') {\n return null;\n }\n const match = context.matchBefore(/\\w*/);\n if (!match || match.from === match.to) {\n return null;\n }\n\n const text = match.text.toUpperCase();\n if (!context.explicit && match.text.length < 2) {\n return null;\n }\n\n return {\n from: match.from,\n options:\n functions?.filter(({ name }) => name.startsWith(text)).map(({ name }) => createCompletion(name)) ?? [],\n };\n },\n }),\n\n syntaxHighlighting(highlightStyles),\n autocompletion({\n aboveCursor: false,\n defaultKeymap: true,\n activateOnTyping: true,\n closeOnBlur: !debug,\n icons: false,\n tooltipClass: () =>\n mx(\n '!-left-[1px] !top-[33px] !-m-0 border border-h-0! [&>ul]:!min-w-[198px]',\n '[&>ul>li[aria-selected]]:!bg-accent-bg',\n 'border-separator',\n ),\n }),\n keymap.of([\n {\n key: 'Tab',\n run: (view) => {\n return completionStatus(view.state) === 'active' ? acceptCompletion(view) : startCompletion(view);\n },\n },\n ]),\n\n // Parsing.\n // StateField.define({\n // create: (state) => {},\n // update: (value, tr) => {\n // log.info('update');\n // syntaxTree(tr.state).iterate({\n // enter: ({ type, from, to }) => {\n // log.info('node', { type: type.name, from, to });\n // },\n // });\n // },\n // }),\n ];\n};\n\nexport type SelectionRange = { from: number; to: number };\n\nexport interface RangeController {\n setRange(range: string): void;\n}\n\nexport type RangeExtensionOptions = {\n /**\n * Provides controller callback when extension is initialized.\n */\n onInit?: (controller: RangeController) => void;\n /**\n * Called when the active range changes.\n * @param state The current state.\n * @param state.activeRange undefined if no range is active, otherwise a possibly partially defined range.\n */\n onStateChange?: (state: { activeRange: string | undefined }) => void;\n};\n\n/**\n * Tracks the currently active cell within a formula and provides a callback to modify it.\n */\nexport const rangeExtension = ({ onInit, onStateChange }: RangeExtensionOptions): Extension => {\n let view: EditorView;\n let activeRange: SelectionRange | undefined;\n\n // Called externally to provide current range.\n const notifier: RangeController = {\n setRange: (range: string) => {\n if (activeRange) {\n view.dispatch(\n view.state.update({\n changes: { ...activeRange, insert: range.toString() },\n selection: { anchor: activeRange.from + range.length },\n }),\n );\n }\n\n view.focus();\n },\n };\n\n return ViewPlugin.fromClass(\n class {\n constructor(_view: EditorView) {\n view = _view;\n onInit?.(notifier);\n }\n\n update(view: ViewUpdate) {\n const { anchor } = view.state.selection.ranges[0];\n\n // Find first Range or cell at cursor.\n activeRange = undefined;\n const language = view.state.facet(languageFacet);\n const { topNode } = language.parser.parse(view.state.doc.toString());\n visitTree(topNode, ({ type, from, to }) => {\n if (from <= anchor && to >= anchor) {\n switch (type.name) {\n case 'Function':\n // Mark but keep looking.\n activeRange = { from: to, to };\n break;\n\n case 'CloseParen':\n // Mark but keep looking.\n activeRange = { from, to: from };\n break;\n\n case 'RangeToken':\n case 'CellToken':\n activeRange = { from, to };\n return true;\n }\n }\n\n return false;\n });\n\n // Allow start of formula.\n if (!activeRange && view.state.doc.toString()[0] === '=') {\n const str = view.state.doc.sliceString(1);\n if (RANGE_NOTATION.test(str)) {\n activeRange = { from: 1, to: str.length + 1 };\n } else {\n activeRange = { from: str.length + 1, to: str.length + 1 };\n }\n }\n\n onStateChange?.({\n activeRange: activeRange ? view.state.doc.sliceString(activeRange.from, activeRange.to) : undefined,\n });\n }\n },\n );\n};\n\n/**\n * Lezer parse result visitor.\n */\nconst visitTree = (node: SyntaxNode, callback: (node: SyntaxNode) => boolean): boolean => {\n if (callback(node)) {\n return true;\n }\n\n for (let child = node.firstChild; child !== null; child = child.nextSibling) {\n if (visitTree(child, callback)) {\n return true;\n }\n }\n\n return false;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["syntaxTree", "RangeSetBuilder", "StateEffect", "StateField", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "debounce", "createSheetName", "invariant", "documentId", "singleValueFacet", "_options", "computeNode", "acceptCompletion", "autocompletion", "completionStatus", "startCompletion", "HighlightStyle", "syntaxHighlighting", "ViewPlugin", "keymap", "tags", "spreadsheet", "RANGE_NOTATION", "singleValueFacet", "mx", "highlightStyles", "define", "tag", "name", "class", "tagName", "number", "bool", "string", "invalid", "languageFacet", "sheetExtension", "debug", "functions", "extension", "language", "idiom", "decimalSeparator", "createCompletion", "section", "description", "syntax", "find", "value", "label", "info", "root", "document", "createElement", "className", "title", "innerText", "appendChild", "detail", "apply", "view", "completion", "from", "to", "insertParens", "state", "doc", "toString", "length", "dispatch", "update", "changes", "insert", "selection", "anchor", "of", "data", "autocomplete", "context", "match", "matchBefore", "text", "toUpperCase", "explicit", "options", "filter", "startsWith", "map", "aboveCursor", "defaultKeymap", "activateOnTyping", "closeOnBlur", "icons", "tooltipClass", "key", "run", "rangeExtension", "onInit", "onStateChange", "activeRange", "notifier", "setRange", "range", "focus", "fromClass", "_view", "ranges", "undefined", "facet", "topNode", "parser", "parse", "visitTree", "type", "str", "sliceString", "test", "node", "callback", "child", "firstChild", "nextSibling"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// src/meta.ts
|
|
2
|
+
import { Plugin } from "@dxos/app-framework";
|
|
3
|
+
import { DXN } from "@dxos/keys";
|
|
4
|
+
import { trim } from "@dxos/util";
|
|
5
|
+
var meta = Plugin.makeMeta({
|
|
6
|
+
key: DXN.make("org.dxos.plugin.sheet"),
|
|
7
|
+
name: "Sheet",
|
|
8
|
+
author: "DXOS",
|
|
9
|
+
description: trim`
|
|
10
|
+
Full-featured spreadsheet for DXOS Composer backed by ECHO for local-first, real-time collaborative editing.
|
|
11
|
+
Cells, row/column metadata, and range-based formatting are all stored as ECHO objects and replicated to peers instantly.
|
|
12
|
+
|
|
13
|
+
Formula evaluation is powered by HyperFormula, providing over 400 built-in functions covering arithmetic, statistics,
|
|
14
|
+
text manipulation, date/time, financial, and logical operations. Formulas are stored with internal cell indices and
|
|
15
|
+
translated to A1-notation on display, keeping references stable across row and column insertions.
|
|
16
|
+
|
|
17
|
+
The plugin integrates with plugin-markdown to expose formula results inside document fenced code blocks, and
|
|
18
|
+
contributes anchor-navigation support so other plugins can scroll and highlight specific cell ranges by DXN reference.
|
|
19
|
+
AI agents can invoke sheet operations — insert/drop axes, scroll to anchor, and read or write cell values — through
|
|
20
|
+
the standard operations framework.
|
|
21
|
+
`,
|
|
22
|
+
icon: "ph--grid-nine--regular",
|
|
23
|
+
iconHue: "indigo",
|
|
24
|
+
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet",
|
|
25
|
+
spec: "PLUGIN.mdl",
|
|
26
|
+
screenshots: [
|
|
27
|
+
"https://dxos.network/plugin-details-sheet-dark.png"
|
|
28
|
+
]
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export {
|
|
32
|
+
meta
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=chunk-FQHTXKMF.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 { Plugin } from '@dxos/app-framework';\nimport { DXN } from '@dxos/keys';\nimport { trim } from '@dxos/util';\n\nexport const meta = Plugin.makeMeta({\n key: DXN.make('org.dxos.plugin.sheet'),\n name: 'Sheet',\n author: 'DXOS',\n description: trim`\n Full-featured spreadsheet for DXOS Composer backed by ECHO for local-first, real-time collaborative editing.\n Cells, row/column metadata, and range-based formatting are all stored as ECHO objects and replicated to peers instantly.\n\n Formula evaluation is powered by HyperFormula, providing over 400 built-in functions covering arithmetic, statistics,\n text manipulation, date/time, financial, and logical operations. Formulas are stored with internal cell indices and\n translated to A1-notation on display, keeping references stable across row and column insertions.\n\n The plugin integrates with plugin-markdown to expose formula results inside document fenced code blocks, and\n contributes anchor-navigation support so other plugins can scroll and highlight specific cell ranges by DXN reference.\n AI agents can invoke sheet operations — insert/drop axes, scroll to anchor, and read or write cell values — through\n the standard operations framework.\n `,\n icon: 'ph--grid-nine--regular',\n iconHue: 'indigo',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet',\n spec: 'PLUGIN.mdl',\n screenshots: ['https://dxos.network/plugin-details-sheet-dark.png'],\n});\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,cAAc;AACvB,SAASC,WAAW;AACpB,SAASC,YAAY;AAEd,IAAMC,OAAOH,OAAOI,SAAS;EAClCC,KAAKJ,IAAIK,KAAK,uBAAA;EACdC,MAAM;EACNC,QAAQ;EACRC,aAAaP;;;;;;;;;;;;;EAabQ,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,MAAM;EACNC,aAAa;IAAC;;AAChB,CAAA;",
|
|
6
|
+
"names": ["Plugin", "DXN", "trim", "meta", "makeMeta", "key", "make", "name", "author", "description", "icon", "iconHue", "source", "spec", "screenshots"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// src/integrations/thread-ranges.ts
|
|
2
|
+
import { useCallback, useEffect, useMemo } from "react";
|
|
3
|
+
import { useOperationInvoker } from "@dxos/app-framework/ui";
|
|
4
|
+
import { LayoutOperation } from "@dxos/app-toolkit";
|
|
5
|
+
import { debounce } from "@dxos/async";
|
|
6
|
+
import { inRange } from "@dxos/compute-hyperformula";
|
|
7
|
+
import { Filter, Obj, Query, Relation } from "@dxos/echo";
|
|
8
|
+
import { CommentOperation } from "@dxos/plugin-comments/types";
|
|
9
|
+
import { useQuery } from "@dxos/react-client/echo";
|
|
10
|
+
import { linkedSegment } from "@dxos/react-ui-attention";
|
|
11
|
+
import { AnchoredTo, Thread } from "@dxos/types";
|
|
12
|
+
import { useSheetContext } from "#components";
|
|
13
|
+
var parseThreadAnchorAsCellRange = (cursor) => {
|
|
14
|
+
const coords = cursor.split(",");
|
|
15
|
+
if (coords.length !== 4) {
|
|
16
|
+
return null;
|
|
17
|
+
} else {
|
|
18
|
+
const [fromCol, fromRow, toCol, toRow] = coords;
|
|
19
|
+
return {
|
|
20
|
+
from: {
|
|
21
|
+
col: parseInt(fromCol),
|
|
22
|
+
row: parseInt(fromRow)
|
|
23
|
+
},
|
|
24
|
+
to: {
|
|
25
|
+
col: parseInt(toCol),
|
|
26
|
+
row: parseInt(toRow)
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
var useSelectThreadOnCellFocus = () => {
|
|
32
|
+
const { model, cursor } = useSheetContext();
|
|
33
|
+
const { invokePromise } = useOperationInvoker();
|
|
34
|
+
const db = Obj.getDatabase(model.sheet);
|
|
35
|
+
const anchors = useQuery(db, Query.select(Filter.id(model.sheet.id)).targetOf(AnchoredTo.AnchoredTo));
|
|
36
|
+
const selectClosestThread = useCallback((cellAddress) => {
|
|
37
|
+
if (!cellAddress) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const closestThread = anchors.find((anchor) => {
|
|
41
|
+
const source = Relation.getSource(anchor);
|
|
42
|
+
if (anchor.anchor && Obj.instanceOf(Thread.Thread, source)) {
|
|
43
|
+
const range = parseThreadAnchorAsCellRange(anchor.anchor);
|
|
44
|
+
return range ? inRange(range, cellAddress) : false;
|
|
45
|
+
} else {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
if (closestThread) {
|
|
50
|
+
void (async () => {
|
|
51
|
+
await invokePromise(CommentOperation.Select, {
|
|
52
|
+
current: Relation.getURI(closestThread)
|
|
53
|
+
});
|
|
54
|
+
await invokePromise(LayoutOperation.UpdateCompanion, {
|
|
55
|
+
subject: linkedSegment("comments")
|
|
56
|
+
});
|
|
57
|
+
})();
|
|
58
|
+
}
|
|
59
|
+
}, [
|
|
60
|
+
invokePromise,
|
|
61
|
+
anchors
|
|
62
|
+
]);
|
|
63
|
+
const debounced = useMemo(() => {
|
|
64
|
+
return debounce((cellCoords) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);
|
|
65
|
+
}, [
|
|
66
|
+
selectClosestThread
|
|
67
|
+
]);
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
if (!cursor) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
debounced(cursor);
|
|
73
|
+
}, [
|
|
74
|
+
cursor,
|
|
75
|
+
debounced
|
|
76
|
+
]);
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export {
|
|
80
|
+
parseThreadAnchorAsCellRange,
|
|
81
|
+
useSelectThreadOnCellFocus
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=chunk-HEN74ZWI.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/integrations/thread-ranges.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { debounce } from '@dxos/async';\nimport { type CellAddress, type CompleteCellRange, inRange } from '@dxos/compute-hyperformula';\nimport { Filter, Obj, Query, Relation } from '@dxos/echo';\nimport { CommentOperation } from '@dxos/plugin-comments/types';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { linkedSegment } from '@dxos/react-ui-attention';\nimport { AnchoredTo, Thread } from '@dxos/types';\n\nimport { useSheetContext } from '#components';\n\nexport const completeCellRangeToThreadCursor = (range: CompleteCellRange): string => {\n return `${range.from.col},${range.from.row},${range.to.col},${range.to.row}`;\n};\n\nexport const parseThreadAnchorAsCellRange = (cursor: string): CompleteCellRange | null => {\n const coords = cursor.split(',');\n if (coords.length !== 4) {\n return null;\n } else {\n const [fromCol, fromRow, toCol, toRow] = coords;\n return {\n from: { col: parseInt(fromCol), row: parseInt(fromRow) },\n to: { col: parseInt(toCol), row: parseInt(toRow) },\n };\n }\n};\n\nexport const useSelectThreadOnCellFocus = () => {\n const { model, cursor } = useSheetContext();\n const { invokePromise } = useOperationInvoker();\n\n const db = Obj.getDatabase(model.sheet);\n const anchors = useQuery(db, Query.select(Filter.id(model.sheet.id)).targetOf(AnchoredTo.AnchoredTo));\n\n const selectClosestThread = useCallback(\n (cellAddress: CellAddress) => {\n if (!cellAddress) {\n return;\n }\n\n const closestThread = anchors.find((anchor) => {\n const source = Relation.getSource(anchor);\n if (anchor.anchor && Obj.instanceOf(Thread.Thread, source)) {\n const range = parseThreadAnchorAsCellRange(anchor.anchor);\n return range ? inRange(range, cellAddress) : false;\n } else {\n return false;\n }\n });\n\n if (closestThread) {\n void (async () => {\n await invokePromise(CommentOperation.Select, { current: Relation.getURI(closestThread) });\n await invokePromise(LayoutOperation.UpdateCompanion, {\n subject: linkedSegment('comments'),\n });\n })();\n }\n },\n [invokePromise, anchors],\n );\n\n const debounced = useMemo(() => {\n return debounce((cellCoords: CellAddress) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);\n }, [selectClosestThread]);\n\n useEffect(() => {\n if (!cursor) {\n return;\n }\n\n debounced(cursor);\n }, [cursor, debounced]);\n};\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,aAAaC,WAAWC,eAAe;AAEhD,SAASC,2BAA2B;AACpC,SAASC,uBAAuB;AAChC,SAASC,gBAAgB;AACzB,SAAmDC,eAAe;AAClE,SAASC,QAAQC,KAAKC,OAAOC,gBAAgB;AAC7C,SAASC,wBAAwB;AACjC,SAASC,gBAAgB;AACzB,SAASC,qBAAqB;AAC9B,SAASC,YAAYC,cAAc;AAEnC,SAASC,uBAAuB;AAMzB,IAAMC,+BAA+B,CAACC,WAAAA;AAC3C,QAAMC,SAASD,OAAOE,MAAM,GAAA;AAC5B,MAAID,OAAOE,WAAW,GAAG;AACvB,WAAO;EACT,OAAO;AACL,UAAM,CAACC,SAASC,SAASC,OAAOC,KAAAA,IAASN;AACzC,WAAO;MACLO,MAAM;QAAEC,KAAKC,SAASN,OAAAA;QAAUO,KAAKD,SAASL,OAAAA;MAAS;MACvDO,IAAI;QAAEH,KAAKC,SAASJ,KAAAA;QAAQK,KAAKD,SAASH,KAAAA;MAAO;IACnD;EACF;AACF;AAEO,IAAMM,6BAA6B,MAAA;AACxC,QAAM,EAAEC,OAAOd,OAAM,IAAKe,gBAAAA;AAC1B,QAAM,EAAEC,cAAa,IAAKC,oBAAAA;AAE1B,QAAMC,KAAKC,IAAIC,YAAYN,MAAMO,KAAK;AACtC,QAAMC,UAAUC,SAASL,IAAIM,MAAMC,OAAOC,OAAOC,GAAGb,MAAMO,MAAMM,EAAE,CAAA,EAAGC,SAASC,WAAWA,UAAU,CAAA;AAEnG,QAAMC,sBAAsBC,YAC1B,CAACC,gBAAAA;AACC,QAAI,CAACA,aAAa;AAChB;IACF;AAEA,UAAMC,gBAAgBX,QAAQY,KAAK,CAACC,WAAAA;AAClC,YAAMC,SAASC,SAASC,UAAUH,MAAAA;AAClC,UAAIA,OAAOA,UAAUhB,IAAIoB,WAAWC,OAAOA,QAAQJ,MAAAA,GAAS;AAC1D,cAAMK,QAAQ1C,6BAA6BoC,OAAOA,MAAM;AACxD,eAAOM,QAAQC,QAAQD,OAAOT,WAAAA,IAAe;MAC/C,OAAO;AACL,eAAO;MACT;IACF,CAAA;AAEA,QAAIC,eAAe;AACjB,YAAM,YAAA;AACJ,cAAMjB,cAAc2B,iBAAiBC,QAAQ;UAAEC,SAASR,SAASS,OAAOb,aAAAA;QAAe,CAAA;AACvF,cAAMjB,cAAc+B,gBAAgBC,iBAAiB;UACnDC,SAASC,cAAc,UAAA;QACzB,CAAA;MACF,GAAA;IACF;EACF,GACA;IAAClC;IAAeM;GAAQ;AAG1B,QAAM6B,YAAYC,QAAQ,MAAA;AACxB,WAAOC,SAAS,CAACC,eAA4BC,sBAAsB,MAAMzB,oBAAoBwB,UAAAA,CAAAA,GAAc,EAAA;EAC7G,GAAG;IAACxB;GAAoB;AAExB0B,YAAU,MAAA;AACR,QAAI,CAACxD,QAAQ;AACX;IACF;AAEAmD,cAAUnD,MAAAA;EACZ,GAAG;IAACA;IAAQmD;GAAU;AACxB;",
|
|
6
|
+
"names": ["useCallback", "useEffect", "useMemo", "useOperationInvoker", "LayoutOperation", "debounce", "inRange", "Filter", "Obj", "Query", "Relation", "CommentOperation", "useQuery", "linkedSegment", "AnchoredTo", "Thread", "useSheetContext", "parseThreadAnchorAsCellRange", "cursor", "coords", "split", "length", "fromCol", "fromRow", "toCol", "toRow", "from", "col", "parseInt", "row", "to", "useSelectThreadOnCellFocus", "model", "useSheetContext", "invokePromise", "useOperationInvoker", "db", "Obj", "getDatabase", "sheet", "anchors", "useQuery", "Query", "select", "Filter", "id", "targetOf", "AnchoredTo", "selectClosestThread", "useCallback", "cellAddress", "closestThread", "find", "anchor", "source", "Relation", "getSource", "instanceOf", "Thread", "range", "inRange", "CommentOperation", "Select", "current", "getURI", "LayoutOperation", "UpdateCompanion", "subject", "linkedSegment", "debounced", "useMemo", "debounce", "cellCoords", "requestAnimationFrame", "useEffect"]
|
|
7
|
+
}
|