@dxos/plugin-sheet 0.8.4-main.21d9917 → 0.8.4-main.2244d791bb
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/{SheetContainer-ESCXPI7Y.mjs → SheetContainer-6DNFC4TY.mjs} +16 -16
- package/dist/lib/browser/SheetContainer-6DNFC4TY.mjs.map +7 -0
- package/dist/lib/browser/{anchor-sort-JBRMW6OY.mjs → anchor-sort-AMMLA66W.mjs} +5 -4
- package/dist/lib/browser/anchor-sort-AMMLA66W.mjs.map +7 -0
- package/dist/lib/browser/{chunk-W6N44ONZ.mjs → chunk-EDWHV64N.mjs} +69 -66
- package/dist/lib/browser/chunk-EDWHV64N.mjs.map +7 -0
- package/dist/lib/browser/{chunk-2SAGT3BB.mjs → chunk-KE3AKN5W.mjs} +17 -17
- package/dist/lib/browser/chunk-KE3AKN5W.mjs.map +7 -0
- package/dist/lib/browser/{compute-graph-registry-DL2PX7TF.mjs → compute-graph-registry-RC5L7RE4.mjs} +2 -2
- package/dist/lib/browser/index.mjs +20 -19
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{markdown-BC4KBDUO.mjs → markdown-D2T2DOVX.mjs} +2 -2
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{operation-resolver-FJ4UWZUM.mjs → operation-resolver-P2RX75DA.mjs} +5 -5
- package/dist/lib/browser/operation-resolver-P2RX75DA.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-5BXM6TJ3.mjs → react-surface-45CRAB5G.mjs} +8 -8
- package/dist/lib/browser/react-surface-45CRAB5G.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/{SheetContainer-YVIDJKP4.mjs → SheetContainer-7H5R7M54.mjs} +16 -16
- package/dist/lib/node-esm/SheetContainer-7H5R7M54.mjs.map +7 -0
- package/dist/lib/node-esm/{anchor-sort-C3XFPI6S.mjs → anchor-sort-VHMBRX2E.mjs} +5 -4
- package/dist/lib/node-esm/anchor-sort-VHMBRX2E.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-IMWGSIDG.mjs → chunk-6J5L47IB.mjs} +17 -17
- package/dist/lib/node-esm/chunk-6J5L47IB.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-S7RYX7DG.mjs → chunk-AYSEWH7N.mjs} +69 -66
- package/dist/lib/node-esm/chunk-AYSEWH7N.mjs.map +7 -0
- package/dist/lib/node-esm/{compute-graph-registry-VXH55GDI.mjs → compute-graph-registry-ZGXVLVGD.mjs} +2 -2
- package/dist/lib/node-esm/index.mjs +20 -19
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{markdown-6DGZCJRM.mjs → markdown-PTV72DLO.mjs} +2 -2
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{operation-resolver-OGXEUWHA.mjs → operation-resolver-WPIWQ5IO.mjs} +5 -5
- package/dist/lib/node-esm/operation-resolver-WPIWQ5IO.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-RLHC6B77.mjs → react-surface-ITV2L6HK.mjs} +8 -8
- package/dist/lib/node-esm/react-surface-ITV2L6HK.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/SheetPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +3 -2
- package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort/index.d.ts +1 -1
- package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
- package/dist/types/src/model/sheet-model.d.ts.map +1 -1
- package/dist/types/src/testing/testing.d.ts +9 -9
- package/dist/types/src/types/Sheet.d.ts +18 -18
- package/dist/types/src/types/Sheet.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +1 -1
- package/dist/types/src/types/util.d.ts +2 -1
- package/dist/types/src/types/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +59 -58
- package/src/SheetPlugin.tsx +12 -11
- package/src/capabilities/anchor-sort/anchor-sort.ts +3 -2
- package/src/capabilities/operation-resolver/operation-resolver.ts +3 -3
- package/src/capabilities/react-surface/react-surface.tsx +5 -5
- package/src/components/ComputeGraph/compute-graph.stories.tsx +1 -1
- package/src/components/GridSheet/GridSheet.stories.tsx +1 -1
- package/src/components/GridSheet/GridSheet.tsx +13 -10
- package/src/components/GridSheet/SheetCellEditor.stories.tsx +4 -4
- package/src/components/RangeList/RangeList.tsx +2 -2
- package/src/components/SheetContainer/SheetContainer.stories.tsx +3 -3
- package/src/components/SheetContainer/SheetContainer.tsx +3 -3
- package/src/components/SheetToolbar/SheetToolbar.stories.tsx +1 -1
- package/src/components/SheetToolbar/SheetToolbar.tsx +1 -1
- package/src/components/SheetToolbar/align.ts +6 -6
- package/src/components/SheetToolbar/style.ts +4 -4
- package/src/extensions/compute.stories.tsx +1 -1
- package/src/integrations/thread-ranges.ts +3 -3
- package/src/model/sheet-model.ts +36 -34
- package/src/types/Sheet.ts +11 -20
- package/src/types/util.ts +2 -1
- package/dist/lib/browser/SheetContainer-ESCXPI7Y.mjs.map +0 -7
- package/dist/lib/browser/anchor-sort-JBRMW6OY.mjs.map +0 -7
- package/dist/lib/browser/chunk-2SAGT3BB.mjs.map +0 -7
- package/dist/lib/browser/chunk-W6N44ONZ.mjs.map +0 -7
- package/dist/lib/browser/operation-resolver-FJ4UWZUM.mjs.map +0 -7
- package/dist/lib/browser/react-surface-5BXM6TJ3.mjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-YVIDJKP4.mjs.map +0 -7
- package/dist/lib/node-esm/anchor-sort-C3XFPI6S.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-IMWGSIDG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-S7RYX7DG.mjs.map +0 -7
- package/dist/lib/node-esm/operation-resolver-OGXEUWHA.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-RLHC6B77.mjs.map +0 -7
- /package/dist/lib/browser/{compute-graph-registry-DL2PX7TF.mjs.map → compute-graph-registry-RC5L7RE4.mjs.map} +0 -0
- /package/dist/lib/browser/{markdown-BC4KBDUO.mjs.map → markdown-D2T2DOVX.mjs.map} +0 -0
- /package/dist/lib/node-esm/{compute-graph-registry-VXH55GDI.mjs.map → compute-graph-registry-ZGXVLVGD.mjs.map} +0 -0
- /package/dist/lib/node-esm/{markdown-6DGZCJRM.mjs.map → markdown-PTV72DLO.mjs.map} +0 -0
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
SheetProvider,
|
|
4
4
|
useComputeGraph,
|
|
5
5
|
useSheetContext
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-EDWHV64N.mjs";
|
|
7
7
|
import "./chunk-IFLWVS2V.mjs";
|
|
8
8
|
import {
|
|
9
9
|
alignKey,
|
|
@@ -11,12 +11,12 @@ import {
|
|
|
11
11
|
meta,
|
|
12
12
|
rangeFromIndex,
|
|
13
13
|
rangeToIndex
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-KE3AKN5W.mjs";
|
|
15
15
|
|
|
16
16
|
// src/components/SheetContainer/SheetContainer.tsx
|
|
17
17
|
import React3, { Fragment } from "react";
|
|
18
18
|
import { Obj as Obj3 } from "@dxos/echo";
|
|
19
|
-
import { Layout } from "@dxos/react-ui
|
|
19
|
+
import { Flex, Layout } from "@dxos/react-ui";
|
|
20
20
|
|
|
21
21
|
// src/components/FunctionEditor/FunctionEditor.tsx
|
|
22
22
|
import React from "react";
|
|
@@ -57,7 +57,7 @@ var FunctionEditor = () => {
|
|
|
57
57
|
// src/components/SheetToolbar/SheetToolbar.tsx
|
|
58
58
|
import { Atom as Atom2, RegistryContext as RegistryContext4 } from "@effect-atom/atom-react";
|
|
59
59
|
import React2, { useContext as useContext4, useMemo as useMemo2 } from "react";
|
|
60
|
-
import { useAppGraph } from "@dxos/app-
|
|
60
|
+
import { useAppGraph } from "@dxos/app-toolkit/ui";
|
|
61
61
|
import { MenuProvider, ToolbarMenu, createGapSeparator, useMenuActions } from "@dxos/react-ui-menu";
|
|
62
62
|
|
|
63
63
|
// src/components/SheetToolbar/align.ts
|
|
@@ -112,24 +112,24 @@ var createAlignActions = ({ model, state, stateAtom, registry, cursorFallbackRan
|
|
|
112
112
|
};
|
|
113
113
|
const currentState = registry.get(stateAtom);
|
|
114
114
|
if (index < 0) {
|
|
115
|
-
Obj.change(model.sheet, (
|
|
116
|
-
|
|
115
|
+
Obj.change(model.sheet, (obj) => {
|
|
116
|
+
obj.ranges?.push(nextRangeEntity);
|
|
117
117
|
});
|
|
118
118
|
registry.set(stateAtom, {
|
|
119
119
|
...currentState,
|
|
120
120
|
[alignKey]: nextRangeEntity.value
|
|
121
121
|
});
|
|
122
122
|
} else if (model.sheet.ranges[index].value === nextRangeEntity.value) {
|
|
123
|
-
Obj.change(model.sheet, (
|
|
124
|
-
|
|
123
|
+
Obj.change(model.sheet, (obj) => {
|
|
124
|
+
obj.ranges?.splice(index, 1);
|
|
125
125
|
});
|
|
126
126
|
registry.set(stateAtom, {
|
|
127
127
|
...currentState,
|
|
128
128
|
[alignKey]: void 0
|
|
129
129
|
});
|
|
130
130
|
} else {
|
|
131
|
-
Obj.change(model.sheet, (
|
|
132
|
-
|
|
131
|
+
Obj.change(model.sheet, (obj) => {
|
|
132
|
+
obj.ranges?.splice(index, 1, nextRangeEntity);
|
|
133
133
|
});
|
|
134
134
|
registry.set(stateAtom, {
|
|
135
135
|
...currentState,
|
|
@@ -231,8 +231,8 @@ var createStyleActions = ({ model, state, stateAtom, registry, cursorFallbackRan
|
|
|
231
231
|
const currentState = registry.get(stateAtom);
|
|
232
232
|
if (model.sheet.ranges.filter(({ range, key: rangeKey }) => rangeKey === "style" && inRange2(rangeFromIndex(model.sheet, range), cursorFallbackRange.from)).some(({ value: rangeValue }) => rangeValue === styleValue)) {
|
|
233
233
|
if (index >= 0) {
|
|
234
|
-
Obj2.change(model.sheet, (
|
|
235
|
-
|
|
234
|
+
Obj2.change(model.sheet, (obj) => {
|
|
235
|
+
obj.ranges?.splice(index, 1);
|
|
236
236
|
});
|
|
237
237
|
}
|
|
238
238
|
registry.set(stateAtom, {
|
|
@@ -240,8 +240,8 @@ var createStyleActions = ({ model, state, stateAtom, registry, cursorFallbackRan
|
|
|
240
240
|
[nextRangeEntity.value]: false
|
|
241
241
|
});
|
|
242
242
|
} else {
|
|
243
|
-
Obj2.change(model.sheet, (
|
|
244
|
-
|
|
243
|
+
Obj2.change(model.sheet, (obj) => {
|
|
244
|
+
obj.ranges?.push(nextRangeEntity);
|
|
245
245
|
});
|
|
246
246
|
registry.set(stateAtom, {
|
|
247
247
|
...currentState,
|
|
@@ -384,7 +384,7 @@ var SheetContainer = ({ role, subject: sheet, space, ignoreAttention }) => {
|
|
|
384
384
|
id: Obj3.getDXN(sheet).toString()
|
|
385
385
|
}), /* @__PURE__ */ React3.createElement(GridSheet, null), /* @__PURE__ */ React3.createElement(FunctionEditor, null))));
|
|
386
386
|
};
|
|
387
|
-
var Container = (props) => /* @__PURE__ */ React3.createElement(
|
|
387
|
+
var Container = (props) => /* @__PURE__ */ React3.createElement(Flex, {
|
|
388
388
|
...props,
|
|
389
389
|
classNames: "aspect-square"
|
|
390
390
|
});
|
|
@@ -394,4 +394,4 @@ var SheetContainer_default = SheetContainer;
|
|
|
394
394
|
export {
|
|
395
395
|
SheetContainer_default as default
|
|
396
396
|
};
|
|
397
|
-
//# sourceMappingURL=SheetContainer-
|
|
397
|
+
//# sourceMappingURL=SheetContainer-6DNFC4TY.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/SheetContainer/SheetContainer.tsx", "../../../src/components/FunctionEditor/FunctionEditor.tsx", "../../../src/components/SheetToolbar/SheetToolbar.tsx", "../../../src/components/SheetToolbar/align.ts", "../../../src/components/SheetToolbar/style.ts", "../../../src/components/SheetToolbar/useToolbarState.ts", "../../../src/components/SheetContainer/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { Fragment } from 'react';\n\nimport { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';\nimport { Obj } from '@dxos/echo';\nimport { type Space } from '@dxos/react-client/echo';\nimport { Flex, type FlexProps, Layout } from '@dxos/react-ui';\n\nimport { type Sheet } from '../../types';\nimport { useComputeGraph } from '../ComputeGraph';\nimport { FunctionEditor } from '../FunctionEditor';\nimport { GridSheet } from '../GridSheet';\nimport { SheetProvider } from '../SheetContext';\nimport { SheetToolbar } from '../SheetToolbar';\n\nexport type SheetContainerProps = SurfaceComponentProps<\n Sheet.Sheet,\n {\n space: Space;\n ignoreAttention?: boolean;\n }\n>;\n\nexport const SheetContainer = ({ role, subject: sheet, space, ignoreAttention }: SheetContainerProps) => {\n const graph = useComputeGraph(space);\n if (!graph) {\n return null;\n }\n\n const Root = role === 'section' ? Container : Fragment;\n\n return (\n <SheetProvider sheet={sheet} graph={graph} ignoreAttention={ignoreAttention}>\n <Root>\n <Layout.Main toolbar statusbar>\n <SheetToolbar id={Obj.getDXN(sheet).toString()} />\n <GridSheet />\n <FunctionEditor />\n </Layout.Main>\n </Root>\n </SheetProvider>\n );\n};\n\nconst Container = (props: FlexProps) => <Flex {...props} classNames='aspect-square' />;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { addressToA1Notation, isFormula, rangeToA1Notation } from '@dxos/compute';\nimport { Icon } from '@dxos/react-ui';\n\nimport { mapFormulaIndicesToRefs } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport const FunctionEditor = () => {\n const { model, cursor, range } = useSheetContext();\n\n let value;\n let formula = false;\n if (cursor) {\n value = model.getCellValue(cursor);\n if (isFormula(value)) {\n value = model.graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(model.sheet, value));\n formula = true;\n } else if (value != null) {\n value = String(value);\n }\n }\n\n return (\n <div className='flex shrink-0 justify-between items-center pli-4 plb-1 text-sm bg-toolbarSurface border-bs !border-subduedSeparator'>\n <div className='flex gap-4 items-center'>\n <div className='flex is-16 items-center font-mono'>\n {(range && rangeToA1Notation(range)) || (cursor && addressToA1Notation(cursor))}\n </div>\n <div className='flex gap-2 items-center'>\n <Icon icon='ph--function--regular' classNames={['text-greenText', formula ? 'visible' : 'invisible']} />\n <span className='font-mono'>{value}</span>\n </div>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Atom, type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport React, { type PropsWithChildren, useContext, useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { type CompleteCellRange } from '@dxos/compute';\nimport {\n type ActionGraphProps,\n MenuProvider,\n ToolbarMenu,\n createGapSeparator,\n useMenuActions,\n} from '@dxos/react-ui-menu';\n\nimport { type SheetModel } from '../../model';\nimport { useSheetContext } from '../SheetContext';\n\nimport { createAlign, useAlignState } from './align';\nimport { createStyle, useStyleState } from './style';\nimport { type ToolbarStateAtom, useToolbarState } from './useToolbarState';\n\ntype ToolbarActionsContext = {\n model: SheetModel;\n stateAtom: ToolbarStateAtom;\n registry: Registry.Registry;\n cursorFallbackRange?: CompleteCellRange;\n customActions?: Atom.Atom<ActionGraphProps>;\n};\n\nconst createToolbarActions = ({\n model,\n stateAtom,\n registry,\n cursorFallbackRange,\n customActions,\n}: ToolbarActionsContext): Atom.Atom<ActionGraphProps> => {\n return Atom.make((get) => {\n const state = get(stateAtom);\n const context = { model, state, stateAtom, registry, cursorFallbackRange };\n const align = createAlign(context);\n const style = createStyle(context);\n const gap = createGapSeparator();\n\n const graph: ActionGraphProps = {\n nodes: [...align.nodes, ...style.nodes, ...gap.nodes],\n edges: [...align.edges, ...style.edges, ...gap.edges],\n };\n\n if (customActions) {\n const custom = get(customActions);\n graph.nodes.push(...custom.nodes);\n graph.edges.push(...custom.edges);\n }\n\n return graph;\n });\n};\n\nexport type SheetToolbarProps = PropsWithChildren<{ id: string }>;\n\nexport const SheetToolbar = ({ id }: SheetToolbarProps) => {\n const { model, cursorFallbackRange } = useSheetContext();\n const stateAtom = useToolbarState({});\n const registry = useContext(RegistryContext);\n useAlignState(stateAtom);\n useStyleState(stateAtom);\n\n const { graph } = useAppGraph();\n const customActions = useMemo(() => {\n return Atom.make((get) => {\n const actions = get(graph.actions(id));\n const nodes = actions.filter((action) => action.properties.disposition === 'toolbar');\n return {\n nodes,\n edges: nodes.map((node) => ({ source: 'root', target: node.id })),\n };\n });\n }, [graph, id]);\n\n const actionsCreator = useMemo(\n () => createToolbarActions({ model, stateAtom, registry, cursorFallbackRange, customActions }),\n [model, stateAtom, registry, cursorFallbackRange, customActions],\n );\n const menu = useMenuActions(actionsCreator);\n\n return (\n <MenuProvider {...menu} attendableId={id}>\n <ToolbarMenu />\n </MenuProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport { useContext, useEffect } from 'react';\n\nimport { type CompleteCellRange, inRange } from '@dxos/compute';\nimport { Obj } from '@dxos/echo';\nimport {\n type ActionGraphProps,\n type ToolbarMenuActionGroupProperties,\n createMenuAction,\n createMenuItemGroup,\n} from '@dxos/react-ui-menu';\n\nimport { meta } from '../../meta';\nimport { type SheetModel } from '../../model';\nimport { type AlignKey, type AlignValue, alignKey, rangeFromIndex, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nimport { type ToolbarState, type ToolbarStateAtom } from './useToolbarState';\n\nexport type AlignAction = { key: AlignKey; value: AlignValue };\n\nexport type AlignState = { [alignKey]: AlignValue | undefined };\n\nconst aligns: Record<AlignValue, string> = {\n start: 'ph--text-align-left--regular',\n center: 'ph--text-align-center--regular',\n end: 'ph--text-align-right--regular',\n};\n\nexport const useAlignState = (stateAtom: ToolbarStateAtom) => {\n const registry = useContext(RegistryContext);\n const { cursor, model } = useSheetContext();\n useEffect(() => {\n // TODO(thure): Can this O(n) call be memoized?\n const alignValue = (\n cursor\n ? model.sheet.ranges?.findLast(\n ({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor),\n )?.value\n : undefined\n ) as AlignValue | undefined;\n const prev = registry.get(stateAtom);\n registry.set(stateAtom, { ...prev, [alignKey]: alignValue });\n }, [cursor, model.sheet, registry, stateAtom]);\n};\n\nconst createAlignGroupAction = (value?: AlignValue) =>\n createMenuItemGroup('align', {\n label: ['align label', { ns: meta.id }],\n variant: 'toggleGroup',\n selectCardinality: 'single',\n value: `${alignKey}--${value}`,\n } as ToolbarMenuActionGroupProperties);\n\ntype AlignActionsContext = {\n model: SheetModel;\n state: ToolbarState;\n stateAtom: ToolbarStateAtom;\n registry: Registry.Registry;\n cursorFallbackRange?: CompleteCellRange;\n};\n\nconst createAlignActions = ({ model, state, stateAtom, registry, cursorFallbackRange }: AlignActionsContext) =>\n Object.entries(aligns).map(([alignValue, icon]) => {\n return createMenuAction<AlignAction>(\n `${alignKey}--${alignValue}`,\n () => {\n if (!cursorFallbackRange) {\n return;\n }\n const index =\n model.sheet.ranges?.findIndex(\n (range) =>\n range.key === alignKey && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: alignKey,\n value: alignValue as AlignValue,\n };\n const currentState = registry.get(stateAtom);\n if (index < 0) {\n Obj.change(model.sheet, (obj) => {\n obj.ranges?.push(nextRangeEntity);\n });\n registry.set(stateAtom, { ...currentState, [alignKey]: nextRangeEntity.value });\n } else if (model.sheet.ranges![index].value === nextRangeEntity.value) {\n Obj.change(model.sheet, (obj) => {\n obj.ranges?.splice(index, 1);\n });\n registry.set(stateAtom, { ...currentState, [alignKey]: undefined });\n } else {\n Obj.change(model.sheet, (obj) => {\n obj.ranges?.splice(index, 1, nextRangeEntity);\n });\n registry.set(stateAtom, { ...currentState, [alignKey]: nextRangeEntity.value });\n }\n },\n {\n key: alignKey,\n value: alignValue as AlignValue,\n checked: state[alignKey] === alignValue,\n label: [`range value ${alignValue} label`, { ns: meta.id }],\n icon,\n testId: `grid.toolbar.${alignKey}.${alignValue}`,\n },\n );\n });\n\nexport const createAlign = (context: AlignActionsContext): ActionGraphProps => {\n const alignGroup = createAlignGroupAction(context.state[alignKey]);\n const alignActions = createAlignActions(context);\n return {\n nodes: [alignGroup, ...alignActions],\n edges: [\n { source: 'root', target: 'align' },\n ...alignActions.map(({ id }) => ({ source: alignGroup.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport { useContext, useEffect } from 'react';\n\nimport { type CompleteCellRange, inRange } from '@dxos/compute';\nimport { Obj } from '@dxos/echo';\nimport {\n type ActionGraphProps,\n type ToolbarMenuActionGroupProperties,\n createMenuAction,\n createMenuItemGroup,\n} from '@dxos/react-ui-menu';\n\nimport { meta } from '../../meta';\nimport { type SheetModel } from '../../model';\nimport { type StyleKey, type StyleValue, rangeFromIndex, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nimport { type ToolbarState, type ToolbarStateAtom } from './useToolbarState';\n\nexport type StyleState = Partial<Record<StyleValue, boolean>>;\n\nexport type StyleAction = { key: StyleKey; value: StyleValue };\n\nconst styles: Record<StyleValue, string> = {\n highlight: 'ph--highlighter--regular',\n softwrap: 'ph--paragraph--regular',\n};\n\nexport const useStyleState = (stateAtom: ToolbarStateAtom) => {\n const registry = useContext(RegistryContext);\n const { cursorFallbackRange, model } = useSheetContext();\n\n useEffect(() => {\n let highlight = false;\n let softwrap = false;\n if (cursorFallbackRange && model.sheet.ranges) {\n model.sheet.ranges\n .filter(\n ({ range, key }) => key === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .forEach(({ value }) => {\n if (value === 'highlight') {\n highlight = true;\n }\n if (value === 'softwrap') {\n softwrap = true;\n }\n });\n }\n const prev = registry.get(stateAtom);\n registry.set(stateAtom, { ...prev, highlight, softwrap });\n }, [cursorFallbackRange, model.sheet, registry, stateAtom]);\n};\n\nconst createStyleGroup = (state: StyleState) => {\n return createMenuItemGroup('style', {\n variant: 'toggleGroup',\n selectCardinality: 'multiple',\n value: Object.keys(styles)\n .filter((key) => !!state[key as StyleValue])\n .map((styleValue) => `style--${styleValue}`),\n } as ToolbarMenuActionGroupProperties);\n};\n\ntype StyleActionsContext = {\n model: SheetModel;\n state: ToolbarState;\n stateAtom: ToolbarStateAtom;\n registry: Registry.Registry;\n cursorFallbackRange?: CompleteCellRange;\n};\n\nconst createStyleActions = ({ model, state, stateAtom, registry, cursorFallbackRange }: StyleActionsContext) =>\n Object.entries(styles).map(([styleValue, icon]) => {\n return createMenuAction<StyleAction>(\n `style--${styleValue}`,\n () => {\n if (!cursorFallbackRange) {\n return;\n }\n const index =\n model.sheet.ranges?.findIndex(\n (range) =>\n range.key === 'style' && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: 'style',\n value: styleValue as StyleValue,\n };\n const currentState = registry.get(stateAtom);\n if (\n model.sheet.ranges\n .filter(\n ({ range, key: rangeKey }) =>\n rangeKey === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .some(({ value: rangeValue }) => rangeValue === styleValue)\n ) {\n // this value should be unset\n if (index >= 0) {\n Obj.change(model.sheet, (obj) => {\n obj.ranges?.splice(index, 1);\n });\n }\n registry.set(stateAtom, { ...currentState, [nextRangeEntity.value]: false });\n } else {\n Obj.change(model.sheet, (obj) => {\n obj.ranges?.push(nextRangeEntity);\n });\n registry.set(stateAtom, { ...currentState, [nextRangeEntity.value]: true });\n }\n },\n {\n key: 'style',\n value: styleValue as StyleValue,\n icon,\n label: [`range value ${styleValue} label`, { ns: meta.id }],\n checked: !!state[styleValue as StyleValue],\n },\n );\n });\n\nexport const createStyle = (context: StyleActionsContext): ActionGraphProps => {\n const styleGroupAction = createStyleGroup(context.state);\n const styleActions = createStyleActions(context);\n return {\n nodes: [styleGroupAction, ...styleActions],\n edges: [\n { source: 'root', target: 'style' },\n ...styleActions.map(({ id }) => ({ source: styleGroupAction.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, type Registry, RegistryContext, useAtomValue } from '@effect-atom/atom-react';\nimport { useContext, useMemo } from 'react';\n\nimport { type AlignState } from './align';\nimport { type StyleState } from './style';\n\nexport type ToolbarState = Partial<StyleState & AlignState>;\nexport type ToolbarStateAtom = Atom.Writable<ToolbarState>;\n\n/**\n * Creates a reactive toolbar state Atom.\n */\nexport const useToolbarState = (initialState: ToolbarState = {}): ToolbarStateAtom => {\n return useMemo(() => Atom.make<ToolbarState>(initialState).pipe(Atom.keepAlive), []);\n};\n\n/**\n * Hook to read the current toolbar state value.\n */\nexport const useToolbarStateValue = (stateAtom: ToolbarStateAtom): ToolbarState => {\n return useAtomValue(stateAtom);\n};\n\n/**\n * Hook to get the registry for updating toolbar state.\n */\nexport const useToolbarStateRegistry = (): Registry.Registry => {\n return useContext(RegistryContext);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { SheetContainer } from './SheetContainer';\n\nexport default SheetContainer;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "Fragment", "Obj", "Flex", "Layout", "React", "addressToA1Notation", "isFormula", "rangeToA1Notation", "Icon", "FunctionEditor", "model", "cursor", "range", "useSheetContext", "value", "formula", "getCellValue", "isFormula", "graph", "mapFunctionBindingFromId", "mapFormulaIndicesToRefs", "sheet", "String", "div", "className", "rangeToA1Notation", "addressToA1Notation", "Icon", "icon", "classNames", "span", "Atom", "RegistryContext", "React", "useContext", "useMemo", "useAppGraph", "MenuProvider", "ToolbarMenu", "createGapSeparator", "useMenuActions", "RegistryContext", "useContext", "useEffect", "inRange", "Obj", "createMenuAction", "createMenuItemGroup", "aligns", "start", "center", "end", "useAlignState", "stateAtom", "registry", "useContext", "RegistryContext", "cursor", "model", "useSheetContext", "useEffect", "alignValue", "sheet", "ranges", "findLast", "range", "key", "alignKey", "inRange", "rangeFromIndex", "value", "undefined", "prev", "get", "set", "createAlignGroupAction", "createMenuItemGroup", "label", "ns", "meta", "id", "variant", "selectCardinality", "createAlignActions", "state", "cursorFallbackRange", "Object", "entries", "map", "icon", "createMenuAction", "index", "findIndex", "from", "nextRangeEntity", "rangeToIndex", "currentState", "Obj", "change", "obj", "push", "splice", "checked", "testId", "createAlign", "context", "alignGroup", "alignActions", "nodes", "edges", "source", "target", "RegistryContext", "useContext", "useEffect", "inRange", "Obj", "createMenuAction", "createMenuItemGroup", "styles", "highlight", "softwrap", "useStyleState", "stateAtom", "registry", "useContext", "RegistryContext", "cursorFallbackRange", "model", "useSheetContext", "useEffect", "sheet", "ranges", "filter", "range", "key", "inRange", "rangeFromIndex", "from", "forEach", "value", "prev", "get", "set", "createStyleGroup", "state", "createMenuItemGroup", "variant", "selectCardinality", "Object", "keys", "map", "styleValue", "createStyleActions", "entries", "icon", "createMenuAction", "index", "findIndex", "nextRangeEntity", "rangeToIndex", "currentState", "rangeKey", "some", "rangeValue", "Obj", "change", "obj", "splice", "push", "label", "ns", "meta", "id", "checked", "createStyle", "context", "styleGroupAction", "styleActions", "nodes", "edges", "source", "target", "Atom", "RegistryContext", "useAtomValue", "useContext", "useMemo", "useToolbarState", "initialState", "useMemo", "Atom", "make", "pipe", "keepAlive", "createToolbarActions", "model", "stateAtom", "registry", "cursorFallbackRange", "customActions", "Atom", "make", "get", "state", "context", "align", "createAlign", "style", "createStyle", "gap", "createGapSeparator", "graph", "nodes", "edges", "custom", "push", "SheetToolbar", "id", "useSheetContext", "useToolbarState", "useContext", "RegistryContext", "useAlignState", "useStyleState", "useAppGraph", "useMemo", "actions", "filter", "action", "properties", "disposition", "map", "node", "source", "target", "actionsCreator", "menu", "useMenuActions", "React", "MenuProvider", "attendableId", "ToolbarMenu", "SheetContainer", "role", "subject", "sheet", "space", "ignoreAttention", "graph", "useComputeGraph", "Root", "Container", "Fragment", "React", "SheetProvider", "Layout", "Main", "toolbar", "statusbar", "SheetToolbar", "id", "Obj", "getDXN", "toString", "GridSheet", "FunctionEditor", "props", "Flex", "classNames", "SheetContainer"]
|
|
7
|
+
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Sheet_exports,
|
|
3
3
|
compareIndexPositions
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-KE3AKN5W.mjs";
|
|
5
5
|
|
|
6
6
|
// src/capabilities/anchor-sort/anchor-sort.ts
|
|
7
7
|
import * as Effect from "effect/Effect";
|
|
8
|
-
import { Capability
|
|
8
|
+
import { Capability } from "@dxos/app-framework";
|
|
9
|
+
import { AppCapabilities } from "@dxos/app-toolkit";
|
|
9
10
|
import { Relation } from "@dxos/echo";
|
|
10
|
-
var anchor_sort_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(
|
|
11
|
+
var anchor_sort_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(AppCapabilities.AnchorSort, {
|
|
11
12
|
key: Sheet_exports.Sheet.typename,
|
|
12
13
|
sort: (anchorA, anchorB) => {
|
|
13
14
|
const sheet = Relation.getTarget(anchorA);
|
|
@@ -20,4 +21,4 @@ var anchor_sort_default = Capability.makeModule(() => Effect.succeed(Capability.
|
|
|
20
21
|
export {
|
|
21
22
|
anchor_sort_default as default
|
|
22
23
|
};
|
|
23
|
-
//# sourceMappingURL=anchor-sort-
|
|
24
|
+
//# sourceMappingURL=anchor-sort-AMMLA66W.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/anchor-sort/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 } from '@dxos/echo';\n\nimport { Sheet, compareIndexPositions } from '../../types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(AppCapabilities.AnchorSort, {\n key: Sheet.Sheet.typename,\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,gBAAgB;AAIzB,IAAA,sBAAeC,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YAAYC,gBAAgBC,YAAY;EACjDC,KAAKC,cAAMA,MAAMC;EACjBC,MAAM,CAACC,SAASC,YAAAA;AACd,UAAMC,QAAQC,SAASC,UAAUJ,OAAAA;AACjC,QAAIE,UAAUC,SAASC,UAAUH,OAAAA,GAAU;AACzC,aAAO;IACT;AAEA,WAAO,CAACD,QAAQK,UAAU,CAACJ,QAAQI,SAAS,IAAIC,sBAAsBJ,OAAOF,QAAQK,QAAQJ,QAAQI,MAAM;EAC7G;AACF,CAAA,CAAA,CAAA;",
|
|
6
|
+
"names": ["Effect", "Capability", "AppCapabilities", "Relation", "Capability", "makeModule", "succeed", "contributes", "AppCapabilities", "AnchorSort", "key", "Sheet", "typename", "sort", "anchorA", "anchorB", "sheet", "Relation", "getTarget", "anchor", "compareIndexPositions"]
|
|
7
|
+
}
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
mapFormulaRefsToIndices,
|
|
20
20
|
meta,
|
|
21
21
|
rangeFromIndex
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-KE3AKN5W.mjs";
|
|
23
23
|
|
|
24
24
|
// src/components/ComputeGraph/ComputeGraphContextProvider.tsx
|
|
25
25
|
import React, { createContext, useContext } from "react";
|
|
@@ -62,8 +62,8 @@ var RangeList = ({ sheet }) => {
|
|
|
62
62
|
};
|
|
63
63
|
const handleDeleteRange = useCallback((range) => {
|
|
64
64
|
const index = sheet.ranges.findIndex((sheetRange) => sheetRange === range);
|
|
65
|
-
Obj.change(sheet, (
|
|
66
|
-
|
|
65
|
+
Obj.change(sheet, (obj) => {
|
|
66
|
+
obj.ranges.splice(index, 1);
|
|
67
67
|
});
|
|
68
68
|
}, [
|
|
69
69
|
sheet
|
|
@@ -96,8 +96,9 @@ import { lazy } from "react";
|
|
|
96
96
|
|
|
97
97
|
// src/components/GridSheet/GridSheet.tsx
|
|
98
98
|
import React4, { useCallback as useCallback4, useMemo as useMemo2, useRef, useState as useState4 } from "react";
|
|
99
|
-
import { useOperationInvoker as useOperationInvoker2 } from "@dxos/app-framework/
|
|
99
|
+
import { useOperationInvoker as useOperationInvoker2 } from "@dxos/app-framework/ui";
|
|
100
100
|
import { rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute";
|
|
101
|
+
import { Obj as Obj5 } from "@dxos/echo";
|
|
101
102
|
import { defaultColSize, defaultRowSize } from "@dxos/lit-grid";
|
|
102
103
|
import { DropdownMenu, Icon, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
103
104
|
import { useAttention } from "@dxos/react-ui-attention";
|
|
@@ -106,8 +107,8 @@ import { Grid as Grid2, GridCellEditor, closestCell, editorKeys, parseCellIndex
|
|
|
106
107
|
// src/integrations/thread-ranges.ts
|
|
107
108
|
import * as Effect from "effect/Effect";
|
|
108
109
|
import { useCallback as useCallback2, useEffect, useMemo } from "react";
|
|
109
|
-
import {
|
|
110
|
-
import {
|
|
110
|
+
import { useOperationInvoker, useOperationResolver } from "@dxos/app-framework/ui";
|
|
111
|
+
import { LayoutOperation } from "@dxos/app-toolkit";
|
|
111
112
|
import { debounce } from "@dxos/async";
|
|
112
113
|
import { inRange } from "@dxos/compute";
|
|
113
114
|
import { Obj as Obj2, Relation } from "@dxos/echo";
|
|
@@ -138,7 +139,7 @@ var useUpdateFocusedCellOnThreadSelection = (grid) => {
|
|
|
138
139
|
const { model, setActiveRefs } = useSheetContext();
|
|
139
140
|
const sheetId = Obj2.getDXN(model.sheet).toString();
|
|
140
141
|
const scrollIntoViewHandler = useMemo(() => OperationResolver.make({
|
|
141
|
-
operation:
|
|
142
|
+
operation: LayoutOperation.ScrollIntoView,
|
|
142
143
|
position: "hoist",
|
|
143
144
|
filter: (input) => input.subject === sheetId && !!input.cursor,
|
|
144
145
|
handler: (input) => Effect.sync(() => {
|
|
@@ -307,8 +308,8 @@ var SheetModel = class extends Resource {
|
|
|
307
308
|
S: this,
|
|
308
309
|
C: (f, a) => f(...a)
|
|
309
310
|
});
|
|
310
|
-
Obj3.change(this._sheet, (
|
|
311
|
-
initialize(
|
|
311
|
+
Obj3.change(this._sheet, (obj) => {
|
|
312
|
+
initialize(obj);
|
|
312
313
|
});
|
|
313
314
|
this._graph.update.on((event) => {
|
|
314
315
|
if (event.type === "functionsUpdated") {
|
|
@@ -378,16 +379,16 @@ var SheetModel = class extends Resource {
|
|
|
378
379
|
}
|
|
379
380
|
insertRows(i, n = 1) {
|
|
380
381
|
let idx = [];
|
|
381
|
-
Obj3.change(this._sheet, (
|
|
382
|
-
idx = insertIndices(
|
|
382
|
+
Obj3.change(this._sheet, (obj) => {
|
|
383
|
+
idx = insertIndices(obj.rows, i, n, MAX_ROWS);
|
|
383
384
|
});
|
|
384
385
|
this.reset();
|
|
385
386
|
return idx;
|
|
386
387
|
}
|
|
387
388
|
insertColumns(i, n = 1) {
|
|
388
389
|
let idx = [];
|
|
389
|
-
Obj3.change(this._sheet, (
|
|
390
|
-
idx = insertIndices(
|
|
390
|
+
Obj3.change(this._sheet, (obj) => {
|
|
391
|
+
idx = insertIndices(obj.columns, i, n, MAX_COLS);
|
|
391
392
|
});
|
|
392
393
|
this.reset();
|
|
393
394
|
return idx;
|
|
@@ -400,9 +401,9 @@ var SheetModel = class extends Resource {
|
|
|
400
401
|
const values = this.getCellValues(range).flat();
|
|
401
402
|
const index = this._sheet.rows.indexOf(rowIndex);
|
|
402
403
|
this.clear(range);
|
|
403
|
-
Obj3.change(this._sheet, (
|
|
404
|
-
|
|
405
|
-
delete
|
|
404
|
+
Obj3.change(this._sheet, (obj) => {
|
|
405
|
+
obj.rows.splice(index, 1);
|
|
406
|
+
delete obj.rowMeta[rowIndex];
|
|
406
407
|
});
|
|
407
408
|
this.reset();
|
|
408
409
|
return {
|
|
@@ -421,9 +422,9 @@ var SheetModel = class extends Resource {
|
|
|
421
422
|
const values = this.getCellValues(range).flat();
|
|
422
423
|
const index = this._sheet.columns.indexOf(colIndex);
|
|
423
424
|
this.clear(range);
|
|
424
|
-
Obj3.change(this._sheet, (
|
|
425
|
-
|
|
426
|
-
delete
|
|
425
|
+
Obj3.change(this._sheet, (obj) => {
|
|
426
|
+
obj.columns.splice(index, 1);
|
|
427
|
+
delete obj.columnMeta[colIndex];
|
|
427
428
|
});
|
|
428
429
|
this.reset();
|
|
429
430
|
return {
|
|
@@ -435,33 +436,33 @@ var SheetModel = class extends Resource {
|
|
|
435
436
|
};
|
|
436
437
|
}
|
|
437
438
|
restoreRow({ index, axisIndex, axisMeta, values }) {
|
|
438
|
-
Obj3.change(this._sheet, (
|
|
439
|
-
|
|
439
|
+
Obj3.change(this._sheet, (obj) => {
|
|
440
|
+
obj.rows.splice(index, 0, axisIndex);
|
|
440
441
|
values.forEach((value, col) => {
|
|
441
442
|
if (value) {
|
|
442
|
-
|
|
443
|
+
obj.cells[`${obj.columns[col]}@${axisIndex}`] = {
|
|
443
444
|
value
|
|
444
445
|
};
|
|
445
446
|
}
|
|
446
447
|
});
|
|
447
448
|
if (axisMeta) {
|
|
448
|
-
|
|
449
|
+
obj.rowMeta[axisIndex] = axisMeta;
|
|
449
450
|
}
|
|
450
451
|
});
|
|
451
452
|
this.reset();
|
|
452
453
|
}
|
|
453
454
|
restoreColumn({ index, axisIndex, axisMeta, values }) {
|
|
454
|
-
Obj3.change(this._sheet, (
|
|
455
|
-
|
|
455
|
+
Obj3.change(this._sheet, (obj) => {
|
|
456
|
+
obj.columns.splice(index, 0, axisIndex);
|
|
456
457
|
values.forEach((value, row) => {
|
|
457
458
|
if (value) {
|
|
458
|
-
|
|
459
|
+
obj.cells[`${axisIndex}@${obj.rows[row]}`] = {
|
|
459
460
|
value
|
|
460
461
|
};
|
|
461
462
|
}
|
|
462
463
|
});
|
|
463
464
|
if (axisMeta) {
|
|
464
|
-
|
|
465
|
+
obj.columnMeta[axisIndex] = axisMeta;
|
|
465
466
|
}
|
|
466
467
|
});
|
|
467
468
|
this.reset();
|
|
@@ -476,7 +477,7 @@ var SheetModel = class extends Resource {
|
|
|
476
477
|
clear(range) {
|
|
477
478
|
invariant(this._node, void 0, {
|
|
478
479
|
F: __dxlog_file,
|
|
479
|
-
L:
|
|
480
|
+
L: 276,
|
|
480
481
|
S: this,
|
|
481
482
|
A: [
|
|
482
483
|
"this._node",
|
|
@@ -486,17 +487,17 @@ var SheetModel = class extends Resource {
|
|
|
486
487
|
const topLeft = getTopLeft(range);
|
|
487
488
|
const values = this._iterRange(range, () => null);
|
|
488
489
|
this._node.graph.hf.setCellContents(toSimpleCellAddress(this._node.sheetId, topLeft), values);
|
|
489
|
-
Obj3.change(this._sheet, (
|
|
490
|
+
Obj3.change(this._sheet, (obj) => {
|
|
490
491
|
this._iterRange(range, (cell) => {
|
|
491
492
|
const idx = addressToIndex(this._sheet, cell);
|
|
492
|
-
delete
|
|
493
|
+
delete obj.cells[idx];
|
|
493
494
|
});
|
|
494
495
|
});
|
|
495
496
|
}
|
|
496
497
|
cut(range) {
|
|
497
498
|
invariant(this._node, void 0, {
|
|
498
499
|
F: __dxlog_file,
|
|
499
|
-
L:
|
|
500
|
+
L: 289,
|
|
500
501
|
S: this,
|
|
501
502
|
A: [
|
|
502
503
|
"this._node",
|
|
@@ -504,17 +505,17 @@ var SheetModel = class extends Resource {
|
|
|
504
505
|
]
|
|
505
506
|
});
|
|
506
507
|
this._node.graph.hf.cut(toModelRange(this._node.sheetId, range));
|
|
507
|
-
Obj3.change(this._sheet, (
|
|
508
|
+
Obj3.change(this._sheet, (obj) => {
|
|
508
509
|
this._iterRange(range, (cell) => {
|
|
509
510
|
const idx = addressToIndex(this._sheet, cell);
|
|
510
|
-
delete
|
|
511
|
+
delete obj.cells[idx];
|
|
511
512
|
});
|
|
512
513
|
});
|
|
513
514
|
}
|
|
514
515
|
copy(range) {
|
|
515
516
|
invariant(this._node, void 0, {
|
|
516
517
|
F: __dxlog_file,
|
|
517
|
-
L:
|
|
518
|
+
L: 300,
|
|
518
519
|
S: this,
|
|
519
520
|
A: [
|
|
520
521
|
"this._node",
|
|
@@ -526,7 +527,7 @@ var SheetModel = class extends Resource {
|
|
|
526
527
|
paste(cell) {
|
|
527
528
|
invariant(this._node, void 0, {
|
|
528
529
|
F: __dxlog_file,
|
|
529
|
-
L:
|
|
530
|
+
L: 305,
|
|
530
531
|
S: this,
|
|
531
532
|
A: [
|
|
532
533
|
"this._node",
|
|
@@ -535,7 +536,7 @@ var SheetModel = class extends Resource {
|
|
|
535
536
|
});
|
|
536
537
|
if (!this._node.graph.hf.isClipboardEmpty()) {
|
|
537
538
|
const changes = this._node.graph.hf.paste(toSimpleCellAddress(this._node.sheetId, cell));
|
|
538
|
-
Obj3.change(this._sheet, (
|
|
539
|
+
Obj3.change(this._sheet, (obj) => {
|
|
539
540
|
for (const change of changes) {
|
|
540
541
|
if (change instanceof ExportedCellChange) {
|
|
541
542
|
const { address, newValue } = change;
|
|
@@ -543,7 +544,7 @@ var SheetModel = class extends Resource {
|
|
|
543
544
|
row: address.row,
|
|
544
545
|
col: address.col
|
|
545
546
|
});
|
|
546
|
-
|
|
547
|
+
obj.cells[idx] = {
|
|
547
548
|
value: newValue
|
|
548
549
|
};
|
|
549
550
|
}
|
|
@@ -555,7 +556,7 @@ var SheetModel = class extends Resource {
|
|
|
555
556
|
undo() {
|
|
556
557
|
invariant(this._node, void 0, {
|
|
557
558
|
F: __dxlog_file,
|
|
558
|
-
L:
|
|
559
|
+
L: 322,
|
|
559
560
|
S: this,
|
|
560
561
|
A: [
|
|
561
562
|
"this._node",
|
|
@@ -569,7 +570,7 @@ var SheetModel = class extends Resource {
|
|
|
569
570
|
redo() {
|
|
570
571
|
invariant(this._node, void 0, {
|
|
571
572
|
F: __dxlog_file,
|
|
572
|
-
L:
|
|
573
|
+
L: 330,
|
|
573
574
|
S: this,
|
|
574
575
|
A: [
|
|
575
576
|
"this._node",
|
|
@@ -613,7 +614,7 @@ var SheetModel = class extends Resource {
|
|
|
613
614
|
getValue(cell) {
|
|
614
615
|
invariant(this._node, void 0, {
|
|
615
616
|
F: __dxlog_file,
|
|
616
|
-
L:
|
|
617
|
+
L: 373,
|
|
617
618
|
S: this,
|
|
618
619
|
A: [
|
|
619
620
|
"this._node",
|
|
@@ -628,7 +629,7 @@ var SheetModel = class extends Resource {
|
|
|
628
629
|
error: value
|
|
629
630
|
}, {
|
|
630
631
|
F: __dxlog_file,
|
|
631
|
-
L:
|
|
632
|
+
L: 378,
|
|
632
633
|
S: this,
|
|
633
634
|
C: (f, a) => f(...a)
|
|
634
635
|
});
|
|
@@ -642,7 +643,7 @@ var SheetModel = class extends Resource {
|
|
|
642
643
|
getValueDescription(cell) {
|
|
643
644
|
invariant(this._node, void 0, {
|
|
644
645
|
F: __dxlog_file,
|
|
645
|
-
L:
|
|
646
|
+
L: 389,
|
|
646
647
|
S: this,
|
|
647
648
|
A: [
|
|
648
649
|
"this._node",
|
|
@@ -659,7 +660,7 @@ var SheetModel = class extends Resource {
|
|
|
659
660
|
setValue(cell, value) {
|
|
660
661
|
invariant(this._node, void 0, {
|
|
661
662
|
F: __dxlog_file,
|
|
662
|
-
L:
|
|
663
|
+
L: 399,
|
|
663
664
|
S: this,
|
|
664
665
|
A: [
|
|
665
666
|
"this._node",
|
|
@@ -671,14 +672,14 @@ var SheetModel = class extends Resource {
|
|
|
671
672
|
}
|
|
672
673
|
let refresh = false;
|
|
673
674
|
if (cell.row >= this._sheet.rows.length) {
|
|
674
|
-
Obj3.change(this._sheet, (
|
|
675
|
-
insertIndices(
|
|
675
|
+
Obj3.change(this._sheet, (obj) => {
|
|
676
|
+
insertIndices(obj.rows, cell.row, 1, MAX_ROWS);
|
|
676
677
|
});
|
|
677
678
|
refresh = true;
|
|
678
679
|
}
|
|
679
680
|
if (cell.col >= this._sheet.columns.length) {
|
|
680
|
-
Obj3.change(this._sheet, (
|
|
681
|
-
insertIndices(
|
|
681
|
+
Obj3.change(this._sheet, (obj) => {
|
|
682
|
+
insertIndices(obj.columns, cell.col, 1, MAX_COLS);
|
|
682
683
|
});
|
|
683
684
|
refresh = true;
|
|
684
685
|
}
|
|
@@ -696,15 +697,15 @@ var SheetModel = class extends Resource {
|
|
|
696
697
|
]);
|
|
697
698
|
const idx = addressToIndex(this._sheet, cell);
|
|
698
699
|
if (value === void 0 || value === null) {
|
|
699
|
-
Obj3.change(this._sheet, (
|
|
700
|
-
delete
|
|
700
|
+
Obj3.change(this._sheet, (obj) => {
|
|
701
|
+
delete obj.cells[idx];
|
|
701
702
|
});
|
|
702
703
|
} else {
|
|
703
704
|
if (isFormula(value)) {
|
|
704
705
|
value = this._graph.mapFunctionBindingToId(mapFormulaRefsToIndices(this._sheet, value));
|
|
705
706
|
}
|
|
706
|
-
Obj3.change(this._sheet, (
|
|
707
|
-
|
|
707
|
+
Obj3.change(this._sheet, (obj) => {
|
|
708
|
+
obj.cells[idx] = {
|
|
708
709
|
value
|
|
709
710
|
};
|
|
710
711
|
});
|
|
@@ -761,7 +762,7 @@ var SheetModel = class extends Resource {
|
|
|
761
762
|
mapFormulaIndicesToRefs(formula) {
|
|
762
763
|
invariant(isFormula(formula), void 0, {
|
|
763
764
|
F: __dxlog_file,
|
|
764
|
-
L:
|
|
765
|
+
L: 492,
|
|
765
766
|
S: this,
|
|
766
767
|
A: [
|
|
767
768
|
"isFormula(formula)",
|
|
@@ -787,7 +788,7 @@ var SheetModel = class extends Resource {
|
|
|
787
788
|
toDateTime(num) {
|
|
788
789
|
invariant(this._node, void 0, {
|
|
789
790
|
F: __dxlog_file,
|
|
790
|
-
L:
|
|
791
|
+
L: 513,
|
|
791
792
|
S: this,
|
|
792
793
|
A: [
|
|
793
794
|
"this._node",
|
|
@@ -799,7 +800,7 @@ var SheetModel = class extends Resource {
|
|
|
799
800
|
toDate(num) {
|
|
800
801
|
invariant(this._node, void 0, {
|
|
801
802
|
F: __dxlog_file,
|
|
802
|
-
L:
|
|
803
|
+
L: 518,
|
|
803
804
|
S: this,
|
|
804
805
|
A: [
|
|
805
806
|
"this._node",
|
|
@@ -811,7 +812,7 @@ var SheetModel = class extends Resource {
|
|
|
811
812
|
toTime(num) {
|
|
812
813
|
invariant(this._node, void 0, {
|
|
813
814
|
F: __dxlog_file,
|
|
814
|
-
L:
|
|
815
|
+
L: 523,
|
|
815
816
|
S: this,
|
|
816
817
|
A: [
|
|
817
818
|
"this._node",
|
|
@@ -1200,15 +1201,17 @@ var GridSheet = () => {
|
|
|
1200
1201
|
editing
|
|
1201
1202
|
]);
|
|
1202
1203
|
const handleAxisResize = useCallback4(({ axis, size, index: numericIndex }) => {
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1204
|
+
Obj5.change(model.sheet, (sheet) => {
|
|
1205
|
+
if (axis === "row") {
|
|
1206
|
+
const rowId = sheet.rows[parseInt(numericIndex)];
|
|
1207
|
+
sheet.rowMeta[rowId] ??= {};
|
|
1208
|
+
sheet.rowMeta[rowId].size = size;
|
|
1209
|
+
} else {
|
|
1210
|
+
const columnId = sheet.columns[parseInt(numericIndex)];
|
|
1211
|
+
sheet.columnMeta[columnId] ??= {};
|
|
1212
|
+
sheet.columnMeta[columnId].size = size;
|
|
1213
|
+
}
|
|
1214
|
+
});
|
|
1212
1215
|
}, [
|
|
1213
1216
|
model
|
|
1214
1217
|
]);
|
|
@@ -1456,7 +1459,7 @@ var GridSheet = () => {
|
|
|
1456
1459
|
};
|
|
1457
1460
|
|
|
1458
1461
|
// src/components/index.ts
|
|
1459
|
-
var SheetContainer = lazy(() => import("./SheetContainer-
|
|
1462
|
+
var SheetContainer = lazy(() => import("./SheetContainer-6DNFC4TY.mjs"));
|
|
1460
1463
|
|
|
1461
1464
|
export {
|
|
1462
1465
|
ComputeGraphContextProvider,
|
|
@@ -1467,4 +1470,4 @@ export {
|
|
|
1467
1470
|
RangeList,
|
|
1468
1471
|
SheetContainer
|
|
1469
1472
|
};
|
|
1470
|
-
//# sourceMappingURL=chunk-
|
|
1473
|
+
//# sourceMappingURL=chunk-EDWHV64N.mjs.map
|