@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.
Files changed (98) hide show
  1. package/dist/lib/browser/{SheetContainer-ESCXPI7Y.mjs → SheetContainer-6DNFC4TY.mjs} +16 -16
  2. package/dist/lib/browser/SheetContainer-6DNFC4TY.mjs.map +7 -0
  3. package/dist/lib/browser/{anchor-sort-JBRMW6OY.mjs → anchor-sort-AMMLA66W.mjs} +5 -4
  4. package/dist/lib/browser/anchor-sort-AMMLA66W.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-W6N44ONZ.mjs → chunk-EDWHV64N.mjs} +69 -66
  6. package/dist/lib/browser/chunk-EDWHV64N.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-2SAGT3BB.mjs → chunk-KE3AKN5W.mjs} +17 -17
  8. package/dist/lib/browser/chunk-KE3AKN5W.mjs.map +7 -0
  9. package/dist/lib/browser/{compute-graph-registry-DL2PX7TF.mjs → compute-graph-registry-RC5L7RE4.mjs} +2 -2
  10. package/dist/lib/browser/index.mjs +20 -19
  11. package/dist/lib/browser/index.mjs.map +3 -3
  12. package/dist/lib/browser/{markdown-BC4KBDUO.mjs → markdown-D2T2DOVX.mjs} +2 -2
  13. package/dist/lib/browser/meta.json +1 -1
  14. package/dist/lib/browser/{operation-resolver-FJ4UWZUM.mjs → operation-resolver-P2RX75DA.mjs} +5 -5
  15. package/dist/lib/browser/operation-resolver-P2RX75DA.mjs.map +7 -0
  16. package/dist/lib/browser/{react-surface-5BXM6TJ3.mjs → react-surface-45CRAB5G.mjs} +8 -8
  17. package/dist/lib/browser/react-surface-45CRAB5G.mjs.map +7 -0
  18. package/dist/lib/browser/types/index.mjs +1 -1
  19. package/dist/lib/node-esm/{SheetContainer-YVIDJKP4.mjs → SheetContainer-7H5R7M54.mjs} +16 -16
  20. package/dist/lib/node-esm/SheetContainer-7H5R7M54.mjs.map +7 -0
  21. package/dist/lib/node-esm/{anchor-sort-C3XFPI6S.mjs → anchor-sort-VHMBRX2E.mjs} +5 -4
  22. package/dist/lib/node-esm/anchor-sort-VHMBRX2E.mjs.map +7 -0
  23. package/dist/lib/node-esm/{chunk-IMWGSIDG.mjs → chunk-6J5L47IB.mjs} +17 -17
  24. package/dist/lib/node-esm/chunk-6J5L47IB.mjs.map +7 -0
  25. package/dist/lib/node-esm/{chunk-S7RYX7DG.mjs → chunk-AYSEWH7N.mjs} +69 -66
  26. package/dist/lib/node-esm/chunk-AYSEWH7N.mjs.map +7 -0
  27. package/dist/lib/node-esm/{compute-graph-registry-VXH55GDI.mjs → compute-graph-registry-ZGXVLVGD.mjs} +2 -2
  28. package/dist/lib/node-esm/index.mjs +20 -19
  29. package/dist/lib/node-esm/index.mjs.map +3 -3
  30. package/dist/lib/node-esm/{markdown-6DGZCJRM.mjs → markdown-PTV72DLO.mjs} +2 -2
  31. package/dist/lib/node-esm/meta.json +1 -1
  32. package/dist/lib/node-esm/{operation-resolver-OGXEUWHA.mjs → operation-resolver-WPIWQ5IO.mjs} +5 -5
  33. package/dist/lib/node-esm/operation-resolver-WPIWQ5IO.mjs.map +7 -0
  34. package/dist/lib/node-esm/{react-surface-RLHC6B77.mjs → react-surface-ITV2L6HK.mjs} +8 -8
  35. package/dist/lib/node-esm/react-surface-ITV2L6HK.mjs.map +7 -0
  36. package/dist/lib/node-esm/types/index.mjs +1 -1
  37. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  38. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +3 -2
  39. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +1 -1
  40. package/dist/types/src/capabilities/anchor-sort/index.d.ts +1 -1
  41. package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +1 -1
  42. package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
  43. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
  44. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
  45. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  46. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  47. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  48. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  49. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  50. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  51. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +1 -1
  52. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  53. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  54. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  55. package/dist/types/src/testing/testing.d.ts +9 -9
  56. package/dist/types/src/types/Sheet.d.ts +18 -18
  57. package/dist/types/src/types/Sheet.d.ts.map +1 -1
  58. package/dist/types/src/types/types.d.ts +1 -1
  59. package/dist/types/src/types/util.d.ts +2 -1
  60. package/dist/types/src/types/util.d.ts.map +1 -1
  61. package/dist/types/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +59 -58
  63. package/src/SheetPlugin.tsx +12 -11
  64. package/src/capabilities/anchor-sort/anchor-sort.ts +3 -2
  65. package/src/capabilities/operation-resolver/operation-resolver.ts +3 -3
  66. package/src/capabilities/react-surface/react-surface.tsx +5 -5
  67. package/src/components/ComputeGraph/compute-graph.stories.tsx +1 -1
  68. package/src/components/GridSheet/GridSheet.stories.tsx +1 -1
  69. package/src/components/GridSheet/GridSheet.tsx +13 -10
  70. package/src/components/GridSheet/SheetCellEditor.stories.tsx +4 -4
  71. package/src/components/RangeList/RangeList.tsx +2 -2
  72. package/src/components/SheetContainer/SheetContainer.stories.tsx +3 -3
  73. package/src/components/SheetContainer/SheetContainer.tsx +3 -3
  74. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +1 -1
  75. package/src/components/SheetToolbar/SheetToolbar.tsx +1 -1
  76. package/src/components/SheetToolbar/align.ts +6 -6
  77. package/src/components/SheetToolbar/style.ts +4 -4
  78. package/src/extensions/compute.stories.tsx +1 -1
  79. package/src/integrations/thread-ranges.ts +3 -3
  80. package/src/model/sheet-model.ts +36 -34
  81. package/src/types/Sheet.ts +11 -20
  82. package/src/types/util.ts +2 -1
  83. package/dist/lib/browser/SheetContainer-ESCXPI7Y.mjs.map +0 -7
  84. package/dist/lib/browser/anchor-sort-JBRMW6OY.mjs.map +0 -7
  85. package/dist/lib/browser/chunk-2SAGT3BB.mjs.map +0 -7
  86. package/dist/lib/browser/chunk-W6N44ONZ.mjs.map +0 -7
  87. package/dist/lib/browser/operation-resolver-FJ4UWZUM.mjs.map +0 -7
  88. package/dist/lib/browser/react-surface-5BXM6TJ3.mjs.map +0 -7
  89. package/dist/lib/node-esm/SheetContainer-YVIDJKP4.mjs.map +0 -7
  90. package/dist/lib/node-esm/anchor-sort-C3XFPI6S.mjs.map +0 -7
  91. package/dist/lib/node-esm/chunk-IMWGSIDG.mjs.map +0 -7
  92. package/dist/lib/node-esm/chunk-S7RYX7DG.mjs.map +0 -7
  93. package/dist/lib/node-esm/operation-resolver-OGXEUWHA.mjs.map +0 -7
  94. package/dist/lib/node-esm/react-surface-RLHC6B77.mjs.map +0 -7
  95. /package/dist/lib/browser/{compute-graph-registry-DL2PX7TF.mjs.map → compute-graph-registry-RC5L7RE4.mjs.map} +0 -0
  96. /package/dist/lib/browser/{markdown-BC4KBDUO.mjs.map → markdown-D2T2DOVX.mjs.map} +0 -0
  97. /package/dist/lib/node-esm/{compute-graph-registry-VXH55GDI.mjs.map → compute-graph-registry-ZGXVLVGD.mjs.map} +0 -0
  98. /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-W6N44ONZ.mjs";
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-2SAGT3BB.mjs";
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-mosaic";
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-framework/react";
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, (s) => {
116
- s.ranges?.push(nextRangeEntity);
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, (s) => {
124
- s.ranges?.splice(index, 1);
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, (s) => {
132
- s.ranges?.splice(index, 1, nextRangeEntity);
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, (s) => {
235
- s.ranges?.splice(index, 1);
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, (s) => {
244
- s.ranges?.push(nextRangeEntity);
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(Layout.Flex, {
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-ESCXPI7Y.mjs.map
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-2SAGT3BB.mjs";
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, Common } from "@dxos/app-framework";
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(Common.Capability.AnchorSort, {
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-JBRMW6OY.mjs.map
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-2SAGT3BB.mjs";
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, (s) => {
66
- s.ranges.splice(index, 1);
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/react";
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 { Common } from "@dxos/app-framework";
110
- import { useOperationInvoker, useOperationResolver } from "@dxos/app-framework/react";
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: Common.LayoutOperation.ScrollIntoView,
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, (s) => {
311
- initialize(s);
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, (s) => {
382
- idx = insertIndices(s.rows, i, n, MAX_ROWS);
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, (s) => {
390
- idx = insertIndices(s.columns, i, n, MAX_COLS);
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, (s) => {
404
- s.rows.splice(index, 1);
405
- delete s.rowMeta[rowIndex];
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, (s) => {
425
- s.columns.splice(index, 1);
426
- delete s.columnMeta[colIndex];
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, (s) => {
439
- s.rows.splice(index, 0, axisIndex);
439
+ Obj3.change(this._sheet, (obj) => {
440
+ obj.rows.splice(index, 0, axisIndex);
440
441
  values.forEach((value, col) => {
441
442
  if (value) {
442
- s.cells[`${s.columns[col]}@${axisIndex}`] = {
443
+ obj.cells[`${obj.columns[col]}@${axisIndex}`] = {
443
444
  value
444
445
  };
445
446
  }
446
447
  });
447
448
  if (axisMeta) {
448
- s.rowMeta[axisIndex] = axisMeta;
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, (s) => {
455
- s.columns.splice(index, 0, axisIndex);
455
+ Obj3.change(this._sheet, (obj) => {
456
+ obj.columns.splice(index, 0, axisIndex);
456
457
  values.forEach((value, row) => {
457
458
  if (value) {
458
- s.cells[`${axisIndex}@${s.rows[row]}`] = {
459
+ obj.cells[`${axisIndex}@${obj.rows[row]}`] = {
459
460
  value
460
461
  };
461
462
  }
462
463
  });
463
464
  if (axisMeta) {
464
- s.columnMeta[axisIndex] = axisMeta;
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: 274,
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, (s) => {
490
+ Obj3.change(this._sheet, (obj) => {
490
491
  this._iterRange(range, (cell) => {
491
492
  const idx = addressToIndex(this._sheet, cell);
492
- delete s.cells[idx];
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: 287,
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, (s) => {
508
+ Obj3.change(this._sheet, (obj) => {
508
509
  this._iterRange(range, (cell) => {
509
510
  const idx = addressToIndex(this._sheet, cell);
510
- delete s.cells[idx];
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: 298,
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: 303,
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, (s) => {
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
- s.cells[idx] = {
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: 320,
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: 328,
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: 371,
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: 376,
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: 387,
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: 397,
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, (s) => {
675
- insertIndices(s.rows, cell.row, 1, MAX_ROWS);
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, (s) => {
681
- insertIndices(s.columns, cell.col, 1, MAX_COLS);
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, (s) => {
700
- delete s.cells[idx];
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, (s) => {
707
- s.cells[idx] = {
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: 490,
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: 511,
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: 516,
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: 521,
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
- if (axis === "row") {
1204
- const rowId = model.sheet.rows[parseInt(numericIndex)];
1205
- model.sheet.rowMeta[rowId] ??= {};
1206
- model.sheet.rowMeta[rowId].size = size;
1207
- } else {
1208
- const columnId = model.sheet.columns[parseInt(numericIndex)];
1209
- model.sheet.columnMeta[columnId] ??= {};
1210
- model.sheet.columnMeta[columnId].size = size;
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-ESCXPI7Y.mjs"));
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-W6N44ONZ.mjs.map
1473
+ //# sourceMappingURL=chunk-EDWHV64N.mjs.map