@dxos/plugin-sheet 0.8.4-main.f9ba587 → 0.8.4-main.fd6878d
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-6IWQKRJC.mjs → SheetContainer-JZNFXBW3.mjs} +5 -5
- package/dist/lib/browser/SheetContainer-JZNFXBW3.mjs.map +7 -0
- package/dist/lib/browser/{anchor-sort-VHURGBOY.mjs → anchor-sort-VRX3YZKT.mjs} +2 -2
- package/dist/lib/browser/{anchor-sort-VHURGBOY.mjs.map → anchor-sort-VRX3YZKT.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-ULWNSP4B.mjs → chunk-BVTHIA5U.mjs} +187 -187
- package/dist/lib/browser/chunk-BVTHIA5U.mjs.map +7 -0
- package/dist/lib/browser/{chunk-SI4X5GUR.mjs → chunk-ELAASQ5H.mjs} +9 -2
- package/dist/lib/browser/chunk-ELAASQ5H.mjs.map +7 -0
- package/dist/lib/browser/{chunk-7HQX4NQP.mjs → chunk-VTTKAHAY.mjs} +1 -1
- package/dist/lib/browser/{chunk-7HQX4NQP.mjs.map → chunk-VTTKAHAY.mjs.map} +2 -2
- package/dist/lib/browser/{compute-graph-registry-VG7VP7IV.mjs → compute-graph-registry-6YJHXORG.mjs} +1 -1
- package/dist/lib/{node-esm/compute-graph-registry-3K3Q2A5T.mjs.map → browser/compute-graph-registry-6YJHXORG.mjs.map} +2 -2
- package/dist/lib/browser/index.mjs +10 -8
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-WOJGZMSV.mjs → intent-resolver-SSLPTP5O.mjs} +3 -3
- package/dist/lib/browser/{intent-resolver-WOJGZMSV.mjs.map → intent-resolver-SSLPTP5O.mjs.map} +3 -3
- package/dist/lib/browser/{markdown-VXMIPUQC.mjs → markdown-3VPZYNGU.mjs} +2 -2
- package/dist/lib/browser/markdown-3VPZYNGU.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-DAHMBIQW.mjs → react-surface-Y7KTPJW2.mjs} +4 -4
- package/dist/lib/browser/{react-surface-DAHMBIQW.mjs.map → react-surface-Y7KTPJW2.mjs.map} +2 -2
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/{SheetContainer-SW55KKOT.mjs → SheetContainer-GOIBAE2P.mjs} +5 -5
- package/dist/lib/node-esm/SheetContainer-GOIBAE2P.mjs.map +7 -0
- package/dist/lib/node-esm/{anchor-sort-CTJGOPET.mjs → anchor-sort-YM2UBIKL.mjs} +2 -2
- package/dist/lib/node-esm/{anchor-sort-CTJGOPET.mjs.map → anchor-sort-YM2UBIKL.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-CADTJFAS.mjs → chunk-4L5CIB7E.mjs} +9 -2
- package/dist/lib/node-esm/chunk-4L5CIB7E.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-VEGX32AT.mjs → chunk-56HYMW55.mjs} +187 -187
- package/dist/lib/node-esm/chunk-56HYMW55.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-Q6UYC4G5.mjs → chunk-FXRXBHWM.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-Q6UYC4G5.mjs.map → chunk-FXRXBHWM.mjs.map} +2 -2
- package/dist/lib/node-esm/{compute-graph-registry-3K3Q2A5T.mjs → compute-graph-registry-ET5KJNLV.mjs} +1 -1
- package/dist/lib/{browser/compute-graph-registry-VG7VP7IV.mjs.map → node-esm/compute-graph-registry-ET5KJNLV.mjs.map} +2 -2
- package/dist/lib/node-esm/index.mjs +10 -8
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-PZRXBNIJ.mjs → intent-resolver-5P6DBGK2.mjs} +3 -3
- package/dist/lib/node-esm/{intent-resolver-PZRXBNIJ.mjs.map → intent-resolver-5P6DBGK2.mjs.map} +3 -3
- package/dist/lib/node-esm/{markdown-4VPQJZNZ.mjs → markdown-SFDGQWYE.mjs} +2 -2
- package/dist/lib/node-esm/markdown-SFDGQWYE.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-Z7TVWQ4V.mjs → react-surface-6Z5FAOBH.mjs} +4 -4
- package/dist/lib/node-esm/{react-surface-Z7TVWQ4V.mjs.map → react-surface-6Z5FAOBH.mjs.map} +2 -2
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown.d.ts +1 -1
- package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
- package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/util.d.ts +1 -1
- package/dist/types/src/components/GridSheet/util.d.ts.map +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/components/SheetContext/SheetContext.d.ts +1 -1
- package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/align.d.ts +2 -2
- package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -1
- package/dist/types/src/extensions/compute.d.ts.map +1 -1
- package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
- package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
- package/dist/types/src/model/sheet-model.d.ts +1 -1
- package/dist/types/src/model/sheet-model.d.ts.map +1 -1
- package/dist/types/src/playwright/sheet-manager.d.ts +1 -1
- package/dist/types/src/playwright/sheet-manager.d.ts.map +1 -1
- package/dist/types/src/testing/testing.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +2 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +1 -1
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/types/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +51 -49
- package/src/SheetPlugin.tsx +2 -2
- package/src/capabilities/anchor-sort.ts +1 -1
- package/src/capabilities/compute-graph-registry.ts +1 -1
- package/src/capabilities/intent-resolver.ts +2 -2
- package/src/capabilities/markdown.ts +3 -2
- package/src/capabilities/react-surface.tsx +2 -1
- package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +1 -1
- package/src/components/ComputeGraph/compute-graph.stories.tsx +5 -4
- package/src/components/GridSheet/GridSheet.stories.tsx +3 -2
- package/src/components/GridSheet/GridSheet.tsx +15 -14
- package/src/components/GridSheet/SheetCellEditor.stories.tsx +1 -1
- package/src/components/GridSheet/util.ts +6 -6
- package/src/components/SheetContainer/SheetContainer.stories.tsx +4 -3
- package/src/components/SheetContainer/SheetContainer.tsx +1 -1
- package/src/components/SheetContext/SheetContext.tsx +1 -1
- package/src/components/SheetToolbar/SheetToolbar.stories.tsx +2 -1
- package/src/components/SheetToolbar/SheetToolbar.tsx +5 -4
- package/src/components/SheetToolbar/align.ts +4 -3
- package/src/components/SheetToolbar/style.ts +2 -2
- package/src/extensions/compute.stories.tsx +3 -2
- package/src/extensions/compute.ts +1 -1
- package/src/integrations/thread-ranges.ts +7 -6
- package/src/model/sheet-model.test.ts +2 -1
- package/src/model/sheet-model.ts +6 -6
- package/src/playwright/sheet-manager.ts +1 -1
- package/src/playwright/sheet.spec.ts +1 -1
- package/src/sanity.test.ts +1 -1
- package/src/testing/testing.tsx +1 -1
- package/src/translations.ts +2 -0
- package/src/types/types.ts +2 -1
- package/src/types/util.ts +3 -3
- package/dist/lib/browser/SheetContainer-6IWQKRJC.mjs.map +0 -7
- package/dist/lib/browser/chunk-SI4X5GUR.mjs.map +0 -7
- package/dist/lib/browser/chunk-ULWNSP4B.mjs.map +0 -7
- package/dist/lib/browser/markdown-VXMIPUQC.mjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-SW55KKOT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CADTJFAS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-VEGX32AT.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-4VPQJZNZ.mjs.map +0 -7
|
@@ -3,14 +3,14 @@ import {
|
|
|
3
3
|
SheetProvider,
|
|
4
4
|
useComputeGraph,
|
|
5
5
|
useSheetContext
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-BVTHIA5U.mjs";
|
|
7
7
|
import {
|
|
8
8
|
alignKey,
|
|
9
9
|
mapFormulaIndicesToRefs,
|
|
10
10
|
rangeFromIndex,
|
|
11
11
|
rangeToIndex
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-ELAASQ5H.mjs";
|
|
13
|
+
import "./chunk-VTTKAHAY.mjs";
|
|
14
14
|
import {
|
|
15
15
|
SHEET_PLUGIN
|
|
16
16
|
} from "./chunk-6AKBCBL4.mjs";
|
|
@@ -68,7 +68,7 @@ import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking"
|
|
|
68
68
|
import { Rx } from "@effect-rx/rx-react";
|
|
69
69
|
import React2, { useMemo as useMemo2 } from "react";
|
|
70
70
|
import { useAppGraph } from "@dxos/app-framework";
|
|
71
|
-
import {
|
|
71
|
+
import { MenuProvider, ToolbarMenu, createGapSeparator, rxFromSignal, useMenuActions } from "@dxos/react-ui-menu";
|
|
72
72
|
|
|
73
73
|
// src/components/SheetToolbar/align.ts
|
|
74
74
|
import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
|
|
@@ -348,4 +348,4 @@ var SheetContainer_default = SheetContainer;
|
|
|
348
348
|
export {
|
|
349
349
|
SheetContainer_default as default
|
|
350
350
|
};
|
|
351
|
-
//# sourceMappingURL=SheetContainer-
|
|
351
|
+
//# sourceMappingURL=SheetContainer-JZNFXBW3.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/SheetContainer/SheetContainer.tsx", "../../../src/components/FunctionEditor/FunctionEditor.tsx", "../../../src/components/SheetToolbar/SheetToolbar.tsx", "../../../src/components/SheetToolbar/align.ts", "../../../src/components/SheetToolbar/style.ts", "../../../src/components/SheetToolbar/useToolbarState.ts", "../../../src/components/SheetContainer/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Space, fullyQualifiedId } from '@dxos/react-client/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { type SheetType } 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 = {\n space: Space;\n sheet: SheetType;\n role?: string;\n ignoreAttention?: boolean;\n};\n\nexport const SheetContainer = ({ space, sheet, role, ignoreAttention }: SheetContainerProps) => {\n const graph = useComputeGraph(space);\n\n return graph ? (\n <SheetProvider sheet={sheet} graph={graph} ignoreAttention={ignoreAttention}>\n <StackItem.Content toolbar statusbar {...(role === 'section' && { classNames: 'aspect-video' })}>\n <SheetToolbar id={fullyQualifiedId(sheet)} />\n <GridSheet />\n <FunctionEditor />\n </StackItem.Content>\n </SheetProvider>\n ) : null;\n};\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 px-4 py-1 text-sm bg-toolbarSurface border-bs !border-subduedSeparator'>\n <div className='flex gap-4 items-center'>\n <div className='flex w-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 { Rx } from '@effect-rx/rx-react';\nimport React, { type PropsWithChildren, useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-framework';\nimport { type CompleteCellRange } from '@dxos/compute';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport {\n type ActionGraphEdges,\n type ActionGraphNodes,\n type ActionGraphProps,\n MenuProvider,\n ToolbarMenu,\n createGapSeparator,\n rxFromSignal,\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 ToolbarState, useToolbarState } from './useToolbarState';\n\n//\n// Root\n//\n\nexport type SheetToolbarProps = ThemedClassName<PropsWithChildren<{ id: string }>>;\n\nconst createToolbarActions = (\n model: SheetModel,\n state: ToolbarState,\n cursorFallbackRange?: CompleteCellRange,\n customActions?: Rx.Rx<ActionGraphProps>,\n) => {\n return Rx.make((get) => {\n const align = get(rxFromSignal(() => createAlign(model, state, cursorFallbackRange)));\n const style = get(rxFromSignal(() => createStyle(model, state, cursorFallbackRange)));\n const gap = createGapSeparator();\n const nodes: ActionGraphNodes = [...align.nodes, ...style.nodes, ...gap.nodes];\n const edges: ActionGraphEdges = [...align.edges, ...style.edges, ...gap.edges];\n if (customActions) {\n const custom = get(customActions);\n nodes.push(...custom.nodes);\n edges.push(...custom.edges);\n }\n return {\n nodes,\n edges,\n };\n });\n};\n\nexport const SheetToolbar = ({ id, classNames }: SheetToolbarProps) => {\n const { model, cursorFallbackRange } = useSheetContext();\n const state = useToolbarState({});\n useAlignState(state);\n useStyleState(state);\n\n const { graph } = useAppGraph();\n const customActions = useMemo(() => {\n return Rx.make((get) => {\n const actions = get(graph.actions(id));\n const nodes = actions.filter((action) => action.properties.disposition === 'toolbar');\n return { nodes, edges: nodes.map((node) => ({ source: 'root', target: node.id })) };\n });\n }, [graph]);\n\n const actionsCreator = useMemo(\n () => createToolbarActions(model, state, cursorFallbackRange, customActions),\n [model, state, cursorFallbackRange, customActions],\n );\n const menu = useMenuActions(actionsCreator);\n\n return (\n <MenuProvider {...menu} attendableId={id}>\n <ToolbarMenu classNames={classNames} />\n </MenuProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { type CompleteCellRange, inRange } from '@dxos/compute';\nimport { type ToolbarMenuActionGroupProperties, createMenuAction, createMenuItemGroup } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } 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 } 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 = (state: Partial<AlignState>) => {\n const { cursor, model } = useSheetContext();\n useEffect(() => {\n // TODO(thure): Can this O(n) call be memoized?\n state[alignKey] = (\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 }, [cursor, model.sheet]);\n};\n\nconst createAlignGroupAction = (value?: AlignValue) =>\n createMenuItemGroup('align', {\n label: ['align label', { ns: SHEET_PLUGIN }],\n variant: 'toggleGroup',\n selectCardinality: 'single',\n value: `${alignKey}--${value}`,\n } as ToolbarMenuActionGroupProperties);\n\nconst createAlignActions = (model: SheetModel, state: ToolbarState, cursorFallbackRange?: CompleteCellRange) =>\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 if (index < 0) {\n model.sheet.ranges?.push(nextRangeEntity);\n state[alignKey] = nextRangeEntity.value;\n } else if (model.sheet.ranges![index].value === nextRangeEntity.value) {\n model.sheet.ranges?.splice(index, 1);\n state[alignKey] = undefined;\n } else {\n model.sheet.ranges?.splice(index, 1, nextRangeEntity);\n state[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: SHEET_PLUGIN }],\n icon,\n testId: `grid.toolbar.${alignKey}.${alignValue}`,\n },\n );\n });\n\nexport const createAlign = (model: SheetModel, state: ToolbarState, cursorFallbackRange?: CompleteCellRange) => {\n const alignGroup = createAlignGroupAction(state[alignKey]);\n const alignActions = createAlignActions(model, state, cursorFallbackRange);\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 { useEffect } from 'react';\n\nimport { type CompleteCellRange, inRange } from '@dxos/compute';\nimport { type ToolbarMenuActionGroupProperties, createMenuAction, createMenuItemGroup } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { type SheetModel } from '../../model';\nimport { type StyleKey, type StyleValue, rangeFromIndex, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\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 = (state: StyleState) => {\n const { cursorFallbackRange, model } = useSheetContext();\n\n useEffect(() => {\n state.highlight = false;\n state.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 state[value as StyleValue] = true;\n });\n }\n }, [cursorFallbackRange, model.sheet]);\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\nconst createStyleActions = (model: SheetModel, state: StyleState, cursorFallbackRange?: CompleteCellRange) =>\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 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 model.sheet.ranges?.splice(index, 1);\n }\n state[nextRangeEntity.value] = false;\n } else {\n model.sheet.ranges?.push(nextRangeEntity);\n state[nextRangeEntity.value] = true;\n }\n },\n {\n key: 'style',\n value: styleValue as StyleValue,\n icon,\n label: [`range value ${styleValue} label`, { ns: SHEET_PLUGIN }],\n checked: !!state[styleValue as StyleValue],\n },\n );\n });\n\nexport const createStyle = (model: SheetModel, state: StyleState, cursorFallbackRange?: CompleteCellRange) => {\n const styleGroupAction = createStyleGroup(state);\n const styleActions = createStyleActions(model, state, cursorFallbackRange);\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 { useMemo } from 'react';\n\nimport { live } from '@dxos/live-object';\n\nimport { type AlignState } from './align';\nimport { type StyleState } from './style';\n\nexport type ToolbarState = Partial<StyleState & AlignState>;\n\nexport const useToolbarState = (initialState: ToolbarState = {}) => {\n return useMemo(() => live<ToolbarState>(initialState), []);\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", "fullyQualifiedId", "StackItem", "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", "Rx", "React", "useMemo", "useAppGraph", "MenuProvider", "ToolbarMenu", "createGapSeparator", "rxFromSignal", "useMenuActions", "useEffect", "inRange", "createMenuAction", "createMenuItemGroup", "aligns", "start", "center", "end", "useAlignState", "state", "cursor", "model", "useSheetContext", "useEffect", "alignKey", "sheet", "ranges", "findLast", "range", "key", "inRange", "rangeFromIndex", "value", "undefined", "createAlignGroupAction", "createMenuItemGroup", "label", "ns", "SHEET_PLUGIN", "variant", "selectCardinality", "createAlignActions", "cursorFallbackRange", "Object", "entries", "map", "alignValue", "icon", "createMenuAction", "index", "findIndex", "from", "nextRangeEntity", "rangeToIndex", "push", "splice", "checked", "testId", "createAlign", "alignGroup", "alignActions", "nodes", "edges", "source", "target", "id", "useEffect", "inRange", "createMenuAction", "createMenuItemGroup", "styles", "highlight", "softwrap", "useStyleState", "state", "cursorFallbackRange", "model", "useSheetContext", "useEffect", "sheet", "ranges", "filter", "range", "key", "inRange", "rangeFromIndex", "from", "forEach", "value", "createStyleGroup", "createMenuItemGroup", "variant", "selectCardinality", "Object", "keys", "map", "styleValue", "createStyleActions", "entries", "icon", "createMenuAction", "index", "findIndex", "nextRangeEntity", "rangeToIndex", "rangeKey", "some", "rangeValue", "splice", "push", "label", "ns", "SHEET_PLUGIN", "checked", "createStyle", "styleGroupAction", "styleActions", "nodes", "edges", "source", "target", "id", "useMemo", "live", "useToolbarState", "initialState", "useMemo", "live", "createToolbarActions", "model", "state", "cursorFallbackRange", "customActions", "Rx", "make", "get", "align", "rxFromSignal", "createAlign", "style", "createStyle", "gap", "createGapSeparator", "nodes", "edges", "custom", "push", "SheetToolbar", "id", "classNames", "useSheetContext", "useToolbarState", "useAlignState", "useStyleState", "graph", "useAppGraph", "useMemo", "actions", "filter", "action", "properties", "disposition", "map", "node", "source", "target", "actionsCreator", "menu", "useMenuActions", "React", "MenuProvider", "attendableId", "ToolbarMenu", "SheetContainer", "space", "sheet", "role", "ignoreAttention", "graph", "useComputeGraph", "React", "SheetProvider", "StackItem", "Content", "toolbar", "statusbar", "classNames", "SheetToolbar", "id", "fullyQualifiedId", "GridSheet", "FunctionEditor", "SheetContainer"]
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SheetType,
|
|
3
3
|
compareIndexPositions
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ELAASQ5H.mjs";
|
|
5
5
|
import "./chunk-6AKBCBL4.mjs";
|
|
6
6
|
|
|
7
7
|
// src/capabilities/anchor-sort.ts
|
|
@@ -21,4 +21,4 @@ var anchor_sort_default = () => contributes(Capabilities.AnchorSort, {
|
|
|
21
21
|
export {
|
|
22
22
|
anchor_sort_default as default
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=anchor-sort-
|
|
24
|
+
//# sourceMappingURL=anchor-sort-VRX3YZKT.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/capabilities/anchor-sort.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { Type } from '@dxos/echo';\nimport { getTarget } from '@dxos/react-client/echo';\n\nimport {
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { Type } from '@dxos/echo';\nimport { getTarget } from '@dxos/react-client/echo';\n\nimport { SheetType, compareIndexPositions } from '../types';\n\nexport default () =>\n contributes(Capabilities.AnchorSort, {\n key: Type.getTypename(SheetType)!,\n sort: (anchorA, anchorB) => {\n const sheet = getTarget(anchorA) as SheetType;\n if (sheet !== getTarget(anchorB)) {\n return 0;\n }\n\n return !anchorA.anchor || !anchorB.anchor ? 0 : compareIndexPositions(sheet, anchorA.anchor, anchorB.anchor);\n },\n });\n"],
|
|
5
5
|
"mappings": ";;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,YAAY;AACrB,SAASC,iBAAiB;AAI1B,IAAA,sBAAe,MACbC,YAAYC,aAAaC,YAAY;EACnCC,KAAKC,KAAKC,YAAYC,SAAAA;EACtBC,MAAM,CAACC,SAASC,YAAAA;AACd,UAAMC,QAAQC,UAAUH,OAAAA;AACxB,QAAIE,UAAUC,UAAUF,OAAAA,GAAU;AAChC,aAAO;IACT;AAEA,WAAO,CAACD,QAAQI,UAAU,CAACH,QAAQG,SAAS,IAAIC,sBAAsBH,OAAOF,QAAQI,QAAQH,QAAQG,MAAM;EAC7G;AACF,CAAA;",
|
|
6
6
|
"names": ["Capabilities", "contributes", "Type", "getTarget", "contributes", "Capabilities", "AnchorSort", "key", "Type", "getTypename", "SheetType", "sort", "anchorA", "anchorB", "sheet", "getTarget", "anchor", "compareIndexPositions"]
|
|
7
7
|
}
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
cellClassNameForRange,
|
|
7
7
|
rangeFromIndex,
|
|
8
8
|
useSheetModel
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ELAASQ5H.mjs";
|
|
10
10
|
import {
|
|
11
11
|
rangeExtension,
|
|
12
12
|
sheetExtension
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-VTTKAHAY.mjs";
|
|
14
14
|
import {
|
|
15
15
|
SHEET_PLUGIN
|
|
16
16
|
} from "./chunk-6AKBCBL4.mjs";
|
|
@@ -105,189 +105,18 @@ import { rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute";
|
|
|
105
105
|
import { defaultColSize, defaultRowSize } from "@dxos/lit-grid";
|
|
106
106
|
import { DropdownMenu, Icon, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
107
107
|
import { useAttention } from "@dxos/react-ui-attention";
|
|
108
|
-
import {
|
|
109
|
-
|
|
110
|
-
// src/components/GridSheet/util.ts
|
|
111
|
-
import { useEffect, useState } from "react";
|
|
112
|
-
import { inRange } from "@dxos/compute";
|
|
113
|
-
import { createDocAccessor } from "@dxos/react-client/echo";
|
|
114
|
-
import { parseValue, cellClassesForFieldType } from "@dxos/react-ui-form";
|
|
115
|
-
import { colToA1Notation, rowToA1Notation, commentedClassName } from "@dxos/react-ui-grid";
|
|
116
|
-
import { mx } from "@dxos/react-ui-theme";
|
|
117
|
-
var createDxGridColumns = (model) => {
|
|
118
|
-
return model.sheet.columns.reduce((acc, columnId, numericIndex) => {
|
|
119
|
-
if (model.sheet.columnMeta[columnId] && model.sheet.columnMeta[columnId].size) {
|
|
120
|
-
acc.grid[numericIndex] = {
|
|
121
|
-
size: model.sheet.columnMeta[columnId].size,
|
|
122
|
-
resizeable: true
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
return acc;
|
|
126
|
-
}, {
|
|
127
|
-
grid: {}
|
|
128
|
-
});
|
|
129
|
-
};
|
|
130
|
-
var createDxGridRows = (model) => {
|
|
131
|
-
return model.sheet.rows.reduce((acc, rowId, numericIndex) => {
|
|
132
|
-
if (model.sheet.rowMeta[rowId] && model.sheet.rowMeta[rowId].size) {
|
|
133
|
-
acc.grid[numericIndex] = {
|
|
134
|
-
size: model.sheet.rowMeta[rowId].size,
|
|
135
|
-
resizeable: true
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
return acc;
|
|
139
|
-
}, {
|
|
140
|
-
grid: {}
|
|
141
|
-
});
|
|
142
|
-
};
|
|
143
|
-
var projectCellProps = (model, col, row) => {
|
|
144
|
-
const address = {
|
|
145
|
-
col,
|
|
146
|
-
row
|
|
147
|
-
};
|
|
148
|
-
const rawValue = model.getValue(address);
|
|
149
|
-
const ranges = model.sheet.ranges?.filter(({ range }) => inRange(rangeFromIndex(model.sheet, range), address));
|
|
150
|
-
const threadRefs = void 0;
|
|
151
|
-
const description = model.getValueDescription(address);
|
|
152
|
-
const type = description?.type;
|
|
153
|
-
const format = description?.format;
|
|
154
|
-
const classNames = ranges?.map(cellClassNameForRange).reverse();
|
|
155
|
-
return {
|
|
156
|
-
value: parseValue({
|
|
157
|
-
type,
|
|
158
|
-
format,
|
|
159
|
-
value: rawValue
|
|
160
|
-
}),
|
|
161
|
-
className: mx(cellClassesForFieldType({
|
|
162
|
-
type,
|
|
163
|
-
format
|
|
164
|
-
}), threadRefs && commentedClassName, classNames),
|
|
165
|
-
dataRefs: threadRefs
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
var gridCellGetter = (model) => {
|
|
169
|
-
const cachedGridCells = {};
|
|
170
|
-
return (nextBounds) => {
|
|
171
|
-
[
|
|
172
|
-
...Array(nextBounds.end.col - nextBounds.start.col)
|
|
173
|
-
].forEach((_, c0) => {
|
|
174
|
-
return [
|
|
175
|
-
...Array(nextBounds.end.row - nextBounds.start.row)
|
|
176
|
-
].forEach((_2, r0) => {
|
|
177
|
-
const col = nextBounds.start.col + c0;
|
|
178
|
-
const row = nextBounds.start.row + r0;
|
|
179
|
-
cachedGridCells[`${col},${row}`] = projectCellProps(model, col, row);
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
return cachedGridCells;
|
|
183
|
-
};
|
|
184
|
-
};
|
|
185
|
-
var rowLabelCell = (row) => ({
|
|
186
|
-
value: rowToA1Notation(row),
|
|
187
|
-
className: "!bg-toolbarSurface text-subdued text-end pie-1",
|
|
188
|
-
resizeHandle: "row"
|
|
189
|
-
});
|
|
190
|
-
var colLabelCell = (col) => ({
|
|
191
|
-
value: colToA1Notation(col),
|
|
192
|
-
className: "!bg-toolbarSurface text-subdued",
|
|
193
|
-
resizeHandle: "col"
|
|
194
|
-
});
|
|
195
|
-
var cellGetter = (model) => {
|
|
196
|
-
const getGridCells = gridCellGetter(model);
|
|
197
|
-
return (nextBounds, plane) => {
|
|
198
|
-
switch (plane) {
|
|
199
|
-
case "grid":
|
|
200
|
-
return getGridCells(nextBounds);
|
|
201
|
-
case "fixedStartStart": {
|
|
202
|
-
return {
|
|
203
|
-
"0,0": {
|
|
204
|
-
className: "!bg-toolbarSurface"
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
case "frozenColsStart":
|
|
209
|
-
return [
|
|
210
|
-
...Array(nextBounds.end.row - nextBounds.start.row)
|
|
211
|
-
].reduce((acc, _, r0) => {
|
|
212
|
-
const r = nextBounds.start.row + r0;
|
|
213
|
-
acc[`0,${r}`] = rowLabelCell(r);
|
|
214
|
-
return acc;
|
|
215
|
-
}, {});
|
|
216
|
-
case "frozenRowsStart":
|
|
217
|
-
return [
|
|
218
|
-
...Array(nextBounds.end.col - nextBounds.start.col)
|
|
219
|
-
].reduce((acc, _, c0) => {
|
|
220
|
-
const c = nextBounds.start.col + c0;
|
|
221
|
-
acc[`${c},0`] = colLabelCell(c);
|
|
222
|
-
return acc;
|
|
223
|
-
}, {});
|
|
224
|
-
default:
|
|
225
|
-
return {};
|
|
226
|
-
}
|
|
227
|
-
};
|
|
228
|
-
};
|
|
229
|
-
var useSheetModelDxGridProps = (dxGrid, model) => {
|
|
230
|
-
const [columns, setColumns] = useState(createDxGridColumns(model));
|
|
231
|
-
const [rows, setRows] = useState(createDxGridRows(model));
|
|
232
|
-
useEffect(() => {
|
|
233
|
-
const cellsAccessor = createDocAccessor(model.sheet, [
|
|
234
|
-
"cells"
|
|
235
|
-
]);
|
|
236
|
-
if (dxGrid) {
|
|
237
|
-
dxGrid.getCells = cellGetter(model);
|
|
238
|
-
}
|
|
239
|
-
const handleCellsUpdate = () => {
|
|
240
|
-
dxGrid?.requestUpdate("initialCells");
|
|
241
|
-
};
|
|
242
|
-
cellsAccessor.handle.addListener("change", handleCellsUpdate);
|
|
243
|
-
const unsubscribe = model.graph.update.on(handleCellsUpdate);
|
|
244
|
-
return () => {
|
|
245
|
-
cellsAccessor.handle.removeListener("change", handleCellsUpdate);
|
|
246
|
-
unsubscribe();
|
|
247
|
-
};
|
|
248
|
-
}, [
|
|
249
|
-
model,
|
|
250
|
-
dxGrid
|
|
251
|
-
]);
|
|
252
|
-
useEffect(() => {
|
|
253
|
-
const columnMetaAccessor = createDocAccessor(model.sheet, [
|
|
254
|
-
"columnMeta"
|
|
255
|
-
]);
|
|
256
|
-
const rowMetaAccessor = createDocAccessor(model.sheet, [
|
|
257
|
-
"rowMeta"
|
|
258
|
-
]);
|
|
259
|
-
const handleColumnMetaUpdate = () => {
|
|
260
|
-
setColumns(createDxGridColumns(model));
|
|
261
|
-
};
|
|
262
|
-
const handleRowMetaUpdate = () => {
|
|
263
|
-
setRows(createDxGridRows(model));
|
|
264
|
-
};
|
|
265
|
-
columnMetaAccessor.handle.addListener("change", handleColumnMetaUpdate);
|
|
266
|
-
rowMetaAccessor.handle.addListener("change", handleRowMetaUpdate);
|
|
267
|
-
return () => {
|
|
268
|
-
columnMetaAccessor.handle.removeListener("change", handleColumnMetaUpdate);
|
|
269
|
-
rowMetaAccessor.handle.removeListener("change", handleRowMetaUpdate);
|
|
270
|
-
};
|
|
271
|
-
}, [
|
|
272
|
-
model,
|
|
273
|
-
dxGrid
|
|
274
|
-
]);
|
|
275
|
-
return {
|
|
276
|
-
columns,
|
|
277
|
-
rows
|
|
278
|
-
};
|
|
279
|
-
};
|
|
108
|
+
import { Grid as Grid2, GridCellEditor, closestCell, editorKeys, parseCellIndex } from "@dxos/react-ui-grid";
|
|
280
109
|
|
|
281
110
|
// src/integrations/thread-ranges.ts
|
|
282
111
|
import { Schema as Schema2, pipe } from "effect";
|
|
283
|
-
import { useCallback as useCallback2, useEffect
|
|
284
|
-
import {
|
|
112
|
+
import { useCallback as useCallback2, useEffect, useMemo } from "react";
|
|
113
|
+
import { LayoutAction, chain, createIntent, createResolver, useIntentDispatcher, useIntentResolver } from "@dxos/app-framework";
|
|
285
114
|
import { debounce } from "@dxos/async";
|
|
286
|
-
import { inRange
|
|
115
|
+
import { inRange } from "@dxos/compute";
|
|
287
116
|
import { Obj, Relation } from "@dxos/echo";
|
|
288
117
|
import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from "@dxos/plugin-deck/types";
|
|
289
118
|
import { ThreadAction, ThreadType } from "@dxos/plugin-thread/types";
|
|
290
|
-
import { Filter, fullyQualifiedId, getSpace,
|
|
119
|
+
import { Filter, Query, fullyQualifiedId, getSpace, useQuery } from "@dxos/react-client/echo";
|
|
291
120
|
import { AnchoredTo } from "@dxos/schema";
|
|
292
121
|
var parseThreadAnchorAsCellRange = (cursor) => {
|
|
293
122
|
const coords = cursor.split(",");
|
|
@@ -345,7 +174,7 @@ var useSelectThreadOnCellFocus = () => {
|
|
|
345
174
|
const source = Relation.getSource(anchor);
|
|
346
175
|
if (anchor.anchor && Obj.instanceOf(ThreadType, source)) {
|
|
347
176
|
const range = parseThreadAnchorAsCellRange(anchor.anchor);
|
|
348
|
-
return range ?
|
|
177
|
+
return range ? inRange(range, cellAddress) : false;
|
|
349
178
|
} else {
|
|
350
179
|
return false;
|
|
351
180
|
}
|
|
@@ -369,7 +198,7 @@ var useSelectThreadOnCellFocus = () => {
|
|
|
369
198
|
}, [
|
|
370
199
|
selectClosestThread
|
|
371
200
|
]);
|
|
372
|
-
|
|
201
|
+
useEffect(() => {
|
|
373
202
|
if (!cursor) {
|
|
374
203
|
return;
|
|
375
204
|
}
|
|
@@ -382,7 +211,7 @@ var useSelectThreadOnCellFocus = () => {
|
|
|
382
211
|
|
|
383
212
|
// src/components/SheetContext/SheetContext.tsx
|
|
384
213
|
import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
|
|
385
|
-
import React3, { createContext as createContext2, useCallback as useCallback3, useContext as useContext2, useState
|
|
214
|
+
import React3, { createContext as createContext2, useCallback as useCallback3, useContext as useContext2, useState } from "react";
|
|
386
215
|
import { invariant } from "@dxos/invariant";
|
|
387
216
|
import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
|
|
388
217
|
import { Grid, useGridContext } from "@dxos/react-ui-grid";
|
|
@@ -405,10 +234,10 @@ var SheetProviderImpl = ({ model, onInfo, ignoreAttention, children, __gridScope
|
|
|
405
234
|
var _effect = _useSignals3();
|
|
406
235
|
try {
|
|
407
236
|
const { id, editing, setEditing } = useGridContext("SheetProvider", __gridScope);
|
|
408
|
-
const [cursor, setCursorInternal] =
|
|
409
|
-
const [range, setRangeInternal] =
|
|
410
|
-
const [cursorFallbackRange, setCursorFallbackRange] =
|
|
411
|
-
const [activeRefs, setActiveRefs] =
|
|
237
|
+
const [cursor, setCursorInternal] = useState();
|
|
238
|
+
const [range, setRangeInternal] = useState();
|
|
239
|
+
const [cursorFallbackRange, setCursorFallbackRange] = useState();
|
|
240
|
+
const [activeRefs, setActiveRefs] = useState("");
|
|
412
241
|
const setCursor = useCallback3((nextCursor) => {
|
|
413
242
|
setCursorInternal(nextCursor);
|
|
414
243
|
setCursorFallbackRange(range?.to ? range : nextCursor ? {
|
|
@@ -467,6 +296,177 @@ var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo
|
|
|
467
296
|
}
|
|
468
297
|
};
|
|
469
298
|
|
|
299
|
+
// src/components/GridSheet/util.ts
|
|
300
|
+
import { useEffect as useEffect2, useState as useState2 } from "react";
|
|
301
|
+
import { inRange as inRange2 } from "@dxos/compute";
|
|
302
|
+
import { createDocAccessor } from "@dxos/react-client/echo";
|
|
303
|
+
import { cellClassesForFieldType, parseValue } from "@dxos/react-ui-form";
|
|
304
|
+
import { colToA1Notation, commentedClassName, rowToA1Notation } from "@dxos/react-ui-grid";
|
|
305
|
+
import { mx } from "@dxos/react-ui-theme";
|
|
306
|
+
var createDxGridColumns = (model) => {
|
|
307
|
+
return model.sheet.columns.reduce((acc, columnId, numericIndex) => {
|
|
308
|
+
if (model.sheet.columnMeta[columnId] && model.sheet.columnMeta[columnId].size) {
|
|
309
|
+
acc.grid[numericIndex] = {
|
|
310
|
+
size: model.sheet.columnMeta[columnId].size,
|
|
311
|
+
resizeable: true
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
return acc;
|
|
315
|
+
}, {
|
|
316
|
+
grid: {}
|
|
317
|
+
});
|
|
318
|
+
};
|
|
319
|
+
var createDxGridRows = (model) => {
|
|
320
|
+
return model.sheet.rows.reduce((acc, rowId, numericIndex) => {
|
|
321
|
+
if (model.sheet.rowMeta[rowId] && model.sheet.rowMeta[rowId].size) {
|
|
322
|
+
acc.grid[numericIndex] = {
|
|
323
|
+
size: model.sheet.rowMeta[rowId].size,
|
|
324
|
+
resizeable: true
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
return acc;
|
|
328
|
+
}, {
|
|
329
|
+
grid: {}
|
|
330
|
+
});
|
|
331
|
+
};
|
|
332
|
+
var projectCellProps = (model, col, row) => {
|
|
333
|
+
const address = {
|
|
334
|
+
col,
|
|
335
|
+
row
|
|
336
|
+
};
|
|
337
|
+
const rawValue = model.getValue(address);
|
|
338
|
+
const ranges = model.sheet.ranges?.filter(({ range }) => inRange2(rangeFromIndex(model.sheet, range), address));
|
|
339
|
+
const threadRefs = void 0;
|
|
340
|
+
const description = model.getValueDescription(address);
|
|
341
|
+
const type = description?.type;
|
|
342
|
+
const format = description?.format;
|
|
343
|
+
const classNames = ranges?.map(cellClassNameForRange).reverse();
|
|
344
|
+
return {
|
|
345
|
+
value: parseValue({
|
|
346
|
+
type,
|
|
347
|
+
format,
|
|
348
|
+
value: rawValue
|
|
349
|
+
}),
|
|
350
|
+
className: mx(cellClassesForFieldType({
|
|
351
|
+
type,
|
|
352
|
+
format
|
|
353
|
+
}), threadRefs && commentedClassName, classNames),
|
|
354
|
+
dataRefs: threadRefs
|
|
355
|
+
};
|
|
356
|
+
};
|
|
357
|
+
var gridCellGetter = (model) => {
|
|
358
|
+
const cachedGridCells = {};
|
|
359
|
+
return (nextBounds) => {
|
|
360
|
+
[
|
|
361
|
+
...Array(nextBounds.end.col - nextBounds.start.col)
|
|
362
|
+
].forEach((_, c0) => {
|
|
363
|
+
return [
|
|
364
|
+
...Array(nextBounds.end.row - nextBounds.start.row)
|
|
365
|
+
].forEach((_2, r0) => {
|
|
366
|
+
const col = nextBounds.start.col + c0;
|
|
367
|
+
const row = nextBounds.start.row + r0;
|
|
368
|
+
cachedGridCells[`${col},${row}`] = projectCellProps(model, col, row);
|
|
369
|
+
});
|
|
370
|
+
});
|
|
371
|
+
return cachedGridCells;
|
|
372
|
+
};
|
|
373
|
+
};
|
|
374
|
+
var rowLabelCell = (row) => ({
|
|
375
|
+
value: rowToA1Notation(row),
|
|
376
|
+
className: "!bg-toolbarSurface text-subdued text-end pie-1",
|
|
377
|
+
resizeHandle: "row"
|
|
378
|
+
});
|
|
379
|
+
var colLabelCell = (col) => ({
|
|
380
|
+
value: colToA1Notation(col),
|
|
381
|
+
className: "!bg-toolbarSurface text-subdued",
|
|
382
|
+
resizeHandle: "col"
|
|
383
|
+
});
|
|
384
|
+
var cellGetter = (model) => {
|
|
385
|
+
const getGridCells = gridCellGetter(model);
|
|
386
|
+
return (nextBounds, plane) => {
|
|
387
|
+
switch (plane) {
|
|
388
|
+
case "grid":
|
|
389
|
+
return getGridCells(nextBounds);
|
|
390
|
+
case "fixedStartStart": {
|
|
391
|
+
return {
|
|
392
|
+
"0,0": {
|
|
393
|
+
className: "!bg-toolbarSurface"
|
|
394
|
+
}
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
case "frozenColsStart":
|
|
398
|
+
return [
|
|
399
|
+
...Array(nextBounds.end.row - nextBounds.start.row)
|
|
400
|
+
].reduce((acc, _, r0) => {
|
|
401
|
+
const r = nextBounds.start.row + r0;
|
|
402
|
+
acc[`0,${r}`] = rowLabelCell(r);
|
|
403
|
+
return acc;
|
|
404
|
+
}, {});
|
|
405
|
+
case "frozenRowsStart":
|
|
406
|
+
return [
|
|
407
|
+
...Array(nextBounds.end.col - nextBounds.start.col)
|
|
408
|
+
].reduce((acc, _, c0) => {
|
|
409
|
+
const c = nextBounds.start.col + c0;
|
|
410
|
+
acc[`${c},0`] = colLabelCell(c);
|
|
411
|
+
return acc;
|
|
412
|
+
}, {});
|
|
413
|
+
default:
|
|
414
|
+
return {};
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
};
|
|
418
|
+
var useSheetModelDxGridProps = (dxGrid, model) => {
|
|
419
|
+
const [columns, setColumns] = useState2(createDxGridColumns(model));
|
|
420
|
+
const [rows, setRows] = useState2(createDxGridRows(model));
|
|
421
|
+
useEffect2(() => {
|
|
422
|
+
const cellsAccessor = createDocAccessor(model.sheet, [
|
|
423
|
+
"cells"
|
|
424
|
+
]);
|
|
425
|
+
if (dxGrid) {
|
|
426
|
+
dxGrid.getCells = cellGetter(model);
|
|
427
|
+
}
|
|
428
|
+
const handleCellsUpdate = () => {
|
|
429
|
+
dxGrid?.requestUpdate("initialCells");
|
|
430
|
+
};
|
|
431
|
+
cellsAccessor.handle.addListener("change", handleCellsUpdate);
|
|
432
|
+
const unsubscribe = model.graph.update.on(handleCellsUpdate);
|
|
433
|
+
return () => {
|
|
434
|
+
cellsAccessor.handle.removeListener("change", handleCellsUpdate);
|
|
435
|
+
unsubscribe();
|
|
436
|
+
};
|
|
437
|
+
}, [
|
|
438
|
+
model,
|
|
439
|
+
dxGrid
|
|
440
|
+
]);
|
|
441
|
+
useEffect2(() => {
|
|
442
|
+
const columnMetaAccessor = createDocAccessor(model.sheet, [
|
|
443
|
+
"columnMeta"
|
|
444
|
+
]);
|
|
445
|
+
const rowMetaAccessor = createDocAccessor(model.sheet, [
|
|
446
|
+
"rowMeta"
|
|
447
|
+
]);
|
|
448
|
+
const handleColumnMetaUpdate = () => {
|
|
449
|
+
setColumns(createDxGridColumns(model));
|
|
450
|
+
};
|
|
451
|
+
const handleRowMetaUpdate = () => {
|
|
452
|
+
setRows(createDxGridRows(model));
|
|
453
|
+
};
|
|
454
|
+
columnMetaAccessor.handle.addListener("change", handleColumnMetaUpdate);
|
|
455
|
+
rowMetaAccessor.handle.addListener("change", handleRowMetaUpdate);
|
|
456
|
+
return () => {
|
|
457
|
+
columnMetaAccessor.handle.removeListener("change", handleColumnMetaUpdate);
|
|
458
|
+
rowMetaAccessor.handle.removeListener("change", handleRowMetaUpdate);
|
|
459
|
+
};
|
|
460
|
+
}, [
|
|
461
|
+
model,
|
|
462
|
+
dxGrid
|
|
463
|
+
]);
|
|
464
|
+
return {
|
|
465
|
+
columns,
|
|
466
|
+
rows
|
|
467
|
+
};
|
|
468
|
+
};
|
|
469
|
+
|
|
470
470
|
// src/components/GridSheet/GridSheet.tsx
|
|
471
471
|
var inertPosition = {
|
|
472
472
|
plane: "grid",
|
|
@@ -833,7 +833,7 @@ var GridSheet = () => {
|
|
|
833
833
|
};
|
|
834
834
|
|
|
835
835
|
// src/components/index.ts
|
|
836
|
-
var SheetContainer = lazy(() => import("./SheetContainer-
|
|
836
|
+
var SheetContainer = lazy(() => import("./SheetContainer-JZNFXBW3.mjs"));
|
|
837
837
|
|
|
838
838
|
export {
|
|
839
839
|
ComputeGraphContextProvider,
|
|
@@ -844,4 +844,4 @@ export {
|
|
|
844
844
|
RangeList,
|
|
845
845
|
SheetContainer
|
|
846
846
|
};
|
|
847
|
-
//# sourceMappingURL=chunk-
|
|
847
|
+
//# sourceMappingURL=chunk-BVTHIA5U.mjs.map
|