@dxos/plugin-sheet 0.8.4-main.c85a9c8dae → 0.8.4-main.dfabb4ec29
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/dist/lib/{browser/RangeList-S3SHV7T6.mjs → neutral/RangeList-HYB5S6KQ.mjs} +21 -28
- package/dist/lib/neutral/RangeList-HYB5S6KQ.mjs.map +7 -0
- package/dist/lib/neutral/SheetContainer-ZOVKGHLT.mjs +33 -0
- package/dist/lib/neutral/SheetContainer-ZOVKGHLT.mjs.map +7 -0
- package/dist/lib/neutral/SheetPlugin.mjs +48 -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/{browser/anchor-sort-DZ3IHHJJ.mjs → neutral/anchor-sort-TTCKGX7V.mjs} +5 -7
- package/dist/lib/neutral/anchor-sort-TTCKGX7V.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +25 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/chunk-4GWJDLTH.mjs +83 -0
- package/dist/lib/neutral/chunk-4GWJDLTH.mjs.map +7 -0
- package/dist/lib/{browser/chunk-NNWF7EKC.mjs → neutral/chunk-4SBAIU6F.mjs} +3 -3
- package/dist/lib/neutral/chunk-4SBAIU6F.mjs.map +7 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/{browser/chunk-S445OQGW.mjs → neutral/chunk-KC2SMDNF.mjs} +167 -191
- package/dist/lib/neutral/chunk-KC2SMDNF.mjs.map +7 -0
- package/dist/lib/neutral/chunk-YFHTB6MX.mjs +8 -0
- package/dist/lib/neutral/chunk-YFHTB6MX.mjs.map +7 -0
- package/dist/lib/neutral/chunk-ZWOQCLH7.mjs +21 -0
- package/dist/lib/neutral/chunk-ZWOQCLH7.mjs.map +7 -0
- package/dist/lib/neutral/comment-config-ZBWNCJMZ.mjs +20 -0
- package/dist/lib/neutral/comment-config-ZBWNCJMZ.mjs.map +7 -0
- package/dist/lib/{browser/SheetContainer-I3NFVVDQ.mjs → neutral/components/index.mjs} +160 -414
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/{browser/compute-graph-registry-W6HO2G3P.mjs → neutral/compute-graph-registry-IEQBF5XZ.mjs} +5 -6
- package/dist/lib/neutral/compute-graph-registry-IEQBF5XZ.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-OKQAXJCW.mjs +27 -0
- package/dist/lib/neutral/create-object-OKQAXJCW.mjs.map +7 -0
- package/dist/lib/neutral/drop-axis-G6UOXG54.mjs +23 -0
- package/dist/lib/neutral/drop-axis-G6UOXG54.mjs.map +7 -0
- package/dist/lib/{browser/types → neutral}/index.mjs +14 -5
- package/dist/lib/neutral/insert-axis-ZFFNG22G.mjs +16 -0
- package/dist/lib/neutral/insert-axis-ZFFNG22G.mjs.map +7 -0
- package/dist/lib/{browser/markdown-S6GVLHB4.mjs → neutral/markdown-I2AKJYPF.mjs} +5 -6
- package/dist/lib/neutral/markdown-I2AKJYPF.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/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/{browser/react-surface-KIU6DGKW.mjs → neutral/react-surface-ID4JCAFR.mjs} +12 -19
- package/dist/lib/neutral/react-surface-ID4JCAFR.mjs.map +7 -0
- package/dist/lib/neutral/restore-axis-44DM6N54.mjs +16 -0
- package/dist/lib/neutral/restore-axis-44DM6N54.mjs.map +7 -0
- package/dist/lib/neutral/scroll-to-anchor-WHX3HJC7.mjs +33 -0
- package/dist/lib/neutral/scroll-to-anchor-WHX3HJC7.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 +55 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/{node-esm → neutral}/types/index.mjs +6 -6
- 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 +1 -0
- 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/capabilities/anchor-sort.d.ts.map +1 -0
- package/dist/types/src/capabilities/comment-config.d.ts +12 -0
- package/dist/types/src/capabilities/comment-config.d.ts.map +1 -0
- package/dist/types/src/capabilities/compute-graph-registry.d.ts +5 -0
- package/dist/types/src/capabilities/compute-graph-registry.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 +23 -5
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown.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.map +1 -0
- package/dist/types/src/capabilities/{compute-graph-registry/compute-graph-registry.d.ts → state.d.ts} +3 -2
- 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.map +1 -1
- package/dist/types/src/components/Sheet/Sheet.d.ts +10 -4
- package/dist/types/src/components/Sheet/Sheet.d.ts.map +1 -1
- package/dist/types/src/components/SheetContent/SheetCellEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/SheetContent/SheetContent.d.ts +4 -3
- package/dist/types/src/components/SheetContent/SheetContent.d.ts.map +1 -1
- package/dist/types/src/components/SheetContent/SheetContent.stories.d.ts +77 -39
- package/dist/types/src/components/SheetContent/SheetContent.stories.d.ts.map +1 -1
- package/dist/types/src/components/SheetContent/util.d.ts +1 -1
- package/dist/types/src/components/SheetContent/util.d.ts.map +1 -1
- package/dist/types/src/components/SheetRoot/SheetRoot.d.ts +5 -3
- package/dist/types/src/components/SheetRoot/SheetRoot.d.ts.map +1 -1
- package/dist/types/src/components/SheetStatusbar/SheetStatusbar.d.ts +4 -3
- package/dist/types/src/components/SheetStatusbar/SheetStatusbar.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +5 -8
- package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +72 -68
- package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/align.d.ts +2 -2
- package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/style.d.ts +2 -2
- package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -1
- package/dist/types/src/containers/RangeList/RangeList.d.ts +2 -2
- package/dist/types/src/containers/RangeList/RangeList.d.ts.map +1 -1
- package/dist/types/src/containers/RangeList/index.d.ts +1 -2
- package/dist/types/src/containers/RangeList/index.d.ts.map +1 -1
- package/dist/types/src/containers/SheetContainer/SheetContainer.d.ts +4 -4
- package/dist/types/src/containers/SheetContainer/SheetContainer.d.ts.map +1 -1
- package/dist/types/src/containers/SheetContainer/SheetContainer.stories.d.ts +74 -38
- package/dist/types/src/containers/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
- package/dist/types/src/containers/SheetContainer/index.d.ts +1 -2
- package/dist/types/src/containers/SheetContainer/index.d.ts.map +1 -1
- package/dist/types/src/extensions/compute.d.ts +1 -1
- package/dist/types/src/extensions/compute.d.ts.map +1 -1
- package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
- package/dist/types/src/extensions/editor/sheet-extension.d.ts +1 -1
- package/dist/types/src/extensions/editor/sheet-extension.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -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/model/sheet-model.d.ts +2 -2
- package/dist/types/src/model/sheet-model.d.ts.map +1 -1
- package/dist/types/src/model/testing.d.ts +1 -1
- package/dist/types/src/model/testing.d.ts.map +1 -1
- package/dist/types/src/model/useSheetModel.d.ts +2 -2
- 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/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 +2 -2
- package/dist/types/src/serializer.d.ts.map +1 -1
- package/dist/types/src/testing/data.d.ts +1 -1
- package/dist/types/src/testing/data.d.ts.map +1 -1
- package/dist/types/src/testing/testing.d.ts +3 -3
- package/dist/types/src/testing/testing.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +74 -39
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Sheet.d.ts +2 -2
- package/dist/types/src/types/Sheet.d.ts.map +1 -1
- 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 -2
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/sheet-range-types.d.ts +1 -1
- package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +0 -92
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/types/util.d.ts +1 -1
- package/dist/types/src/types/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +116 -73
- package/src/SheetPlugin.node.ts +21 -0
- package/src/SheetPlugin.test.ts +30 -0
- package/src/SheetPlugin.tsx +25 -35
- package/src/capabilities/{anchor-sort/anchor-sort.ts → anchor-sort.ts} +1 -1
- package/src/capabilities/comment-config.ts +24 -0
- package/src/capabilities/{compute-graph-registry/compute-graph-registry.ts → compute-graph-registry.ts} +4 -2
- package/src/capabilities/create-object.ts +30 -0
- package/src/capabilities/index.ts +17 -5
- package/src/capabilities/{markdown/markdown.ts → markdown.ts} +3 -2
- package/src/capabilities/operation-handler.ts +16 -0
- package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +12 -9
- 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 +17 -14
- package/src/components/SheetContent/SheetCellEditor.stories.tsx +8 -7
- package/src/components/SheetContent/SheetContent.stories.tsx +10 -10
- package/src/components/SheetContent/SheetContent.tsx +40 -23
- package/src/components/SheetContent/util.ts +3 -2
- package/src/components/SheetRoot/SheetRoot.tsx +18 -7
- package/src/components/SheetStatusbar/SheetStatusbar.tsx +15 -8
- package/src/components/SheetToolbar/SheetToolbar.stories.tsx +1 -1
- package/src/components/SheetToolbar/SheetToolbar.tsx +15 -20
- package/src/components/SheetToolbar/align.ts +9 -9
- package/src/components/SheetToolbar/style.ts +7 -7
- package/src/containers/RangeList/RangeList.tsx +17 -17
- package/src/containers/RangeList/index.ts +1 -3
- package/src/containers/SheetContainer/SheetContainer.stories.tsx +36 -20
- package/src/containers/SheetContainer/SheetContainer.tsx +8 -8
- package/src/containers/SheetContainer/index.ts +1 -3
- package/src/extensions/compute.stories.tsx +9 -9
- package/src/extensions/compute.ts +1 -1
- package/src/extensions/editor/sheet-extension.test.ts +1 -1
- package/src/extensions/editor/sheet-extension.ts +2 -2
- package/src/index.ts +2 -2
- package/src/integrations/thread-ranges.ts +7 -39
- package/src/meta.ts +1 -1
- package/src/model/sheet-model.test.ts +5 -5
- package/src/model/sheet-model.ts +17 -17
- package/src/model/testing.ts +2 -2
- package/src/model/useSheetModel.ts +3 -2
- 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/playwright/sheet.spec.ts +2 -2
- package/src/plugin.ts +11 -0
- package/src/sanity.test.ts +6 -3
- package/src/serializer.ts +2 -2
- package/src/testing/data.ts +1 -1
- package/src/testing/testing.tsx +4 -4
- package/src/translations.ts +41 -36
- package/src/types/Sheet.ts +15 -9
- package/src/types/SheetCapabilities.ts +26 -0
- package/src/types/SheetOperation.ts +75 -0
- package/src/types/index.ts +4 -2
- package/src/types/types.ts +0 -80
- package/src/types/util.ts +1 -1
- package/dist/lib/browser/RangeList-S3SHV7T6.mjs.map +0 -7
- package/dist/lib/browser/SheetContainer-I3NFVVDQ.mjs.map +0 -7
- package/dist/lib/browser/anchor-sort-DZ3IHHJJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-NNWF7EKC.mjs.map +0 -7
- package/dist/lib/browser/chunk-S445OQGW.mjs.map +0 -7
- package/dist/lib/browser/compute-graph-registry-W6HO2G3P.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -145
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/markdown-S6GVLHB4.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/operation-resolver-Z4X4UWNR.mjs +0 -79
- package/dist/lib/browser/operation-resolver-Z4X4UWNR.mjs.map +0 -7
- package/dist/lib/browser/react-surface-KIU6DGKW.mjs.map +0 -7
- package/dist/lib/node-esm/RangeList-IB23OJK2.mjs +0 -54
- package/dist/lib/node-esm/RangeList-IB23OJK2.mjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-KUXNCSFP.mjs +0 -1806
- package/dist/lib/node-esm/SheetContainer-KUXNCSFP.mjs.map +0 -7
- package/dist/lib/node-esm/anchor-sort-24OXMOSX.mjs +0 -25
- package/dist/lib/node-esm/anchor-sort-24OXMOSX.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-M52YLLWU.mjs +0 -236
- package/dist/lib/node-esm/chunk-M52YLLWU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NKZ3O4OR.mjs +0 -398
- package/dist/lib/node-esm/chunk-NKZ3O4OR.mjs.map +0 -7
- package/dist/lib/node-esm/compute-graph-registry-2C3Y2RPQ.mjs +0 -22
- package/dist/lib/node-esm/compute-graph-registry-2C3Y2RPQ.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -146
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-YT5KJTQT.mjs +0 -30
- package/dist/lib/node-esm/markdown-YT5KJTQT.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/operation-resolver-7VD2YXSQ.mjs +0 -80
- package/dist/lib/node-esm/operation-resolver-7VD2YXSQ.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-7FZAE3S7.mjs +0 -52
- package/dist/lib/node-esm/react-surface-7FZAE3S7.mjs.map +0 -7
- package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +0 -1
- package/dist/types/src/capabilities/anchor-sort/index.d.ts +0 -3
- package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/compute-graph-registry/compute-graph-registry.d.ts.map +0 -1
- package/dist/types/src/capabilities/compute-graph-registry/index.d.ts +0 -3
- package/dist/types/src/capabilities/compute-graph-registry/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/markdown/index.d.ts +0 -3
- package/dist/types/src/capabilities/markdown/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/markdown/markdown.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.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/types/capabilities.d.ts +0 -6
- package/dist/types/src/types/capabilities.d.ts.map +0 -1
- package/src/capabilities/anchor-sort/index.ts +0 -7
- package/src/capabilities/compute-graph-registry/index.ts +0 -7
- package/src/capabilities/markdown/index.ts +0 -7
- package/src/capabilities/operation-resolver/index.ts +0 -7
- package/src/capabilities/operation-resolver/operation-resolver.ts +0 -77
- package/src/capabilities/react-surface/index.ts +0 -7
- package/src/types/capabilities.ts +0 -14
- /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
- /package/dist/types/src/capabilities/{anchor-sort/anchor-sort.d.ts → anchor-sort.d.ts} +0 -0
- /package/dist/types/src/capabilities/{markdown/markdown.d.ts → markdown.d.ts} +0 -0
- /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
|
@@ -1,31 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
rangeExtension,
|
|
3
3
|
sheetExtension
|
|
4
|
-
} from "
|
|
4
|
+
} from "../chunk-4SBAIU6F.mjs";
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
MAX_ROWS,
|
|
10
|
-
ReadonlyException,
|
|
11
|
-
SheetOperation,
|
|
12
|
-
addressFromIndex,
|
|
13
|
-
addressToIndex,
|
|
14
|
-
alignKey,
|
|
15
|
-
cellClassNameForRange,
|
|
16
|
-
initialize,
|
|
17
|
-
insertIndices,
|
|
18
|
-
mapFormulaIndicesToRefs,
|
|
19
|
-
mapFormulaRefsToIndices,
|
|
20
|
-
meta,
|
|
21
|
-
rangeFromIndex,
|
|
22
|
-
rangeToIndex
|
|
23
|
-
} from "./chunk-S445OQGW.mjs";
|
|
24
|
-
|
|
25
|
-
// src/containers/SheetContainer/SheetContainer.tsx
|
|
26
|
-
import React6 from "react";
|
|
27
|
-
import { Obj as Obj7 } from "@dxos/echo";
|
|
28
|
-
import { Panel } from "@dxos/react-ui";
|
|
6
|
+
useSelectThreadOnCellFocus
|
|
7
|
+
} from "../chunk-4GWJDLTH.mjs";
|
|
8
|
+
import "../chunk-J5LGTIGS.mjs";
|
|
29
9
|
|
|
30
10
|
// src/components/ComputeGraph/ComputeGraphContextProvider.tsx
|
|
31
11
|
import React, { createContext, useContext } from "react";
|
|
@@ -55,136 +35,34 @@ var useComputeGraph = (space) => {
|
|
|
55
35
|
};
|
|
56
36
|
|
|
57
37
|
// src/components/SheetContent/SheetContent.tsx
|
|
58
|
-
import React3, { useCallback as
|
|
59
|
-
import { useOperationInvoker
|
|
60
|
-
import { rangeToA1Notation } from "@dxos/compute";
|
|
61
|
-
import { Obj as
|
|
38
|
+
import React3, { useCallback as useCallback2, useEffect as useEffect3, useMemo, useRef, useState as useState4 } from "react";
|
|
39
|
+
import { useCapabilities, useOperationInvoker } from "@dxos/app-framework/ui";
|
|
40
|
+
import { rangeToA1Notation } from "@dxos/compute-hyperformula";
|
|
41
|
+
import { Obj as Obj2 } from "@dxos/echo";
|
|
62
42
|
import { defaultColSize, defaultRowSize } from "@dxos/lit-grid";
|
|
63
43
|
import { DropdownMenu, Icon, useTranslation } from "@dxos/react-ui";
|
|
64
44
|
import { useAttention } from "@dxos/react-ui-attention";
|
|
65
45
|
import { Grid as Grid2, GridCellEditor, closestCell, editorKeys, parseCellIndex } from "@dxos/react-ui-grid";
|
|
66
|
-
import {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
import
|
|
70
|
-
import { useCallback, useEffect, useMemo } from "react";
|
|
71
|
-
import { useOperationInvoker, useOperationResolver } from "@dxos/app-framework/ui";
|
|
72
|
-
import { LayoutOperation } from "@dxos/app-toolkit";
|
|
73
|
-
import { debounce } from "@dxos/async";
|
|
74
|
-
import { inRange } from "@dxos/compute";
|
|
75
|
-
import { Obj, Relation } from "@dxos/echo";
|
|
76
|
-
import { OperationResolver } from "@dxos/operation";
|
|
77
|
-
import { ATTENDABLE_PATH_SEPARATOR, DeckOperation } from "@dxos/plugin-deck/types";
|
|
78
|
-
import { ThreadOperation } from "@dxos/plugin-thread/types";
|
|
79
|
-
import { Filter, Query, useQuery } from "@dxos/react-client/echo";
|
|
80
|
-
import { AnchoredTo, Thread } from "@dxos/types";
|
|
81
|
-
var parseThreadAnchorAsCellRange = (cursor) => {
|
|
82
|
-
const coords = cursor.split(",");
|
|
83
|
-
if (coords.length !== 4) {
|
|
84
|
-
return null;
|
|
85
|
-
} else {
|
|
86
|
-
const [fromCol, fromRow, toCol, toRow] = coords;
|
|
87
|
-
return {
|
|
88
|
-
from: {
|
|
89
|
-
col: parseInt(fromCol),
|
|
90
|
-
row: parseInt(fromRow)
|
|
91
|
-
},
|
|
92
|
-
to: {
|
|
93
|
-
col: parseInt(toCol),
|
|
94
|
-
row: parseInt(toRow)
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
var useUpdateFocusedCellOnThreadSelection = (grid) => {
|
|
100
|
-
const { model, setActiveRefs } = useSheetContext();
|
|
101
|
-
const sheetId = Obj.getDXN(model.sheet).toString();
|
|
102
|
-
const scrollIntoViewHandler = useMemo(() => OperationResolver.make({
|
|
103
|
-
operation: LayoutOperation.ScrollIntoView,
|
|
104
|
-
position: "hoist",
|
|
105
|
-
filter: (input) => input.subject === sheetId && !!input.cursor,
|
|
106
|
-
handler: (input) => Effect.sync(() => {
|
|
107
|
-
const { cursor, ref } = input;
|
|
108
|
-
if (cursor) {
|
|
109
|
-
setActiveRefs(ref);
|
|
110
|
-
const range = parseThreadAnchorAsCellRange(cursor);
|
|
111
|
-
range && grid?.setFocus({
|
|
112
|
-
...range.to,
|
|
113
|
-
plane: "grid"
|
|
114
|
-
}, true);
|
|
115
|
-
}
|
|
116
|
-
})
|
|
117
|
-
}), [
|
|
118
|
-
sheetId,
|
|
119
|
-
setActiveRefs,
|
|
120
|
-
grid
|
|
121
|
-
]);
|
|
122
|
-
useOperationResolver(meta.id, scrollIntoViewHandler);
|
|
123
|
-
};
|
|
124
|
-
var useSelectThreadOnCellFocus = () => {
|
|
125
|
-
const { model, cursor } = useSheetContext();
|
|
126
|
-
const { invokePromise } = useOperationInvoker();
|
|
127
|
-
const db = Obj.getDatabase(model.sheet);
|
|
128
|
-
const anchors = useQuery(db, Query.select(Filter.id(model.sheet.id)).targetOf(AnchoredTo.AnchoredTo));
|
|
129
|
-
const selectClosestThread = useCallback((cellAddress) => {
|
|
130
|
-
if (!cellAddress) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
const closestThread = anchors.find((anchor) => {
|
|
134
|
-
const source = Relation.getSource(anchor);
|
|
135
|
-
if (anchor.anchor && Obj.instanceOf(Thread.Thread, source)) {
|
|
136
|
-
const range = parseThreadAnchorAsCellRange(anchor.anchor);
|
|
137
|
-
return range ? inRange(range, cellAddress) : false;
|
|
138
|
-
} else {
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
if (closestThread) {
|
|
143
|
-
const primary = Obj.getDXN(model.sheet).toString();
|
|
144
|
-
void (async () => {
|
|
145
|
-
await invokePromise(ThreadOperation.Select, {
|
|
146
|
-
current: Relation.getDXN(closestThread).toString()
|
|
147
|
-
});
|
|
148
|
-
await invokePromise(DeckOperation.ChangeCompanion, {
|
|
149
|
-
companion: `${primary}${ATTENDABLE_PATH_SEPARATOR}comments`
|
|
150
|
-
});
|
|
151
|
-
})();
|
|
152
|
-
}
|
|
153
|
-
}, [
|
|
154
|
-
invokePromise,
|
|
155
|
-
anchors
|
|
156
|
-
]);
|
|
157
|
-
const debounced = useMemo(() => {
|
|
158
|
-
return debounce((cellCoords) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);
|
|
159
|
-
}, [
|
|
160
|
-
selectClosestThread
|
|
161
|
-
]);
|
|
162
|
-
useEffect(() => {
|
|
163
|
-
if (!cursor) {
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
debounced(cursor);
|
|
167
|
-
}, [
|
|
168
|
-
cursor,
|
|
169
|
-
debounced
|
|
170
|
-
]);
|
|
171
|
-
};
|
|
46
|
+
import { composable, composableProps } from "@dxos/ui-theme";
|
|
47
|
+
import { meta } from "#meta";
|
|
48
|
+
import { SheetOperation } from "#types";
|
|
49
|
+
import { DEFAULT_COLS, DEFAULT_ROWS, SheetCapabilities } from "#types";
|
|
172
50
|
|
|
173
51
|
// src/components/SheetRoot/SheetRoot.tsx
|
|
174
|
-
import React2, { createContext as createContext2, useCallback
|
|
52
|
+
import React2, { createContext as createContext2, useCallback, useContext as useContext2, useState as useState2 } from "react";
|
|
175
53
|
import { raise as raise2 } from "@dxos/debug";
|
|
176
|
-
import { Obj as Obj3 } from "@dxos/echo";
|
|
177
54
|
import { Grid, useGridContext } from "@dxos/react-ui-grid";
|
|
178
55
|
|
|
179
56
|
// src/model/sheet-model.ts
|
|
180
57
|
import { Event } from "@dxos/async";
|
|
181
|
-
import { DetailedCellError, ExportedCellChange, addressFromA1Notation, addressToA1Notation, createSheetName, isFormula } from "@dxos/compute";
|
|
58
|
+
import { DetailedCellError, ExportedCellChange, addressFromA1Notation, addressToA1Notation, createSheetName, isFormula } from "@dxos/compute-hyperformula";
|
|
182
59
|
import { Resource } from "@dxos/context";
|
|
183
|
-
import { Obj
|
|
60
|
+
import { Obj } from "@dxos/echo";
|
|
184
61
|
import { Format, TypeEnum } from "@dxos/echo/internal";
|
|
185
62
|
import { invariant } from "@dxos/invariant";
|
|
186
63
|
import { PublicKey } from "@dxos/keys";
|
|
187
64
|
import { log } from "@dxos/log";
|
|
65
|
+
import { MAX_COLS, MAX_ROWS, ReadonlyException, addressFromIndex, addressToIndex, initialize, insertIndices, mapFormulaIndicesToRefs, mapFormulaRefsToIndices } from "#types";
|
|
188
66
|
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-sheet/src/model/sheet-model.ts";
|
|
189
67
|
var typeMap = {
|
|
190
68
|
BOOLEAN: {
|
|
@@ -262,13 +140,8 @@ var SheetModel = class extends Resource {
|
|
|
262
140
|
async _open() {
|
|
263
141
|
log("initialize", {
|
|
264
142
|
id: this.id
|
|
265
|
-
}, {
|
|
266
|
-
|
|
267
|
-
L: 124,
|
|
268
|
-
S: this,
|
|
269
|
-
C: (f, a) => f(...a)
|
|
270
|
-
});
|
|
271
|
-
Obj2.change(this._sheet, (obj) => {
|
|
143
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 96, S: this });
|
|
144
|
+
Obj.update(this._sheet, (obj) => {
|
|
272
145
|
initialize(obj);
|
|
273
146
|
});
|
|
274
147
|
this._graph.update.on((event) => {
|
|
@@ -277,7 +150,7 @@ var SheetModel = class extends Resource {
|
|
|
277
150
|
}
|
|
278
151
|
});
|
|
279
152
|
this._node = this._graph.getOrCreateNode(createSheetName({
|
|
280
|
-
type:
|
|
153
|
+
type: Obj.getTypename(this._sheet),
|
|
281
154
|
id: this._sheet.id
|
|
282
155
|
}));
|
|
283
156
|
await this._node.open();
|
|
@@ -291,26 +164,10 @@ var SheetModel = class extends Resource {
|
|
|
291
164
|
* @deprecated
|
|
292
165
|
*/
|
|
293
166
|
reset() {
|
|
294
|
-
invariant(this._node, void 0, {
|
|
295
|
-
F: __dxlog_file,
|
|
296
|
-
L: 154,
|
|
297
|
-
S: this,
|
|
298
|
-
A: [
|
|
299
|
-
"this._node",
|
|
300
|
-
""
|
|
301
|
-
]
|
|
302
|
-
});
|
|
167
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 123, S: this, A: ["this._node", ""] });
|
|
303
168
|
this._node.graph.hf.clearSheet(this._node.sheetId);
|
|
304
169
|
Object.entries(this._sheet.cells).forEach(([key, { value }]) => {
|
|
305
|
-
invariant(this._node, void 0, {
|
|
306
|
-
F: __dxlog_file,
|
|
307
|
-
L: 157,
|
|
308
|
-
S: this,
|
|
309
|
-
A: [
|
|
310
|
-
"this._node",
|
|
311
|
-
""
|
|
312
|
-
]
|
|
313
|
-
});
|
|
170
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 126, S: this, A: ["this._node", ""] });
|
|
314
171
|
const { col, row } = addressFromIndex(this._sheet, key);
|
|
315
172
|
if (isFormula(value)) {
|
|
316
173
|
const binding = this._graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(this._sheet, value));
|
|
@@ -339,7 +196,7 @@ var SheetModel = class extends Resource {
|
|
|
339
196
|
}
|
|
340
197
|
insertRows(i, n = 1) {
|
|
341
198
|
let idx = [];
|
|
342
|
-
|
|
199
|
+
Obj.update(this._sheet, (obj) => {
|
|
343
200
|
idx = insertIndices(obj.rows, i, n, MAX_ROWS);
|
|
344
201
|
});
|
|
345
202
|
this.reset();
|
|
@@ -347,7 +204,7 @@ var SheetModel = class extends Resource {
|
|
|
347
204
|
}
|
|
348
205
|
insertColumns(i, n = 1) {
|
|
349
206
|
let idx = [];
|
|
350
|
-
|
|
207
|
+
Obj.update(this._sheet, (obj) => {
|
|
351
208
|
idx = insertIndices(obj.columns, i, n, MAX_COLS);
|
|
352
209
|
});
|
|
353
210
|
this.reset();
|
|
@@ -361,7 +218,7 @@ var SheetModel = class extends Resource {
|
|
|
361
218
|
const values = this.getCellValues(range).flat();
|
|
362
219
|
const index = this._sheet.rows.indexOf(rowIndex);
|
|
363
220
|
this.clear(range);
|
|
364
|
-
|
|
221
|
+
Obj.update(this._sheet, (obj) => {
|
|
365
222
|
obj.rows.splice(index, 1);
|
|
366
223
|
delete obj.rowMeta[rowIndex];
|
|
367
224
|
});
|
|
@@ -382,7 +239,7 @@ var SheetModel = class extends Resource {
|
|
|
382
239
|
const values = this.getCellValues(range).flat();
|
|
383
240
|
const index = this._sheet.columns.indexOf(colIndex);
|
|
384
241
|
this.clear(range);
|
|
385
|
-
|
|
242
|
+
Obj.update(this._sheet, (obj) => {
|
|
386
243
|
obj.columns.splice(index, 1);
|
|
387
244
|
delete obj.columnMeta[colIndex];
|
|
388
245
|
});
|
|
@@ -396,7 +253,7 @@ var SheetModel = class extends Resource {
|
|
|
396
253
|
};
|
|
397
254
|
}
|
|
398
255
|
restoreRow({ index, axisIndex, axisMeta, values }) {
|
|
399
|
-
|
|
256
|
+
Obj.update(this._sheet, (obj) => {
|
|
400
257
|
obj.rows.splice(index, 0, axisIndex);
|
|
401
258
|
values.forEach((value, col) => {
|
|
402
259
|
if (value) {
|
|
@@ -412,7 +269,7 @@ var SheetModel = class extends Resource {
|
|
|
412
269
|
this.reset();
|
|
413
270
|
}
|
|
414
271
|
restoreColumn({ index, axisIndex, axisMeta, values }) {
|
|
415
|
-
|
|
272
|
+
Obj.update(this._sheet, (obj) => {
|
|
416
273
|
obj.columns.splice(index, 0, axisIndex);
|
|
417
274
|
values.forEach((value, row) => {
|
|
418
275
|
if (value) {
|
|
@@ -435,19 +292,11 @@ var SheetModel = class extends Resource {
|
|
|
435
292
|
* Clear range of values.
|
|
436
293
|
*/
|
|
437
294
|
clear(range) {
|
|
438
|
-
invariant(this._node, void 0, {
|
|
439
|
-
F: __dxlog_file,
|
|
440
|
-
L: 276,
|
|
441
|
-
S: this,
|
|
442
|
-
A: [
|
|
443
|
-
"this._node",
|
|
444
|
-
""
|
|
445
|
-
]
|
|
446
|
-
});
|
|
295
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 251, S: this, A: ["this._node", ""] });
|
|
447
296
|
const topLeft = getTopLeft(range);
|
|
448
297
|
const values = this._iterRange(range, () => null);
|
|
449
298
|
this._node.graph.hf.setCellContents(toSimpleCellAddress(this._node.sheetId, topLeft), values);
|
|
450
|
-
|
|
299
|
+
Obj.update(this._sheet, (obj) => {
|
|
451
300
|
this._iterRange(range, (cell) => {
|
|
452
301
|
const idx = addressToIndex(this._sheet, cell);
|
|
453
302
|
delete obj.cells[idx];
|
|
@@ -455,17 +304,9 @@ var SheetModel = class extends Resource {
|
|
|
455
304
|
});
|
|
456
305
|
}
|
|
457
306
|
cut(range) {
|
|
458
|
-
invariant(this._node, void 0, {
|
|
459
|
-
F: __dxlog_file,
|
|
460
|
-
L: 289,
|
|
461
|
-
S: this,
|
|
462
|
-
A: [
|
|
463
|
-
"this._node",
|
|
464
|
-
""
|
|
465
|
-
]
|
|
466
|
-
});
|
|
307
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 263, S: this, A: ["this._node", ""] });
|
|
467
308
|
this._node.graph.hf.cut(toModelRange(this._node.sheetId, range));
|
|
468
|
-
|
|
309
|
+
Obj.update(this._sheet, (obj) => {
|
|
469
310
|
this._iterRange(range, (cell) => {
|
|
470
311
|
const idx = addressToIndex(this._sheet, cell);
|
|
471
312
|
delete obj.cells[idx];
|
|
@@ -473,30 +314,14 @@ var SheetModel = class extends Resource {
|
|
|
473
314
|
});
|
|
474
315
|
}
|
|
475
316
|
copy(range) {
|
|
476
|
-
invariant(this._node, void 0, {
|
|
477
|
-
F: __dxlog_file,
|
|
478
|
-
L: 300,
|
|
479
|
-
S: this,
|
|
480
|
-
A: [
|
|
481
|
-
"this._node",
|
|
482
|
-
""
|
|
483
|
-
]
|
|
484
|
-
});
|
|
317
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 273, S: this, A: ["this._node", ""] });
|
|
485
318
|
this._node.graph.hf.copy(toModelRange(this._node.sheetId, range));
|
|
486
319
|
}
|
|
487
320
|
paste(cell) {
|
|
488
|
-
invariant(this._node, void 0, {
|
|
489
|
-
F: __dxlog_file,
|
|
490
|
-
L: 305,
|
|
491
|
-
S: this,
|
|
492
|
-
A: [
|
|
493
|
-
"this._node",
|
|
494
|
-
""
|
|
495
|
-
]
|
|
496
|
-
});
|
|
321
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 277, S: this, A: ["this._node", ""] });
|
|
497
322
|
if (!this._node.graph.hf.isClipboardEmpty()) {
|
|
498
323
|
const changes = this._node.graph.hf.paste(toSimpleCellAddress(this._node.sheetId, cell));
|
|
499
|
-
|
|
324
|
+
Obj.update(this._sheet, (obj) => {
|
|
500
325
|
for (const change of changes) {
|
|
501
326
|
if (change instanceof ExportedCellChange) {
|
|
502
327
|
const { address, newValue } = change;
|
|
@@ -514,29 +339,13 @@ var SheetModel = class extends Resource {
|
|
|
514
339
|
}
|
|
515
340
|
// TODO(burdon): Display undo/redo state.
|
|
516
341
|
undo() {
|
|
517
|
-
invariant(this._node, void 0, {
|
|
518
|
-
F: __dxlog_file,
|
|
519
|
-
L: 322,
|
|
520
|
-
S: this,
|
|
521
|
-
A: [
|
|
522
|
-
"this._node",
|
|
523
|
-
""
|
|
524
|
-
]
|
|
525
|
-
});
|
|
342
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 298, S: this, A: ["this._node", ""] });
|
|
526
343
|
if (this._node.graph.hf.isThereSomethingToUndo()) {
|
|
527
344
|
this._node.graph.hf.undo();
|
|
528
345
|
}
|
|
529
346
|
}
|
|
530
347
|
redo() {
|
|
531
|
-
invariant(this._node, void 0, {
|
|
532
|
-
F: __dxlog_file,
|
|
533
|
-
L: 330,
|
|
534
|
-
S: this,
|
|
535
|
-
A: [
|
|
536
|
-
"this._node",
|
|
537
|
-
""
|
|
538
|
-
]
|
|
539
|
-
});
|
|
348
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 305, S: this, A: ["this._node", ""] });
|
|
540
349
|
if (this._node.graph.hf.isThereSomethingToRedo()) {
|
|
541
350
|
this._node.graph.hf.redo();
|
|
542
351
|
}
|
|
@@ -572,27 +381,14 @@ var SheetModel = class extends Resource {
|
|
|
572
381
|
* Gets the regular or computed value from the engine.
|
|
573
382
|
*/
|
|
574
383
|
getValue(cell) {
|
|
575
|
-
invariant(this._node, void 0, {
|
|
576
|
-
F: __dxlog_file,
|
|
577
|
-
L: 373,
|
|
578
|
-
S: this,
|
|
579
|
-
A: [
|
|
580
|
-
"this._node",
|
|
581
|
-
""
|
|
582
|
-
]
|
|
583
|
-
});
|
|
384
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 339, S: this, A: ["this._node", ""] });
|
|
584
385
|
const address = toSimpleCellAddress(this._node.sheetId, cell);
|
|
585
386
|
const value = this._node.graph.hf.getCellValue(address);
|
|
586
387
|
if (value instanceof DetailedCellError) {
|
|
587
388
|
log.warn("cell error", {
|
|
588
389
|
cell,
|
|
589
390
|
error: value
|
|
590
|
-
}, {
|
|
591
|
-
F: __dxlog_file,
|
|
592
|
-
L: 378,
|
|
593
|
-
S: this,
|
|
594
|
-
C: (f, a) => f(...a)
|
|
595
|
-
});
|
|
391
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 344, S: this });
|
|
596
392
|
return value.toString();
|
|
597
393
|
}
|
|
598
394
|
return value;
|
|
@@ -601,15 +397,7 @@ var SheetModel = class extends Resource {
|
|
|
601
397
|
* Get value type.
|
|
602
398
|
*/
|
|
603
399
|
getValueDescription(cell) {
|
|
604
|
-
invariant(this._node, void 0, {
|
|
605
|
-
F: __dxlog_file,
|
|
606
|
-
L: 389,
|
|
607
|
-
S: this,
|
|
608
|
-
A: [
|
|
609
|
-
"this._node",
|
|
610
|
-
""
|
|
611
|
-
]
|
|
612
|
-
});
|
|
400
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 355, S: this, A: ["this._node", ""] });
|
|
613
401
|
const addr = toSimpleCellAddress(this._node.sheetId, cell);
|
|
614
402
|
const type = this._node.graph.hf.getCellValueDetailedType(addr);
|
|
615
403
|
return typeMap[type];
|
|
@@ -618,27 +406,19 @@ var SheetModel = class extends Resource {
|
|
|
618
406
|
* Sets the value, updating the sheet and engine.
|
|
619
407
|
*/
|
|
620
408
|
setValue(cell, value) {
|
|
621
|
-
invariant(this._node, void 0, {
|
|
622
|
-
F: __dxlog_file,
|
|
623
|
-
L: 399,
|
|
624
|
-
S: this,
|
|
625
|
-
A: [
|
|
626
|
-
"this._node",
|
|
627
|
-
""
|
|
628
|
-
]
|
|
629
|
-
});
|
|
409
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 363, S: this, A: ["this._node", ""] });
|
|
630
410
|
if (this._options.readonly) {
|
|
631
411
|
throw new ReadonlyException();
|
|
632
412
|
}
|
|
633
413
|
let refresh = false;
|
|
634
414
|
if (cell.row >= this._sheet.rows.length) {
|
|
635
|
-
|
|
415
|
+
Obj.update(this._sheet, (obj) => {
|
|
636
416
|
insertIndices(obj.rows, cell.row, 1, MAX_ROWS);
|
|
637
417
|
});
|
|
638
418
|
refresh = true;
|
|
639
419
|
}
|
|
640
420
|
if (cell.col >= this._sheet.columns.length) {
|
|
641
|
-
|
|
421
|
+
Obj.update(this._sheet, (obj) => {
|
|
642
422
|
insertIndices(obj.columns, cell.col, 1, MAX_COLS);
|
|
643
423
|
});
|
|
644
424
|
refresh = true;
|
|
@@ -657,14 +437,14 @@ var SheetModel = class extends Resource {
|
|
|
657
437
|
]);
|
|
658
438
|
const idx = addressToIndex(this._sheet, cell);
|
|
659
439
|
if (value === void 0 || value === null) {
|
|
660
|
-
|
|
440
|
+
Obj.update(this._sheet, (obj) => {
|
|
661
441
|
delete obj.cells[idx];
|
|
662
442
|
});
|
|
663
443
|
} else {
|
|
664
444
|
if (isFormula(value)) {
|
|
665
445
|
value = this._graph.mapFunctionBindingToId(mapFormulaRefsToIndices(this._sheet, value));
|
|
666
446
|
}
|
|
667
|
-
|
|
447
|
+
Obj.update(this._sheet, (obj) => {
|
|
668
448
|
obj.cells[idx] = {
|
|
669
449
|
value
|
|
670
450
|
};
|
|
@@ -720,15 +500,7 @@ var SheetModel = class extends Resource {
|
|
|
720
500
|
* Map from indices to A1 notation.
|
|
721
501
|
*/
|
|
722
502
|
mapFormulaIndicesToRefs(formula) {
|
|
723
|
-
invariant(isFormula(formula), void 0, {
|
|
724
|
-
F: __dxlog_file,
|
|
725
|
-
L: 492,
|
|
726
|
-
S: this,
|
|
727
|
-
A: [
|
|
728
|
-
"isFormula(formula)",
|
|
729
|
-
""
|
|
730
|
-
]
|
|
731
|
-
});
|
|
503
|
+
invariant(isFormula(formula), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 458, S: this, A: ["isFormula(formula)", ""] });
|
|
732
504
|
return formula.replace(/([a-zA-Z0-9]+)@([a-zA-Z0-9]+)/g, (idx) => {
|
|
733
505
|
return addressToA1Notation(addressFromIndex(this._sheet, idx));
|
|
734
506
|
});
|
|
@@ -746,48 +518,24 @@ var SheetModel = class extends Resource {
|
|
|
746
518
|
return new Date(year, month - 1, day, hours, minutes, seconds);
|
|
747
519
|
}
|
|
748
520
|
toDateTime(num) {
|
|
749
|
-
invariant(this._node, void 0, {
|
|
750
|
-
F: __dxlog_file,
|
|
751
|
-
L: 513,
|
|
752
|
-
S: this,
|
|
753
|
-
A: [
|
|
754
|
-
"this._node",
|
|
755
|
-
""
|
|
756
|
-
]
|
|
757
|
-
});
|
|
521
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 475, S: this, A: ["this._node", ""] });
|
|
758
522
|
return this._node.graph.hf.numberToDateTime(num);
|
|
759
523
|
}
|
|
760
524
|
toDate(num) {
|
|
761
|
-
invariant(this._node, void 0, {
|
|
762
|
-
F: __dxlog_file,
|
|
763
|
-
L: 518,
|
|
764
|
-
S: this,
|
|
765
|
-
A: [
|
|
766
|
-
"this._node",
|
|
767
|
-
""
|
|
768
|
-
]
|
|
769
|
-
});
|
|
525
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 479, S: this, A: ["this._node", ""] });
|
|
770
526
|
return this._node.graph.hf.numberToDate(num);
|
|
771
527
|
}
|
|
772
528
|
toTime(num) {
|
|
773
|
-
invariant(this._node, void 0, {
|
|
774
|
-
F: __dxlog_file,
|
|
775
|
-
L: 523,
|
|
776
|
-
S: this,
|
|
777
|
-
A: [
|
|
778
|
-
"this._node",
|
|
779
|
-
""
|
|
780
|
-
]
|
|
781
|
-
});
|
|
529
|
+
invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 483, S: this, A: ["this._node", ""] });
|
|
782
530
|
return this._node.graph.hf.numberToTime(num);
|
|
783
531
|
}
|
|
784
532
|
};
|
|
785
533
|
|
|
786
534
|
// src/model/useSheetModel.ts
|
|
787
|
-
import { useEffect
|
|
535
|
+
import { useEffect, useState } from "react";
|
|
788
536
|
var useSheetModel = (graph, sheet, { readonly } = {}) => {
|
|
789
537
|
const [model, setModel] = useState();
|
|
790
|
-
|
|
538
|
+
useEffect(() => {
|
|
791
539
|
if (!graph || !sheet) {
|
|
792
540
|
return;
|
|
793
541
|
}
|
|
@@ -816,7 +564,7 @@ var SheetContext = /* @__PURE__ */ createContext2(void 0);
|
|
|
816
564
|
var useSheetContext = () => {
|
|
817
565
|
return useContext2(SheetContext) ?? raise2(new Error("Missing SheetContext"));
|
|
818
566
|
};
|
|
819
|
-
var SheetRoot = ({ children, graph, sheet, readonly, ignoreAttention, onInfo }) => {
|
|
567
|
+
var SheetRoot = ({ children, graph, sheet, attendableId, readonly, ignoreAttention, onInfo }) => {
|
|
820
568
|
const model = useSheetModel(graph, sheet, {
|
|
821
569
|
readonly
|
|
822
570
|
});
|
|
@@ -824,20 +572,21 @@ var SheetRoot = ({ children, graph, sheet, readonly, ignoreAttention, onInfo })
|
|
|
824
572
|
return null;
|
|
825
573
|
}
|
|
826
574
|
return /* @__PURE__ */ React2.createElement(Grid.Root, {
|
|
827
|
-
id:
|
|
575
|
+
id: attendableId
|
|
828
576
|
}, /* @__PURE__ */ React2.createElement(SheetProviderImpl, {
|
|
829
577
|
model,
|
|
578
|
+
attendableId,
|
|
830
579
|
onInfo,
|
|
831
580
|
ignoreAttention
|
|
832
581
|
}, children));
|
|
833
582
|
};
|
|
834
|
-
var SheetProviderImpl = ({ __gridScope, children, ignoreAttention, model, onInfo }) => {
|
|
583
|
+
var SheetProviderImpl = ({ __gridScope, children, attendableId, ignoreAttention, model, onInfo }) => {
|
|
835
584
|
const { id, editing, setEditing } = useGridContext("SheetProvider", __gridScope);
|
|
836
585
|
const [cursor, setCursorInternal] = useState2();
|
|
837
586
|
const [range, setRangeInternal] = useState2();
|
|
838
587
|
const [cursorFallbackRange, setCursorFallbackRange] = useState2();
|
|
839
588
|
const [activeRefs, setActiveRefs] = useState2("");
|
|
840
|
-
const setCursor =
|
|
589
|
+
const setCursor = useCallback((nextCursor) => {
|
|
841
590
|
setCursorInternal(nextCursor);
|
|
842
591
|
setCursorFallbackRange(range?.to ? range : nextCursor ? {
|
|
843
592
|
from: nextCursor,
|
|
@@ -846,7 +595,7 @@ var SheetProviderImpl = ({ __gridScope, children, ignoreAttention, model, onInfo
|
|
|
846
595
|
}, [
|
|
847
596
|
range
|
|
848
597
|
]);
|
|
849
|
-
const setRange =
|
|
598
|
+
const setRange = useCallback((nextRange) => {
|
|
850
599
|
setRangeInternal(nextRange);
|
|
851
600
|
setCursorFallbackRange(nextRange?.to ? nextRange : cursor ? {
|
|
852
601
|
from: cursor,
|
|
@@ -858,6 +607,7 @@ var SheetProviderImpl = ({ __gridScope, children, ignoreAttention, model, onInfo
|
|
|
858
607
|
return /* @__PURE__ */ React2.createElement(SheetContext.Provider, {
|
|
859
608
|
value: {
|
|
860
609
|
id,
|
|
610
|
+
attendableId,
|
|
861
611
|
model,
|
|
862
612
|
editing,
|
|
863
613
|
setEditing,
|
|
@@ -876,12 +626,13 @@ var SheetProviderImpl = ({ __gridScope, children, ignoreAttention, model, onInfo
|
|
|
876
626
|
};
|
|
877
627
|
|
|
878
628
|
// src/components/SheetContent/util.ts
|
|
879
|
-
import { useEffect as
|
|
880
|
-
import { inRange
|
|
629
|
+
import { useEffect as useEffect2, useState as useState3 } from "react";
|
|
630
|
+
import { inRange } from "@dxos/compute-hyperformula";
|
|
881
631
|
import { createDocAccessor } from "@dxos/echo-db";
|
|
882
632
|
import { cellClassesForFieldType, parseValue } from "@dxos/react-ui-form";
|
|
883
633
|
import { colToA1Notation, commentedClassName, rowToA1Notation } from "@dxos/react-ui-grid";
|
|
884
634
|
import { mx } from "@dxos/ui-theme";
|
|
635
|
+
import { cellClassNameForRange, rangeFromIndex } from "#types";
|
|
885
636
|
var createDxGridColumns = (model) => {
|
|
886
637
|
return model.sheet.columns.reduce((acc, columnId, numericIndex) => {
|
|
887
638
|
if (model.sheet.columnMeta[columnId] && model.sheet.columnMeta[columnId].size) {
|
|
@@ -914,7 +665,7 @@ var projectCellProps = (model, col, row) => {
|
|
|
914
665
|
row
|
|
915
666
|
};
|
|
916
667
|
const rawValue = model.getValue(address);
|
|
917
|
-
const ranges = model.sheet.ranges?.filter(({ range }) =>
|
|
668
|
+
const ranges = model.sheet.ranges?.filter(({ range }) => inRange(rangeFromIndex(model.sheet, range), address));
|
|
918
669
|
const threadRefs = void 0;
|
|
919
670
|
const description = model.getValueDescription(address);
|
|
920
671
|
const type = description?.type;
|
|
@@ -997,7 +748,7 @@ var cellGetter = (model) => {
|
|
|
997
748
|
var useSheetModelDxGridProps = (dxGrid, model) => {
|
|
998
749
|
const [columns, setColumns] = useState3(createDxGridColumns(model));
|
|
999
750
|
const [rows, setRows] = useState3(createDxGridRows(model));
|
|
1000
|
-
|
|
751
|
+
useEffect2(() => {
|
|
1001
752
|
const cellsAccessor = createDocAccessor(model.sheet, [
|
|
1002
753
|
"cells"
|
|
1003
754
|
]);
|
|
@@ -1017,7 +768,7 @@ var useSheetModelDxGridProps = (dxGrid, model) => {
|
|
|
1017
768
|
model,
|
|
1018
769
|
dxGrid
|
|
1019
770
|
]);
|
|
1020
|
-
|
|
771
|
+
useEffect2(() => {
|
|
1021
772
|
const columnMetaAccessor = createDocAccessor(model.sheet, [
|
|
1022
773
|
"columnMeta"
|
|
1023
774
|
]);
|
|
@@ -1093,16 +844,15 @@ var sheetRowDefault = {
|
|
|
1093
844
|
resizeable: true
|
|
1094
845
|
}
|
|
1095
846
|
};
|
|
1096
|
-
var SheetContent = (props) => {
|
|
847
|
+
var SheetContent = composable((props, forwardedRef) => {
|
|
1097
848
|
const { t } = useTranslation(meta.id);
|
|
1098
|
-
const { id, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, ignoreAttention } = useSheetContext();
|
|
849
|
+
const { id, attendableId, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, setActiveRefs, ignoreAttention } = useSheetContext();
|
|
1099
850
|
const [dxGrid, setDxGrid] = useState4(null);
|
|
1100
851
|
const [extraplanarFocus, setExtraplanarFocus] = useState4(null);
|
|
1101
|
-
const { invokePromise } =
|
|
852
|
+
const { invokePromise } = useOperationInvoker();
|
|
1102
853
|
const rangeController = useRef(null);
|
|
1103
854
|
const { hasAttention } = useAttention(id);
|
|
1104
|
-
const
|
|
1105
|
-
const handleFocus = useCallback3((event) => {
|
|
855
|
+
const handleFocus = useCallback2((event) => {
|
|
1106
856
|
if (!editing) {
|
|
1107
857
|
const cell = closestCell(event.target);
|
|
1108
858
|
if (cell) {
|
|
@@ -1122,7 +872,7 @@ var SheetContent = (props) => {
|
|
|
1122
872
|
}, [
|
|
1123
873
|
editing
|
|
1124
874
|
]);
|
|
1125
|
-
const handleClose =
|
|
875
|
+
const handleClose = useCallback2((_value, event) => {
|
|
1126
876
|
if (event) {
|
|
1127
877
|
const { key, shift } = event;
|
|
1128
878
|
const axis = [
|
|
@@ -1145,7 +895,7 @@ var SheetContent = (props) => {
|
|
|
1145
895
|
editing,
|
|
1146
896
|
dxGrid
|
|
1147
897
|
]);
|
|
1148
|
-
const handleBlur =
|
|
898
|
+
const handleBlur = useCallback2((value) => {
|
|
1149
899
|
if (value !== void 0) {
|
|
1150
900
|
model.setValue(parseCellIndex(editing.index), value);
|
|
1151
901
|
}
|
|
@@ -1153,8 +903,8 @@ var SheetContent = (props) => {
|
|
|
1153
903
|
model,
|
|
1154
904
|
editing
|
|
1155
905
|
]);
|
|
1156
|
-
const handleAxisResize =
|
|
1157
|
-
|
|
906
|
+
const handleAxisResize = useCallback2(({ axis, size, index: numericIndex }) => {
|
|
907
|
+
Obj2.update(model.sheet, (sheet) => {
|
|
1158
908
|
if (axis === "row") {
|
|
1159
909
|
const rowId = sheet.rows[parseInt(numericIndex)];
|
|
1160
910
|
sheet.rowMeta[rowId] ??= {};
|
|
@@ -1168,7 +918,7 @@ var SheetContent = (props) => {
|
|
|
1168
918
|
}, [
|
|
1169
919
|
model
|
|
1170
920
|
]);
|
|
1171
|
-
const handleSelect =
|
|
921
|
+
const handleSelect = useCallback2(({ minCol, maxCol, minRow, maxRow }) => {
|
|
1172
922
|
const range = {
|
|
1173
923
|
from: {
|
|
1174
924
|
col: minCol,
|
|
@@ -1189,7 +939,7 @@ var SheetContent = (props) => {
|
|
|
1189
939
|
}, [
|
|
1190
940
|
editing
|
|
1191
941
|
]);
|
|
1192
|
-
const handleWheel =
|
|
942
|
+
const handleWheel = useCallback2((event) => {
|
|
1193
943
|
if (!ignoreAttention && !hasAttention) {
|
|
1194
944
|
event.stopPropagation();
|
|
1195
945
|
}
|
|
@@ -1197,7 +947,7 @@ var SheetContent = (props) => {
|
|
|
1197
947
|
hasAttention,
|
|
1198
948
|
ignoreAttention
|
|
1199
949
|
]);
|
|
1200
|
-
const selectEntireAxis =
|
|
950
|
+
const selectEntireAxis = useCallback2((pos) => {
|
|
1201
951
|
switch (pos.plane) {
|
|
1202
952
|
case "frozenRowsStart":
|
|
1203
953
|
return dxGrid?.setSelection({
|
|
@@ -1230,7 +980,7 @@ var SheetContent = (props) => {
|
|
|
1230
980
|
dxGrid,
|
|
1231
981
|
model.sheet
|
|
1232
982
|
]);
|
|
1233
|
-
const handleClick =
|
|
983
|
+
const handleClick = useCallback2((event) => {
|
|
1234
984
|
const cell = closestCell(event.target);
|
|
1235
985
|
if (cell) {
|
|
1236
986
|
selectEntireAxis(cell);
|
|
@@ -1238,7 +988,7 @@ var SheetContent = (props) => {
|
|
|
1238
988
|
}, [
|
|
1239
989
|
selectEntireAxis
|
|
1240
990
|
]);
|
|
1241
|
-
const handleKeyDown =
|
|
991
|
+
const handleKeyDown = useCallback2((event) => {
|
|
1242
992
|
switch (event.key) {
|
|
1243
993
|
case "Backspace":
|
|
1244
994
|
case "Delete":
|
|
@@ -1288,7 +1038,7 @@ var SheetContent = (props) => {
|
|
|
1288
1038
|
const contextMenuAnchorRef = useRef(null);
|
|
1289
1039
|
const [contextMenuOpen, setContextMenuOpen] = useState4(null);
|
|
1290
1040
|
const contextMenuAxis = contextMenuOpen?.plane.startsWith("frozenRows") ? "col" : "row";
|
|
1291
|
-
const handleContextMenu =
|
|
1041
|
+
const handleContextMenu = useCallback2((event) => {
|
|
1292
1042
|
const cell = closestCell(event.target);
|
|
1293
1043
|
if (cell && cell.plane.startsWith("frozen")) {
|
|
1294
1044
|
event.preventDefault();
|
|
@@ -1296,7 +1046,7 @@ var SheetContent = (props) => {
|
|
|
1296
1046
|
setContextMenuOpen(cell);
|
|
1297
1047
|
}
|
|
1298
1048
|
}, []);
|
|
1299
|
-
const handleAxisMenuAction =
|
|
1049
|
+
const handleAxisMenuAction = useCallback2((operation) => {
|
|
1300
1050
|
switch (operation) {
|
|
1301
1051
|
case "insert-before":
|
|
1302
1052
|
case "insert-after":
|
|
@@ -1319,7 +1069,7 @@ var SheetContent = (props) => {
|
|
|
1319
1069
|
invokePromise
|
|
1320
1070
|
]);
|
|
1321
1071
|
const { columns, rows } = useSheetModelDxGridProps(dxGrid, model);
|
|
1322
|
-
const extensions =
|
|
1072
|
+
const extensions = useMemo(() => [
|
|
1323
1073
|
editorKeys({
|
|
1324
1074
|
onClose: handleClose,
|
|
1325
1075
|
...editing?.initialContent && {
|
|
@@ -1342,17 +1092,29 @@ var SheetContent = (props) => {
|
|
|
1342
1092
|
handleClose,
|
|
1343
1093
|
editing
|
|
1344
1094
|
]);
|
|
1345
|
-
const getCellContent =
|
|
1095
|
+
const getCellContent = useCallback2((index) => {
|
|
1346
1096
|
return model.getCellText(parseCellIndex(index));
|
|
1347
1097
|
}, [
|
|
1348
1098
|
model
|
|
1349
1099
|
]);
|
|
1350
|
-
|
|
1100
|
+
const [gridInstances] = useCapabilities(SheetCapabilities.GridInstances);
|
|
1101
|
+
useEffect3(() => {
|
|
1102
|
+
if (dxGrid && gridInstances) {
|
|
1103
|
+
gridInstances.register(attendableId, dxGrid, setActiveRefs);
|
|
1104
|
+
return () => gridInstances.unregister(attendableId);
|
|
1105
|
+
}
|
|
1106
|
+
}, [
|
|
1107
|
+
dxGrid,
|
|
1108
|
+
gridInstances,
|
|
1109
|
+
attendableId,
|
|
1110
|
+
setActiveRefs
|
|
1111
|
+
]);
|
|
1351
1112
|
useSelectThreadOnCellFocus();
|
|
1352
1113
|
return /* @__PURE__ */ React3.createElement("div", {
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1114
|
+
ref: forwardedRef,
|
|
1115
|
+
...composableProps(props, {
|
|
1116
|
+
classNames: "relative min-h-0"
|
|
1117
|
+
})
|
|
1356
1118
|
}, /* @__PURE__ */ React3.createElement(GridCellEditor, {
|
|
1357
1119
|
getCellContent,
|
|
1358
1120
|
extensions,
|
|
@@ -1391,43 +1153,44 @@ var SheetContent = (props) => {
|
|
|
1391
1153
|
onClick: () => handleAxisMenuAction("insert-before"),
|
|
1392
1154
|
"data-testid": `grid.${contextMenuAxis}.insert-before`
|
|
1393
1155
|
}, /* @__PURE__ */ React3.createElement(Icon, {
|
|
1394
|
-
size: 5,
|
|
1395
1156
|
icon: contextMenuAxis === "col" ? "ph--columns-plus-left--regular" : "ph--rows-plus-top--regular"
|
|
1396
|
-
}), /* @__PURE__ */ React3.createElement("span", null, t(`add
|
|
1157
|
+
}), /* @__PURE__ */ React3.createElement("span", null, t(`add-${contextMenuAxis}-before.label`))), /* @__PURE__ */ React3.createElement(DropdownMenu.Item, {
|
|
1397
1158
|
onClick: () => handleAxisMenuAction("insert-after"),
|
|
1398
1159
|
"data-testid": `grid.${contextMenuAxis}.insert-after`
|
|
1399
1160
|
}, /* @__PURE__ */ React3.createElement(Icon, {
|
|
1400
|
-
size: 5,
|
|
1401
1161
|
icon: contextMenuAxis === "col" ? "ph--columns-plus-right--regular" : "ph--rows-plus-bottom--regular"
|
|
1402
|
-
}), /* @__PURE__ */ React3.createElement("span", null, t(`add
|
|
1162
|
+
}), /* @__PURE__ */ React3.createElement("span", null, t(`add-${contextMenuAxis}-after.label`))), /* @__PURE__ */ React3.createElement(DropdownMenu.Item, {
|
|
1403
1163
|
onClick: () => handleAxisMenuAction("drop"),
|
|
1404
1164
|
"data-testid": `grid.${contextMenuAxis}.drop`
|
|
1405
1165
|
}, /* @__PURE__ */ React3.createElement(Icon, {
|
|
1406
|
-
size: 5,
|
|
1407
1166
|
icon: "ph--backspace--regular"
|
|
1408
|
-
}), /* @__PURE__ */ React3.createElement("span", null, t(`delete
|
|
1409
|
-
};
|
|
1167
|
+
}), /* @__PURE__ */ React3.createElement("span", null, t(`delete-${contextMenuAxis}.label`)))), /* @__PURE__ */ React3.createElement(DropdownMenu.Arrow, null))));
|
|
1168
|
+
});
|
|
1410
1169
|
|
|
1411
1170
|
// src/components/SheetStatusbar/SheetStatusbar.tsx
|
|
1412
1171
|
import React4 from "react";
|
|
1413
|
-
import { addressToA1Notation as addressToA1Notation2, isFormula as isFormula2, rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute";
|
|
1172
|
+
import { addressToA1Notation as addressToA1Notation2, isFormula as isFormula2, rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute-hyperformula";
|
|
1414
1173
|
import { Icon as Icon2 } from "@dxos/react-ui";
|
|
1415
|
-
|
|
1174
|
+
import { composable as composable2, composableProps as composableProps2, mx as mx2 } from "@dxos/ui-theme";
|
|
1175
|
+
import { mapFormulaIndicesToRefs as mapFormulaIndicesToRefs2 } from "#types";
|
|
1176
|
+
var SheetStatusbar = composable2((props, forwardedRef) => {
|
|
1177
|
+
const { className, ...rest } = composableProps2(props);
|
|
1416
1178
|
const { model, cursor, range } = useSheetContext();
|
|
1417
1179
|
let value;
|
|
1418
1180
|
let formula = false;
|
|
1419
1181
|
if (cursor) {
|
|
1420
1182
|
value = model.getCellValue(cursor);
|
|
1421
1183
|
if (isFormula2(value)) {
|
|
1422
|
-
value = model.graph.mapFunctionBindingFromId(
|
|
1184
|
+
value = model.graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs2(model.sheet, value));
|
|
1423
1185
|
formula = true;
|
|
1424
1186
|
} else if (value != null) {
|
|
1425
1187
|
value = String(value);
|
|
1426
1188
|
}
|
|
1427
1189
|
}
|
|
1428
1190
|
return /* @__PURE__ */ React4.createElement("div", {
|
|
1429
|
-
|
|
1430
|
-
|
|
1191
|
+
ref: forwardedRef,
|
|
1192
|
+
...rest,
|
|
1193
|
+
className: mx2("flex shrink-0 justify-between items-center px-4 py-1 text-sm bg-toolbar-surface border-y !border-subdued-separator", className)
|
|
1431
1194
|
}, /* @__PURE__ */ React4.createElement("div", {
|
|
1432
1195
|
className: "flex gap-4 items-center"
|
|
1433
1196
|
}, /* @__PURE__ */ React4.createElement("div", {
|
|
@@ -1443,20 +1206,23 @@ var SheetStatusbar = (props) => {
|
|
|
1443
1206
|
}), /* @__PURE__ */ React4.createElement("span", {
|
|
1444
1207
|
className: "font-mono"
|
|
1445
1208
|
}, value))));
|
|
1446
|
-
};
|
|
1209
|
+
});
|
|
1447
1210
|
|
|
1448
1211
|
// src/components/SheetToolbar/SheetToolbar.tsx
|
|
1449
1212
|
import { Atom as Atom2, RegistryContext as RegistryContext4 } from "@effect-atom/atom-react";
|
|
1450
|
-
import React5, { useContext as useContext6, useMemo as
|
|
1213
|
+
import React5, { useContext as useContext6, useMemo as useMemo3 } from "react";
|
|
1451
1214
|
import { useAppGraph } from "@dxos/app-toolkit/ui";
|
|
1452
1215
|
import { Menu, createGapSeparator, useMenuActions } from "@dxos/react-ui-menu";
|
|
1216
|
+
import { composable as composable3, composableProps as composableProps3 } from "@dxos/ui-theme";
|
|
1453
1217
|
|
|
1454
1218
|
// src/components/SheetToolbar/align.ts
|
|
1455
1219
|
import { RegistryContext } from "@effect-atom/atom-react";
|
|
1456
1220
|
import { useContext as useContext3, useEffect as useEffect4 } from "react";
|
|
1457
|
-
import { inRange as
|
|
1458
|
-
import { Obj as
|
|
1221
|
+
import { inRange as inRange2 } from "@dxos/compute-hyperformula";
|
|
1222
|
+
import { Obj as Obj3 } from "@dxos/echo";
|
|
1459
1223
|
import { createMenuAction, createMenuItemGroup } from "@dxos/react-ui-menu";
|
|
1224
|
+
import { meta as meta2 } from "#meta";
|
|
1225
|
+
import { alignKey, rangeFromIndex as rangeFromIndex2, rangeToIndex } from "#types";
|
|
1460
1226
|
var aligns = {
|
|
1461
1227
|
start: "ph--text-align-left--regular",
|
|
1462
1228
|
center: "ph--text-align-center--regular",
|
|
@@ -1466,7 +1232,7 @@ var useAlignState = (stateAtom) => {
|
|
|
1466
1232
|
const registry = useContext3(RegistryContext);
|
|
1467
1233
|
const { cursor, model } = useSheetContext();
|
|
1468
1234
|
useEffect4(() => {
|
|
1469
|
-
const alignValue = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === alignKey &&
|
|
1235
|
+
const alignValue = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === alignKey && inRange2(rangeFromIndex2(model.sheet, range), cursor))?.value : void 0;
|
|
1470
1236
|
const prev = registry.get(stateAtom);
|
|
1471
1237
|
registry.set(stateAtom, {
|
|
1472
1238
|
...prev,
|
|
@@ -1481,9 +1247,9 @@ var useAlignState = (stateAtom) => {
|
|
|
1481
1247
|
};
|
|
1482
1248
|
var createAlignGroupAction = (value) => createMenuItemGroup("align", {
|
|
1483
1249
|
label: [
|
|
1484
|
-
"align
|
|
1250
|
+
"align.label",
|
|
1485
1251
|
{
|
|
1486
|
-
ns:
|
|
1252
|
+
ns: meta2.id
|
|
1487
1253
|
}
|
|
1488
1254
|
],
|
|
1489
1255
|
variant: "toggleGroup",
|
|
@@ -1495,7 +1261,7 @@ var createAlignActions = ({ model, state, stateAtom, registry, cursorFallbackRan
|
|
|
1495
1261
|
if (!cursorFallbackRange) {
|
|
1496
1262
|
return;
|
|
1497
1263
|
}
|
|
1498
|
-
const index = model.sheet.ranges?.findIndex((range) => range.key === alignKey &&
|
|
1264
|
+
const index = model.sheet.ranges?.findIndex((range) => range.key === alignKey && inRange2(rangeFromIndex2(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
|
|
1499
1265
|
const nextRangeEntity = {
|
|
1500
1266
|
range: rangeToIndex(model.sheet, cursorFallbackRange),
|
|
1501
1267
|
key: alignKey,
|
|
@@ -1503,7 +1269,7 @@ var createAlignActions = ({ model, state, stateAtom, registry, cursorFallbackRan
|
|
|
1503
1269
|
};
|
|
1504
1270
|
const currentState = registry.get(stateAtom);
|
|
1505
1271
|
if (index < 0) {
|
|
1506
|
-
|
|
1272
|
+
Obj3.update(model.sheet, (obj) => {
|
|
1507
1273
|
obj.ranges?.push(nextRangeEntity);
|
|
1508
1274
|
});
|
|
1509
1275
|
registry.set(stateAtom, {
|
|
@@ -1511,7 +1277,7 @@ var createAlignActions = ({ model, state, stateAtom, registry, cursorFallbackRan
|
|
|
1511
1277
|
[alignKey]: nextRangeEntity.value
|
|
1512
1278
|
});
|
|
1513
1279
|
} else if (model.sheet.ranges[index].value === nextRangeEntity.value) {
|
|
1514
|
-
|
|
1280
|
+
Obj3.update(model.sheet, (obj) => {
|
|
1515
1281
|
obj.ranges?.splice(index, 1);
|
|
1516
1282
|
});
|
|
1517
1283
|
registry.set(stateAtom, {
|
|
@@ -1519,7 +1285,7 @@ var createAlignActions = ({ model, state, stateAtom, registry, cursorFallbackRan
|
|
|
1519
1285
|
[alignKey]: void 0
|
|
1520
1286
|
});
|
|
1521
1287
|
} else {
|
|
1522
|
-
|
|
1288
|
+
Obj3.update(model.sheet, (obj) => {
|
|
1523
1289
|
obj.ranges?.splice(index, 1, nextRangeEntity);
|
|
1524
1290
|
});
|
|
1525
1291
|
registry.set(stateAtom, {
|
|
@@ -1532,9 +1298,9 @@ var createAlignActions = ({ model, state, stateAtom, registry, cursorFallbackRan
|
|
|
1532
1298
|
value: alignValue,
|
|
1533
1299
|
checked: state[alignKey] === alignValue,
|
|
1534
1300
|
label: [
|
|
1535
|
-
`range
|
|
1301
|
+
`range-value.${alignValue}.label`,
|
|
1536
1302
|
{
|
|
1537
|
-
ns:
|
|
1303
|
+
ns: meta2.id
|
|
1538
1304
|
}
|
|
1539
1305
|
],
|
|
1540
1306
|
icon,
|
|
@@ -1567,9 +1333,11 @@ var createAlign = (context) => {
|
|
|
1567
1333
|
// src/components/SheetToolbar/style.ts
|
|
1568
1334
|
import { RegistryContext as RegistryContext2 } from "@effect-atom/atom-react";
|
|
1569
1335
|
import { useContext as useContext4, useEffect as useEffect5 } from "react";
|
|
1570
|
-
import { inRange as
|
|
1571
|
-
import { Obj as
|
|
1336
|
+
import { inRange as inRange3 } from "@dxos/compute-hyperformula";
|
|
1337
|
+
import { Obj as Obj4 } from "@dxos/echo";
|
|
1572
1338
|
import { createMenuAction as createMenuAction2, createMenuItemGroup as createMenuItemGroup2 } from "@dxos/react-ui-menu";
|
|
1339
|
+
import { meta as meta3 } from "#meta";
|
|
1340
|
+
import { rangeFromIndex as rangeFromIndex3, rangeToIndex as rangeToIndex2 } from "#types";
|
|
1573
1341
|
var styles = {
|
|
1574
1342
|
highlight: "ph--highlighter--regular",
|
|
1575
1343
|
softwrap: "ph--paragraph--regular"
|
|
@@ -1581,7 +1349,7 @@ var useStyleState = (stateAtom) => {
|
|
|
1581
1349
|
let highlight = false;
|
|
1582
1350
|
let softwrap = false;
|
|
1583
1351
|
if (cursorFallbackRange && model.sheet.ranges) {
|
|
1584
|
-
model.sheet.ranges.filter(({ range, key }) => key === "style" &&
|
|
1352
|
+
model.sheet.ranges.filter(({ range, key }) => key === "style" && inRange3(rangeFromIndex3(model.sheet, range), cursorFallbackRange.from)).forEach(({ value }) => {
|
|
1585
1353
|
if (value === "highlight") {
|
|
1586
1354
|
highlight = true;
|
|
1587
1355
|
}
|
|
@@ -1615,16 +1383,16 @@ var createStyleActions = ({ model, state, stateAtom, registry, cursorFallbackRan
|
|
|
1615
1383
|
if (!cursorFallbackRange) {
|
|
1616
1384
|
return;
|
|
1617
1385
|
}
|
|
1618
|
-
const index = model.sheet.ranges?.findIndex((range) => range.key === "style" &&
|
|
1386
|
+
const index = model.sheet.ranges?.findIndex((range) => range.key === "style" && inRange3(rangeFromIndex3(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
|
|
1619
1387
|
const nextRangeEntity = {
|
|
1620
|
-
range:
|
|
1388
|
+
range: rangeToIndex2(model.sheet, cursorFallbackRange),
|
|
1621
1389
|
key: "style",
|
|
1622
1390
|
value: styleValue
|
|
1623
1391
|
};
|
|
1624
1392
|
const currentState = registry.get(stateAtom);
|
|
1625
|
-
if (model.sheet.ranges.filter(({ range, key: rangeKey }) => rangeKey === "style" &&
|
|
1393
|
+
if (model.sheet.ranges.filter(({ range, key: rangeKey }) => rangeKey === "style" && inRange3(rangeFromIndex3(model.sheet, range), cursorFallbackRange.from)).some(({ value: rangeValue }) => rangeValue === styleValue)) {
|
|
1626
1394
|
if (index >= 0) {
|
|
1627
|
-
|
|
1395
|
+
Obj4.update(model.sheet, (obj) => {
|
|
1628
1396
|
obj.ranges?.splice(index, 1);
|
|
1629
1397
|
});
|
|
1630
1398
|
}
|
|
@@ -1633,7 +1401,7 @@ var createStyleActions = ({ model, state, stateAtom, registry, cursorFallbackRan
|
|
|
1633
1401
|
[nextRangeEntity.value]: false
|
|
1634
1402
|
});
|
|
1635
1403
|
} else {
|
|
1636
|
-
|
|
1404
|
+
Obj4.update(model.sheet, (obj) => {
|
|
1637
1405
|
obj.ranges?.push(nextRangeEntity);
|
|
1638
1406
|
});
|
|
1639
1407
|
registry.set(stateAtom, {
|
|
@@ -1646,9 +1414,9 @@ var createStyleActions = ({ model, state, stateAtom, registry, cursorFallbackRan
|
|
|
1646
1414
|
value: styleValue,
|
|
1647
1415
|
icon,
|
|
1648
1416
|
label: [
|
|
1649
|
-
`range
|
|
1417
|
+
`range-value.${styleValue}.label`,
|
|
1650
1418
|
{
|
|
1651
|
-
ns:
|
|
1419
|
+
ns: meta3.id
|
|
1652
1420
|
}
|
|
1653
1421
|
],
|
|
1654
1422
|
checked: !!state[styleValue]
|
|
@@ -1679,9 +1447,9 @@ var createStyle = (context) => {
|
|
|
1679
1447
|
|
|
1680
1448
|
// src/components/SheetToolbar/useToolbarState.ts
|
|
1681
1449
|
import { Atom, RegistryContext as RegistryContext3, useAtomValue } from "@effect-atom/atom-react";
|
|
1682
|
-
import { useContext as useContext5, useMemo as
|
|
1450
|
+
import { useContext as useContext5, useMemo as useMemo2 } from "react";
|
|
1683
1451
|
var useToolbarState = (initialState = {}) => {
|
|
1684
|
-
return
|
|
1452
|
+
return useMemo2(() => Atom.make(initialState).pipe(Atom.keepAlive), []);
|
|
1685
1453
|
};
|
|
1686
1454
|
|
|
1687
1455
|
// src/components/SheetToolbar/SheetToolbar.tsx
|
|
@@ -1718,16 +1486,16 @@ var createToolbarActions = ({ model, stateAtom, registry, cursorFallbackRange, c
|
|
|
1718
1486
|
return graph;
|
|
1719
1487
|
});
|
|
1720
1488
|
};
|
|
1721
|
-
var SheetToolbar = (
|
|
1722
|
-
const { model, cursorFallbackRange } = useSheetContext();
|
|
1489
|
+
var SheetToolbar = composable3((props, forwardedRef) => {
|
|
1490
|
+
const { attendableId, model, cursorFallbackRange } = useSheetContext();
|
|
1723
1491
|
const stateAtom = useToolbarState({});
|
|
1724
1492
|
const registry = useContext6(RegistryContext4);
|
|
1725
1493
|
useAlignState(stateAtom);
|
|
1726
1494
|
useStyleState(stateAtom);
|
|
1727
1495
|
const { graph } = useAppGraph();
|
|
1728
|
-
const customActions =
|
|
1496
|
+
const customActions = useMemo3(() => {
|
|
1729
1497
|
return Atom2.make((get) => {
|
|
1730
|
-
const actions = get(graph.actions(
|
|
1498
|
+
const actions = get(graph.actions(attendableId));
|
|
1731
1499
|
const nodes = actions.filter((action) => action.properties.disposition === "toolbar");
|
|
1732
1500
|
return {
|
|
1733
1501
|
nodes,
|
|
@@ -1740,9 +1508,9 @@ var SheetToolbar = ({ id, ...props }) => {
|
|
|
1740
1508
|
});
|
|
1741
1509
|
}, [
|
|
1742
1510
|
graph,
|
|
1743
|
-
|
|
1511
|
+
attendableId
|
|
1744
1512
|
]);
|
|
1745
|
-
const actionsCreator =
|
|
1513
|
+
const actionsCreator = useMemo3(() => createToolbarActions({
|
|
1746
1514
|
model,
|
|
1747
1515
|
stateAtom,
|
|
1748
1516
|
registry,
|
|
@@ -1755,13 +1523,16 @@ var SheetToolbar = ({ id, ...props }) => {
|
|
|
1755
1523
|
cursorFallbackRange,
|
|
1756
1524
|
customActions
|
|
1757
1525
|
]);
|
|
1758
|
-
const
|
|
1526
|
+
const menuActions = useMenuActions(actionsCreator);
|
|
1759
1527
|
return /* @__PURE__ */ React5.createElement(Menu.Root, {
|
|
1760
|
-
...
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1528
|
+
...menuActions,
|
|
1529
|
+
attendableId
|
|
1530
|
+
}, /* @__PURE__ */ React5.createElement(Menu.Toolbar, {
|
|
1531
|
+
...composableProps3(props),
|
|
1532
|
+
ref: forwardedRef
|
|
1533
|
+
}));
|
|
1534
|
+
});
|
|
1535
|
+
SheetToolbar.displayName = "SheetToolbar";
|
|
1765
1536
|
|
|
1766
1537
|
// src/components/Sheet/Sheet.tsx
|
|
1767
1538
|
var Sheet = {
|
|
@@ -1770,36 +1541,11 @@ var Sheet = {
|
|
|
1770
1541
|
Content: SheetContent,
|
|
1771
1542
|
Statusbar: SheetStatusbar
|
|
1772
1543
|
};
|
|
1773
|
-
|
|
1774
|
-
// src/containers/SheetContainer/SheetContainer.tsx
|
|
1775
|
-
var SheetContainer = ({ registry, ...props }) => /* @__PURE__ */ React6.createElement(ComputeGraphContextProvider, {
|
|
1776
|
-
registry
|
|
1777
|
-
}, /* @__PURE__ */ React6.createElement(SheetContainerInner, props));
|
|
1778
|
-
var SheetContainerInner = ({ role, subject: sheet, space, ignoreAttention }) => {
|
|
1779
|
-
const graph = useComputeGraph(space);
|
|
1780
|
-
if (!graph) {
|
|
1781
|
-
return null;
|
|
1782
|
-
}
|
|
1783
|
-
return /* @__PURE__ */ React6.createElement(Sheet.Root, {
|
|
1784
|
-
graph,
|
|
1785
|
-
sheet,
|
|
1786
|
-
ignoreAttention
|
|
1787
|
-
}, /* @__PURE__ */ React6.createElement(Panel.Root, {
|
|
1788
|
-
classNames: role === "section" && "aspect-aquare"
|
|
1789
|
-
}, /* @__PURE__ */ React6.createElement(Panel.Toolbar, {
|
|
1790
|
-
asChild: true
|
|
1791
|
-
}, /* @__PURE__ */ React6.createElement(Sheet.Toolbar, {
|
|
1792
|
-
id: Obj7.getDXN(sheet).toString()
|
|
1793
|
-
})), /* @__PURE__ */ React6.createElement(Panel.Content, {
|
|
1794
|
-
asChild: true
|
|
1795
|
-
}, /* @__PURE__ */ React6.createElement(Sheet.Content, null)), /* @__PURE__ */ React6.createElement(Panel.Statusbar, {
|
|
1796
|
-
asChild: true
|
|
1797
|
-
}, /* @__PURE__ */ React6.createElement(Sheet.Statusbar, null))));
|
|
1798
|
-
};
|
|
1799
|
-
|
|
1800
|
-
// src/containers/SheetContainer/index.ts
|
|
1801
|
-
var SheetContainer_default = SheetContainer;
|
|
1802
1544
|
export {
|
|
1803
|
-
|
|
1545
|
+
ComputeGraphContext,
|
|
1546
|
+
ComputeGraphContextProvider,
|
|
1547
|
+
Sheet,
|
|
1548
|
+
useComputeGraph,
|
|
1549
|
+
useSheetContext
|
|
1804
1550
|
};
|
|
1805
|
-
//# sourceMappingURL=
|
|
1551
|
+
//# sourceMappingURL=index.mjs.map
|