@dxos/plugin-sheet 0.6.12-main.5cc132e → 0.6.12-main.7907542

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 (273) hide show
  1. package/dist/lib/browser/SheetContainer-T2QWJOFD.mjs +262 -0
  2. package/dist/lib/browser/SheetContainer-T2QWJOFD.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-WUPTZUTX.mjs → chunk-5ZMVZYGB.mjs} +21 -19
  4. package/dist/lib/browser/chunk-5ZMVZYGB.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-GNNVBNCX.mjs → chunk-GSV5QNLD.mjs} +409 -686
  6. package/dist/lib/browser/chunk-GSV5QNLD.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-JRL5LGCE.mjs → chunk-QILRZNE5.mjs} +2 -5
  8. package/dist/lib/browser/chunk-QILRZNE5.mjs.map +7 -0
  9. package/dist/lib/browser/{SheetContainer-Y7ZMFBAP.mjs → chunk-ZL2V5UJR.mjs} +982 -508
  10. package/dist/lib/browser/chunk-ZL2V5UJR.mjs.map +7 -0
  11. package/dist/lib/browser/graph-M4IQ76QX.mjs +33 -0
  12. package/dist/lib/browser/graph-M4IQ76QX.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +86 -59
  14. package/dist/lib/browser/index.mjs.map +4 -4
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/meta.mjs +1 -1
  17. package/dist/lib/browser/types.mjs +4 -6
  18. package/dist/lib/node/SheetContainer-PV5ET4UJ.cjs +280 -0
  19. package/dist/lib/node/SheetContainer-PV5ET4UJ.cjs.map +7 -0
  20. package/dist/lib/node/{SheetContainer-KEOKUKAQ.cjs → chunk-2K53Z2TU.cjs} +1036 -558
  21. package/dist/lib/node/chunk-2K53Z2TU.cjs.map +7 -0
  22. package/dist/lib/node/{chunk-ZRQZFV5T.cjs → chunk-5XPK2V4A.cjs} +418 -691
  23. package/dist/lib/node/chunk-5XPK2V4A.cjs.map +7 -0
  24. package/dist/lib/node/{chunk-BJ6ZD7MN.cjs → chunk-BNARJ5GM.cjs} +5 -18
  25. package/dist/lib/node/chunk-BNARJ5GM.cjs.map +7 -0
  26. package/dist/lib/node/{chunk-VJU3NPUJ.cjs → chunk-STAVQ2JE.cjs} +25 -24
  27. package/dist/lib/node/chunk-STAVQ2JE.cjs.map +7 -0
  28. package/dist/lib/node/graph-Q3N2X26H.cjs +55 -0
  29. package/dist/lib/node/graph-Q3N2X26H.cjs.map +7 -0
  30. package/dist/lib/node/index.cjs +98 -66
  31. package/dist/lib/node/index.cjs.map +4 -4
  32. package/dist/lib/node/meta.cjs +3 -3
  33. package/dist/lib/node/meta.cjs.map +1 -1
  34. package/dist/lib/node/meta.json +1 -1
  35. package/dist/lib/node/types.cjs +10 -12
  36. package/dist/lib/node/types.cjs.map +2 -2
  37. package/dist/lib/node-esm/SheetContainer-FOZD2WLT.mjs +263 -0
  38. package/dist/lib/node-esm/SheetContainer-FOZD2WLT.mjs.map +7 -0
  39. package/dist/lib/node-esm/{chunk-WUPTZUTX.mjs → chunk-2HAM45RC.mjs} +22 -19
  40. package/dist/lib/node-esm/chunk-2HAM45RC.mjs.map +7 -0
  41. package/dist/lib/node-esm/{chunk-GNNVBNCX.mjs → chunk-5WPZCXNS.mjs} +411 -686
  42. package/dist/lib/node-esm/chunk-5WPZCXNS.mjs.map +7 -0
  43. package/dist/lib/node-esm/{chunk-JRL5LGCE.mjs → chunk-IU2L277A.mjs} +4 -5
  44. package/dist/lib/node-esm/chunk-IU2L277A.mjs.map +7 -0
  45. package/dist/lib/node-esm/{SheetContainer-Y7ZMFBAP.mjs → chunk-QEUCIHIN.mjs} +983 -508
  46. package/dist/lib/node-esm/chunk-QEUCIHIN.mjs.map +7 -0
  47. package/dist/lib/node-esm/graph-SMPUMOV2.mjs +34 -0
  48. package/dist/lib/node-esm/graph-SMPUMOV2.mjs.map +7 -0
  49. package/dist/lib/node-esm/index.mjs +87 -59
  50. package/dist/lib/node-esm/index.mjs.map +4 -4
  51. package/dist/lib/node-esm/meta.json +1 -1
  52. package/dist/lib/node-esm/meta.mjs +2 -1
  53. package/dist/lib/node-esm/types.mjs +5 -6
  54. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  55. package/dist/types/src/components/CellEditor/CellEditor.d.ts +23 -3
  56. package/dist/types/src/components/CellEditor/CellEditor.d.ts.map +1 -1
  57. package/dist/types/src/components/CellEditor/CellEditor.stories.d.ts +2 -2
  58. package/dist/types/src/components/CellEditor/CellEditor.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/CellEditor/extension.d.ts +1 -1
  60. package/dist/types/src/components/CellEditor/extension.d.ts.map +1 -1
  61. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts +11 -0
  62. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -0
  63. package/dist/types/src/components/ComputeGraph/index.d.ts +1 -3
  64. package/dist/types/src/components/ComputeGraph/index.d.ts.map +1 -1
  65. package/dist/types/src/components/GridSheet/GridSheet.d.ts +10 -0
  66. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -0
  67. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +9 -0
  68. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -0
  69. package/dist/types/src/components/GridSheet/util.d.ts +16 -0
  70. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -0
  71. package/dist/types/src/components/Sheet/Sheet.d.ts +1 -1
  72. package/dist/types/src/components/Sheet/Sheet.d.ts.map +1 -1
  73. package/dist/types/src/components/Sheet/Sheet.stories.d.ts +5 -6
  74. package/dist/types/src/components/Sheet/Sheet.stories.d.ts.map +1 -1
  75. package/dist/types/src/components/Sheet/grid.d.ts +2 -2
  76. package/dist/types/src/components/Sheet/grid.d.ts.map +1 -1
  77. package/dist/types/src/components/Sheet/nav.d.ts +3 -3
  78. package/dist/types/src/components/Sheet/nav.d.ts.map +1 -1
  79. package/dist/types/src/components/Sheet/sheet-context.d.ts +6 -7
  80. package/dist/types/src/components/Sheet/sheet-context.d.ts.map +1 -1
  81. package/dist/types/src/components/Sheet/threads.d.ts.map +1 -1
  82. package/dist/types/src/components/SheetContainer.d.ts +1 -1
  83. package/dist/types/src/components/SheetContainer.d.ts.map +1 -1
  84. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  85. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +1 -1
  86. package/dist/types/src/components/index.d.ts +2 -1
  87. package/dist/types/src/components/index.d.ts.map +1 -1
  88. package/dist/types/src/defs/index.d.ts +3 -0
  89. package/dist/types/src/defs/index.d.ts.map +1 -0
  90. package/dist/types/src/{model → defs}/types.d.ts +8 -3
  91. package/dist/types/src/defs/types.d.ts.map +1 -0
  92. package/dist/types/src/defs/types.test.d.ts.map +1 -0
  93. package/dist/types/src/{model → defs}/util.d.ts +8 -4
  94. package/dist/types/src/defs/util.d.ts.map +1 -0
  95. package/dist/types/src/extensions/compute.d.ts +6 -0
  96. package/dist/types/src/extensions/compute.d.ts.map +1 -0
  97. package/dist/types/src/extensions/compute.stories.d.ts +26 -0
  98. package/dist/types/src/extensions/compute.stories.d.ts.map +1 -0
  99. package/dist/types/src/extensions/index.d.ts +2 -0
  100. package/dist/types/src/extensions/index.d.ts.map +1 -0
  101. package/dist/types/src/graph/compute-graph-registry.d.ts +34 -0
  102. package/dist/types/src/graph/compute-graph-registry.d.ts.map +1 -0
  103. package/dist/types/src/graph/compute-graph.d.ts +64 -0
  104. package/dist/types/src/graph/compute-graph.d.ts.map +1 -0
  105. package/dist/types/src/graph/compute-graph.stories.d.ts +10 -0
  106. package/dist/types/src/graph/compute-graph.stories.d.ts.map +1 -0
  107. package/dist/types/src/graph/compute-graph.test.d.ts +2 -0
  108. package/dist/types/src/graph/compute-graph.test.d.ts.map +1 -0
  109. package/dist/types/src/graph/compute-node.d.ts +26 -0
  110. package/dist/types/src/graph/compute-node.d.ts.map +1 -0
  111. package/dist/types/src/{components/ComputeGraph → graph/functions}/async-function.d.ts +14 -5
  112. package/dist/types/src/graph/functions/async-function.d.ts.map +1 -0
  113. package/dist/types/src/graph/functions/edge-function.d.ts +21 -0
  114. package/dist/types/src/graph/functions/edge-function.d.ts.map +1 -0
  115. package/dist/types/src/{model/functions.d.ts → graph/functions/function-defs.d.ts} +1 -1
  116. package/dist/types/src/graph/functions/function-defs.d.ts.map +1 -0
  117. package/dist/types/src/graph/functions/index.d.ts +4 -0
  118. package/dist/types/src/graph/functions/index.d.ts.map +1 -0
  119. package/dist/types/src/graph/hyperformula.test.d.ts +2 -0
  120. package/dist/types/src/graph/hyperformula.test.d.ts.map +1 -0
  121. package/dist/types/src/graph/index.d.ts +5 -0
  122. package/dist/types/src/graph/index.d.ts.map +1 -0
  123. package/dist/types/src/graph/testing/index.d.ts +3 -0
  124. package/dist/types/src/graph/testing/index.d.ts.map +1 -0
  125. package/dist/types/src/graph/testing/test-builder.d.ts +15 -0
  126. package/dist/types/src/graph/testing/test-builder.d.ts.map +1 -0
  127. package/dist/types/src/graph/testing/test-plugin.d.ts +36 -0
  128. package/dist/types/src/graph/testing/test-plugin.d.ts.map +1 -0
  129. package/dist/types/src/graph/util.d.ts +2 -0
  130. package/dist/types/src/graph/util.d.ts.map +1 -0
  131. package/dist/types/src/hooks/hooks.stories.d.ts +11 -0
  132. package/dist/types/src/hooks/hooks.stories.d.ts.map +1 -0
  133. package/dist/types/src/hooks/index.d.ts +4 -0
  134. package/dist/types/src/hooks/index.d.ts.map +1 -0
  135. package/dist/types/src/hooks/useComputeGraph.d.ts +7 -0
  136. package/dist/types/src/hooks/useComputeGraph.d.ts.map +1 -0
  137. package/dist/types/src/hooks/useFormattingModel.d.ts +3 -0
  138. package/dist/types/src/hooks/useFormattingModel.d.ts.map +1 -0
  139. package/dist/types/src/hooks/useSheetModel.d.ts +8 -0
  140. package/dist/types/src/hooks/useSheetModel.d.ts.map +1 -0
  141. package/dist/types/src/meta.d.ts +1 -4
  142. package/dist/types/src/meta.d.ts.map +1 -1
  143. package/dist/types/src/model/formatting-model.d.ts +16 -0
  144. package/dist/types/src/model/formatting-model.d.ts.map +1 -0
  145. package/dist/types/src/model/index.d.ts +2 -4
  146. package/dist/types/src/model/index.d.ts.map +1 -1
  147. package/dist/types/src/model/{model.d.ts → sheet-model.d.ts} +10 -49
  148. package/dist/types/src/model/sheet-model.d.ts.map +1 -0
  149. package/dist/types/src/model/sheet-model.test.d.ts +2 -0
  150. package/dist/types/src/model/sheet-model.test.d.ts.map +1 -0
  151. package/dist/types/src/sanity.test.d.ts +2 -0
  152. package/dist/types/src/sanity.test.d.ts.map +1 -0
  153. package/dist/types/src/testing/index.d.ts +2 -0
  154. package/dist/types/src/testing/index.d.ts.map +1 -0
  155. package/dist/types/src/testing/testing.d.ts +8 -0
  156. package/dist/types/src/testing/testing.d.ts.map +1 -0
  157. package/dist/types/src/types.d.ts +15 -4
  158. package/dist/types/src/types.d.ts.map +1 -1
  159. package/dist/vendor/hyperformula.mjs +37145 -0
  160. package/package.json +48 -44
  161. package/src/SheetPlugin.tsx +46 -62
  162. package/src/components/CellEditor/CellEditor.stories.tsx +6 -6
  163. package/src/components/CellEditor/CellEditor.tsx +59 -9
  164. package/src/components/CellEditor/extension.test.ts +3 -4
  165. package/src/components/CellEditor/extension.ts +5 -6
  166. package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +20 -0
  167. package/src/components/ComputeGraph/index.ts +1 -3
  168. package/src/components/GridSheet/GridSheet.stories.tsx +36 -0
  169. package/src/components/GridSheet/GridSheet.tsx +171 -0
  170. package/src/components/GridSheet/util.ts +148 -0
  171. package/src/components/Sheet/Sheet.stories.tsx +48 -88
  172. package/src/components/Sheet/Sheet.tsx +42 -24
  173. package/src/components/Sheet/grid.ts +3 -3
  174. package/src/components/Sheet/nav.ts +19 -19
  175. package/src/components/Sheet/sheet-context.tsx +12 -82
  176. package/src/components/Sheet/threads.tsx +10 -6
  177. package/src/components/SheetContainer.tsx +13 -15
  178. package/src/components/Toolbar/Toolbar.tsx +1 -2
  179. package/src/components/index.ts +1 -0
  180. package/src/defs/index.ts +6 -0
  181. package/src/{model → defs}/types.test.ts +7 -7
  182. package/src/{model → defs}/types.ts +24 -14
  183. package/src/{model → defs}/util.ts +65 -17
  184. package/src/extensions/compute.stories.tsx +151 -0
  185. package/src/extensions/compute.ts +147 -0
  186. package/src/extensions/index.ts +5 -0
  187. package/src/graph/compute-graph-registry.ts +90 -0
  188. package/src/graph/compute-graph.stories.tsx +93 -0
  189. package/src/graph/compute-graph.test.ts +87 -0
  190. package/src/graph/compute-graph.ts +242 -0
  191. package/src/graph/compute-node.ts +63 -0
  192. package/src/{components/ComputeGraph → graph/functions}/async-function.ts +25 -15
  193. package/src/{components/ComputeGraph → graph/functions}/edge-function.ts +16 -14
  194. package/src/graph/functions/index.ts +7 -0
  195. package/src/graph/hyperformula.test.ts +14 -0
  196. package/src/graph/index.ts +8 -0
  197. package/src/graph/testing/index.ts +6 -0
  198. package/src/graph/testing/test-builder.ts +54 -0
  199. package/src/{components/ComputeGraph/custom.ts → graph/testing/test-plugin.ts} +44 -14
  200. package/src/graph/util.ts +8 -0
  201. package/src/hooks/hooks.stories.tsx +50 -0
  202. package/src/hooks/index.ts +7 -0
  203. package/src/hooks/useComputeGraph.ts +28 -0
  204. package/src/hooks/useFormattingModel.ts +11 -0
  205. package/src/hooks/useSheetModel.ts +40 -0
  206. package/src/meta.tsx +1 -5
  207. package/src/{components/Sheet/formatting.ts → model/formatting-model.ts} +20 -13
  208. package/src/model/index.ts +2 -4
  209. package/src/model/sheet-model.test.ts +57 -0
  210. package/src/model/{model.ts → sheet-model.ts} +88 -188
  211. package/src/sanity.test.ts +40 -0
  212. package/src/testing/index.ts +5 -0
  213. package/src/testing/testing.tsx +68 -0
  214. package/src/types.ts +19 -17
  215. package/dist/lib/browser/SheetContainer-Y7ZMFBAP.mjs.map +0 -7
  216. package/dist/lib/browser/chunk-GNNVBNCX.mjs.map +0 -7
  217. package/dist/lib/browser/chunk-JRL5LGCE.mjs.map +0 -7
  218. package/dist/lib/browser/chunk-PGKZPKUD.mjs +0 -175
  219. package/dist/lib/browser/chunk-PGKZPKUD.mjs.map +0 -7
  220. package/dist/lib/browser/chunk-VBF7YENS.mjs +0 -8
  221. package/dist/lib/browser/chunk-VBF7YENS.mjs.map +0 -7
  222. package/dist/lib/browser/chunk-WUPTZUTX.mjs.map +0 -7
  223. package/dist/lib/browser/testing.mjs +0 -92
  224. package/dist/lib/browser/testing.mjs.map +0 -7
  225. package/dist/lib/node/SheetContainer-KEOKUKAQ.cjs.map +0 -7
  226. package/dist/lib/node/chunk-57PB2HPY.cjs +0 -40
  227. package/dist/lib/node/chunk-57PB2HPY.cjs.map +0 -7
  228. package/dist/lib/node/chunk-6LWBQAQZ.cjs +0 -202
  229. package/dist/lib/node/chunk-6LWBQAQZ.cjs.map +0 -7
  230. package/dist/lib/node/chunk-BJ6ZD7MN.cjs.map +0 -7
  231. package/dist/lib/node/chunk-VJU3NPUJ.cjs.map +0 -7
  232. package/dist/lib/node/chunk-ZRQZFV5T.cjs.map +0 -7
  233. package/dist/lib/node/testing.cjs +0 -111
  234. package/dist/lib/node/testing.cjs.map +0 -7
  235. package/dist/lib/node-esm/SheetContainer-Y7ZMFBAP.mjs.map +0 -7
  236. package/dist/lib/node-esm/chunk-GNNVBNCX.mjs.map +0 -7
  237. package/dist/lib/node-esm/chunk-JRL5LGCE.mjs.map +0 -7
  238. package/dist/lib/node-esm/chunk-PGKZPKUD.mjs +0 -175
  239. package/dist/lib/node-esm/chunk-PGKZPKUD.mjs.map +0 -7
  240. package/dist/lib/node-esm/chunk-VBF7YENS.mjs +0 -8
  241. package/dist/lib/node-esm/chunk-VBF7YENS.mjs.map +0 -7
  242. package/dist/lib/node-esm/chunk-WUPTZUTX.mjs.map +0 -7
  243. package/dist/lib/node-esm/testing.mjs +0 -92
  244. package/dist/lib/node-esm/testing.mjs.map +0 -7
  245. package/dist/types/src/components/ComputeGraph/async-function.d.ts.map +0 -1
  246. package/dist/types/src/components/ComputeGraph/custom.d.ts +0 -21
  247. package/dist/types/src/components/ComputeGraph/custom.d.ts.map +0 -1
  248. package/dist/types/src/components/ComputeGraph/edge-function.d.ts +0 -20
  249. package/dist/types/src/components/ComputeGraph/edge-function.d.ts.map +0 -1
  250. package/dist/types/src/components/ComputeGraph/graph-context.d.ts +0 -12
  251. package/dist/types/src/components/ComputeGraph/graph-context.d.ts.map +0 -1
  252. package/dist/types/src/components/ComputeGraph/graph.browser.test.d.ts +0 -2
  253. package/dist/types/src/components/ComputeGraph/graph.browser.test.d.ts.map +0 -1
  254. package/dist/types/src/components/ComputeGraph/graph.d.ts +0 -26
  255. package/dist/types/src/components/ComputeGraph/graph.d.ts.map +0 -1
  256. package/dist/types/src/components/Sheet/formatting.d.ts +0 -14
  257. package/dist/types/src/components/Sheet/formatting.d.ts.map +0 -1
  258. package/dist/types/src/model/functions.d.ts.map +0 -1
  259. package/dist/types/src/model/model.browser.test.d.ts +0 -2
  260. package/dist/types/src/model/model.browser.test.d.ts.map +0 -1
  261. package/dist/types/src/model/model.d.ts.map +0 -1
  262. package/dist/types/src/model/types.d.ts.map +0 -1
  263. package/dist/types/src/model/types.test.d.ts.map +0 -1
  264. package/dist/types/src/model/util.d.ts.map +0 -1
  265. package/dist/types/src/testing.d.ts +0 -9
  266. package/dist/types/src/testing.d.ts.map +0 -1
  267. package/src/components/ComputeGraph/graph-context.tsx +0 -50
  268. package/src/components/ComputeGraph/graph.browser.test.ts +0 -49
  269. package/src/components/ComputeGraph/graph.ts +0 -62
  270. package/src/model/model.browser.test.ts +0 -99
  271. package/src/testing.ts +0 -50
  272. /package/dist/types/src/{model → defs}/types.test.d.ts +0 -0
  273. /package/src/{model/functions.ts → graph/functions/function-defs.ts} +0 -0
@@ -1,39 +1,42 @@
1
- import {
2
- SheetContainer
3
- } from "./chunk-VBF7YENS.mjs";
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
4
2
  import {
5
3
  ComputeGraphContextProvider,
6
- EdgeFunctionPlugin,
7
- EdgeFunctionPluginTranslations
8
- } from "./chunk-PGKZPKUD.mjs";
9
- import {
10
- CustomPlugin,
11
- CustomPluginTranslations,
12
- SheetModel,
4
+ SheetContainer,
13
5
  compareIndexPositions,
14
- createComputeGraph
15
- } from "./chunk-GNNVBNCX.mjs";
6
+ createSheet,
7
+ useComputeGraph
8
+ } from "./chunk-QEUCIHIN.mjs";
16
9
  import {
17
10
  SheetAction,
18
- SheetType,
19
- createSheet
20
- } from "./chunk-WUPTZUTX.mjs";
11
+ SheetType
12
+ } from "./chunk-2HAM45RC.mjs";
21
13
  import {
22
14
  SHEET_PLUGIN,
23
15
  meta_default
24
- } from "./chunk-JRL5LGCE.mjs";
16
+ } from "./chunk-IU2L277A.mjs";
17
+ import "./chunk-5WPZCXNS.mjs";
25
18
 
26
19
  // packages/plugins/plugin-sheet/src/SheetPlugin.tsx
27
20
  import { GridNine } from "@phosphor-icons/react";
28
21
  import React from "react";
29
22
  import { NavigationAction, parseIntentPlugin, resolvePlugin } from "@dxos/app-framework";
30
- import { create } from "@dxos/echo-schema";
23
+ import { invariant as invariant2 } from "@dxos/invariant";
31
24
  import { parseClientPlugin } from "@dxos/plugin-client";
32
25
  import { createExtension, isActionGroup } from "@dxos/plugin-graph";
33
26
  import { FunctionType } from "@dxos/plugin-script/types";
34
27
  import { SpaceAction } from "@dxos/plugin-space";
35
28
  import { getSpace, isEchoObject } from "@dxos/react-client/echo";
36
29
 
30
+ // packages/plugins/plugin-sheet/src/extensions/compute.ts
31
+ import { syntaxTree } from "@codemirror/language";
32
+ import { RangeSetBuilder, StateEffect, StateField } from "@codemirror/state";
33
+ import { Decoration, EditorView, ViewPlugin, WidgetType } from "@codemirror/view";
34
+ import { debounce } from "@dxos/async";
35
+ import { invariant } from "@dxos/invariant";
36
+ import { documentId, singleValueFacet } from "@dxos/react-ui-editor/state";
37
+ var updateAllDecorations = StateEffect.define();
38
+ var computeGraphFacet = singleValueFacet();
39
+
37
40
  // packages/plugins/plugin-sheet/src/translations.ts
38
41
  var translations_default = [
39
42
  {
@@ -58,56 +61,82 @@ var translations_default = [
58
61
  ];
59
62
 
60
63
  // packages/plugins/plugin-sheet/src/SheetPlugin.tsx
64
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/SheetPlugin.tsx";
61
65
  var SheetPlugin = () => {
62
- let remoteFunctionUrl;
63
- const graphs = create({});
64
- const setGraph = (key, graph) => {
65
- graphs[key] = graph;
66
- };
66
+ let computeGraphRegistry;
67
67
  return {
68
68
  meta: meta_default,
69
69
  ready: async (plugins) => {
70
70
  const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;
71
- if (!client) {
72
- return;
73
- }
71
+ invariant2(client, void 0, {
72
+ F: __dxlog_file,
73
+ L: 32,
74
+ S: void 0,
75
+ A: [
76
+ "client",
77
+ ""
78
+ ]
79
+ });
80
+ let remoteFunctionUrl;
74
81
  if (client.config.values.runtime?.services?.edge?.url) {
75
82
  const url = new URL("/functions", client.config.values.runtime?.services?.edge?.url);
76
83
  url.protocol = "https";
77
84
  remoteFunctionUrl = url.toString();
78
85
  }
86
+ const { ComputeGraphRegistry } = await import("./graph-SMPUMOV2.mjs");
87
+ computeGraphRegistry = new ComputeGraphRegistry({
88
+ remoteFunctionUrl
89
+ });
79
90
  },
80
91
  provides: {
81
92
  context: ({ children }) => {
93
+ invariant2(computeGraphRegistry, void 0, {
94
+ F: __dxlog_file,
95
+ L: 46,
96
+ S: void 0,
97
+ A: [
98
+ "computeGraphRegistry",
99
+ ""
100
+ ]
101
+ });
82
102
  return /* @__PURE__ */ React.createElement(ComputeGraphContextProvider, {
83
- graphs,
84
- setGraph
103
+ registry: computeGraphRegistry
85
104
  }, children);
86
105
  },
87
106
  metadata: {
88
107
  records: {
89
108
  [SheetType.typename]: {
90
- label: (object) => object instanceof SheetType ? object.title : void 0,
109
+ label: (object) => object instanceof SheetType ? object.name : void 0,
91
110
  placeholder: [
92
111
  "sheet title placeholder",
93
112
  {
94
113
  ns: SHEET_PLUGIN
95
114
  }
96
115
  ],
97
- icon: (props) => /* @__PURE__ */ React.createElement(GridNine, props),
98
- iconSymbol: "ph--grid-nine--regular"
116
+ icon: "ph--grid-nine--regular"
99
117
  }
100
118
  }
101
119
  },
102
120
  translations: translations_default,
103
121
  echo: {
104
122
  // TODO(wittjosiah): Factor out to common package/plugin.
105
- // FunctionType is currently registered here in case script plugin isn't enabled.
123
+ // FunctionType is currently registered here in case script plugin isn't enabled.
106
124
  schema: [
107
125
  SheetType,
108
126
  FunctionType
109
127
  ]
110
128
  },
129
+ space: {
130
+ onSpaceCreate: {
131
+ label: [
132
+ "create sheet label",
133
+ {
134
+ ns: SHEET_PLUGIN
135
+ }
136
+ ],
137
+ action: SheetAction.CREATE
138
+ }
139
+ },
111
140
  graph: {
112
141
  builder: (plugins) => {
113
142
  const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;
@@ -157,8 +186,7 @@ var SheetPlugin = () => {
157
186
  ns: SHEET_PLUGIN
158
187
  }
159
188
  ],
160
- icon: (props) => /* @__PURE__ */ React.createElement(GridNine, props),
161
- iconSymbol: "ph--grid-nine--regular",
189
+ icon: "ph--grid-nine--regular",
162
190
  testId: "sheetPlugin.createObject"
163
191
  }
164
192
  }
@@ -167,6 +195,24 @@ var SheetPlugin = () => {
167
195
  });
168
196
  }
169
197
  },
198
+ markdown: {
199
+ extensions: ({ document: doc }) => {
200
+ invariant2(computeGraphRegistry, void 0, {
201
+ F: __dxlog_file,
202
+ L: 114,
203
+ S: void 0,
204
+ A: [
205
+ "computeGraphRegistry",
206
+ ""
207
+ ]
208
+ });
209
+ const space = getSpace(doc);
210
+ if (space) {
211
+ const computeGraph = computeGraphRegistry.getOrCreateGraph(space);
212
+ return computeGraphFacet.of(computeGraph);
213
+ }
214
+ }
215
+ },
170
216
  stack: {
171
217
  creators: [
172
218
  {
@@ -194,20 +240,20 @@ var SheetPlugin = () => {
194
240
  },
195
241
  thread: {
196
242
  predicate: (data) => data instanceof SheetType,
197
- createSort: (sheet) => (anchorA, anchorB) => !anchorA || !anchorB ? 0 : compareIndexPositions(sheet, anchorA, anchorB)
243
+ createSort: (sheet) => (indexA, indexB) => !indexA || !indexB ? 0 : compareIndexPositions(sheet, indexA, indexB)
198
244
  },
199
245
  surface: {
200
- component: ({ data, role = "never" }) => {
201
- const space = isEchoObject(data.object) && getSpace(data.object);
202
- if (space && data.object instanceof SheetType) {
246
+ component: ({ data, role }) => {
247
+ const space = isEchoObject(data.object) ? getSpace(data.object) : void 0;
248
+ const graph = useComputeGraph(space);
249
+ if (graph && data.object instanceof SheetType) {
203
250
  switch (role) {
204
251
  case "article":
205
252
  case "section": {
206
253
  return /* @__PURE__ */ React.createElement(SheetContainer, {
254
+ graph,
207
255
  sheet: data.object,
208
- space,
209
- role,
210
- remoteFunctionUrl
256
+ role
211
257
  });
212
258
  }
213
259
  }
@@ -219,26 +265,8 @@ var SheetPlugin = () => {
219
265
  resolver: async (intent) => {
220
266
  switch (intent.action) {
221
267
  case SheetAction.CREATE: {
222
- const space = intent.data?.space;
223
- const sheet = createSheet();
224
- const graph = graphs[space.id] ?? createComputeGraph([
225
- {
226
- plugin: EdgeFunctionPlugin,
227
- translations: EdgeFunctionPluginTranslations
228
- },
229
- // TODO(wittjosiah): Remove. Needed for current test sheet generated data.
230
- {
231
- plugin: CustomPlugin,
232
- translations: CustomPluginTranslations
233
- }
234
- ], space, {
235
- remoteFunctionUrl
236
- });
237
- const model = new SheetModel(graph, sheet);
238
- await model.initialize();
239
- await model.destroy();
240
268
  return {
241
- data: sheet
269
+ data: createSheet()
242
270
  };
243
271
  }
244
272
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/SheetPlugin.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type IconProps, GridNine } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport { NavigationAction, parseIntentPlugin, resolvePlugin, type PluginDefinition } from '@dxos/app-framework';\nimport { create } from '@dxos/echo-schema';\nimport { parseClientPlugin } from '@dxos/plugin-client';\nimport { type ActionGroup, createExtension, isActionGroup } from '@dxos/plugin-graph';\nimport { FunctionType } from '@dxos/plugin-script/types';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { getSpace, isEchoObject } from '@dxos/react-client/echo';\n\nimport {\n createComputeGraph,\n CustomPlugin,\n CustomPluginTranslations,\n SheetContainer,\n type ComputeGraph,\n} from './components';\n// TODO(wittjosiah): Refactor. These are not exported from ./components due to depending on ECHO.\nimport { EdgeFunctionPlugin, EdgeFunctionPluginTranslations } from './components/ComputeGraph/edge-function';\nimport { ComputeGraphContextProvider } from './components/ComputeGraph/graph-context';\nimport meta, { SHEET_PLUGIN } from './meta';\nimport { compareIndexPositions, SheetModel } from './model';\nimport translations from './translations';\nimport { createSheet, SheetAction, type SheetPluginProvides, SheetType } from './types';\n\nexport const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {\n let remoteFunctionUrl: string | undefined;\n\n const graphs = create<Record<string, ComputeGraph>>({});\n const setGraph = (key: string, graph: ComputeGraph) => {\n graphs[key] = graph;\n };\n\n return {\n meta,\n ready: async (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n if (!client) {\n return;\n }\n\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 = 'https';\n remoteFunctionUrl = url.toString();\n }\n },\n provides: {\n context: ({ children }) => {\n return (\n <ComputeGraphContextProvider graphs={graphs} setGraph={setGraph}>\n {children}\n </ComputeGraphContextProvider>\n );\n },\n metadata: {\n records: {\n [SheetType.typename]: {\n label: (object: any) => (object instanceof SheetType ? object.title : undefined),\n placeholder: ['sheet title placeholder', { ns: SHEET_PLUGIN }],\n icon: (props: IconProps) => <GridNine {...props} />,\n iconSymbol: 'ph--grid-nine--regular',\n },\n },\n },\n translations,\n echo: {\n // TODO(wittjosiah): Factor out to common package/plugin.\n // FunctionType is currently registered here in case script plugin isn't enabled.\n schema: [SheetType, FunctionType],\n },\n graph: {\n builder: (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n if (!client || !dispatch) {\n return [];\n }\n\n return createExtension({\n id: SheetAction.CREATE,\n filter: (node): node is ActionGroup => isActionGroup(node) && node.id.startsWith(SpaceAction.ADD_OBJECT),\n actions: ({ node }) => {\n const id = node.id.split('/').at(-1);\n const [spaceId, objectId] = id?.split(':') ?? [];\n const space = client.spaces.get().find((space) => space.id === spaceId);\n const object = objectId && space?.db.getObjectById(objectId);\n const target = objectId ? object : space;\n if (!target) {\n return;\n }\n\n return [\n {\n id: `${SHEET_PLUGIN}/create/${node.id}`,\n data: async () => {\n await dispatch([\n { plugin: SHEET_PLUGIN, action: SheetAction.CREATE, data: { space } },\n { action: SpaceAction.ADD_OBJECT, data: { target } },\n { action: NavigationAction.OPEN },\n ]);\n },\n properties: {\n label: ['create sheet label', { ns: SHEET_PLUGIN }],\n icon: (props: IconProps) => <GridNine {...props} />,\n iconSymbol: 'ph--grid-nine--regular',\n testId: 'sheetPlugin.createObject',\n },\n },\n ];\n },\n });\n },\n },\n stack: {\n creators: [\n {\n id: 'create-stack-section-sheet',\n testId: 'sheetPlugin.createSection',\n type: ['plugin name', { ns: SHEET_PLUGIN }],\n label: ['create sheet section label', { ns: SHEET_PLUGIN }],\n icon: (props: any) => <GridNine {...props} />,\n intent: {\n plugin: SHEET_PLUGIN,\n action: SheetAction.CREATE,\n },\n },\n ],\n },\n thread: {\n predicate: (data) => data instanceof SheetType,\n createSort: (sheet) => (anchorA, anchorB) =>\n !anchorA || !anchorB ? 0 : compareIndexPositions(sheet, anchorA, anchorB),\n },\n surface: {\n component: ({ data, role = 'never' }) => {\n // TODO(burdon): Standardize wrapper (with room for toolbar).\n const space = isEchoObject(data.object) && getSpace(data.object);\n if (space && data.object instanceof SheetType) {\n switch (role) {\n case 'article':\n case 'section': {\n return (\n <SheetContainer sheet={data.object} space={space} role={role} remoteFunctionUrl={remoteFunctionUrl} />\n );\n }\n }\n }\n\n return null;\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case SheetAction.CREATE: {\n const space = intent.data?.space;\n const sheet = createSheet();\n const graph =\n graphs[space.id] ??\n createComputeGraph(\n [\n { plugin: EdgeFunctionPlugin, translations: EdgeFunctionPluginTranslations },\n // TODO(wittjosiah): Remove. Needed for current test sheet generated data.\n { plugin: CustomPlugin, translations: CustomPluginTranslations },\n ],\n space,\n { remoteFunctionUrl },\n );\n const model = new SheetModel(graph, sheet);\n await model.initialize();\n await model.destroy();\n return { data: sheet };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SHEET_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [SHEET_PLUGIN]: {\n 'plugin name': 'Sheets',\n 'sheet title placeholder': 'New sheet',\n 'create sheet label': 'Create sheet',\n 'create sheet section label': 'Create sheet',\n 'cell placeholder': 'Cell value...',\n 'toolbar left label': 'Align left',\n 'toolbar left center': 'Align center',\n 'toolbar left right': 'Align right',\n 'selection overlaps existing comment label': 'Selected cell already has a comment',\n 'comment label': 'Add comment',\n 'comment ranges not supported label': 'Commenting on ranges is not yet supported',\n 'no cursor label': 'Select a cell to comment',\n 'open comment for sheet cell': 'View comments for cell',\n },\n },\n },\n] as const;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SheetPlugin } from './SheetPlugin';\n\nexport default SheetPlugin;\n\nexport * from './SheetPlugin';\n"],
5
- "mappings": "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",
6
- "names": ["GridNine", "React", "NavigationAction", "parseIntentPlugin", "resolvePlugin", "create", "parseClientPlugin", "createExtension", "isActionGroup", "FunctionType", "SpaceAction", "getSpace", "isEchoObject", "SHEET_PLUGIN", "SheetPlugin", "remoteFunctionUrl", "graphs", "create", "setGraph", "key", "graph", "meta", "ready", "plugins", "client", "resolvePlugin", "parseClientPlugin", "provides", "config", "values", "runtime", "services", "edge", "url", "URL", "protocol", "toString", "context", "children", "ComputeGraphContextProvider", "metadata", "records", "SheetType", "typename", "label", "object", "title", "undefined", "placeholder", "ns", "SHEET_PLUGIN", "icon", "props", "GridNine", "iconSymbol", "translations", "echo", "schema", "FunctionType", "builder", "dispatch", "parseIntentPlugin", "intent", "createExtension", "id", "SheetAction", "CREATE", "filter", "node", "isActionGroup", "startsWith", "SpaceAction", "ADD_OBJECT", "actions", "split", "at", "spaceId", "objectId", "space", "spaces", "get", "find", "db", "getObjectById", "target", "data", "plugin", "action", "NavigationAction", "OPEN", "properties", "testId", "stack", "creators", "type", "thread", "predicate", "createSort", "sheet", "anchorA", "anchorB", "compareIndexPositions", "surface", "component", "role", "isEchoObject", "getSpace", "SheetContainer", "resolver", "createSheet", "createComputeGraph", "EdgeFunctionPlugin", "EdgeFunctionPluginTranslations", "CustomPlugin", "CustomPluginTranslations", "model", "SheetModel", "initialize", "destroy", "SheetPlugin"]
3
+ "sources": ["../../../src/SheetPlugin.tsx", "../../../src/extensions/compute.ts", "../../../src/translations.ts", "../../../src/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { GridNine } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport { NavigationAction, parseIntentPlugin, resolvePlugin, type PluginDefinition } from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { parseClientPlugin } from '@dxos/plugin-client';\nimport { createExtension, isActionGroup, type ActionGroup } from '@dxos/plugin-graph';\nimport { FunctionType } from '@dxos/plugin-script/types';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { getSpace, isEchoObject } from '@dxos/react-client/echo';\n\nimport { ComputeGraphContextProvider, SheetContainer } from './components';\nimport { compareIndexPositions, createSheet } from './defs';\nimport { computeGraphFacet } from './extensions';\nimport { type ComputeGraphRegistry } from './graph';\nimport { useComputeGraph } from './hooks';\nimport meta, { SHEET_PLUGIN } from './meta';\nimport translations from './translations';\nimport { SheetAction, SheetType, type SheetPluginProvides } from './types';\n\nexport const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {\n let computeGraphRegistry: ComputeGraphRegistry | undefined;\n\n return {\n meta,\n ready: async (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n invariant(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 = 'https';\n remoteFunctionUrl = url.toString();\n }\n\n // Async import removes direct dependency on hyperformula.\n const { ComputeGraphRegistry } = await import('./graph');\n computeGraphRegistry = new ComputeGraphRegistry({ remoteFunctionUrl });\n },\n provides: {\n context: ({ children }) => {\n invariant(computeGraphRegistry);\n return <ComputeGraphContextProvider registry={computeGraphRegistry}>{children}</ComputeGraphContextProvider>;\n },\n metadata: {\n records: {\n [SheetType.typename]: {\n label: (object: any) => (object instanceof SheetType ? object.name : undefined),\n placeholder: ['sheet title placeholder', { ns: SHEET_PLUGIN }],\n icon: 'ph--grid-nine--regular',\n },\n },\n },\n translations,\n echo: {\n // TODO(wittjosiah): Factor out to common package/plugin.\n // FunctionType is currently registered here in case script plugin isn't enabled.\n schema: [SheetType, FunctionType],\n },\n space: {\n onSpaceCreate: {\n label: ['create sheet label', { ns: SHEET_PLUGIN }],\n action: SheetAction.CREATE,\n },\n },\n graph: {\n builder: (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n if (!client || !dispatch) {\n return [];\n }\n\n return createExtension({\n id: SheetAction.CREATE,\n filter: (node): node is ActionGroup => isActionGroup(node) && node.id.startsWith(SpaceAction.ADD_OBJECT),\n actions: ({ node }) => {\n const id = node.id.split('/').at(-1);\n const [spaceId, objectId] = id?.split(':') ?? [];\n const space = client.spaces.get().find((space) => space.id === spaceId);\n const object = objectId && space?.db.getObjectById(objectId);\n const target = objectId ? object : space;\n if (!target) {\n return;\n }\n\n return [\n {\n id: `${SHEET_PLUGIN}/create/${node.id}`,\n data: async () => {\n await dispatch([\n { plugin: SHEET_PLUGIN, action: SheetAction.CREATE, data: { space } },\n { action: SpaceAction.ADD_OBJECT, data: { target } },\n { action: NavigationAction.OPEN },\n ]);\n },\n properties: {\n label: ['create sheet label', { ns: SHEET_PLUGIN }],\n icon: 'ph--grid-nine--regular',\n testId: 'sheetPlugin.createObject',\n },\n },\n ];\n },\n });\n },\n },\n markdown: {\n extensions: ({ document: doc }) => {\n invariant(computeGraphRegistry);\n const space = getSpace(doc);\n if (space) {\n const computeGraph = computeGraphRegistry.getOrCreateGraph(space);\n return computeGraphFacet.of(computeGraph);\n }\n },\n },\n stack: {\n creators: [\n {\n id: 'create-stack-section-sheet',\n testId: 'sheetPlugin.createSection',\n type: ['plugin name', { ns: SHEET_PLUGIN }],\n label: ['create sheet section label', { ns: SHEET_PLUGIN }],\n icon: (props: any) => <GridNine {...props} />,\n intent: {\n plugin: SHEET_PLUGIN,\n action: SheetAction.CREATE,\n },\n },\n ],\n },\n thread: {\n predicate: (data) => data instanceof SheetType,\n createSort: (sheet) => (indexA, indexB) =>\n !indexA || !indexB ? 0 : compareIndexPositions(sheet, indexA, indexB),\n },\n surface: {\n component: ({ data, role }) => {\n const space = isEchoObject(data.object) ? getSpace(data.object) : undefined;\n const graph = useComputeGraph(space);\n if (graph && data.object instanceof SheetType) {\n switch (role) {\n case 'article':\n case 'section': {\n return <SheetContainer graph={graph} sheet={data.object} role={role} />;\n }\n }\n }\n\n return null;\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case SheetAction.CREATE: {\n return { data: createSheet() };\n }\n }\n },\n },\n },\n };\n};\n", "//\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 UnsubscribeCallback, debounce } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { documentId, singleValueFacet } from '@dxos/react-ui-editor/state';\n\nimport { type CellAddress } from '../defs';\nimport { type ComputeGraph, type ComputeNode, createSheetName } from '../graph';\nimport { type CellScalarValue } from '../types';\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?: UnsubscribeCallback;\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) {\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 { SHEET_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [SHEET_PLUGIN]: {\n 'plugin name': 'Sheets',\n 'sheet title placeholder': 'New sheet',\n 'create sheet label': 'Create sheet',\n 'create sheet section label': 'Create sheet',\n 'cell placeholder': 'Cell value...',\n 'toolbar left label': 'Align left',\n 'toolbar left center': 'Align center',\n 'toolbar left right': 'Align right',\n 'selection overlaps existing comment label': 'Selected cell already has a comment',\n 'comment label': 'Add comment',\n 'comment ranges not supported label': 'Commenting on ranges is not yet supported',\n 'no cursor label': 'Select a cell to comment',\n 'open comment for sheet cell': 'View comments for cell',\n },\n },\n },\n] as const;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SheetPlugin } from './SheetPlugin';\n\nexport default SheetPlugin;\n\nexport * from './SheetPlugin';\n"],
5
+ "mappings": "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",
6
+ "names": ["GridNine", "React", "NavigationAction", "parseIntentPlugin", "resolvePlugin", "invariant", "parseClientPlugin", "createExtension", "isActionGroup", "FunctionType", "SpaceAction", "getSpace", "isEchoObject", "syntaxTree", "RangeSetBuilder", "StateEffect", "StateField", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "debounce", "invariant", "documentId", "singleValueFacet", "updateAllDecorations", "StateEffect", "define", "computeGraphFacet", "singleValueFacet", "SHEET_PLUGIN", "SheetPlugin", "computeGraphRegistry", "meta", "ready", "plugins", "client", "resolvePlugin", "parseClientPlugin", "provides", "invariant", "remoteFunctionUrl", "config", "values", "runtime", "services", "edge", "url", "URL", "protocol", "toString", "ComputeGraphRegistry", "context", "children", "ComputeGraphContextProvider", "registry", "metadata", "records", "SheetType", "typename", "label", "object", "name", "undefined", "placeholder", "ns", "SHEET_PLUGIN", "icon", "translations", "echo", "schema", "FunctionType", "space", "onSpaceCreate", "action", "SheetAction", "CREATE", "graph", "builder", "dispatch", "parseIntentPlugin", "intent", "createExtension", "id", "filter", "node", "isActionGroup", "startsWith", "SpaceAction", "ADD_OBJECT", "actions", "split", "at", "spaceId", "objectId", "spaces", "get", "find", "db", "getObjectById", "target", "data", "plugin", "NavigationAction", "OPEN", "properties", "testId", "markdown", "extensions", "document", "doc", "getSpace", "computeGraph", "getOrCreateGraph", "computeGraphFacet", "of", "stack", "creators", "type", "props", "GridNine", "thread", "predicate", "createSort", "sheet", "indexA", "indexB", "compareIndexPositions", "surface", "component", "role", "isEchoObject", "useComputeGraph", "SheetContainer", "resolver", "createSheet", "SheetPlugin"]
7
7
  }