@dxos/plugin-sheet 0.8.4-main.28f8d3d → 0.8.4-main.2c6827d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/dist/lib/browser/{SheetContainer-JZNFXBW3.mjs → SheetContainer-67YEU5EA.mjs} +41 -43
  2. package/dist/lib/browser/SheetContainer-67YEU5EA.mjs.map +7 -0
  3. package/dist/lib/browser/anchor-sort-FCQ5OZZK.mjs +23 -0
  4. package/dist/lib/browser/anchor-sort-FCQ5OZZK.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-BVTHIA5U.mjs → chunk-6WBJDEKF.mjs} +37 -32
  6. package/dist/lib/browser/chunk-6WBJDEKF.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-KJWZUQVA.mjs → chunk-73AV3NH6.mjs} +4 -4
  8. package/dist/lib/browser/chunk-73AV3NH6.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-VTTKAHAY.mjs → chunk-7VEWYJJN.mjs} +2 -2
  10. package/dist/lib/browser/chunk-7VEWYJJN.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-ELAASQ5H.mjs → chunk-DVJ3QW3F.mjs} +215 -207
  12. package/dist/lib/browser/chunk-DVJ3QW3F.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-FWFAAGXL.mjs +28 -0
  14. package/dist/lib/browser/chunk-FWFAAGXL.mjs.map +7 -0
  15. package/dist/lib/browser/compute-graph-registry-AP5RA7W3.mjs +21 -0
  16. package/dist/lib/browser/compute-graph-registry-AP5RA7W3.mjs.map +7 -0
  17. package/dist/lib/browser/index.mjs +20 -21
  18. package/dist/lib/browser/index.mjs.map +3 -3
  19. package/dist/lib/browser/{intent-resolver-SSLPTP5O.mjs → intent-resolver-66OAYVQF.mjs} +9 -9
  20. package/dist/lib/browser/intent-resolver-66OAYVQF.mjs.map +7 -0
  21. package/dist/lib/browser/{markdown-3VPZYNGU.mjs → markdown-B6VKYY2S.mjs} +6 -6
  22. package/dist/lib/browser/{markdown-3VPZYNGU.mjs.map → markdown-B6VKYY2S.mjs.map} +1 -1
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/{react-surface-Y7KTPJW2.mjs → react-surface-HARAYCN7.mjs} +16 -15
  25. package/dist/lib/browser/react-surface-HARAYCN7.mjs.map +7 -0
  26. package/dist/lib/browser/types/index.mjs +4 -12
  27. package/dist/lib/node-esm/{SheetContainer-GOIBAE2P.mjs → SheetContainer-NJONAMYZ.mjs} +41 -43
  28. package/dist/lib/node-esm/SheetContainer-NJONAMYZ.mjs.map +7 -0
  29. package/dist/lib/node-esm/{anchor-sort-YM2UBIKL.mjs → anchor-sort-ZE7IS7SH.mjs} +10 -11
  30. package/dist/lib/node-esm/anchor-sort-ZE7IS7SH.mjs.map +7 -0
  31. package/dist/lib/node-esm/{chunk-6SK5LJ5S.mjs → chunk-44YTKTMP.mjs} +4 -4
  32. package/dist/lib/node-esm/chunk-44YTKTMP.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-4L5CIB7E.mjs → chunk-4H2EHVWE.mjs} +215 -207
  34. package/dist/lib/node-esm/chunk-4H2EHVWE.mjs.map +7 -0
  35. package/dist/lib/node-esm/{chunk-FXRXBHWM.mjs → chunk-4QV4AGWK.mjs} +2 -2
  36. package/dist/lib/node-esm/chunk-4QV4AGWK.mjs.map +7 -0
  37. package/dist/lib/node-esm/chunk-HILDMVPL.mjs +29 -0
  38. package/dist/lib/node-esm/chunk-HILDMVPL.mjs.map +7 -0
  39. package/dist/lib/node-esm/{chunk-56HYMW55.mjs → chunk-S3RJ7IY6.mjs} +37 -32
  40. package/dist/lib/node-esm/chunk-S3RJ7IY6.mjs.map +7 -0
  41. package/dist/lib/node-esm/compute-graph-registry-UMQ5UYCL.mjs +22 -0
  42. package/dist/lib/node-esm/compute-graph-registry-UMQ5UYCL.mjs.map +7 -0
  43. package/dist/lib/node-esm/index.mjs +20 -21
  44. package/dist/lib/node-esm/index.mjs.map +3 -3
  45. package/dist/lib/node-esm/{intent-resolver-5P6DBGK2.mjs → intent-resolver-VNKIMQQT.mjs} +9 -9
  46. package/dist/lib/node-esm/intent-resolver-VNKIMQQT.mjs.map +7 -0
  47. package/dist/lib/node-esm/{markdown-SFDGQWYE.mjs → markdown-VKY7HXU2.mjs} +6 -6
  48. package/dist/lib/node-esm/{markdown-SFDGQWYE.mjs.map → markdown-VKY7HXU2.mjs.map} +1 -1
  49. package/dist/lib/node-esm/meta.json +1 -1
  50. package/dist/lib/node-esm/{react-surface-6Z5FAOBH.mjs → react-surface-KTQWXV2L.mjs} +16 -15
  51. package/dist/lib/node-esm/react-surface-KTQWXV2L.mjs.map +7 -0
  52. package/dist/lib/node-esm/types/index.mjs +4 -12
  53. package/dist/types/src/SheetPlugin.d.ts +1 -1
  54. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  55. package/dist/types/src/capabilities/anchor-sort.d.ts +2 -4
  56. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  57. package/dist/types/src/capabilities/compute-graph-registry.d.ts +1 -1
  58. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
  59. package/dist/types/src/capabilities/index.d.ts +5 -10
  60. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  61. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  62. package/dist/types/src/capabilities/markdown.d.ts +1 -3
  63. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  64. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  65. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  66. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts +9 -4
  67. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts.map +1 -1
  68. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  69. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +50 -3
  70. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  71. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts +11 -20
  72. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts.map +1 -1
  73. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
  74. package/dist/types/src/components/RangeList/RangeList.d.ts +2 -2
  75. package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -1
  76. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +2 -2
  77. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  78. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +52 -5
  79. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  80. package/dist/types/src/components/SheetContext/SheetContext.d.ts +2 -2
  81. package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
  82. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +3 -4
  83. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
  84. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +86 -4
  85. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -1
  86. package/dist/types/src/extensions/compute.d.ts +1 -1
  87. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  88. package/dist/types/src/extensions/compute.stories.d.ts +10 -13
  89. package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
  90. package/dist/types/src/extensions/editor/index.d.ts +1 -1
  91. package/dist/types/src/extensions/editor/index.d.ts.map +1 -1
  92. package/dist/types/src/extensions/editor/{extension.d.ts → sheet-extension.d.ts} +1 -1
  93. package/dist/types/src/extensions/editor/sheet-extension.d.ts.map +1 -0
  94. package/dist/types/src/extensions/editor/sheet-extension.test.d.ts +2 -0
  95. package/dist/types/src/extensions/editor/sheet-extension.test.d.ts.map +1 -0
  96. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  97. package/dist/types/src/meta.d.ts +0 -1
  98. package/dist/types/src/meta.d.ts.map +1 -1
  99. package/dist/types/src/model/sheet-model.d.ts +5 -5
  100. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  101. package/dist/types/src/model/testing.d.ts +2 -2
  102. package/dist/types/src/model/testing.d.ts.map +1 -1
  103. package/dist/types/src/model/useSheetModel.d.ts +2 -2
  104. package/dist/types/src/model/useSheetModel.d.ts.map +1 -1
  105. package/dist/types/src/serializer.d.ts +2 -2
  106. package/dist/types/src/serializer.d.ts.map +1 -1
  107. package/dist/types/src/testing/data.d.ts +2 -2
  108. package/dist/types/src/testing/data.d.ts.map +1 -1
  109. package/dist/types/src/testing/testing.d.ts +27 -3
  110. package/dist/types/src/testing/testing.d.ts.map +1 -1
  111. package/dist/types/src/translations.d.ts +2 -2
  112. package/dist/types/src/translations.d.ts.map +1 -1
  113. package/dist/types/src/types/{schema.d.ts → Sheet.d.ts} +37 -4
  114. package/dist/types/src/types/Sheet.d.ts.map +1 -0
  115. package/dist/types/src/types/index.d.ts +1 -1
  116. package/dist/types/src/types/index.d.ts.map +1 -1
  117. package/dist/types/src/types/sheet-range-types.d.ts +2 -2
  118. package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
  119. package/dist/types/src/types/types.d.ts +7 -16
  120. package/dist/types/src/types/types.d.ts.map +1 -1
  121. package/dist/types/src/types/util.d.ts +9 -10
  122. package/dist/types/src/types/util.d.ts.map +1 -1
  123. package/dist/types/tsconfig.tsbuildinfo +1 -1
  124. package/package.json +65 -64
  125. package/src/SheetPlugin.tsx +70 -61
  126. package/src/capabilities/anchor-sort.ts +7 -8
  127. package/src/capabilities/capabilities.ts +2 -2
  128. package/src/capabilities/compute-graph-registry.ts +8 -13
  129. package/src/capabilities/intent-resolver.ts +4 -4
  130. package/src/capabilities/react-surface.tsx +9 -8
  131. package/src/components/ComputeGraph/compute-graph.stories.tsx +18 -18
  132. package/src/components/FunctionEditor/FunctionEditor.tsx +2 -2
  133. package/src/components/GridSheet/GridSheet.stories.tsx +17 -12
  134. package/src/components/GridSheet/GridSheet.tsx +24 -12
  135. package/src/components/GridSheet/SheetCellEditor.stories.tsx +40 -42
  136. package/src/components/GridSheet/util.ts +9 -3
  137. package/src/components/RangeList/RangeList.tsx +8 -8
  138. package/src/components/SheetContainer/SheetContainer.stories.tsx +45 -42
  139. package/src/components/SheetContainer/SheetContainer.tsx +10 -5
  140. package/src/components/SheetContext/SheetContext.tsx +4 -4
  141. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +17 -12
  142. package/src/components/SheetToolbar/SheetToolbar.tsx +27 -29
  143. package/src/components/SheetToolbar/align.ts +3 -3
  144. package/src/components/SheetToolbar/style.ts +2 -2
  145. package/src/extensions/compute.stories.tsx +29 -26
  146. package/src/extensions/compute.ts +1 -2
  147. package/src/extensions/editor/index.ts +1 -1
  148. package/src/extensions/editor/{extension.test.ts → sheet-extension.test.ts} +1 -1
  149. package/src/integrations/thread-ranges.ts +15 -20
  150. package/src/meta.ts +7 -5
  151. package/src/model/sheet-model.test.ts +4 -4
  152. package/src/model/sheet-model.ts +4 -4
  153. package/src/model/testing.ts +4 -4
  154. package/src/model/useSheetModel.ts +2 -2
  155. package/src/sanity.test.ts +3 -4
  156. package/src/serializer.ts +3 -3
  157. package/src/testing/data.ts +2 -2
  158. package/src/testing/testing.tsx +11 -5
  159. package/src/translations.ts +2 -2
  160. package/src/types/Sheet.ts +103 -0
  161. package/src/types/index.ts +1 -1
  162. package/src/types/sheet-range-types.ts +2 -2
  163. package/src/types/types.ts +6 -16
  164. package/src/types/util.ts +10 -38
  165. package/dist/lib/browser/SheetContainer-JZNFXBW3.mjs.map +0 -7
  166. package/dist/lib/browser/anchor-sort-VRX3YZKT.mjs +0 -24
  167. package/dist/lib/browser/anchor-sort-VRX3YZKT.mjs.map +0 -7
  168. package/dist/lib/browser/chunk-6AKBCBL4.mjs +0 -18
  169. package/dist/lib/browser/chunk-6AKBCBL4.mjs.map +0 -7
  170. package/dist/lib/browser/chunk-BVTHIA5U.mjs.map +0 -7
  171. package/dist/lib/browser/chunk-ELAASQ5H.mjs.map +0 -7
  172. package/dist/lib/browser/chunk-KJWZUQVA.mjs.map +0 -7
  173. package/dist/lib/browser/chunk-VTTKAHAY.mjs.map +0 -7
  174. package/dist/lib/browser/compute-graph-registry-6YJHXORG.mjs +0 -30
  175. package/dist/lib/browser/compute-graph-registry-6YJHXORG.mjs.map +0 -7
  176. package/dist/lib/browser/intent-resolver-SSLPTP5O.mjs.map +0 -7
  177. package/dist/lib/browser/react-surface-Y7KTPJW2.mjs.map +0 -7
  178. package/dist/lib/node-esm/SheetContainer-GOIBAE2P.mjs.map +0 -7
  179. package/dist/lib/node-esm/anchor-sort-YM2UBIKL.mjs.map +0 -7
  180. package/dist/lib/node-esm/chunk-3K5VNYOF.mjs +0 -20
  181. package/dist/lib/node-esm/chunk-3K5VNYOF.mjs.map +0 -7
  182. package/dist/lib/node-esm/chunk-4L5CIB7E.mjs.map +0 -7
  183. package/dist/lib/node-esm/chunk-56HYMW55.mjs.map +0 -7
  184. package/dist/lib/node-esm/chunk-6SK5LJ5S.mjs.map +0 -7
  185. package/dist/lib/node-esm/chunk-FXRXBHWM.mjs.map +0 -7
  186. package/dist/lib/node-esm/compute-graph-registry-ET5KJNLV.mjs +0 -31
  187. package/dist/lib/node-esm/compute-graph-registry-ET5KJNLV.mjs.map +0 -7
  188. package/dist/lib/node-esm/intent-resolver-5P6DBGK2.mjs.map +0 -7
  189. package/dist/lib/node-esm/react-surface-6Z5FAOBH.mjs.map +0 -7
  190. package/dist/types/src/extensions/editor/extension.d.ts.map +0 -1
  191. package/dist/types/src/extensions/editor/extension.test.d.ts +0 -2
  192. package/dist/types/src/extensions/editor/extension.test.d.ts.map +0 -1
  193. package/dist/types/src/types/schema.d.ts.map +0 -1
  194. package/src/types/schema.ts +0 -61
  195. /package/src/extensions/editor/{extension.ts → sheet-extension.ts} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extensions/compute.ts", "../../../src/extensions/editor/extension.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport {\n type EditorState,\n type Extension,\n type RangeSet,\n RangeSetBuilder,\n StateEffect,\n StateField,\n type Transaction,\n} from '@codemirror/state';\nimport { Decoration, EditorView, ViewPlugin, WidgetType } from '@codemirror/view';\n\nimport { type CleanupFn, debounce } from '@dxos/async';\nimport {\n type CellAddress,\n type CellScalarValue,\n type ComputeGraph,\n type ComputeNode,\n createSheetName,\n} from '@dxos/compute';\nimport { invariant } from '@dxos/invariant';\nimport { documentId, singleValueFacet } from '@dxos/react-ui-editor';\n\nconst LANGUAGE_TAG = 'dx';\n\n// TODO(burdon): Create marker just for our decorator?\nconst updateAllDecorations = StateEffect.define<void>();\n\nexport const computeGraphFacet = singleValueFacet<ComputeGraph>();\n\nexport type ComputeOptions = {};\n\nexport const compute = (options: ComputeOptions = {}): Extension => {\n let computeNode: ComputeNode | undefined;\n\n const update = (state: EditorState, current?: RangeSet<Decoration>) => {\n const builder = new RangeSetBuilder<Decoration>();\n if (computeNode) {\n computeNode.clear();\n syntaxTree(state).iterate({\n enter: (node) => {\n switch (node.name) {\n case 'FencedCode': {\n const cursor = state.selection.main.head;\n if (state.readOnly || cursor < node.from || cursor > node.to) {\n const info = node.node.getChild('CodeInfo');\n if (info) {\n const type = state.sliceDoc(info.from, info.to);\n const text = node.node.getChild('CodeText');\n if (type === LANGUAGE_TAG && text) {\n const formula = state.sliceDoc(text.from, text.to);\n\n const iter = current?.iter(node.node.from);\n if (iter?.value && iter?.value.spec.formula === formula) {\n // Add existing widget.\n builder.add(node.from, node.to, iter.value);\n } else {\n // TODO(burdon): Create ordered list of cells on each decoration run.\n const cell: CellAddress = { col: node.node.from, row: 0 };\n invariant(computeNode);\n // NOTE: This triggers re-render (below).\n computeNode.setValue(cell, formula);\n const value = computeNode.getValue(cell);\n builder.add(\n node.from,\n node.to,\n Decoration.replace({\n widget: new ComputeWidget(formula, value),\n formula,\n }),\n );\n }\n }\n }\n }\n\n break;\n }\n }\n },\n });\n }\n\n return builder.finish();\n };\n\n return [\n ViewPlugin.fromClass(\n class {\n // Graph subscription.\n private _subscription?: CleanupFn;\n constructor(view: EditorView) {\n const id = view.state.facet(documentId);\n const computeGraph = view.state.facet(computeGraphFacet);\n if (id && computeGraph) {\n queueMicrotask(async () => {\n computeNode = computeGraph.getOrCreateNode(createSheetName({ type: '', id }));\n await computeNode.open();\n\n // Trigger re-render if values updated.\n // TODO(burdon): Trigger only if formula value updated (currently triggered during render).\n this._subscription = computeNode.update.on(\n debounce(({ type, ...rest }) => {\n if (type === 'valuesUpdated') {\n view.dispatch({\n effects: updateAllDecorations.of(),\n });\n }\n }, 250),\n );\n });\n }\n }\n\n destroy() {\n this._subscription?.();\n void computeNode?.close();\n computeNode = undefined;\n }\n },\n ),\n\n StateField.define<RangeSet<Decoration>>({\n create: (state) => update(state),\n update: (rangeSet: RangeSet<Decoration>, tr: Transaction) => update(tr.state, rangeSet),\n provide: (field) => EditorView.decorations.from(field),\n }),\n ];\n};\n\n// TODO(burdon): Click to edit.\nclass ComputeWidget extends WidgetType {\n constructor(\n private readonly formula: string,\n private readonly value: CellScalarValue,\n ) {\n super();\n }\n\n override toDOM(_view: EditorView): HTMLDivElement {\n const div = document.createElement('div');\n div.setAttribute('title', this.formula);\n div.innerText = String(this.value);\n return div;\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport {\n type Completion,\n type CompletionContext,\n type CompletionResult,\n acceptCompletion,\n autocompletion,\n completionStatus,\n startCompletion,\n} from '@codemirror/autocomplete';\nimport { HighlightStyle, type Language, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\nimport { type EditorView, ViewPlugin, type ViewUpdate, keymap } from '@codemirror/view';\nimport { type SyntaxNode } from '@lezer/common';\nimport { tags } from '@lezer/highlight';\nimport { spreadsheet } from 'codemirror-lang-spreadsheet';\n\nimport { type FunctionDefinition } from '@dxos/compute';\nimport { RANGE_NOTATION } from '@dxos/compute';\nimport { singleValueFacet } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\n/**\n * https://codemirror.net/examples/styling\n * https://lezer.codemirror.net/docs/ref/#highlight\n * https://github.com/luizzappa/codemirror-lang-spreadsheet/blob/main/src/index.ts#L28 (mapping)\n */\n// TODO(burdon): Define light/dark.\nconst highlightStyles = HighlightStyle.define([\n // Function.\n {\n tag: tags.name,\n class: 'text-accentText',\n },\n // Range.\n {\n tag: tags.tagName,\n class: 'text-pinkText',\n },\n // Values.\n {\n tag: tags.number,\n class: 'text-tealText',\n },\n {\n tag: tags.bool,\n class: 'text-tealText',\n },\n {\n tag: tags.string,\n class: 'text-tealText',\n },\n // Error.\n {\n tag: tags.invalid,\n class: 'text-unAccent',\n },\n]);\n\nconst languageFacet = singleValueFacet<Language>();\n\nexport type SheetExtensionOptions = {\n debug?: boolean;\n functions?: FunctionDefinition[];\n};\n\n/**\n * Spreadsheet formula extension and parser.\n * https://github.com/luizzappa/codemirror-lang-spreadsheet\n * https://github.com/luizzappa/codemirror-app-spreadsheet/blob/master/src/editor.ts\n * https://github.com/codemirror/lang-example\n * https://hyperformula.handsontable.com/guide/key-concepts.html#grammar\n */\nexport const sheetExtension = ({ debug, functions = [] }: SheetExtensionOptions): Extension => {\n const { extension, language } = spreadsheet({ idiom: 'en-US', decimalSeparator: '.' });\n\n const createCompletion = (name: string) => {\n const { section = 'Custom', description, syntax } = functions.find((value) => value.name === name) ?? {};\n\n return {\n section,\n label: name,\n info: () => {\n if (!description && !syntax) {\n return null;\n }\n\n // TODO(burdon): Standardize color styles.\n const root = document.createElement('div');\n root.className = 'flex flex-col gap-2 text-sm';\n\n const title = document.createElement('h2');\n title.innerText = name;\n title.className = 'text-lg font-mono text-accentText';\n root.appendChild(title);\n\n if (description) {\n const info = document.createElement('p');\n info.innerText = description;\n info.className = 'text-subdued';\n root.appendChild(info);\n }\n\n if (syntax) {\n const detail = document.createElement('pre');\n detail.innerText = syntax;\n detail.className = 'whitespace-pre-wrap text-greenText';\n root.appendChild(detail);\n }\n\n return root;\n },\n apply: (view, completion, from, to) => {\n const insertParens = to === view.state.doc.toString().length;\n view.dispatch(\n view.state.update({\n changes: {\n from,\n to,\n insert: completion.label + (insertParens ? '()' : ''),\n },\n selection: {\n anchor: from + completion.label.length + 1,\n },\n }),\n );\n },\n } satisfies Completion;\n };\n\n return [\n extension,\n languageFacet.of(language),\n language.data.of({\n autocomplete: (context: CompletionContext): CompletionResult | null => {\n if (context.state.doc.toString()[0] !== '=') {\n return null;\n }\n const match = context.matchBefore(/\\w*/);\n if (!match || match.from === match.to) {\n return null;\n }\n\n const text = match.text.toUpperCase();\n if (!context.explicit && match.text.length < 2) {\n return null;\n }\n\n return {\n from: match.from,\n options:\n functions?.filter(({ name }) => name.startsWith(text)).map(({ name }) => createCompletion(name)) ?? [],\n };\n },\n }),\n\n syntaxHighlighting(highlightStyles),\n autocompletion({\n aboveCursor: false,\n defaultKeymap: true,\n activateOnTyping: true,\n closeOnBlur: !debug,\n icons: false,\n tooltipClass: () =>\n mx(\n '!-left-[1px] !top-[33px] !-m-0 border !border-t-0 [&>ul]:!min-w-[198px]',\n '[&>ul>li[aria-selected]]:!bg-accentSurface',\n 'border-separator',\n ),\n }),\n keymap.of([\n {\n key: 'Tab',\n run: (view) => {\n return completionStatus(view.state) === 'active' ? acceptCompletion(view) : startCompletion(view);\n },\n },\n ]),\n\n // Parsing.\n // StateField.define({\n // create: (state) => {},\n // update: (value, tr) => {\n // log.info('update');\n // syntaxTree(tr.state).iterate({\n // enter: ({ type, from, to }) => {\n // log.info('node', { type: type.name, from, to });\n // },\n // });\n // },\n // }),\n ];\n};\n\nexport type SelectionRange = { from: number; to: number };\n\nexport interface RangeController {\n setRange(range: string): void;\n}\n\nexport type RangeExtensionOptions = {\n /**\n * Provides controller callback when extension is initialized.\n */\n onInit?: (controller: RangeController) => void;\n /**\n * Called when the active range changes.\n * @param state The current state.\n * @param state.activeRange undefined if no range is active, otherwise a possibly partially defined range.\n */\n onStateChange?: (state: { activeRange: string | undefined }) => void;\n};\n\n/**\n * Tracks the currently active cell within a formula and provides a callback to modify it.\n */\nexport const rangeExtension = ({ onInit, onStateChange }: RangeExtensionOptions): Extension => {\n let view: EditorView;\n let activeRange: SelectionRange | undefined;\n\n // Called externally to provide current range.\n const notifier: RangeController = {\n setRange: (range: string) => {\n if (activeRange) {\n view.dispatch(\n view.state.update({\n changes: { ...activeRange, insert: range.toString() },\n selection: { anchor: activeRange.from + range.length },\n }),\n );\n }\n\n view.focus();\n },\n };\n\n return ViewPlugin.fromClass(\n class {\n constructor(_view: EditorView) {\n view = _view;\n onInit?.(notifier);\n }\n\n update(view: ViewUpdate) {\n const { anchor } = view.state.selection.ranges[0];\n\n // Find first Range or cell at cursor.\n activeRange = undefined;\n const language = view.state.facet(languageFacet);\n const { topNode } = language.parser.parse(view.state.doc.toString());\n visitTree(topNode, ({ type, from, to }) => {\n if (from <= anchor && to >= anchor) {\n switch (type.name) {\n case 'Function':\n // Mark but keep looking.\n activeRange = { from: to, to };\n break;\n\n case 'CloseParen':\n // Mark but keep looking.\n activeRange = { from, to: from };\n break;\n\n case 'RangeToken':\n case 'CellToken':\n activeRange = { from, to };\n return true;\n }\n }\n\n return false;\n });\n\n // Allow start of formula.\n if (!activeRange && view.state.doc.toString()[0] === '=') {\n const str = view.state.doc.sliceString(1);\n if (RANGE_NOTATION.test(str)) {\n activeRange = { from: 1, to: str.length + 1 };\n } else {\n activeRange = { from: str.length + 1, to: str.length + 1 };\n }\n }\n\n onStateChange?.({\n activeRange: activeRange ? view.state.doc.sliceString(activeRange.from, activeRange.to) : undefined,\n });\n }\n },\n );\n};\n\n/**\n * Lezer parse result visitor.\n */\nconst visitTree = (node: SyntaxNode, callback: (node: SyntaxNode) => boolean): boolean => {\n if (callback(node)) {\n return true;\n }\n\n for (let child = node.firstChild; child !== null; child = child.nextSibling) {\n if (visitTree(child, callback)) {\n return true;\n }\n }\n\n return false;\n};\n"],
5
- "mappings": "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",
6
- "names": ["syntaxTree", "RangeSetBuilder", "StateEffect", "StateField", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "debounce", "createSheetName", "invariant", "documentId", "singleValueFacet", "updateAllDecorations", "StateEffect", "define", "computeGraphFacet", "singleValueFacet", "acceptCompletion", "autocompletion", "completionStatus", "startCompletion", "HighlightStyle", "syntaxHighlighting", "ViewPlugin", "keymap", "tags", "spreadsheet", "RANGE_NOTATION", "singleValueFacet", "mx", "highlightStyles", "HighlightStyle", "define", "tag", "tags", "name", "class", "tagName", "number", "bool", "string", "invalid", "languageFacet", "singleValueFacet", "sheetExtension", "debug", "functions", "extension", "language", "spreadsheet", "idiom", "decimalSeparator", "createCompletion", "section", "description", "syntax", "find", "value", "label", "info", "root", "document", "createElement", "className", "title", "innerText", "appendChild", "detail", "apply", "view", "completion", "from", "to", "insertParens", "state", "doc", "toString", "length", "dispatch", "update", "changes", "insert", "selection", "anchor", "of", "data", "autocomplete", "context", "match", "matchBefore", "text", "toUpperCase", "explicit", "options", "filter", "startsWith", "map", "syntaxHighlighting", "autocompletion", "aboveCursor", "defaultKeymap", "activateOnTyping", "closeOnBlur", "icons", "tooltipClass", "mx", "keymap", "key", "run", "completionStatus", "acceptCompletion", "startCompletion", "rangeExtension", "onInit", "onStateChange", "activeRange", "notifier", "setRange", "range", "focus", "ViewPlugin", "fromClass", "_view", "ranges", "undefined", "facet", "topNode", "parser", "parse", "visitTree", "type", "str", "sliceString", "RANGE_NOTATION", "test", "node", "callback", "child", "firstChild", "nextSibling"]
7
- }
@@ -1,31 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- SheetCapabilities
4
- } from "./chunk-6SK5LJ5S.mjs";
5
- import "./chunk-3K5VNYOF.mjs";
6
-
7
- // src/capabilities/compute-graph-registry.ts
8
- import { contributes } from "@dxos/app-framework";
9
- import { ClientCapabilities } from "@dxos/plugin-client";
10
- var isSecure = (protocol) => {
11
- return protocol === "https:" || protocol === "wss:";
12
- };
13
- var compute_graph_registry_default = async (context) => {
14
- const client = context.getCapability(ClientCapabilities.Client);
15
- let remoteFunctionUrl;
16
- if (client.config.values.runtime?.services?.edge?.url) {
17
- const url = new URL("/functions", client.config.values.runtime?.services?.edge?.url);
18
- url.protocol = isSecure(url.protocol) ? "https" : "http";
19
- remoteFunctionUrl = url.toString();
20
- }
21
- const { defaultPlugins, ComputeGraphRegistry } = await import("@dxos/compute");
22
- const computeGraphRegistry = new ComputeGraphRegistry({
23
- plugins: defaultPlugins,
24
- remoteFunctionUrl
25
- });
26
- return contributes(SheetCapabilities.ComputeGraphRegistry, computeGraphRegistry);
27
- };
28
- export {
29
- compute_graph_registry_default as default
30
- };
31
- //# sourceMappingURL=compute-graph-registry-ET5KJNLV.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/compute-graph-registry.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type PluginContext, contributes } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { SheetCapabilities } from './capabilities';\n\nconst isSecure = (protocol: string) => {\n return protocol === 'https:' || protocol === 'wss:';\n};\n\nexport default async (context: PluginContext) => {\n const client = context.getCapability(ClientCapabilities.Client);\n let remoteFunctionUrl: string | undefined;\n if (client.config.values.runtime?.services?.edge?.url) {\n const url = new URL('/functions', client.config.values.runtime?.services?.edge?.url);\n url.protocol = isSecure(url.protocol) ? 'https' : 'http';\n remoteFunctionUrl = url.toString();\n }\n\n // TODO(wittjosiah): This can probably be a module level import now due to lazy capability loading.\n // Async import removes direct dependency on hyperformula.\n const { defaultPlugins, ComputeGraphRegistry } = await import('@dxos/compute');\n const computeGraphRegistry = new ComputeGraphRegistry({ plugins: defaultPlugins, remoteFunctionUrl });\n return contributes(SheetCapabilities.ComputeGraphRegistry, computeGraphRegistry);\n};\n"],
5
- "mappings": ";;;;;;;AAIA,SAA6BA,mBAAmB;AAChD,SAASC,0BAA0B;AAInC,IAAMC,WAAW,CAACC,aAAAA;AAChB,SAAOA,aAAa,YAAYA,aAAa;AAC/C;AAEA,IAAA,iCAAe,OAAOC,YAAAA;AACpB,QAAMC,SAASD,QAAQE,cAAcC,mBAAmBC,MAAM;AAC9D,MAAIC;AACJ,MAAIJ,OAAOK,OAAOC,OAAOC,SAASC,UAAUC,MAAMC,KAAK;AACrD,UAAMA,MAAM,IAAIC,IAAI,cAAcX,OAAOK,OAAOC,OAAOC,SAASC,UAAUC,MAAMC,GAAAA;AAChFA,QAAIZ,WAAWD,SAASa,IAAIZ,QAAQ,IAAI,UAAU;AAClDM,wBAAoBM,IAAIE,SAAQ;EAClC;AAIA,QAAM,EAAEC,gBAAgBC,qBAAoB,IAAK,MAAM,OAAO,eAAA;AAC9D,QAAMC,uBAAuB,IAAID,qBAAqB;IAAEE,SAASH;IAAgBT;EAAkB,CAAA;AACnG,SAAOa,YAAYC,kBAAkBJ,sBAAsBC,oBAAAA;AAC7D;",
6
- "names": ["contributes", "ClientCapabilities", "isSecure", "protocol", "context", "client", "getCapability", "ClientCapabilities", "Client", "remoteFunctionUrl", "config", "values", "runtime", "services", "edge", "url", "URL", "toString", "defaultPlugins", "ComputeGraphRegistry", "computeGraphRegistry", "plugins", "contributes", "SheetCapabilities"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createResolver } from '@dxos/app-framework';\n\nimport { SHEET_PLUGIN } from '../meta';\nimport { SheetAction, createSheet } from '../types';\n\nexport default () =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: SheetAction.Create,\n resolve: ({ name }) => ({ data: { object: createSheet({ name }) } }),\n }),\n createResolver({\n intent: SheetAction.InsertAxis,\n resolve: ({ model, axis, index, count }) => {\n const _indices = model[axis === 'col' ? 'insertColumns' : 'insertRows'](index, count);\n },\n }),\n createResolver({\n intent: SheetAction.DropAxis,\n resolve: ({ model, axis, axisIndex, deletionData }, undo) => {\n if (!undo) {\n const undoData = model[axis === 'col' ? 'dropColumn' : 'dropRow'](axisIndex);\n return {\n undoable: {\n message: [`${axis} dropped label`, { ns: SHEET_PLUGIN }],\n data: { ...undoData, model },\n },\n };\n } else if (undo && deletionData) {\n model[deletionData.axis === 'col' ? 'restoreColumn' : 'restoreRow'](deletionData);\n }\n },\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;AAIA,SAASA,cAAcC,aAAaC,sBAAsB;AAK1D,IAAA,0BAAe,MACbC,YAAYC,aAAaC,gBAAgB;EACvCC,eAAe;IACbC,QAAQC,YAAYC;IACpBC,SAAS,CAAC,EAAEC,KAAI,OAAQ;MAAEC,MAAM;QAAEC,QAAQC,YAAY;UAAEH;QAAK,CAAA;MAAG;IAAE;EACpE,CAAA;EACAL,eAAe;IACbC,QAAQC,YAAYO;IACpBL,SAAS,CAAC,EAAEM,OAAOC,MAAMC,OAAOC,MAAK,MAAE;AACrC,YAAMC,WAAWJ,MAAMC,SAAS,QAAQ,kBAAkB,YAAA,EAAcC,OAAOC,KAAAA;IACjF;EACF,CAAA;EACAb,eAAe;IACbC,QAAQC,YAAYa;IACpBX,SAAS,CAAC,EAAEM,OAAOC,MAAMK,WAAWC,aAAY,GAAIC,SAAAA;AAClD,UAAI,CAACA,MAAM;AACT,cAAMC,WAAWT,MAAMC,SAAS,QAAQ,eAAe,SAAA,EAAWK,SAAAA;AAClE,eAAO;UACLI,UAAU;YACRC,SAAS;cAAC,GAAGV,IAAAA;cAAsB;gBAAEW,IAAIC;cAAa;;YACtDjB,MAAM;cAAE,GAAGa;cAAUT;YAAM;UAC7B;QACF;MACF,WAAWQ,QAAQD,cAAc;AAC/BP,cAAMO,aAAaN,SAAS,QAAQ,kBAAkB,YAAA,EAAcM,YAAAA;MACtE;IACF;EACF,CAAA;CACD;",
6
- "names": ["Capabilities", "contributes", "createResolver", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "SheetAction", "Create", "resolve", "name", "data", "object", "createSheet", "InsertAxis", "model", "axis", "index", "count", "_indices", "DropAxis", "axisIndex", "deletionData", "undo", "undoData", "undoable", "message", "ns", "SHEET_PLUGIN"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { getSpace } from '@dxos/react-client/echo';\n\nimport { ComputeGraphContextProvider, RangeList, SheetContainer } from '../components';\nimport { SHEET_PLUGIN } from '../meta';\nimport { SheetType } from '../types';\n\nimport { SheetCapabilities } from './capabilities';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${SHEET_PLUGIN}/sheet`,\n role: ['article', 'section'],\n filter: (data): data is { subject: SheetType } =>\n Obj.instanceOf(SheetType, data.subject) && !!getSpace(data.subject),\n component: ({ data, role }) => {\n const computeGraphRegistry = useCapability(SheetCapabilities.ComputeGraphRegistry);\n\n return (\n <ComputeGraphContextProvider registry={computeGraphRegistry}>\n <SheetContainer space={getSpace(data.subject)!} sheet={data.subject} role={role} />\n </ComputeGraphContextProvider>\n );\n },\n }),\n createSurface({\n id: `${SHEET_PLUGIN}/object-settings`,\n role: 'object-settings',\n filter: (data): data is { subject: SheetType } => Obj.instanceOf(SheetType, data.subject),\n component: ({ data }) => <RangeList sheet={data.subject} />,\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,aAAaC,eAAeC,qBAAqB;AACxE,SAASC,WAAW;AACpB,SAASC,gBAAgB;AAQzB,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;MAAC;MAAW;;IAClBC,QAAQ,CAACC,SACPC,IAAIC,WAAWC,WAAWH,KAAKI,OAAO,KAAK,CAAC,CAACC,SAASL,KAAKI,OAAO;IACpEE,WAAW,CAAC,EAAEN,MAAMF,KAAI,MAAE;AACxB,YAAMS,uBAAuBC,cAAcC,kBAAkBC,oBAAoB;AAEjF,aACE,sBAAA,cAACC,6BAAAA;QAA4BC,UAAUL;SACrC,sBAAA,cAACM,gBAAAA;QAAeC,OAAOT,SAASL,KAAKI,OAAO;QAAIW,OAAOf,KAAKI;QAASN;;IAG3E;EACF,CAAA;EACAH,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAyCC,IAAIC,WAAWC,WAAWH,KAAKI,OAAO;IACxFE,WAAW,CAAC,EAAEN,KAAI,MAAO,sBAAA,cAACgB,WAAAA;MAAUD,OAAOf,KAAKI;;EAClD,CAAA;CACD;",
6
- "names": ["React", "Capabilities", "contributes", "createSurface", "useCapability", "Obj", "getSpace", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "SHEET_PLUGIN", "role", "filter", "data", "Obj", "instanceOf", "SheetType", "subject", "getSpace", "component", "computeGraphRegistry", "useCapability", "SheetCapabilities", "ComputeGraphRegistry", "ComputeGraphContextProvider", "registry", "SheetContainer", "space", "sheet", "RangeList"]
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/editor/extension.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMnD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AA4CxD,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAClC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,sBAA2B,qBAAqB,KAAG,SAuHjF,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;CACtE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,2BAA2B,qBAAqB,KAAG,SAyEjF,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=extension.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension.test.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/editor/extension.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/types/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,eAAO,MAAM,SAAS;;EAKpB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC;AAG7D,eAAO,MAAM,KAAK;;;;EAIhB,CAAC;AAEH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC;AAGrD,eAAO,MAAM,aAAa;;EAExB,CAAC;AAIH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;GAyBrB,CAAC;AAEF,MAAM,WAAW,SAAU,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC;CAAG"}
@@ -1,61 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { Schema } from 'effect';
6
-
7
- import { Type } from '@dxos/echo';
8
-
9
- export const CellValue = Schema.Struct({
10
- // TODO(burdon): How to store dates (datetime, date, time), percentages, etc.
11
- // Consider import/export; natural access for other plugins. Special handling for currency (precision).
12
- // TODO(burdon): Automerge (long string) or short string or number.
13
- value: Schema.Any,
14
- });
15
-
16
- export type CellValue = Schema.Schema.Type<typeof CellValue>;
17
-
18
- // TODO(burdon): IMPORTANT: Reconcile with Field definition.
19
- export const Range = Schema.Struct({
20
- range: Schema.String,
21
- key: Schema.String,
22
- value: Schema.String,
23
- });
24
-
25
- export type Range = Schema.Schema.Type<typeof Range>;
26
-
27
- // TODO(burdon): Visibility, locked, frozen, etc.
28
- export const RowColumnMeta = Schema.Struct({
29
- size: Schema.optional(Schema.Number),
30
- });
31
-
32
- // TODO(burdon): Reconcile col/column (across packages).
33
- // TODO(burdon): Index to all updates when rows/columns are inserted/deleted.
34
- export const SheetType = Schema.Struct({
35
- name: Schema.optional(Schema.String),
36
-
37
- // Sparse map of cells referenced by index.
38
- cells: Schema.mutable(Schema.Record({ key: Schema.String, value: Schema.mutable(CellValue) })),
39
-
40
- // Ordered row indices.
41
- rows: Schema.mutable(Schema.Array(Schema.String)),
42
-
43
- // Ordered column indices.
44
- columns: Schema.mutable(Schema.Array(Schema.String)),
45
-
46
- // Row metadata referenced by index.
47
- rowMeta: Schema.mutable(Schema.Record({ key: Schema.String, value: Schema.mutable(RowColumnMeta) })),
48
-
49
- // Column metadata referenced by index.
50
- columnMeta: Schema.mutable(Schema.Record({ key: Schema.String, value: Schema.mutable(RowColumnMeta) })),
51
-
52
- // Cell formatting referenced by indexed range.
53
- ranges: Schema.mutable(Schema.Array(Range)),
54
- }).pipe(
55
- Type.Obj({
56
- typename: 'dxos.org/type/Sheet',
57
- version: '0.1.0',
58
- }),
59
- );
60
-
61
- export interface SheetType extends Schema.Schema.Type<typeof SheetType> {}