@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
@@ -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
+ }
@@ -2,13 +2,14 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  Sheet_exports,
4
4
  compareIndexPositions
5
- } from "./chunk-IMWGSIDG.mjs";
5
+ } from "./chunk-6J5L47IB.mjs";
6
6
 
7
7
  // src/capabilities/anchor-sort/anchor-sort.ts
8
8
  import * as Effect from "effect/Effect";
9
- import { Capability, Common } from "@dxos/app-framework";
9
+ import { Capability } from "@dxos/app-framework";
10
+ import { AppCapabilities } from "@dxos/app-toolkit";
10
11
  import { Relation } from "@dxos/echo";
11
- var anchor_sort_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(Common.Capability.AnchorSort, {
12
+ var anchor_sort_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(AppCapabilities.AnchorSort, {
12
13
  key: Sheet_exports.Sheet.typename,
13
14
  sort: (anchorA, anchorB) => {
14
15
  const sheet = Relation.getTarget(anchorA);
@@ -21,4 +22,4 @@ var anchor_sort_default = Capability.makeModule(() => Effect.succeed(Capability.
21
22
  export {
22
23
  anchor_sort_default as default
23
24
  };
24
- //# sourceMappingURL=anchor-sort-C3XFPI6S.mjs.map
25
+ //# sourceMappingURL=anchor-sort-VHMBRX2E.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
+ }
@@ -123,7 +123,7 @@ var compareIndexPositions = (sheet, indexA, indexB) => {
123
123
  var mapFormulaRefsToIndices = (sheet, formula) => {
124
124
  invariant(isFormula(formula), void 0, {
125
125
  F: __dxlog_file,
126
- L: 124,
126
+ L: 125,
127
127
  S: void 0,
128
128
  A: [
129
129
  "isFormula(formula)",
@@ -137,7 +137,7 @@ var mapFormulaRefsToIndices = (sheet, formula) => {
137
137
  var mapFormulaIndicesToRefs = (sheet, formula) => {
138
138
  invariant(isFormula(formula), void 0, {
139
139
  F: __dxlog_file,
140
- L: 134,
140
+ L: 135,
141
141
  S: void 0,
142
142
  A: [
143
143
  "isFormula(formula)",
@@ -169,24 +169,24 @@ var Sheet = Schema.Struct({
169
169
  // Sparse map of cells referenced by index.
170
170
  cells: Schema.Record({
171
171
  key: Schema.String,
172
- value: Schema.mutable(CellValue)
173
- }).pipe(Schema.mutable, FormInputAnnotation.set(false)),
172
+ value: CellValue
173
+ }).pipe(FormInputAnnotation.set(false)),
174
174
  // Ordered row indices.
175
- rows: Schema.Array(Schema.String).pipe(Schema.mutable, FormInputAnnotation.set(false)),
175
+ rows: Schema.Array(Schema.String).pipe(FormInputAnnotation.set(false)),
176
176
  // Ordered column indices.
177
- columns: Schema.Array(Schema.String).pipe(Schema.mutable, FormInputAnnotation.set(false)),
177
+ columns: Schema.Array(Schema.String).pipe(FormInputAnnotation.set(false)),
178
178
  // Row metadata referenced by index.
179
179
  rowMeta: Schema.Record({
180
180
  key: Schema.String,
181
- value: Schema.mutable(RowColumnMeta)
182
- }).pipe(Schema.mutable, FormInputAnnotation.set(false)),
181
+ value: RowColumnMeta
182
+ }).pipe(FormInputAnnotation.set(false)),
183
183
  // Column metadata referenced by index.
184
184
  columnMeta: Schema.Record({
185
185
  key: Schema.String,
186
- value: Schema.mutable(RowColumnMeta)
187
- }).pipe(Schema.mutable, FormInputAnnotation.set(false)),
186
+ value: RowColumnMeta
187
+ }).pipe(FormInputAnnotation.set(false)),
188
188
  // Cell formatting referenced by indexed range.
189
- ranges: Schema.Array(Range).pipe(Schema.mutable, FormInputAnnotation.set(false))
189
+ ranges: Schema.Array(Range).pipe(FormInputAnnotation.set(false))
190
190
  }).pipe(Type.object({
191
191
  typename: "dxos.org/type/Sheet",
192
192
  version: "0.1.0"
@@ -201,15 +201,15 @@ var make = ({ name, cells = {}, ...size } = {}) => {
201
201
  columnMeta: {},
202
202
  ranges: []
203
203
  });
204
- Obj.change(sheet, () => {
205
- initialize(sheet, size);
204
+ Obj.change(sheet, (s) => {
205
+ initialize(s, size);
206
206
  if (cells) {
207
207
  Object.entries(cells).forEach(([key, { value }]) => {
208
- const idx = addressToIndex(sheet, addressFromA1Notation2(key));
208
+ const idx = addressToIndex(s, addressFromA1Notation2(key));
209
209
  if (isFormula2(value)) {
210
- value = mapFormulaRefsToIndices(sheet, value);
210
+ value = mapFormulaRefsToIndices(s, value);
211
211
  }
212
- sheet.cells[idx] = {
212
+ s.cells[idx] = {
213
213
  value
214
214
  };
215
215
  });
@@ -395,4 +395,4 @@ export {
395
395
  SheetAction,
396
396
  SheetOperation
397
397
  };
398
- //# sourceMappingURL=chunk-IMWGSIDG.mjs.map
398
+ //# sourceMappingURL=chunk-6J5L47IB.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/capabilities.ts", "../../../src/meta.ts", "../../../src/types/Sheet.ts", "../../../src/types/util.ts", "../../../src/types/sheet-range-types.ts", "../../../src/types/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\nimport { type ComputeGraphRegistry } from '@dxos/compute';\n\nimport { meta } from '../meta';\n\nexport namespace SheetCapabilities {\n export const ComputeGraphRegistry = Capability.make<ComputeGraphRegistry>(\n `${meta.id}/capability/compute-graph-registry`,\n );\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'dxos.org/plugin/sheet',\n name: 'Sheet',\n description: trim`\n Full-featured spreadsheet application with over 400 built-in formulas for calculations and data analysis.\n Create custom JavaScript functions and integrate with AI agents for advanced automation.\n `,\n icon: 'ph--grid-nine--regular',\n iconHue: 'indigo',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet',\n screenshots: ['https://dxos.network/plugin-details-sheet-dark.png'],\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { addressFromA1Notation, isFormula } from '@dxos/compute';\nimport { Obj, Type } from '@dxos/echo';\nimport { FormInputAnnotation } from '@dxos/echo/internal';\n\nimport { addressToIndex, initialize, mapFormulaRefsToIndices } from './util';\n\nexport type SheetSize = {\n rows: number;\n columns: number;\n};\n\nexport const CellValue = Schema.Struct({\n // TODO(burdon): How to store dates (datetime, date, time), percentages, etc.\n // Consider import/export; natural access for other plugins. Special handling for currency (precision).\n // TODO(burdon): Automerge (long string) or short string or number.\n value: Schema.Any,\n});\n\nexport type CellValue = Schema.Schema.Type<typeof CellValue>;\n\n// TODO(burdon): IMPORTANT: Reconcile with Field definition.\nexport const Range = Schema.Struct({\n range: Schema.String,\n key: Schema.String,\n value: Schema.String,\n});\n\nexport type Range = Schema.Schema.Type<typeof Range>;\n\n// TODO(burdon): Visibility, locked, frozen, etc.\nexport const RowColumnMeta = Schema.Struct({\n size: Schema.optional(Schema.Number),\n});\n\n// TODO(burdon): Reconcile col/column (across packages).\n// TODO(burdon): Index to all updates when rows/columns are inserted/deleted.\nexport const Sheet = Schema.Struct({\n name: Schema.optional(Schema.String),\n\n // Sparse map of cells referenced by index.\n cells: Schema.Record({ key: Schema.String, value: CellValue }).pipe(FormInputAnnotation.set(false)),\n\n // Ordered row indices.\n rows: Schema.Array(Schema.String).pipe(FormInputAnnotation.set(false)),\n\n // Ordered column indices.\n columns: Schema.Array(Schema.String).pipe(FormInputAnnotation.set(false)),\n\n // Row metadata referenced by index.\n rowMeta: Schema.Record({ key: Schema.String, value: RowColumnMeta }).pipe(FormInputAnnotation.set(false)),\n\n // Column metadata referenced by index.\n columnMeta: Schema.Record({ key: Schema.String, value: RowColumnMeta }).pipe(FormInputAnnotation.set(false)),\n\n // Cell formatting referenced by indexed range.\n ranges: Schema.Array(Range).pipe(FormInputAnnotation.set(false)),\n}).pipe(\n Type.object({\n typename: 'dxos.org/type/Sheet',\n version: '0.1.0',\n }),\n);\n\nexport interface Sheet extends Schema.Schema.Type<typeof Sheet> {}\n\nexport type SheetProps = {\n name?: string;\n cells?: Record<string, CellValue>;\n} & Partial<SheetSize>;\n\nexport const make = ({ name, cells = {}, ...size }: SheetProps = {}) => {\n const sheet = Obj.make(Sheet, { name, cells: {}, rows: [], columns: [], rowMeta: {}, columnMeta: {}, ranges: [] });\n\n // Initialize and set cells within Obj.change to satisfy change context requirements.\n Obj.change(sheet, (s) => {\n initialize(s, size);\n\n if (cells) {\n Object.entries(cells).forEach(([key, { value }]) => {\n const idx = addressToIndex(s, addressFromA1Notation(key));\n if (isFormula(value)) {\n value = mapFormulaRefsToIndices(s, value);\n }\n\n s.cells[idx] = { value };\n });\n }\n });\n\n return sheet;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n type CellAddress,\n type CellRange,\n type CompleteCellRange,\n addressFromA1Notation,\n addressToA1Notation,\n isFormula,\n} from '@dxos/compute';\nimport { randomBytes } from '@dxos/crypto';\nimport { type Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\n\nimport { type Sheet } from '../types';\n\nexport const MAX_ROWS = 500;\nexport const MAX_COLS = 676; // 26^2;\n\nexport const DEFAULT_ROWS = 50;\nexport const DEFAULT_COLS = 26;\n\n// TODO(burdon): Factor out from dxos/protocols to new common package.\nexport class ApiError extends Error {}\n\nexport class ReadonlyException extends ApiError {}\n\nexport class RangeException extends ApiError {\n constructor(n: number) {\n super();\n }\n}\n\n/**\n * With a string length of 8, the chance of a collision is 0.02% for a sheet with 10,000 strings.\n */\nexport const createIndex = (length = 8): string => {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charactersLength = characters.length;\n const randomBuffer = randomBytes(length);\n return Array.from(randomBuffer, (byte) => characters[byte % charactersLength]).join('');\n};\n\nexport const createIndices = (length: number): string[] => Array.from({ length }).map(() => createIndex());\n\nexport const insertIndices = (indices: string[], i: number, n: number, max: number) => {\n if (i + n > max) {\n throw new RangeException(i + n);\n }\n\n const idx = createIndices(n);\n indices.splice(i, 0, ...idx);\n return idx;\n};\n\nexport const initialize = (\n sheet: Obj.Mutable<Sheet.Sheet>,\n { rows = DEFAULT_ROWS, columns = DEFAULT_COLS }: Partial<Sheet.SheetSize> = {},\n) => {\n if (!sheet.rows.length) {\n insertIndices(sheet.rows, 0, rows, MAX_ROWS);\n }\n if (!sheet.columns.length) {\n insertIndices(sheet.columns, 0, columns, MAX_COLS);\n }\n};\n\n/**\n * E.g., \"A1\" => \"CA2@CB3\".\n */\nexport const addressToIndex = (sheet: Sheet.Sheet, cell: CellAddress): string => {\n return `${sheet.columns[cell.col]}@${sheet.rows[cell.row]}`;\n};\n\n/**\n * E.g., \"CA2@CB3\" => \"A1\".\n */\nexport const addressFromIndex = (sheet: Sheet.Sheet, idx: string): CellAddress => {\n const [column, row] = idx.split('@');\n return {\n col: sheet.columns.indexOf(column),\n row: sheet.rows.indexOf(row),\n };\n};\n\n/**\n * E.g., \"A1:B2\" => \"CA2@CB3:CC4@CD5\".\n */\nexport const rangeToIndex = (sheet: Sheet.Sheet, range: CellRange): string => {\n return [range.from, range.to ?? range.from].map((cell) => addressToIndex(sheet, cell)).join(':');\n};\n\n/**\n * E.g., \"CA2@CB3:CC4@CD5\" => \"A1:B2\".\n */\nexport const rangeFromIndex = (sheet: Sheet.Sheet, idx: string): CompleteCellRange => {\n const [from, to] = idx.split(':').map((index) => addressFromIndex(sheet, index));\n return { from, to };\n};\n\n/**\n * Compares the positions of two cell indexes in a sheet.\n * Sorts primarily by row, then by column if rows are equal.\n */\nexport const compareIndexPositions = (sheet: Sheet.Sheet, indexA: string, indexB: string): number => {\n const { row: rowA, col: columnA } = addressFromIndex(sheet, indexA);\n const { row: rowB, col: columnB } = addressFromIndex(sheet, indexB);\n\n // Sort by row first, then by column.\n if (rowA !== rowB) {\n return rowA - rowB;\n } else {\n return columnA - columnB;\n }\n};\n\n// TODO(burdon): Tests.\n\n/**\n * Map from A1 notation to indices.\n */\nexport const mapFormulaRefsToIndices = (sheet: Sheet.Sheet, formula: string): string => {\n invariant(isFormula(formula));\n return formula.replace(/([a-zA-Z]+)([0-9]+)/g, (match) => {\n return addressToIndex(sheet, addressFromA1Notation(match));\n });\n};\n\n/**\n * Map from indices to A1 notation.\n */\nexport const mapFormulaIndicesToRefs = (sheet: Sheet.Sheet, formula: string): string => {\n invariant(isFormula(formula));\n return formula.replace(/([a-zA-Z0-9]+)@([a-zA-Z0-9]+)/g, (idx) => {\n return addressToA1Notation(addressFromIndex(sheet, idx));\n });\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type ClassNameValue } from '@dxos/react-ui';\n\nimport { type Sheet } from '../types';\n\nexport const alignKey = 'alignment';\nexport type AlignKey = typeof alignKey;\nexport type AlignValue = 'start' | 'center' | 'end';\n\nexport const commentKey = 'comment';\nexport type CommentKey = typeof commentKey;\nexport type CommentValue = string;\n\nexport const styleKey = 'style';\nexport type StyleKey = typeof styleKey;\nexport type StyleValue = 'highlight' | 'softwrap';\n\n// TODO(burdon): Reconcile with plugin-table.\nexport const cellClassNameForRange = ({ key, value }: Sheet.Sheet['ranges'][number]): ClassNameValue => {\n switch (key) {\n case alignKey:\n switch (value) {\n case 'start':\n return 'text-start';\n case 'center':\n return 'text-center';\n case 'end':\n return 'text-end';\n default:\n return undefined;\n }\n\n case commentKey:\n return 'bg-gridComment';\n\n case styleKey:\n switch (value) {\n case 'highlight':\n return '!bg-gridHighlight';\n case 'softwrap':\n return '!whitespace-normal';\n default:\n return undefined;\n }\n\n default:\n return undefined;\n }\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/operation';\nimport { SpaceSchema } from '@dxos/react-client/echo';\nimport { Collection } from '@dxos/schema';\n\nimport { meta } from '../meta';\n\nimport * as Sheet from './Sheet';\n\n// TODO(wittjosiah): Factor out. This is `DxGridAxis` from `@dxos/react-ui-grid`.\nconst ActionAxis = Schema.Union(Schema.Literal('row'), Schema.Literal('col'));\n\nexport namespace SheetAction {\n export const RestoreAxis = Schema.Struct({\n axis: ActionAxis,\n axisIndex: Schema.String,\n index: Schema.Number,\n axisMeta: Sheet.RowColumnMeta,\n values: Schema.Array(Schema.Any),\n });\n\n export type RestoreAxis = Schema.Schema.Type<typeof RestoreAxis>;\n}\n\nconst SHEET_OPERATION = `${meta.id}/operation`;\n\n// TODO(wittjosiah): Factor out. This is `DxGridAxis` from `@dxos/react-ui-grid`.\nconst Axis = Schema.Union(Schema.Literal('row'), Schema.Literal('col'));\n\nexport namespace SheetOperation {\n export const OnCreateSpace = Operation.make({\n meta: { key: `${SHEET_OPERATION}/on-create-space`, name: 'On Create Space' },\n services: [Capability.Service],\n schema: {\n input: Schema.Struct({\n space: SpaceSchema,\n rootCollection: Collection.Collection,\n isDefault: Schema.optional(Schema.Boolean),\n }),\n output: Schema.Void,\n },\n });\n\n export const InsertAxis = Operation.make({\n meta: { key: `${SHEET_OPERATION}/axis-insert`, name: 'Insert Axis' },\n schema: {\n input: Schema.Struct({\n model: Schema.Any,\n axis: Axis,\n index: Schema.Number,\n count: Schema.optional(Schema.Number),\n }),\n output: Schema.Void,\n },\n });\n\n export const DropAxisOutput = Schema.Struct({\n axis: Axis.annotations({ description: 'The axis type (row or col).' }),\n axisIndex: Schema.String.annotations({ description: 'The dropped axis index.' }),\n index: Schema.Number.annotations({ description: 'The position the axis was at.' }),\n axisMeta: Schema.Any.annotations({ description: 'The row/column metadata.' }),\n values: Schema.Array(Schema.Any).annotations({ description: 'The cell values that were dropped.' }),\n });\n\n export type DropAxisOutput = Schema.Schema.Type<typeof DropAxisOutput>;\n\n export const DropAxis = Operation.make({\n meta: { key: `${SHEET_OPERATION}/axis-drop`, name: 'Drop Axis' },\n schema: {\n input: Schema.Struct({\n model: Schema.Any,\n axis: Axis,\n axisIndex: Schema.String,\n }),\n output: DropAxisOutput,\n },\n });\n\n /**\n * Restore a dropped axis (inverse of DropAxis).\n */\n export const RestoreAxis = Operation.make({\n meta: { key: `${SHEET_OPERATION}/restore-axis`, name: 'Restore Axis' },\n schema: {\n input: Schema.Struct({\n model: Schema.Any.annotations({ description: 'The sheet model.' }),\n axis: Axis.annotations({ description: 'The axis type (row or col).' }),\n axisIndex: Schema.String.annotations({ description: 'The axis index to restore.' }),\n index: Schema.Number.annotations({ description: 'The position to restore at.' }),\n axisMeta: Schema.Any.annotations({ description: 'The row/column metadata.' }),\n values: Schema.Array(Schema.Any).annotations({ description: 'The cell values to restore.' }),\n }),\n output: Schema.Void,\n },\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Capability", "trim", "meta", "id", "name", "description", "trim", "icon", "iconHue", "source", "screenshots", "SheetCapabilities", "ComputeGraphRegistry", "Capability", "make", "meta", "id", "Schema", "addressFromA1Notation", "isFormula", "Obj", "Type", "FormInputAnnotation", "addressFromA1Notation", "addressToA1Notation", "isFormula", "randomBytes", "invariant", "MAX_ROWS", "MAX_COLS", "DEFAULT_ROWS", "DEFAULT_COLS", "ApiError", "Error", "ReadonlyException", "RangeException", "n", "createIndex", "length", "characters", "charactersLength", "randomBuffer", "Array", "from", "byte", "join", "createIndices", "map", "insertIndices", "indices", "i", "max", "idx", "splice", "initialize", "sheet", "rows", "columns", "addressToIndex", "cell", "col", "row", "addressFromIndex", "column", "split", "indexOf", "rangeToIndex", "range", "to", "rangeFromIndex", "index", "compareIndexPositions", "indexA", "indexB", "rowA", "columnA", "rowB", "columnB", "mapFormulaRefsToIndices", "formula", "replace", "match", "mapFormulaIndicesToRefs", "CellValue", "Struct", "value", "Any", "Range", "range", "String", "key", "RowColumnMeta", "size", "optional", "Number", "Sheet", "name", "cells", "Record", "pipe", "FormInputAnnotation", "set", "rows", "Array", "columns", "rowMeta", "columnMeta", "ranges", "Type", "object", "typename", "version", "make", "sheet", "Obj", "change", "s", "initialize", "Object", "entries", "forEach", "idx", "addressToIndex", "addressFromA1Notation", "isFormula", "mapFormulaRefsToIndices", "alignKey", "commentKey", "styleKey", "cellClassNameForRange", "key", "value", "undefined", "Schema", "Capability", "Operation", "SpaceSchema", "Collection", "ActionAxis", "Union", "Literal", "SheetAction", "RestoreAxis", "Struct", "axis", "axisIndex", "String", "index", "Number", "axisMeta", "RowColumnMeta", "values", "Array", "Any", "SHEET_OPERATION", "meta", "id", "Axis", "SheetOperation", "OnCreateSpace", "Operation", "make", "key", "name", "services", "Capability", "Service", "schema", "input", "space", "SpaceSchema", "rootCollection", "Collection", "isDefault", "optional", "Boolean", "output", "Void", "InsertAxis", "model", "count", "DropAxisOutput", "annotations", "description", "DropAxis"]
7
+ }
@@ -20,7 +20,7 @@ import {
20
20
  mapFormulaRefsToIndices,
21
21
  meta,
22
22
  rangeFromIndex
23
- } from "./chunk-IMWGSIDG.mjs";
23
+ } from "./chunk-6J5L47IB.mjs";
24
24
 
25
25
  // src/components/ComputeGraph/ComputeGraphContextProvider.tsx
26
26
  import React, { createContext, useContext } from "react";
@@ -63,8 +63,8 @@ var RangeList = ({ sheet }) => {
63
63
  };
64
64
  const handleDeleteRange = useCallback((range) => {
65
65
  const index = sheet.ranges.findIndex((sheetRange) => sheetRange === range);
66
- Obj.change(sheet, (s) => {
67
- s.ranges.splice(index, 1);
66
+ Obj.change(sheet, (obj) => {
67
+ obj.ranges.splice(index, 1);
68
68
  });
69
69
  }, [
70
70
  sheet
@@ -97,8 +97,9 @@ import { lazy } from "react";
97
97
 
98
98
  // src/components/GridSheet/GridSheet.tsx
99
99
  import React4, { useCallback as useCallback4, useMemo as useMemo2, useRef, useState as useState4 } from "react";
100
- import { useOperationInvoker as useOperationInvoker2 } from "@dxos/app-framework/react";
100
+ import { useOperationInvoker as useOperationInvoker2 } from "@dxos/app-framework/ui";
101
101
  import { rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute";
102
+ import { Obj as Obj5 } from "@dxos/echo";
102
103
  import { defaultColSize, defaultRowSize } from "@dxos/lit-grid";
103
104
  import { DropdownMenu, Icon, useTranslation as useTranslation2 } from "@dxos/react-ui";
104
105
  import { useAttention } from "@dxos/react-ui-attention";
@@ -107,8 +108,8 @@ import { Grid as Grid2, GridCellEditor, closestCell, editorKeys, parseCellIndex
107
108
  // src/integrations/thread-ranges.ts
108
109
  import * as Effect from "effect/Effect";
109
110
  import { useCallback as useCallback2, useEffect, useMemo } from "react";
110
- import { Common } from "@dxos/app-framework";
111
- import { useOperationInvoker, useOperationResolver } from "@dxos/app-framework/react";
111
+ import { useOperationInvoker, useOperationResolver } from "@dxos/app-framework/ui";
112
+ import { LayoutOperation } from "@dxos/app-toolkit";
112
113
  import { debounce } from "@dxos/async";
113
114
  import { inRange } from "@dxos/compute";
114
115
  import { Obj as Obj2, Relation } from "@dxos/echo";
@@ -139,7 +140,7 @@ var useUpdateFocusedCellOnThreadSelection = (grid) => {
139
140
  const { model, setActiveRefs } = useSheetContext();
140
141
  const sheetId = Obj2.getDXN(model.sheet).toString();
141
142
  const scrollIntoViewHandler = useMemo(() => OperationResolver.make({
142
- operation: Common.LayoutOperation.ScrollIntoView,
143
+ operation: LayoutOperation.ScrollIntoView,
143
144
  position: "hoist",
144
145
  filter: (input) => input.subject === sheetId && !!input.cursor,
145
146
  handler: (input) => Effect.sync(() => {
@@ -308,8 +309,8 @@ var SheetModel = class extends Resource {
308
309
  S: this,
309
310
  C: (f, a) => f(...a)
310
311
  });
311
- Obj3.change(this._sheet, (s) => {
312
- initialize(s);
312
+ Obj3.change(this._sheet, (obj) => {
313
+ initialize(obj);
313
314
  });
314
315
  this._graph.update.on((event) => {
315
316
  if (event.type === "functionsUpdated") {
@@ -379,16 +380,16 @@ var SheetModel = class extends Resource {
379
380
  }
380
381
  insertRows(i, n = 1) {
381
382
  let idx = [];
382
- Obj3.change(this._sheet, (s) => {
383
- idx = insertIndices(s.rows, i, n, MAX_ROWS);
383
+ Obj3.change(this._sheet, (obj) => {
384
+ idx = insertIndices(obj.rows, i, n, MAX_ROWS);
384
385
  });
385
386
  this.reset();
386
387
  return idx;
387
388
  }
388
389
  insertColumns(i, n = 1) {
389
390
  let idx = [];
390
- Obj3.change(this._sheet, (s) => {
391
- idx = insertIndices(s.columns, i, n, MAX_COLS);
391
+ Obj3.change(this._sheet, (obj) => {
392
+ idx = insertIndices(obj.columns, i, n, MAX_COLS);
392
393
  });
393
394
  this.reset();
394
395
  return idx;
@@ -401,9 +402,9 @@ var SheetModel = class extends Resource {
401
402
  const values = this.getCellValues(range).flat();
402
403
  const index = this._sheet.rows.indexOf(rowIndex);
403
404
  this.clear(range);
404
- Obj3.change(this._sheet, (s) => {
405
- s.rows.splice(index, 1);
406
- delete s.rowMeta[rowIndex];
405
+ Obj3.change(this._sheet, (obj) => {
406
+ obj.rows.splice(index, 1);
407
+ delete obj.rowMeta[rowIndex];
407
408
  });
408
409
  this.reset();
409
410
  return {
@@ -422,9 +423,9 @@ var SheetModel = class extends Resource {
422
423
  const values = this.getCellValues(range).flat();
423
424
  const index = this._sheet.columns.indexOf(colIndex);
424
425
  this.clear(range);
425
- Obj3.change(this._sheet, (s) => {
426
- s.columns.splice(index, 1);
427
- delete s.columnMeta[colIndex];
426
+ Obj3.change(this._sheet, (obj) => {
427
+ obj.columns.splice(index, 1);
428
+ delete obj.columnMeta[colIndex];
428
429
  });
429
430
  this.reset();
430
431
  return {
@@ -436,33 +437,33 @@ var SheetModel = class extends Resource {
436
437
  };
437
438
  }
438
439
  restoreRow({ index, axisIndex, axisMeta, values }) {
439
- Obj3.change(this._sheet, (s) => {
440
- s.rows.splice(index, 0, axisIndex);
440
+ Obj3.change(this._sheet, (obj) => {
441
+ obj.rows.splice(index, 0, axisIndex);
441
442
  values.forEach((value, col) => {
442
443
  if (value) {
443
- s.cells[`${s.columns[col]}@${axisIndex}`] = {
444
+ obj.cells[`${obj.columns[col]}@${axisIndex}`] = {
444
445
  value
445
446
  };
446
447
  }
447
448
  });
448
449
  if (axisMeta) {
449
- s.rowMeta[axisIndex] = axisMeta;
450
+ obj.rowMeta[axisIndex] = axisMeta;
450
451
  }
451
452
  });
452
453
  this.reset();
453
454
  }
454
455
  restoreColumn({ index, axisIndex, axisMeta, values }) {
455
- Obj3.change(this._sheet, (s) => {
456
- s.columns.splice(index, 0, axisIndex);
456
+ Obj3.change(this._sheet, (obj) => {
457
+ obj.columns.splice(index, 0, axisIndex);
457
458
  values.forEach((value, row) => {
458
459
  if (value) {
459
- s.cells[`${axisIndex}@${s.rows[row]}`] = {
460
+ obj.cells[`${axisIndex}@${obj.rows[row]}`] = {
460
461
  value
461
462
  };
462
463
  }
463
464
  });
464
465
  if (axisMeta) {
465
- s.columnMeta[axisIndex] = axisMeta;
466
+ obj.columnMeta[axisIndex] = axisMeta;
466
467
  }
467
468
  });
468
469
  this.reset();
@@ -477,7 +478,7 @@ var SheetModel = class extends Resource {
477
478
  clear(range) {
478
479
  invariant(this._node, void 0, {
479
480
  F: __dxlog_file,
480
- L: 274,
481
+ L: 276,
481
482
  S: this,
482
483
  A: [
483
484
  "this._node",
@@ -487,17 +488,17 @@ var SheetModel = class extends Resource {
487
488
  const topLeft = getTopLeft(range);
488
489
  const values = this._iterRange(range, () => null);
489
490
  this._node.graph.hf.setCellContents(toSimpleCellAddress(this._node.sheetId, topLeft), values);
490
- Obj3.change(this._sheet, (s) => {
491
+ Obj3.change(this._sheet, (obj) => {
491
492
  this._iterRange(range, (cell) => {
492
493
  const idx = addressToIndex(this._sheet, cell);
493
- delete s.cells[idx];
494
+ delete obj.cells[idx];
494
495
  });
495
496
  });
496
497
  }
497
498
  cut(range) {
498
499
  invariant(this._node, void 0, {
499
500
  F: __dxlog_file,
500
- L: 287,
501
+ L: 289,
501
502
  S: this,
502
503
  A: [
503
504
  "this._node",
@@ -505,17 +506,17 @@ var SheetModel = class extends Resource {
505
506
  ]
506
507
  });
507
508
  this._node.graph.hf.cut(toModelRange(this._node.sheetId, range));
508
- Obj3.change(this._sheet, (s) => {
509
+ Obj3.change(this._sheet, (obj) => {
509
510
  this._iterRange(range, (cell) => {
510
511
  const idx = addressToIndex(this._sheet, cell);
511
- delete s.cells[idx];
512
+ delete obj.cells[idx];
512
513
  });
513
514
  });
514
515
  }
515
516
  copy(range) {
516
517
  invariant(this._node, void 0, {
517
518
  F: __dxlog_file,
518
- L: 298,
519
+ L: 300,
519
520
  S: this,
520
521
  A: [
521
522
  "this._node",
@@ -527,7 +528,7 @@ var SheetModel = class extends Resource {
527
528
  paste(cell) {
528
529
  invariant(this._node, void 0, {
529
530
  F: __dxlog_file,
530
- L: 303,
531
+ L: 305,
531
532
  S: this,
532
533
  A: [
533
534
  "this._node",
@@ -536,7 +537,7 @@ var SheetModel = class extends Resource {
536
537
  });
537
538
  if (!this._node.graph.hf.isClipboardEmpty()) {
538
539
  const changes = this._node.graph.hf.paste(toSimpleCellAddress(this._node.sheetId, cell));
539
- Obj3.change(this._sheet, (s) => {
540
+ Obj3.change(this._sheet, (obj) => {
540
541
  for (const change of changes) {
541
542
  if (change instanceof ExportedCellChange) {
542
543
  const { address, newValue } = change;
@@ -544,7 +545,7 @@ var SheetModel = class extends Resource {
544
545
  row: address.row,
545
546
  col: address.col
546
547
  });
547
- s.cells[idx] = {
548
+ obj.cells[idx] = {
548
549
  value: newValue
549
550
  };
550
551
  }
@@ -556,7 +557,7 @@ var SheetModel = class extends Resource {
556
557
  undo() {
557
558
  invariant(this._node, void 0, {
558
559
  F: __dxlog_file,
559
- L: 320,
560
+ L: 322,
560
561
  S: this,
561
562
  A: [
562
563
  "this._node",
@@ -570,7 +571,7 @@ var SheetModel = class extends Resource {
570
571
  redo() {
571
572
  invariant(this._node, void 0, {
572
573
  F: __dxlog_file,
573
- L: 328,
574
+ L: 330,
574
575
  S: this,
575
576
  A: [
576
577
  "this._node",
@@ -614,7 +615,7 @@ var SheetModel = class extends Resource {
614
615
  getValue(cell) {
615
616
  invariant(this._node, void 0, {
616
617
  F: __dxlog_file,
617
- L: 371,
618
+ L: 373,
618
619
  S: this,
619
620
  A: [
620
621
  "this._node",
@@ -629,7 +630,7 @@ var SheetModel = class extends Resource {
629
630
  error: value
630
631
  }, {
631
632
  F: __dxlog_file,
632
- L: 376,
633
+ L: 378,
633
634
  S: this,
634
635
  C: (f, a) => f(...a)
635
636
  });
@@ -643,7 +644,7 @@ var SheetModel = class extends Resource {
643
644
  getValueDescription(cell) {
644
645
  invariant(this._node, void 0, {
645
646
  F: __dxlog_file,
646
- L: 387,
647
+ L: 389,
647
648
  S: this,
648
649
  A: [
649
650
  "this._node",
@@ -660,7 +661,7 @@ var SheetModel = class extends Resource {
660
661
  setValue(cell, value) {
661
662
  invariant(this._node, void 0, {
662
663
  F: __dxlog_file,
663
- L: 397,
664
+ L: 399,
664
665
  S: this,
665
666
  A: [
666
667
  "this._node",
@@ -672,14 +673,14 @@ var SheetModel = class extends Resource {
672
673
  }
673
674
  let refresh = false;
674
675
  if (cell.row >= this._sheet.rows.length) {
675
- Obj3.change(this._sheet, (s) => {
676
- insertIndices(s.rows, cell.row, 1, MAX_ROWS);
676
+ Obj3.change(this._sheet, (obj) => {
677
+ insertIndices(obj.rows, cell.row, 1, MAX_ROWS);
677
678
  });
678
679
  refresh = true;
679
680
  }
680
681
  if (cell.col >= this._sheet.columns.length) {
681
- Obj3.change(this._sheet, (s) => {
682
- insertIndices(s.columns, cell.col, 1, MAX_COLS);
682
+ Obj3.change(this._sheet, (obj) => {
683
+ insertIndices(obj.columns, cell.col, 1, MAX_COLS);
683
684
  });
684
685
  refresh = true;
685
686
  }
@@ -697,15 +698,15 @@ var SheetModel = class extends Resource {
697
698
  ]);
698
699
  const idx = addressToIndex(this._sheet, cell);
699
700
  if (value === void 0 || value === null) {
700
- Obj3.change(this._sheet, (s) => {
701
- delete s.cells[idx];
701
+ Obj3.change(this._sheet, (obj) => {
702
+ delete obj.cells[idx];
702
703
  });
703
704
  } else {
704
705
  if (isFormula(value)) {
705
706
  value = this._graph.mapFunctionBindingToId(mapFormulaRefsToIndices(this._sheet, value));
706
707
  }
707
- Obj3.change(this._sheet, (s) => {
708
- s.cells[idx] = {
708
+ Obj3.change(this._sheet, (obj) => {
709
+ obj.cells[idx] = {
709
710
  value
710
711
  };
711
712
  });
@@ -762,7 +763,7 @@ var SheetModel = class extends Resource {
762
763
  mapFormulaIndicesToRefs(formula) {
763
764
  invariant(isFormula(formula), void 0, {
764
765
  F: __dxlog_file,
765
- L: 490,
766
+ L: 492,
766
767
  S: this,
767
768
  A: [
768
769
  "isFormula(formula)",
@@ -788,7 +789,7 @@ var SheetModel = class extends Resource {
788
789
  toDateTime(num) {
789
790
  invariant(this._node, void 0, {
790
791
  F: __dxlog_file,
791
- L: 511,
792
+ L: 513,
792
793
  S: this,
793
794
  A: [
794
795
  "this._node",
@@ -800,7 +801,7 @@ var SheetModel = class extends Resource {
800
801
  toDate(num) {
801
802
  invariant(this._node, void 0, {
802
803
  F: __dxlog_file,
803
- L: 516,
804
+ L: 518,
804
805
  S: this,
805
806
  A: [
806
807
  "this._node",
@@ -812,7 +813,7 @@ var SheetModel = class extends Resource {
812
813
  toTime(num) {
813
814
  invariant(this._node, void 0, {
814
815
  F: __dxlog_file,
815
- L: 521,
816
+ L: 523,
816
817
  S: this,
817
818
  A: [
818
819
  "this._node",
@@ -1201,15 +1202,17 @@ var GridSheet = () => {
1201
1202
  editing
1202
1203
  ]);
1203
1204
  const handleAxisResize = useCallback4(({ axis, size, index: numericIndex }) => {
1204
- if (axis === "row") {
1205
- const rowId = model.sheet.rows[parseInt(numericIndex)];
1206
- model.sheet.rowMeta[rowId] ??= {};
1207
- model.sheet.rowMeta[rowId].size = size;
1208
- } else {
1209
- const columnId = model.sheet.columns[parseInt(numericIndex)];
1210
- model.sheet.columnMeta[columnId] ??= {};
1211
- model.sheet.columnMeta[columnId].size = size;
1212
- }
1205
+ Obj5.change(model.sheet, (sheet) => {
1206
+ if (axis === "row") {
1207
+ const rowId = sheet.rows[parseInt(numericIndex)];
1208
+ sheet.rowMeta[rowId] ??= {};
1209
+ sheet.rowMeta[rowId].size = size;
1210
+ } else {
1211
+ const columnId = sheet.columns[parseInt(numericIndex)];
1212
+ sheet.columnMeta[columnId] ??= {};
1213
+ sheet.columnMeta[columnId].size = size;
1214
+ }
1215
+ });
1213
1216
  }, [
1214
1217
  model
1215
1218
  ]);
@@ -1457,7 +1460,7 @@ var GridSheet = () => {
1457
1460
  };
1458
1461
 
1459
1462
  // src/components/index.ts
1460
- var SheetContainer = lazy(() => import("./SheetContainer-YVIDJKP4.mjs"));
1463
+ var SheetContainer = lazy(() => import("./SheetContainer-7H5R7M54.mjs"));
1461
1464
 
1462
1465
  export {
1463
1466
  ComputeGraphContextProvider,
@@ -1468,4 +1471,4 @@ export {
1468
1471
  RangeList,
1469
1472
  SheetContainer
1470
1473
  };
1471
- //# sourceMappingURL=chunk-S7RYX7DG.mjs.map
1474
+ //# sourceMappingURL=chunk-AYSEWH7N.mjs.map