@dxos/plugin-sheet 0.8.4-main.21d9917 → 0.8.4-main.2244d791bb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{SheetContainer-ESCXPI7Y.mjs → SheetContainer-6DNFC4TY.mjs} +16 -16
- package/dist/lib/browser/SheetContainer-6DNFC4TY.mjs.map +7 -0
- package/dist/lib/browser/{anchor-sort-JBRMW6OY.mjs → anchor-sort-AMMLA66W.mjs} +5 -4
- package/dist/lib/browser/anchor-sort-AMMLA66W.mjs.map +7 -0
- package/dist/lib/browser/{chunk-W6N44ONZ.mjs → chunk-EDWHV64N.mjs} +69 -66
- package/dist/lib/browser/chunk-EDWHV64N.mjs.map +7 -0
- package/dist/lib/browser/{chunk-2SAGT3BB.mjs → chunk-KE3AKN5W.mjs} +17 -17
- package/dist/lib/browser/chunk-KE3AKN5W.mjs.map +7 -0
- package/dist/lib/browser/{compute-graph-registry-DL2PX7TF.mjs → compute-graph-registry-RC5L7RE4.mjs} +2 -2
- package/dist/lib/browser/index.mjs +20 -19
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{markdown-BC4KBDUO.mjs → markdown-D2T2DOVX.mjs} +2 -2
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{operation-resolver-FJ4UWZUM.mjs → operation-resolver-P2RX75DA.mjs} +5 -5
- package/dist/lib/browser/operation-resolver-P2RX75DA.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-5BXM6TJ3.mjs → react-surface-45CRAB5G.mjs} +8 -8
- package/dist/lib/browser/react-surface-45CRAB5G.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/{SheetContainer-YVIDJKP4.mjs → SheetContainer-7H5R7M54.mjs} +16 -16
- package/dist/lib/node-esm/SheetContainer-7H5R7M54.mjs.map +7 -0
- package/dist/lib/node-esm/{anchor-sort-C3XFPI6S.mjs → anchor-sort-VHMBRX2E.mjs} +5 -4
- package/dist/lib/node-esm/anchor-sort-VHMBRX2E.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-IMWGSIDG.mjs → chunk-6J5L47IB.mjs} +17 -17
- package/dist/lib/node-esm/chunk-6J5L47IB.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-S7RYX7DG.mjs → chunk-AYSEWH7N.mjs} +69 -66
- package/dist/lib/node-esm/chunk-AYSEWH7N.mjs.map +7 -0
- package/dist/lib/node-esm/{compute-graph-registry-VXH55GDI.mjs → compute-graph-registry-ZGXVLVGD.mjs} +2 -2
- package/dist/lib/node-esm/index.mjs +20 -19
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{markdown-6DGZCJRM.mjs → markdown-PTV72DLO.mjs} +2 -2
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{operation-resolver-OGXEUWHA.mjs → operation-resolver-WPIWQ5IO.mjs} +5 -5
- package/dist/lib/node-esm/operation-resolver-WPIWQ5IO.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-RLHC6B77.mjs → react-surface-ITV2L6HK.mjs} +8 -8
- package/dist/lib/node-esm/react-surface-ITV2L6HK.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/SheetPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +3 -2
- package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort/index.d.ts +1 -1
- package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
- package/dist/types/src/model/sheet-model.d.ts.map +1 -1
- package/dist/types/src/testing/testing.d.ts +9 -9
- package/dist/types/src/types/Sheet.d.ts +18 -18
- package/dist/types/src/types/Sheet.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +1 -1
- package/dist/types/src/types/util.d.ts +2 -1
- package/dist/types/src/types/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +59 -58
- package/src/SheetPlugin.tsx +12 -11
- package/src/capabilities/anchor-sort/anchor-sort.ts +3 -2
- package/src/capabilities/operation-resolver/operation-resolver.ts +3 -3
- package/src/capabilities/react-surface/react-surface.tsx +5 -5
- package/src/components/ComputeGraph/compute-graph.stories.tsx +1 -1
- package/src/components/GridSheet/GridSheet.stories.tsx +1 -1
- package/src/components/GridSheet/GridSheet.tsx +13 -10
- package/src/components/GridSheet/SheetCellEditor.stories.tsx +4 -4
- package/src/components/RangeList/RangeList.tsx +2 -2
- package/src/components/SheetContainer/SheetContainer.stories.tsx +3 -3
- package/src/components/SheetContainer/SheetContainer.tsx +3 -3
- package/src/components/SheetToolbar/SheetToolbar.stories.tsx +1 -1
- package/src/components/SheetToolbar/SheetToolbar.tsx +1 -1
- package/src/components/SheetToolbar/align.ts +6 -6
- package/src/components/SheetToolbar/style.ts +4 -4
- package/src/extensions/compute.stories.tsx +1 -1
- package/src/integrations/thread-ranges.ts +3 -3
- package/src/model/sheet-model.ts +36 -34
- package/src/types/Sheet.ts +11 -20
- package/src/types/util.ts +2 -1
- package/dist/lib/browser/SheetContainer-ESCXPI7Y.mjs.map +0 -7
- package/dist/lib/browser/anchor-sort-JBRMW6OY.mjs.map +0 -7
- package/dist/lib/browser/chunk-2SAGT3BB.mjs.map +0 -7
- package/dist/lib/browser/chunk-W6N44ONZ.mjs.map +0 -7
- package/dist/lib/browser/operation-resolver-FJ4UWZUM.mjs.map +0 -7
- package/dist/lib/browser/react-surface-5BXM6TJ3.mjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-YVIDJKP4.mjs.map +0 -7
- package/dist/lib/node-esm/anchor-sort-C3XFPI6S.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-IMWGSIDG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-S7RYX7DG.mjs.map +0 -7
- package/dist/lib/node-esm/operation-resolver-OGXEUWHA.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-RLHC6B77.mjs.map +0 -7
- /package/dist/lib/browser/{compute-graph-registry-DL2PX7TF.mjs.map → compute-graph-registry-RC5L7RE4.mjs.map} +0 -0
- /package/dist/lib/browser/{markdown-BC4KBDUO.mjs.map → markdown-D2T2DOVX.mjs.map} +0 -0
- /package/dist/lib/node-esm/{compute-graph-registry-VXH55GDI.mjs.map → compute-graph-registry-ZGXVLVGD.mjs.map} +0 -0
- /package/dist/lib/node-esm/{markdown-6DGZCJRM.mjs.map → markdown-PTV72DLO.mjs.map} +0 -0
|
@@ -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-
|
|
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
|
|
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(
|
|
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-
|
|
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:
|
|
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:
|
|
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:
|
|
173
|
-
}).pipe(
|
|
172
|
+
value: CellValue
|
|
173
|
+
}).pipe(FormInputAnnotation.set(false)),
|
|
174
174
|
// Ordered row indices.
|
|
175
|
-
rows: Schema.Array(Schema.String).pipe(
|
|
175
|
+
rows: Schema.Array(Schema.String).pipe(FormInputAnnotation.set(false)),
|
|
176
176
|
// Ordered column indices.
|
|
177
|
-
columns: Schema.Array(Schema.String).pipe(
|
|
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:
|
|
182
|
-
}).pipe(
|
|
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:
|
|
187
|
-
}).pipe(
|
|
186
|
+
value: RowColumnMeta
|
|
187
|
+
}).pipe(FormInputAnnotation.set(false)),
|
|
188
188
|
// Cell formatting referenced by indexed range.
|
|
189
|
-
ranges: Schema.Array(Range).pipe(
|
|
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(
|
|
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(
|
|
208
|
+
const idx = addressToIndex(s, addressFromA1Notation2(key));
|
|
209
209
|
if (isFormula2(value)) {
|
|
210
|
-
value = mapFormulaRefsToIndices(
|
|
210
|
+
value = mapFormulaRefsToIndices(s, value);
|
|
211
211
|
}
|
|
212
|
-
|
|
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-
|
|
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-
|
|
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, (
|
|
67
|
-
|
|
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/
|
|
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 {
|
|
111
|
-
import {
|
|
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:
|
|
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, (
|
|
312
|
-
initialize(
|
|
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, (
|
|
383
|
-
idx = insertIndices(
|
|
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, (
|
|
391
|
-
idx = insertIndices(
|
|
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, (
|
|
405
|
-
|
|
406
|
-
delete
|
|
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, (
|
|
426
|
-
|
|
427
|
-
delete
|
|
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, (
|
|
440
|
-
|
|
440
|
+
Obj3.change(this._sheet, (obj) => {
|
|
441
|
+
obj.rows.splice(index, 0, axisIndex);
|
|
441
442
|
values.forEach((value, col) => {
|
|
442
443
|
if (value) {
|
|
443
|
-
|
|
444
|
+
obj.cells[`${obj.columns[col]}@${axisIndex}`] = {
|
|
444
445
|
value
|
|
445
446
|
};
|
|
446
447
|
}
|
|
447
448
|
});
|
|
448
449
|
if (axisMeta) {
|
|
449
|
-
|
|
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, (
|
|
456
|
-
|
|
456
|
+
Obj3.change(this._sheet, (obj) => {
|
|
457
|
+
obj.columns.splice(index, 0, axisIndex);
|
|
457
458
|
values.forEach((value, row) => {
|
|
458
459
|
if (value) {
|
|
459
|
-
|
|
460
|
+
obj.cells[`${axisIndex}@${obj.rows[row]}`] = {
|
|
460
461
|
value
|
|
461
462
|
};
|
|
462
463
|
}
|
|
463
464
|
});
|
|
464
465
|
if (axisMeta) {
|
|
465
|
-
|
|
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:
|
|
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, (
|
|
491
|
+
Obj3.change(this._sheet, (obj) => {
|
|
491
492
|
this._iterRange(range, (cell) => {
|
|
492
493
|
const idx = addressToIndex(this._sheet, cell);
|
|
493
|
-
delete
|
|
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:
|
|
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, (
|
|
509
|
+
Obj3.change(this._sheet, (obj) => {
|
|
509
510
|
this._iterRange(range, (cell) => {
|
|
510
511
|
const idx = addressToIndex(this._sheet, cell);
|
|
511
|
-
delete
|
|
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:
|
|
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:
|
|
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, (
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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, (
|
|
676
|
-
insertIndices(
|
|
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, (
|
|
682
|
-
insertIndices(
|
|
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, (
|
|
701
|
-
delete
|
|
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, (
|
|
708
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
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-
|
|
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-
|
|
1474
|
+
//# sourceMappingURL=chunk-AYSEWH7N.mjs.map
|