@dxos/plugin-sheet 0.6.14-main.8b352a0 → 0.6.14-staging.3e2eaca
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-R65IDJHN.mjs → SheetContainer-P3NF5KEI.mjs} +49 -43
- package/dist/lib/browser/SheetContainer-P3NF5KEI.mjs.map +7 -0
- package/dist/lib/browser/{chunk-I2DKJ72A.mjs → chunk-4LKIURJA.mjs} +283 -84
- package/dist/lib/browser/chunk-4LKIURJA.mjs.map +7 -0
- package/dist/lib/browser/{chunk-5KVQ5IPW.mjs → chunk-BVUN7SHF.mjs} +4 -2
- package/dist/lib/browser/chunk-BVUN7SHF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-D3QTX46O.mjs → chunk-RABELMEQ.mjs} +3 -2
- package/dist/lib/browser/{chunk-D3QTX46O.mjs.map → chunk-RABELMEQ.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-KCYJSOFB.mjs → chunk-VMSX6Z4X.mjs} +51 -17
- package/dist/lib/browser/chunk-VMSX6Z4X.mjs.map +7 -0
- package/dist/lib/browser/{compute-graph-SJT67236.mjs → compute-graph-GGWUX644.mjs} +4 -4
- package/dist/lib/browser/index.mjs +38 -10
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/meta.mjs +1 -1
- package/dist/lib/browser/types.mjs +2 -2
- package/dist/lib/node/{SheetContainer-6BO4C5X2.cjs → SheetContainer-MPFKXY26.cjs} +67 -62
- package/dist/lib/node/SheetContainer-MPFKXY26.cjs.map +7 -0
- package/dist/lib/node/{chunk-QIFIGEKV.cjs → chunk-2ZVZI2KJ.cjs} +6 -5
- package/dist/lib/node/{chunk-QIFIGEKV.cjs.map → chunk-2ZVZI2KJ.cjs.map} +3 -3
- package/dist/lib/node/{chunk-2XJ5I4UF.cjs → chunk-AWKOWDMI.cjs} +8 -6
- package/dist/lib/node/chunk-AWKOWDMI.cjs.map +7 -0
- package/dist/lib/node/{chunk-JF5XNTF3.cjs → chunk-O7XR4R7Y.cjs} +61 -26
- package/dist/lib/node/chunk-O7XR4R7Y.cjs.map +7 -0
- package/dist/lib/node/{chunk-DEPJHN47.cjs → chunk-OO24XJBV.cjs} +318 -120
- package/dist/lib/node/chunk-OO24XJBV.cjs.map +7 -0
- package/dist/lib/node/{compute-graph-AQBDL7HO.cjs → compute-graph-KGWA2QLE.cjs} +21 -21
- package/dist/lib/node/{compute-graph-AQBDL7HO.cjs.map → compute-graph-KGWA2QLE.cjs.map} +2 -2
- package/dist/lib/node/index.cjs +66 -38
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.cjs +3 -3
- package/dist/lib/node/meta.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types.cjs +7 -7
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/lib/node-esm/{SheetContainer-MJXC5E3P.mjs → SheetContainer-22IOAW3B.mjs} +49 -43
- package/dist/lib/node-esm/SheetContainer-22IOAW3B.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-VCYJWE3O.mjs → chunk-BM2Q3FFC.mjs} +3 -2
- package/dist/lib/node-esm/{chunk-VCYJWE3O.mjs.map → chunk-BM2Q3FFC.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-25V7WY4R.mjs → chunk-BW36PM2Y.mjs} +283 -84
- package/dist/lib/node-esm/chunk-BW36PM2Y.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-XBEHKYO7.mjs → chunk-CR4K75EL.mjs} +51 -17
- package/dist/lib/node-esm/chunk-CR4K75EL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-5TXLF6PL.mjs → chunk-UIBWRHW7.mjs} +4 -2
- package/dist/lib/node-esm/chunk-UIBWRHW7.mjs.map +7 -0
- package/dist/lib/node-esm/{compute-graph-FRCKXEYK.mjs → compute-graph-2SCZT7N5.mjs} +4 -4
- package/dist/lib/node-esm/index.mjs +38 -10
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/meta.mjs +1 -1
- package/dist/lib/node-esm/types.mjs +2 -2
- package/dist/types/src/SheetPlugin.d.ts.map +1 -1
- package/dist/types/src/components/FunctionEditor/FunctionEditor.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/util.d.ts +1 -0
- 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/Toolbar/Toolbar.d.ts +5 -2
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/compute-graph/compute-graph.d.ts +2 -2
- package/dist/types/src/compute-graph/compute-graph.d.ts.map +1 -1
- package/dist/types/src/compute-graph/functions/async-function.d.ts.map +1 -1
- package/dist/types/src/compute-graph/functions/edge-function.d.ts.map +1 -1
- package/dist/types/src/defs/sheet-range-types.d.ts +1 -1
- package/dist/types/src/defs/sheet-range-types.d.ts.map +1 -1
- package/dist/types/src/defs/util.d.ts +1 -1
- package/dist/types/src/defs/util.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/model/sheet-model.d.ts +12 -5
- package/dist/types/src/model/sheet-model.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +10 -5
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +33 -3
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +37 -36
- package/src/SheetPlugin.tsx +20 -0
- package/src/components/FunctionEditor/FunctionEditor.tsx +1 -5
- package/src/components/GridSheet/GridSheet.tsx +102 -38
- package/src/components/GridSheet/util.ts +19 -9
- package/src/components/SheetContainer/SheetContainer.stories.tsx +2 -0
- package/src/components/SheetContainer/SheetContainer.tsx +9 -8
- package/src/components/Toolbar/Toolbar.tsx +62 -53
- package/src/compute-graph/compute-graph.ts +22 -7
- package/src/compute-graph/functions/async-function.ts +1 -0
- package/src/compute-graph/functions/edge-function.ts +5 -3
- package/src/defs/sheet-range-types.ts +4 -2
- package/src/defs/util.ts +1 -0
- package/src/meta.ts +1 -0
- package/src/model/sheet-model.test.ts +5 -3
- package/src/model/sheet-model.ts +93 -21
- package/src/translations.ts +10 -5
- package/src/types.ts +20 -0
- package/dist/lib/browser/SheetContainer-R65IDJHN.mjs.map +0 -7
- package/dist/lib/browser/chunk-5KVQ5IPW.mjs.map +0 -7
- package/dist/lib/browser/chunk-I2DKJ72A.mjs.map +0 -7
- package/dist/lib/browser/chunk-KCYJSOFB.mjs.map +0 -7
- package/dist/lib/node/SheetContainer-6BO4C5X2.cjs.map +0 -7
- package/dist/lib/node/chunk-2XJ5I4UF.cjs.map +0 -7
- package/dist/lib/node/chunk-DEPJHN47.cjs.map +0 -7
- package/dist/lib/node/chunk-JF5XNTF3.cjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-MJXC5E3P.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-25V7WY4R.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5TXLF6PL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XBEHKYO7.mjs.map +0 -7
- /package/dist/lib/browser/{compute-graph-SJT67236.mjs.map → compute-graph-GGWUX644.mjs.map} +0 -0
- /package/dist/lib/node-esm/{compute-graph-FRCKXEYK.mjs.map → compute-graph-2SCZT7N5.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/Toolbar/Toolbar.tsx", "../../../src/components/SheetContainer/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Space } 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 { Toolbar } from '../Toolbar';\n\nexport const SheetContainer = ({ space, sheet, role }: { space: Space; sheet: SheetType; role?: string }) => {\n const graph = useComputeGraph(space);\n\n return graph ? (\n <SheetProvider sheet={sheet} graph={graph}>\n <StackItem.Content toolbar statusbar classNames='border-bs border-separator'>\n <Toolbar.Root role={role}>\n <Toolbar.Styles />\n <Toolbar.Alignment />\n <Toolbar.Separator />\n <Toolbar.Actions />\n </Toolbar.Root>\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 { Icon } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { addressToA1Notation, isFormula, rangeToA1Notation } from '../../defs';\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(model.mapFormulaIndicesToRefs(value));\n formula = true;\n } else if (value != null) {\n value = String(value);\n }\n }\n\n return (\n <div className={mx('flex shrink-0 justify-between items-center px-4 py-1 text-sm attention-surface')}>\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 { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren, useCallback } from 'react';\n\nimport { useIntentDispatcher } from '@dxos/app-framework';\nimport {\n Icon,\n type ThemedClassName,\n Toolbar as NaturalToolbar,\n type ToolbarButtonProps as NaturalToolbarButtonProps,\n type ToolbarToggleGroupItemProps as NaturalToolbarToggleGroupItemProps,\n type ToolbarToggleProps as NaturalToolbarToggleProps,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { nonNullable } from '@dxos/util';\n\nimport {\n alignKey,\n type AlignKey,\n type AlignValue,\n type CommentKey,\n type CommentValue,\n inRange,\n rangeFromIndex,\n rangeToIndex,\n styleKey,\n type StyleKey,\n type StyleValue,\n} from '../../defs';\nimport { completeCellRangeToThreadCursor } from '../../integrations';\nimport { SHEET_PLUGIN } from '../../meta';\nimport { type SheetType } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\n//\n// Buttons\n//\n\nconst buttonStyles = 'min-bs-0 p-2';\nconst tooltipProps = { side: 'bottom' as const, classNames: 'z-10' };\n\nconst ToolbarSeparator = () => <div role='separator' className='grow' />;\n\n//\n// ToolbarItem\n//\n\ntype ToolbarItemProps =\n | (NaturalToolbarButtonProps & { itemType: 'button'; icon: string })\n | (NaturalToolbarToggleGroupItemProps & { itemType: 'toggleGroupItem'; icon: string })\n | (NaturalToolbarToggleProps & { itemType: 'toggle'; icon: string });\n\nexport const ToolbarItem = ({ itemType, icon, children, ...props }: ToolbarItemProps) => {\n const Invoker =\n itemType === 'toggleGroupItem'\n ? NaturalToolbar.ToggleGroupItem\n : itemType === 'toggle'\n ? NaturalToolbar.Toggle\n : NaturalToolbar.Button;\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n {/* TODO(thure): type the props spread better. */}\n <Invoker variant='ghost' {...(props as any)} classNames={buttonStyles}>\n <Icon icon={icon} size={5} />\n <span className='sr-only'>{children}</span>\n </Invoker>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content {...tooltipProps}>\n {children}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\n//\n// Root\n//\n\ntype AlignAction = { key: AlignKey; value: AlignValue };\ntype CommentAction = { key: CommentKey; value: CommentValue; cellContent?: string };\ntype StyleAction = { key: StyleKey; value: StyleValue };\n\nexport type ToolbarAction = StyleAction | AlignAction | CommentAction;\nexport type ToolbarActionAnnotated = ToolbarAction & { unset?: boolean };\n\nexport type ToolbarActionType = ToolbarAction['key'];\n\nexport type ToolbarActionHandler = (action: ToolbarActionAnnotated) => void;\n\nexport type ToolbarProps = ThemedClassName<\n PropsWithChildren<{\n role?: string;\n }>\n>;\n\nconst [ToolbarContextProvider, useToolbarContext] = createContext<{\n onAction: (action: ToolbarActionAnnotated) => void;\n}>('Toolbar');\n\ntype Range = SheetType['ranges'][number];\n\nconst ToolbarRoot = ({ children, role, classNames }: ToolbarProps) => {\n const { id, model, cursorFallbackRange, cursor } = useSheetContext();\n const { hasAttention } = useAttention(id);\n const dispatch = useIntentDispatcher();\n\n // TODO(Zan): Externalize the toolbar action handler. E.g., Toolbar/keys should both fire events.\n const handleAction = useCallback(\n (action: ToolbarActionAnnotated) => {\n switch (action.key) {\n case 'alignment':\n if (cursorFallbackRange) {\n const index =\n model.sheet.ranges?.findIndex(\n (range) =>\n range.key === action.key &&\n inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: action.key,\n value: action.value,\n };\n if (index < 0) {\n model.sheet.ranges?.push(nextRangeEntity);\n } else if (model.sheet.ranges![index].value === action.value) {\n model.sheet.ranges?.splice(index, 1);\n } else {\n model.sheet.ranges?.splice(index, 1, nextRangeEntity);\n }\n }\n break;\n case 'style':\n if (action.unset) {\n const index = model.sheet.ranges?.findIndex(\n (range) =>\n range.key === action.key &&\n cursorFallbackRange &&\n inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n );\n if (index >= 0) {\n model.sheet.ranges?.splice(index, 1);\n }\n } else if (cursorFallbackRange) {\n model.sheet.ranges?.push({\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: action.key,\n value: action.value,\n });\n }\n break;\n case 'comment': {\n // TODO(Zan): We shouldn't hardcode the action ID.\n if (cursorFallbackRange) {\n void dispatch({\n action: 'dxos.org/plugin/thread/action/create',\n data: {\n cursor: completeCellRangeToThreadCursor(cursorFallbackRange),\n name: action.cellContent,\n subject: model.sheet,\n },\n });\n }\n }\n }\n },\n [model.sheet, cursorFallbackRange, cursor, dispatch],\n );\n\n return (\n <ToolbarContextProvider onAction={handleAction}>\n <NaturalToolbar.Root classNames={['pli-0.5', !hasAttention && 'opacity-20', classNames]}>\n {children}\n </NaturalToolbar.Root>\n </ToolbarContextProvider>\n );\n};\n\n// TODO(burdon): Generalize.\n// TODO(burdon): Detect and display current state.\ntype ButtonProps<T> = {\n value: T;\n icon: string;\n disabled?: (state: Range) => boolean;\n};\n\n//\n// Alignment\n//\n\nconst alignmentOptions: ButtonProps<AlignValue>[] = [\n { value: 'start', icon: 'ph--text-align-left--regular' },\n { value: 'center', icon: 'ph--text-align-center--regular' },\n { value: 'end', icon: 'ph--text-align-right--regular' },\n];\n\nconst Alignment = () => {\n const { cursor, model } = useSheetContext();\n const { onAction } = useToolbarContext('Alignment');\n const { t } = useTranslation(SHEET_PLUGIN);\n\n // TODO(thure): Can this O(n) call be memoized?\n const value = cursor\n ? model.sheet.ranges?.findLast(\n ({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor),\n )?.value\n : undefined;\n\n return (\n <NaturalToolbar.ToggleGroup\n type='single'\n value={\n // TODO(thure): providing `undefined` leaves the last item active which was active rather than showing none.\n value ?? 'never'\n }\n onValueChange={(value: AlignValue) => onAction?.({ key: alignKey, value })}\n >\n {alignmentOptions.map(({ value, icon }) => (\n <ToolbarItem itemType='toggleGroupItem' key={value} value={value} icon={icon}>\n {t('toolbar action label', {\n key: t(`range key ${alignKey} label`),\n value: t(`range value ${value} label`),\n })}\n </ToolbarItem>\n ))}\n </NaturalToolbar.ToggleGroup>\n );\n};\n\nconst styleOptions: ButtonProps<StyleValue>[] = [\n { value: 'highlight', icon: 'ph--highlighter--regular' },\n { value: 'softwrap', icon: 'ph--paragraph--regular' },\n];\n\nconst Styles = () => {\n const { cursorFallbackRange, model } = useSheetContext();\n const { onAction } = useToolbarContext('Styles');\n const { t } = useTranslation(SHEET_PLUGIN);\n\n // TODO(thure): Can this O(n) call be memoized?\n const activeValues = cursorFallbackRange\n ? model.sheet.ranges\n ?.filter(\n ({ range, key }) => key === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .reduce((acc, { value }) => {\n acc.add(value);\n return acc;\n }, new Set())\n : undefined;\n\n return (\n <>\n {styleOptions.map(({ value, icon }) => (\n <ToolbarItem\n itemType='toggle'\n key={value}\n pressed={activeValues?.has(value)}\n onPressedChange={(nextPressed: boolean) => {\n onAction?.({ key: 'style', value, unset: !nextPressed });\n }}\n icon={icon}\n >\n {t('toolbar action label', {\n key: t(`range key ${styleKey} label`),\n value: t(`range value ${value} label`),\n })}\n </ToolbarItem>\n ))}\n </>\n );\n};\n\n//\n// Actions\n//\n\nconst Actions = () => {\n const { onAction } = useToolbarContext('Actions');\n const { cursorFallbackRange, cursor, model } = useSheetContext();\n const { t } = useTranslation(SHEET_PLUGIN);\n\n // TODO(thure): Can this O(n) call be memoized?\n const overlapsCommentAnchor = (model.sheet.threads ?? [])\n .filter(nonNullable)\n .filter((thread) => thread.status !== 'resolved')\n .some((thread) => {\n if (!cursorFallbackRange) {\n return false;\n }\n return rangeToIndex(model.sheet, cursorFallbackRange) === thread.anchor;\n });\n\n const tooltipLabelKey = !cursor\n ? 'no cursor label'\n : overlapsCommentAnchor\n ? 'selection overlaps existing comment label'\n : 'comment label';\n\n return (\n <ToolbarItem\n itemType='button'\n value='comment'\n icon='ph--chat-text--regular'\n data-testid='editor.toolbar.comment'\n onClick={() => {\n if (!cursorFallbackRange) {\n return;\n }\n return onAction?.({\n key: 'comment',\n value: rangeToIndex(model.sheet, cursorFallbackRange),\n cellContent: model.getCellText(cursorFallbackRange.from),\n });\n }}\n disabled={!cursorFallbackRange || overlapsCommentAnchor}\n >\n {t(tooltipLabelKey)}\n </ToolbarItem>\n );\n};\n\nexport const Toolbar = {\n Root: ToolbarRoot,\n Separator: ToolbarSeparator,\n Alignment,\n Styles,\n Actions,\n};\n\nexport { useToolbarContext };\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": ["import_react", "import_react_ui", "FunctionEditor", "model", "cursor", "range", "useSheetContext", "value", "formula", "getCellValue", "isFormula", "graph", "mapFunctionBindingFromId", "mapFormulaIndicesToRefs", "String", "React", "div", "className", "mx", "rangeToA1Notation", "addressToA1Notation", "Icon", "icon", "classNames", "span", "buttonStyles", "tooltipProps", "side", "ToolbarSeparator", "role", "ToolbarItem", "itemType", "children", "props", "Invoker", "NaturalToolbar", "ToggleGroupItem", "Toggle", "Button", "Tooltip", "Root", "Trigger", "asChild", "variant", "size", "Portal", "Content", "Arrow", "ToolbarContextProvider", "useToolbarContext", "createContext", "ToolbarRoot", "id", "cursorFallbackRange", "hasAttention", "useAttention", "dispatch", "useIntentDispatcher", "handleAction", "useCallback", "action", "key", "index", "sheet", "ranges", "findIndex", "inRange", "rangeFromIndex", "from", "nextRangeEntity", "rangeToIndex", "push", "splice", "unset", "data", "completeCellRangeToThreadCursor", "name", "cellContent", "subject", "onAction", "alignmentOptions", "Alignment", "t", "useTranslation", "SHEET_PLUGIN", "findLast", "alignKey", "undefined", "ToggleGroup", "type", "onValueChange", "map", "styleOptions", "Styles", "activeValues", "filter", "reduce", "acc", "add", "Set", "pressed", "has", "onPressedChange", "nextPressed", "styleKey", "Actions", "overlapsCommentAnchor", "threads", "nonNullable", "thread", "status", "some", "anchor", "tooltipLabelKey", "data-testid", "onClick", "getCellText", "disabled", "Toolbar", "Separator", "SheetContainer", "space", "useComputeGraph", "SheetProvider", "StackItem", "toolbar", "statusbar", "GridSheet"]
|
|
7
|
+
}
|
|
@@ -16,22 +16,23 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_2ZVZI2KJ_exports = {};
|
|
20
|
+
__export(chunk_2ZVZI2KJ_exports, {
|
|
21
21
|
SHEET_PLUGIN: () => SHEET_PLUGIN,
|
|
22
22
|
meta_default: () => meta_default
|
|
23
23
|
});
|
|
24
|
-
module.exports = __toCommonJS(
|
|
24
|
+
module.exports = __toCommonJS(chunk_2ZVZI2KJ_exports);
|
|
25
25
|
var SHEET_PLUGIN = "dxos.org/plugin/sheet";
|
|
26
26
|
var meta_default = {
|
|
27
27
|
id: SHEET_PLUGIN,
|
|
28
28
|
name: "Sheet",
|
|
29
29
|
description: "A simple spreadsheet plugin.",
|
|
30
|
-
icon: "ph--grid-nine--regular"
|
|
30
|
+
icon: "ph--grid-nine--regular",
|
|
31
|
+
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet"
|
|
31
32
|
};
|
|
32
33
|
// Annotate the CommonJS export names for ESM import in node:
|
|
33
34
|
0 && (module.exports = {
|
|
34
35
|
SHEET_PLUGIN,
|
|
35
36
|
meta_default
|
|
36
37
|
});
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
38
|
+
//# sourceMappingURL=chunk-2ZVZI2KJ.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const SHEET_PLUGIN = 'dxos.org/plugin/sheet';\n\nexport default {\n id: SHEET_PLUGIN,\n name: 'Sheet',\n description: 'A simple spreadsheet plugin.',\n icon: 'ph--grid-nine--regular',\n} satisfies PluginMeta;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,eAAe;AAE5B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;EACNC,aAAa;EACbC,MAAM;
|
|
6
|
-
"names": ["SHEET_PLUGIN", "id", "name", "description", "icon"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const SHEET_PLUGIN = 'dxos.org/plugin/sheet';\n\nexport default {\n id: SHEET_PLUGIN,\n name: 'Sheet',\n description: 'A simple spreadsheet plugin.',\n icon: 'ph--grid-nine--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet',\n} satisfies PluginMeta;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,eAAe;AAE5B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;AACV;",
|
|
6
|
+
"names": ["SHEET_PLUGIN", "id", "name", "description", "icon", "source"]
|
|
7
7
|
}
|
|
@@ -16,22 +16,24 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_AWKOWDMI_exports = {};
|
|
20
|
+
__export(chunk_AWKOWDMI_exports, {
|
|
21
21
|
CellValue: () => CellValue,
|
|
22
22
|
Range: () => Range,
|
|
23
23
|
RowColumnMeta: () => RowColumnMeta,
|
|
24
24
|
SheetAction: () => SheetAction,
|
|
25
25
|
SheetType: () => SheetType
|
|
26
26
|
});
|
|
27
|
-
module.exports = __toCommonJS(
|
|
28
|
-
var
|
|
27
|
+
module.exports = __toCommonJS(chunk_AWKOWDMI_exports);
|
|
28
|
+
var import_chunk_2ZVZI2KJ = require("./chunk-2ZVZI2KJ.cjs");
|
|
29
29
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
30
30
|
var import_types = require("@dxos/plugin-space/types");
|
|
31
|
-
var SHEET_ACTION = `${
|
|
31
|
+
var SHEET_ACTION = `${import_chunk_2ZVZI2KJ.SHEET_PLUGIN}/action`;
|
|
32
32
|
var SheetAction;
|
|
33
33
|
(function(SheetAction2) {
|
|
34
34
|
SheetAction2[SheetAction2["CREATE"] = `${SHEET_ACTION}/create`] = "CREATE";
|
|
35
|
+
SheetAction2[SheetAction2["INSERT_AXIS"] = `${SHEET_ACTION}/axis-insert`] = "INSERT_AXIS";
|
|
36
|
+
SheetAction2[SheetAction2["DROP_AXIS"] = `${SHEET_ACTION}/axis-drop`] = "DROP_AXIS";
|
|
35
37
|
})(SheetAction || (SheetAction = {}));
|
|
36
38
|
var CellValue = import_echo_schema.S.Struct({
|
|
37
39
|
// TODO(burdon): How to store dates (datetime, date, time), percentages, etc.
|
|
@@ -85,4 +87,4 @@ var SheetType = class extends (0, import_echo_schema.TypedObject)({
|
|
|
85
87
|
SheetAction,
|
|
86
88
|
SheetType
|
|
87
89
|
});
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
90
|
+
//# sourceMappingURL=chunk-AWKOWDMI.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n IntentResolverProvides,\n MetadataRecordsProvides,\n SurfaceProvides,\n TranslationsProvides,\n IntentData,\n} from '@dxos/app-framework';\nimport { ref, S, TypedObject } from '@dxos/echo-schema';\nimport { type SchemaProvides } from '@dxos/plugin-client';\nimport { type MarkdownExtensionProvides } from '@dxos/plugin-markdown';\nimport { type SpaceInitProvides } from '@dxos/plugin-space';\nimport { ThreadType } from '@dxos/plugin-space/types';\nimport { type StackProvides } from '@dxos/plugin-stack';\nimport { type DxGridAxis } from '@dxos/react-ui-grid';\n\nimport { SHEET_PLUGIN } from './meta';\nimport { type SheetModel } from './model';\n\nconst SHEET_ACTION = `${SHEET_PLUGIN}/action`;\n\nexport enum SheetAction {\n CREATE = `${SHEET_ACTION}/create`,\n INSERT_AXIS = `${SHEET_ACTION}/axis-insert`,\n DROP_AXIS = `${SHEET_ACTION}/axis-drop`,\n}\n\nexport type RestoreAxis = {\n axis: DxGridAxis;\n axisIndex: string;\n index: number;\n axisMeta?: S.Schema.Type<typeof RowColumnMeta>;\n values: CellScalarValue[];\n};\n\nexport namespace SheetAction {\n export type Create = IntentData<{ sheet: SheetType }>;\n export type InsertAxis = IntentData<{ model: SheetModel; axis: DxGridAxis; index: number; count?: number }>;\n export type DropAxis = IntentData<{ model: SheetModel; axis: DxGridAxis; axisIndex: string }>;\n export type DropAxisRestore = IntentData<RestoreAxis & { model: SheetModel }>;\n}\n\n// TODO(Zan): Move this to the plugin-space plugin or another common location\n// when we implement comments in sheets.\n// This is currently duplicated in a few places.\ntype ThreadProvides<T> = {\n thread: {\n predicate: (obj: any) => obj is T;\n createSort: (obj: T) => (anchorA: string | undefined, anchorB: string | undefined) => number;\n };\n};\n\nexport type SheetPluginProvides = SurfaceProvides &\n IntentResolverProvides &\n GraphBuilderProvides &\n MarkdownExtensionProvides &\n MetadataRecordsProvides &\n TranslationsProvides &\n SchemaProvides &\n SpaceInitProvides &\n StackProvides &\n ThreadProvides<SheetType>;\n\nexport type CellScalarValue = number | string | boolean | null;\n\nexport const CellValue = S.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: S.Any,\n});\n\nexport type CellValue = S.Schema.Type<typeof CellValue>;\n\n// TODO(burdon): IMPORTANT: Reconcile with Field definition.\nexport const Range = S.Struct({\n range: S.String,\n key: S.String,\n value: S.String,\n});\n\nexport type Range = S.Schema.Type<typeof Range>;\n\n// TODO(burdon): Visibility, locked, frozen, etc.\nexport const RowColumnMeta = S.Struct({\n size: S.optional(S.Number),\n});\n\n// TODO(burdon): Index to all updates when rows/columns are inserted/deleted.\nexport class SheetType extends TypedObject({ typename: 'dxos.org/type/Sheet', version: '0.1.0' })({\n name: S.optional(S.String),\n\n // Sparse map of cells referenced by index.\n cells: S.mutable(S.Record({ key: S.String, value: S.mutable(CellValue) })),\n\n // Ordered row indices.\n rows: S.mutable(S.Array(S.String)),\n\n // Ordered column indices.\n columns: S.mutable(S.Array(S.String)),\n\n // Row metadata referenced by index.\n rowMeta: S.mutable(S.Record({ key: S.String, value: S.mutable(RowColumnMeta) })),\n\n // Column metadata referenced by index.\n columnMeta: S.mutable(S.Record({ key: S.String, value: S.mutable(RowColumnMeta) })),\n\n // Cell formatting referenced by indexed range.\n ranges: S.mutable(S.Array(Range)),\n\n // Threads associated with the sheet\n threads: S.optional(S.mutable(S.Array(ref(ThreadType)))),\n}) {}\n\nexport type SheetSize = {\n rows: number;\n columns: number;\n};\n\nexport type CreateSheetOptions = {\n name?: string;\n cells?: Record<string, CellValue>;\n} & Partial<SheetSize>;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,yBAAoC;AAIpC,mBAA2B;AAO3B,IAAMA,eAAe,GAAGC,kCAAAA;;UAEZC,cAAAA;wCACD,GAAGF,YAAAA,SAAqB,IAAA;6CACnB,GAAGA,YAAAA,cAA0B,IAAA;2CAC/B,GAAGA,YAAAA,YAAwB,IAAA;GAH7BE,gBAAAA,cAAAA,CAAAA,EAAAA;AA4CL,IAAMC,YAAYC,qBAAEC,OAAO;;;;EAIhCC,OAAOF,qBAAEG;AACX,CAAA;AAKO,IAAMC,QAAQJ,qBAAEC,OAAO;EAC5BI,OAAOL,qBAAEM;EACTC,KAAKP,qBAAEM;EACPJ,OAAOF,qBAAEM;AACX,CAAA;AAKO,IAAME,gBAAgBR,qBAAEC,OAAO;EACpCQ,MAAMT,qBAAEU,SAASV,qBAAEW,MAAM;AAC3B,CAAA;AAGO,IAAMC,YAAN,kBAAwBC,gCAAY;EAAEC,UAAU;EAAuBC,SAAS;AAAQ,CAAA,EAAG;EAChGC,MAAMhB,qBAAEU,SAASV,qBAAEM,MAAM;;EAGzBW,OAAOjB,qBAAEkB,QAAQlB,qBAAEmB,OAAO;IAAEZ,KAAKP,qBAAEM;IAAQJ,OAAOF,qBAAEkB,QAAQnB,SAAAA;EAAW,CAAA,CAAA;;EAGvEqB,MAAMpB,qBAAEkB,QAAQlB,qBAAEqB,MAAMrB,qBAAEM,MAAM,CAAA;;EAGhCgB,SAAStB,qBAAEkB,QAAQlB,qBAAEqB,MAAMrB,qBAAEM,MAAM,CAAA;;EAGnCiB,SAASvB,qBAAEkB,QAAQlB,qBAAEmB,OAAO;IAAEZ,KAAKP,qBAAEM;IAAQJ,OAAOF,qBAAEkB,QAAQV,aAAAA;EAAe,CAAA,CAAA;;EAG7EgB,YAAYxB,qBAAEkB,QAAQlB,qBAAEmB,OAAO;IAAEZ,KAAKP,qBAAEM;IAAQJ,OAAOF,qBAAEkB,QAAQV,aAAAA;EAAe,CAAA,CAAA;;EAGhFiB,QAAQzB,qBAAEkB,QAAQlB,qBAAEqB,MAAMjB,KAAAA,CAAAA;;EAG1BsB,SAAS1B,qBAAEU,SAASV,qBAAEkB,QAAQlB,qBAAEqB,UAAMM,wBAAIC,uBAAAA,CAAAA,CAAAA,CAAAA;AAC5C,CAAA,EAAA;AAAI;",
|
|
6
|
+
"names": ["SHEET_ACTION", "SHEET_PLUGIN", "SheetAction", "CellValue", "S", "Struct", "value", "Any", "Range", "range", "String", "key", "RowColumnMeta", "size", "optional", "Number", "SheetType", "TypedObject", "typename", "version", "name", "cells", "mutable", "Record", "rows", "Array", "columns", "rowMeta", "columnMeta", "ranges", "threads", "ref", "ThreadType"]
|
|
7
|
+
}
|
|
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var chunk_O7XR4R7Y_exports = {};
|
|
30
|
+
__export(chunk_O7XR4R7Y_exports, {
|
|
31
31
|
AsyncFunctionPlugin: () => AsyncFunctionPlugin,
|
|
32
32
|
ComputeGraph: () => ComputeGraph,
|
|
33
33
|
ComputeGraphRegistry: () => ComputeGraphRegistry,
|
|
@@ -62,12 +62,14 @@ __export(chunk_JF5XNTF3_exports, {
|
|
|
62
62
|
parseSheetName: () => parseSheetName,
|
|
63
63
|
rangeFromIndex: () => rangeFromIndex,
|
|
64
64
|
rangeToA1Notation: () => rangeToA1Notation,
|
|
65
|
-
rangeToIndex: () => rangeToIndex
|
|
65
|
+
rangeToIndex: () => rangeToIndex,
|
|
66
|
+
styleKey: () => styleKey
|
|
66
67
|
});
|
|
67
|
-
module.exports = __toCommonJS(
|
|
68
|
-
var
|
|
68
|
+
module.exports = __toCommonJS(chunk_O7XR4R7Y_exports);
|
|
69
|
+
var import_chunk_AWKOWDMI = require("./chunk-AWKOWDMI.cjs");
|
|
69
70
|
var import_async = require("@dxos/async");
|
|
70
71
|
var import_echo = require("@dxos/client/echo");
|
|
72
|
+
var import_echo2 = require("@dxos/client/echo");
|
|
71
73
|
var import_context = require("@dxos/context");
|
|
72
74
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
73
75
|
var import_invariant = require("@dxos/invariant");
|
|
@@ -87,7 +89,7 @@ var import_async3 = require("@dxos/async");
|
|
|
87
89
|
var import_log2 = require("@dxos/log");
|
|
88
90
|
var import_hyperformula3 = require("#hyperformula");
|
|
89
91
|
var import_signals_core = require("@preact/signals-core");
|
|
90
|
-
var
|
|
92
|
+
var import_echo3 = require("@dxos/client/echo");
|
|
91
93
|
var import_log3 = require("@dxos/log");
|
|
92
94
|
var import_edge = require("@dxos/plugin-script/edge");
|
|
93
95
|
var import_types2 = require("@dxos/plugin-script/types");
|
|
@@ -119,7 +121,9 @@ var cellClassNameForRange = ({ key, value }) => {
|
|
|
119
121
|
case styleKey:
|
|
120
122
|
switch (value) {
|
|
121
123
|
case "highlight":
|
|
122
|
-
return "bg-gridHighlight";
|
|
124
|
+
return "!bg-gridHighlight";
|
|
125
|
+
case "softwrap":
|
|
126
|
+
return "!whitespace-normal";
|
|
123
127
|
default:
|
|
124
128
|
return void 0;
|
|
125
129
|
}
|
|
@@ -218,6 +222,7 @@ var insertIndices = (indices, i, n, max) => {
|
|
|
218
222
|
}
|
|
219
223
|
const idx = createIndices(n);
|
|
220
224
|
indices.splice(i, 0, ...idx);
|
|
225
|
+
return idx;
|
|
221
226
|
};
|
|
222
227
|
var initialize = (sheet, { rows = DEFAULT_ROWS, columns = DEFAULT_COLUMNS } = {}) => {
|
|
223
228
|
if (!sheet.rows.length) {
|
|
@@ -228,7 +233,7 @@ var initialize = (sheet, { rows = DEFAULT_ROWS, columns = DEFAULT_COLUMNS } = {}
|
|
|
228
233
|
}
|
|
229
234
|
};
|
|
230
235
|
var createSheet = ({ name, cells, ...size } = {}) => {
|
|
231
|
-
const sheet = (0, import_echo_schema2.create)(
|
|
236
|
+
const sheet = (0, import_echo_schema2.create)(import_chunk_AWKOWDMI.SheetType, {
|
|
232
237
|
name,
|
|
233
238
|
cells: {},
|
|
234
239
|
rows: [],
|
|
@@ -344,6 +349,12 @@ var FunctionContext = class _FunctionContext {
|
|
|
344
349
|
this._invocations = {};
|
|
345
350
|
this._options = (0, import_lodash.default)(_options ?? {}, defaultFunctionContextOptions);
|
|
346
351
|
this._onUpdate = (0, import_async3.debounce)((update) => {
|
|
352
|
+
(0, import_log2.log)("update", update, {
|
|
353
|
+
F: __dxlog_file2,
|
|
354
|
+
L: 86,
|
|
355
|
+
S: this,
|
|
356
|
+
C: (f, a) => f(...a)
|
|
357
|
+
});
|
|
347
358
|
this._hf.resumeEvaluation();
|
|
348
359
|
this._options.onUpdate?.(update);
|
|
349
360
|
}, this._options.debounceDelay);
|
|
@@ -396,7 +407,7 @@ var FunctionContext = class _FunctionContext {
|
|
|
396
407
|
value: value2
|
|
397
408
|
}, {
|
|
398
409
|
F: __dxlog_file2,
|
|
399
|
-
L:
|
|
410
|
+
L: 144,
|
|
400
411
|
S: this,
|
|
401
412
|
C: (f, a) => f(...a)
|
|
402
413
|
});
|
|
@@ -410,7 +421,7 @@ var FunctionContext = class _FunctionContext {
|
|
|
410
421
|
err
|
|
411
422
|
}, {
|
|
412
423
|
F: __dxlog_file2,
|
|
413
|
-
L:
|
|
424
|
+
L: 148,
|
|
414
425
|
S: this,
|
|
415
426
|
C: (f, a) => f(...a)
|
|
416
427
|
});
|
|
@@ -430,7 +441,7 @@ var FunctionContext = class _FunctionContext {
|
|
|
430
441
|
cache: value
|
|
431
442
|
}, {
|
|
432
443
|
F: __dxlog_file2,
|
|
433
|
-
L:
|
|
444
|
+
L: 156,
|
|
434
445
|
S: this,
|
|
435
446
|
C: (f, a) => f(...a)
|
|
436
447
|
});
|
|
@@ -462,7 +473,7 @@ var EdgeFunctionPlugin = class extends AsyncFunctionPlugin {
|
|
|
462
473
|
if (!space) {
|
|
463
474
|
return new import_hyperformula4.CellError(import_hyperformula4.ErrorType.REF, "Missing space");
|
|
464
475
|
}
|
|
465
|
-
const { objects: [fn] } = await space.db.query(
|
|
476
|
+
const { objects: [fn] } = await space.db.query(import_echo3.Filter.schema(import_types2.FunctionType, {
|
|
466
477
|
binding
|
|
467
478
|
})).run();
|
|
468
479
|
if (!fn) {
|
|
@@ -478,7 +489,7 @@ var EdgeFunctionPlugin = class extends AsyncFunctionPlugin {
|
|
|
478
489
|
}
|
|
479
490
|
if (subscribe) {
|
|
480
491
|
const unsubscribe = (0, import_signals_core.effect)(() => {
|
|
481
|
-
import_log3.log
|
|
492
|
+
(0, import_log3.log)("function changed", {
|
|
482
493
|
fn
|
|
483
494
|
}, {
|
|
484
495
|
F: __dxlog_file3,
|
|
@@ -493,8 +504,8 @@ var EdgeFunctionPlugin = class extends AsyncFunctionPlugin {
|
|
|
493
504
|
});
|
|
494
505
|
this.context.createSubscription(ast.procedureName, unsubscribe);
|
|
495
506
|
}
|
|
496
|
-
const path = (0, import_edge.getUserFunctionUrlInMetadata)((0,
|
|
497
|
-
const
|
|
507
|
+
const path = (0, import_edge.getUserFunctionUrlInMetadata)((0, import_echo3.getMeta)(fn));
|
|
508
|
+
const response = await fetch(`${this.context.remoteFunctionUrl}${path}`, {
|
|
498
509
|
method: "POST",
|
|
499
510
|
headers: {
|
|
500
511
|
"Content-Type": "application/json"
|
|
@@ -503,7 +514,16 @@ var EdgeFunctionPlugin = class extends AsyncFunctionPlugin {
|
|
|
503
514
|
args: args.filter(import_util2.nonNullable)
|
|
504
515
|
})
|
|
505
516
|
});
|
|
506
|
-
|
|
517
|
+
const result = await response.text();
|
|
518
|
+
(0, import_log3.log)("function executed", {
|
|
519
|
+
result
|
|
520
|
+
}, {
|
|
521
|
+
F: __dxlog_file3,
|
|
522
|
+
L: 65,
|
|
523
|
+
S: this,
|
|
524
|
+
C: (f, a) => f(...a)
|
|
525
|
+
});
|
|
526
|
+
return result;
|
|
507
527
|
};
|
|
508
528
|
return this.runAsyncFunction(ast, state, handler(true), {
|
|
509
529
|
ttl: FUNCTION_TTL
|
|
@@ -2936,7 +2956,7 @@ var defaultFunctions = [
|
|
|
2936
2956
|
}
|
|
2937
2957
|
];
|
|
2938
2958
|
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/compute-graph/compute-graph.ts";
|
|
2939
|
-
var
|
|
2959
|
+
var UNKNOWN_BINDING = "__UNKNOWN__";
|
|
2940
2960
|
var createSheetName = ({ type, id }) => `${type}@${id}`;
|
|
2941
2961
|
var parseSheetName = (name) => {
|
|
2942
2962
|
const [type, id] = name.split("@");
|
|
@@ -2957,7 +2977,16 @@ var ComputeGraph = class extends import_context.Resource {
|
|
|
2957
2977
|
this._nodes = /* @__PURE__ */ new Map();
|
|
2958
2978
|
this._remoteFunctions = [];
|
|
2959
2979
|
this.update = new import_async.Event();
|
|
2960
|
-
|
|
2980
|
+
const contextOptions = {
|
|
2981
|
+
...this._options,
|
|
2982
|
+
onUpdate: (update) => {
|
|
2983
|
+
this._options?.onUpdate?.(update);
|
|
2984
|
+
this.update.emit({
|
|
2985
|
+
type: "valuesUpdated"
|
|
2986
|
+
});
|
|
2987
|
+
}
|
|
2988
|
+
};
|
|
2989
|
+
this.context = new FunctionContext(this._hf, this._space, contextOptions);
|
|
2961
2990
|
this._hf.updateConfig({
|
|
2962
2991
|
context: this.context
|
|
2963
2992
|
});
|
|
@@ -3005,7 +3034,7 @@ var ComputeGraph = class extends import_context.Resource {
|
|
|
3005
3034
|
getOrCreateNode(name) {
|
|
3006
3035
|
(0, import_invariant.invariant)(name.length, void 0, {
|
|
3007
3036
|
F: __dxlog_file4,
|
|
3008
|
-
L:
|
|
3037
|
+
L: 129,
|
|
3009
3038
|
S: this,
|
|
3010
3039
|
A: [
|
|
3011
3040
|
"name.length",
|
|
@@ -3018,7 +3047,7 @@ var ComputeGraph = class extends import_context.Resource {
|
|
|
3018
3047
|
sheet: name
|
|
3019
3048
|
}, {
|
|
3020
3049
|
F: __dxlog_file4,
|
|
3021
|
-
L:
|
|
3050
|
+
L: 131,
|
|
3022
3051
|
S: this,
|
|
3023
3052
|
C: (f, a) => f(...a)
|
|
3024
3053
|
});
|
|
@@ -3027,7 +3056,7 @@ var ComputeGraph = class extends import_context.Resource {
|
|
|
3027
3056
|
const sheetId = this._hf.getSheetId(name);
|
|
3028
3057
|
(0, import_invariant.invariant)(sheetId !== void 0, void 0, {
|
|
3029
3058
|
F: __dxlog_file4,
|
|
3030
|
-
L:
|
|
3059
|
+
L: 136,
|
|
3031
3060
|
S: this,
|
|
3032
3061
|
A: [
|
|
3033
3062
|
"sheetId !== undefined",
|
|
@@ -3095,18 +3124,23 @@ var ComputeGraph = class extends import_context.Resource {
|
|
|
3095
3124
|
* E.g., spaceId:objectId() => HELLO()
|
|
3096
3125
|
*/
|
|
3097
3126
|
mapFunctionBindingFromId(formula) {
|
|
3098
|
-
|
|
3127
|
+
const binding = formula.replace(/(\w+):([a-zA-Z0-9]+)\((.*)\)/g, (match, spaceId, objectId, args) => {
|
|
3099
3128
|
const id = `${spaceId}:${objectId}`;
|
|
3100
|
-
if (id.length !==
|
|
3129
|
+
if (id.length !== import_echo2.FQ_ID_LENGTH) {
|
|
3101
3130
|
return match;
|
|
3102
3131
|
}
|
|
3103
3132
|
const fn = this._remoteFunctions.find((fn2) => (0, import_echo.fullyQualifiedId)(fn2) === id);
|
|
3104
3133
|
if (fn?.binding) {
|
|
3105
3134
|
return `${fn.binding}(${args})`;
|
|
3106
3135
|
} else {
|
|
3107
|
-
return
|
|
3136
|
+
return UNKNOWN_BINDING;
|
|
3108
3137
|
}
|
|
3109
3138
|
});
|
|
3139
|
+
if (binding.startsWith(`=${UNKNOWN_BINDING}`)) {
|
|
3140
|
+
return void 0;
|
|
3141
|
+
} else {
|
|
3142
|
+
return binding;
|
|
3143
|
+
}
|
|
3110
3144
|
}
|
|
3111
3145
|
async _open() {
|
|
3112
3146
|
if (this._space) {
|
|
@@ -3223,6 +3257,7 @@ var ComputeGraphRegistry = class extends import_context3.Resource {
|
|
|
3223
3257
|
parseSheetName,
|
|
3224
3258
|
rangeFromIndex,
|
|
3225
3259
|
rangeToA1Notation,
|
|
3226
|
-
rangeToIndex
|
|
3260
|
+
rangeToIndex,
|
|
3261
|
+
styleKey
|
|
3227
3262
|
});
|
|
3228
|
-
//# sourceMappingURL=chunk-
|
|
3263
|
+
//# sourceMappingURL=chunk-O7XR4R7Y.cjs.map
|