@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,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nexport * from './ComputeGraph';\n\n// Lazily load components for content surfaces.\nexport const SheetContainer = React.lazy(() => import('./SheetContainer'));\n"],
5
- "mappings": ";AAIA,OAAOA,WAAW;AAKX,IAAMC,iBAAiBC,MAAMC,KAAK,MAAM,OAAO,+BAAA,CAAA;",
6
- "names": ["React", "SheetContainer", "React", "lazy"]
7
- }
@@ -1,7 +0,0 @@
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} from '@dxos/app-framework';\nimport { create, ref, S, TypedObject } from '@dxos/echo-schema';\nimport { type SchemaProvides } from '@dxos/plugin-client';\nimport { ThreadType } from '@dxos/plugin-space/types';\nimport { type StackProvides } from '@dxos/plugin-stack';\n\nimport { SHEET_PLUGIN } from './meta';\n\nconst SHEET_ACTION = `${SHEET_PLUGIN}/action`;\n\nexport enum SheetAction {\n CREATE = `${SHEET_ACTION}/create`,\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 MetadataRecordsProvides &\n TranslationsProvides &\n SchemaProvides &\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 // TODO(burdon): Arrays?\n value: S.Any,\n});\n\nexport type CellValue = S.Schema.Type<typeof CellValue>;\n\n/**\n * https://www.tutorialsteacher.com/typescript/typescript-number\n */\n// TODO(burdon): Format vs. value.\nexport enum ValueTypeEnum {\n Null = 0,\n Number = 1,\n Boolean = 2,\n String = 3,\n\n // Special numbers.\n Percent = 10,\n Currency = 11,\n\n // Dates.\n DateTime = 20,\n Date = 21,\n Time = 22,\n\n // Validated string types.\n // TODO(burdon): Define effect types.\n URL = 30,\n DID = 31,\n}\n\nexport const ValueType = S.Enums(ValueTypeEnum);\n\nexport const Formatting = S.Struct({\n type: S.optional(ValueType),\n format: S.optional(S.String),\n precision: S.optional(S.Number),\n classNames: S.optional(S.Array(S.String)),\n});\n\nexport type Formatting = S.Schema.Type<typeof Formatting>;\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.\n// TODO(wittjosiah): Migrate typename to remove `Type` suffix.\n// TODO(wittjosiah): Rename title to name to align with other schemas.\nexport class SheetType extends TypedObject({ typename: 'dxos.org/type/SheetType', version: '0.1.0' })({\n title: S.optional(S.String),\n\n // Sparse map of cells referenced by index.\n cells: S.mutable(S.Record(S.String, 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(S.String, S.mutable(RowColumnMeta))),\n\n // Column metadata referenced by index.\n columnMeta: S.mutable(S.Record(S.String, S.mutable(RowColumnMeta))),\n\n // Cell formatting referenced by indexed range.\n formatting: S.mutable(S.Record(S.String, S.mutable(Formatting))),\n\n // Threads associated with the sheet\n threads: S.optional(S.mutable(S.Array(ref(ThreadType)))),\n}) {}\n\n// TODO(burdon): Fix defaults.\nexport const createSheet = (title?: string): SheetType =>\n create(SheetType, {\n title,\n cells: {},\n rows: [],\n columns: [],\n rowMeta: {},\n columnMeta: {},\n formatting: {},\n });\n"],
5
- "mappings": ";;;;;AAWA,SAASA,QAAQC,KAAKC,GAAGC,mBAAmB;AAE5C,SAASC,kBAAkB;AAK3B,IAAMC,eAAe,GAAGC,YAAAA;;UAEZC,cAAAA;wCACD,GAAGF,YAAAA,SAAqB,IAAA;GADvBE,gBAAAA,cAAAA,CAAAA,EAAAA;AAyBL,IAAMC,YAAYC,EAAEC,OAAO;;;;;EAKhCC,OAAOF,EAAEG;AACX,CAAA;;UAQYC,gBAAAA;;;;;;;;;;;;GAAAA,kBAAAA,gBAAAA,CAAAA,EAAAA;AAqBL,IAAMC,YAAYL,EAAEM,MAAMF,aAAAA;AAE1B,IAAMG,aAAaP,EAAEC,OAAO;EACjCO,MAAMR,EAAES,SAASJ,SAAAA;EACjBK,QAAQV,EAAES,SAAST,EAAEW,MAAM;EAC3BC,WAAWZ,EAAES,SAAST,EAAEa,MAAM;EAC9BC,YAAYd,EAAES,SAAST,EAAEe,MAAMf,EAAEW,MAAM,CAAA;AACzC,CAAA;AAKO,IAAMK,gBAAgBhB,EAAEC,OAAO;EACpCgB,MAAMjB,EAAES,SAAST,EAAEa,MAAM;AAC3B,CAAA;AAKO,IAAMK,YAAN,cAAwBC,YAAY;EAAEC,UAAU;EAA2BC,SAAS;AAAQ,CAAA,EAAG;EACpGC,OAAOtB,EAAES,SAAST,EAAEW,MAAM;;EAG1BY,OAAOvB,EAAEwB,QAAQxB,EAAEyB,OAAOzB,EAAEW,QAAQX,EAAEwB,QAAQzB,SAAAA,CAAAA,CAAAA;;EAG9C2B,MAAM1B,EAAEwB,QAAQxB,EAAEe,MAAMf,EAAEW,MAAM,CAAA;;EAGhCgB,SAAS3B,EAAEwB,QAAQxB,EAAEe,MAAMf,EAAEW,MAAM,CAAA;;EAGnCiB,SAAS5B,EAAEwB,QAAQxB,EAAEyB,OAAOzB,EAAEW,QAAQX,EAAEwB,QAAQR,aAAAA,CAAAA,CAAAA;;EAGhDa,YAAY7B,EAAEwB,QAAQxB,EAAEyB,OAAOzB,EAAEW,QAAQX,EAAEwB,QAAQR,aAAAA,CAAAA,CAAAA;;EAGnDc,YAAY9B,EAAEwB,QAAQxB,EAAEyB,OAAOzB,EAAEW,QAAQX,EAAEwB,QAAQjB,UAAAA,CAAAA,CAAAA;;EAGnDwB,SAAS/B,EAAES,SAAST,EAAEwB,QAAQxB,EAAEe,MAAMiB,IAAIC,UAAAA,CAAAA,CAAAA,CAAAA;AAC5C,CAAA,EAAA;AAAI;AAGG,IAAMC,cAAc,CAACZ,UAC1Ba,OAAOjB,WAAW;EAChBI;EACAC,OAAO,CAAC;EACRG,MAAM,CAAA;EACNC,SAAS,CAAA;EACTC,SAAS,CAAC;EACVC,YAAY,CAAC;EACbC,YAAY,CAAC;AACf,CAAA;",
6
- "names": ["create", "ref", "S", "TypedObject", "ThreadType", "SHEET_ACTION", "SHEET_PLUGIN", "SheetAction", "CellValue", "S", "Struct", "value", "Any", "ValueTypeEnum", "ValueType", "Enums", "Formatting", "type", "optional", "format", "String", "precision", "Number", "classNames", "Array", "RowColumnMeta", "size", "SheetType", "TypedObject", "typename", "version", "title", "cells", "mutable", "Record", "rows", "columns", "rowMeta", "columnMeta", "formatting", "threads", "ref", "ThreadType", "createSheet", "create"]
7
- }
@@ -1,92 +0,0 @@
1
- import "./chunk-VBF7YENS.mjs";
2
- import {
3
- SheetModel,
4
- createComputeGraph
5
- } from "./chunk-GNNVBNCX.mjs";
6
- import {
7
- createSheet
8
- } from "./chunk-WUPTZUTX.mjs";
9
- import "./chunk-JRL5LGCE.mjs";
10
-
11
- // packages/plugins/plugin-sheet/src/testing.ts
12
- var testSheetName = "test";
13
- var createCells = () => ({
14
- B1: {
15
- value: "Qty"
16
- },
17
- B3: {
18
- value: 1
19
- },
20
- B4: {
21
- value: 2
22
- },
23
- B5: {
24
- value: 3
25
- },
26
- B7: {
27
- value: "Total"
28
- },
29
- C1: {
30
- value: "Price"
31
- },
32
- C3: {
33
- value: 2e3
34
- },
35
- C4: {
36
- value: 2500
37
- },
38
- C5: {
39
- value: 3e3
40
- },
41
- C7: {
42
- value: "=SUMPRODUCT(B2:B6, C2:C6)"
43
- },
44
- // C8: { value: '=C7*CRYPTO(D7)' },
45
- C8: {
46
- value: "=C7*TEST()"
47
- },
48
- D7: {
49
- value: "USD"
50
- },
51
- D8: {
52
- value: "BTC"
53
- },
54
- E3: {
55
- value: "=TODAY()"
56
- },
57
- E4: {
58
- value: "=NOW()"
59
- },
60
- F1: {
61
- value: `=${testSheetName}!A1`
62
- },
63
- F3: {
64
- value: true
65
- },
66
- F4: {
67
- value: false
68
- },
69
- F5: {
70
- value: "8%"
71
- },
72
- F6: {
73
- value: "$10000"
74
- }
75
- });
76
- var createTestSheet = async ({ name, graph = createComputeGraph() } = {}) => {
77
- const sheet = createSheet(name);
78
- const model = new SheetModel(graph, sheet);
79
- await model.initialize();
80
- model.setValues(createCells());
81
- model.sheet.columnMeta[model.sheet.columns[0]] = {
82
- size: 100
83
- };
84
- await model.destroy();
85
- return sheet;
86
- };
87
- export {
88
- createCells,
89
- createTestSheet,
90
- testSheetName
91
- };
92
- //# sourceMappingURL=testing.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/testing.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type ComputeGraph, createComputeGraph } from './components';\nimport { SheetModel } from './model';\nimport { createSheet, type CellValue } from './types';\n\nexport const testSheetName = 'test';\n\nexport const createCells = (): Record<string, CellValue> => ({\n B1: { value: 'Qty' },\n B3: { value: 1 },\n B4: { value: 2 },\n B5: { value: 3 },\n B7: { value: 'Total' },\n\n C1: { value: 'Price' },\n C3: { value: 2_000 },\n C4: { value: 2_500 },\n C5: { value: 3_000 },\n C7: { value: '=SUMPRODUCT(B2:B6, C2:C6)' },\n // C8: { value: '=C7*CRYPTO(D7)' },\n C8: { value: '=C7*TEST()' },\n\n D7: { value: 'USD' },\n D8: { value: 'BTC' },\n\n E3: { value: '=TODAY()' },\n E4: { value: '=NOW()' },\n\n F1: { value: `=${testSheetName}!A1` }, // Ref test sheet.\n F3: { value: true },\n F4: { value: false },\n F5: { value: '8%' },\n F6: { value: '$10000' },\n});\n\nexport const createTestSheet = async ({\n name,\n graph = createComputeGraph(),\n}: { name?: string; graph?: ComputeGraph } = {}) => {\n const sheet = createSheet(name);\n const model = new SheetModel(graph, sheet);\n await model.initialize();\n model.setValues(createCells());\n model.sheet.columnMeta[model.sheet.columns[0]] = { size: 100 };\n await model.destroy();\n return sheet;\n};\n"],
5
- "mappings": ";;;;;;;;;;;AAQO,IAAMA,gBAAgB;AAEtB,IAAMC,cAAc,OAAkC;EAC3DC,IAAI;IAAEC,OAAO;EAAM;EACnBC,IAAI;IAAED,OAAO;EAAE;EACfE,IAAI;IAAEF,OAAO;EAAE;EACfG,IAAI;IAAEH,OAAO;EAAE;EACfI,IAAI;IAAEJ,OAAO;EAAQ;EAErBK,IAAI;IAAEL,OAAO;EAAQ;EACrBM,IAAI;IAAEN,OAAO;EAAM;EACnBO,IAAI;IAAEP,OAAO;EAAM;EACnBQ,IAAI;IAAER,OAAO;EAAM;EACnBS,IAAI;IAAET,OAAO;EAA4B;;EAEzCU,IAAI;IAAEV,OAAO;EAAa;EAE1BW,IAAI;IAAEX,OAAO;EAAM;EACnBY,IAAI;IAAEZ,OAAO;EAAM;EAEnBa,IAAI;IAAEb,OAAO;EAAW;EACxBc,IAAI;IAAEd,OAAO;EAAS;EAEtBe,IAAI;IAAEf,OAAO,IAAIH,aAAAA;EAAmB;EACpCmB,IAAI;IAAEhB,OAAO;EAAK;EAClBiB,IAAI;IAAEjB,OAAO;EAAM;EACnBkB,IAAI;IAAElB,OAAO;EAAK;EAClBmB,IAAI;IAAEnB,OAAO;EAAS;AACxB;AAEO,IAAMoB,kBAAkB,OAAO,EACpCC,MACAC,QAAQC,mBAAAA,EAAoB,IACe,CAAC,MAAC;AAC7C,QAAMC,QAAQC,YAAYJ,IAAAA;AAC1B,QAAMK,QAAQ,IAAIC,WAAWL,OAAOE,KAAAA;AACpC,QAAME,MAAME,WAAU;AACtBF,QAAMG,UAAU/B,YAAAA,CAAAA;AAChB4B,QAAMF,MAAMM,WAAWJ,MAAMF,MAAMO,QAAQ,CAAA,CAAE,IAAI;IAAEC,MAAM;EAAI;AAC7D,QAAMN,MAAMO,QAAO;AACnB,SAAOT;AACT;",
6
- "names": ["testSheetName", "createCells", "B1", "value", "B3", "B4", "B5", "B7", "C1", "C3", "C4", "C5", "C7", "C8", "D7", "D8", "E3", "E4", "F1", "F3", "F4", "F5", "F6", "createTestSheet", "name", "graph", "createComputeGraph", "sheet", "createSheet", "model", "SheetModel", "initialize", "setValues", "columnMeta", "columns", "size", "destroy"]
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"async-function.d.ts","sourceRoot":"","sources":["../../../../../src/components/ComputeGraph/async-function.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoC,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACnG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,EAAY,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAU/C,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAExE,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,sBAI3C,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,eAAe;IAuBxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAtBzB,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG;IAMrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8D;IAGrF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAGtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0C;IAGzE,OAAO,CAAC,YAAY,CAA8B;IAElD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;gBAGpB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,KAAK,GAAG,SAAS,EAC1C,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,EAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC;IAW5C,IAAI,KAAK,sBAER;IAED,IAAI,iBAAiB,WAEpB;IAED,IAAI,IAAI;;;MAEP;IAED,KAAK;IAOL,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB;IAKjE;;;OAGG;IACH,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,GAAG,EAAE,EACX,EAAE,EAAE,aAAa,EACjB,OAAO,CAAC,EAAE,eAAe,GACxB,gBAAgB,GAAG,SAAS;CAgChC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,IAAI,OAAO,IACqB,eAAe,CAC9C;IAED,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,eAAe;CAO1G"}
@@ -1,21 +0,0 @@
1
- import { type InterpreterState } from 'hyperformula/typings/interpreter/InterpreterState';
2
- import { type ProcedureAst } from 'hyperformula/typings/parser';
3
- import { FunctionPluginAsync } from './async-function';
4
- /**
5
- * https://hyperformula.handsontable.com/guide/custom-functions.html#add-a-simple-custom-function
6
- */
7
- export declare class CustomPlugin extends FunctionPluginAsync {
8
- test(ast: ProcedureAst, state: InterpreterState): import("hyperformula/typings/interpreter/InterpreterValue").RawInterpreterValue;
9
- crypto(ast: ProcedureAst, state: InterpreterState): import("hyperformula/typings/interpreter/InterpreterValue").RawInterpreterValue;
10
- }
11
- export declare const CustomPluginTranslations: {
12
- enGB: {
13
- TEST: string;
14
- CRYPTO: string;
15
- };
16
- enUS: {
17
- TEST: string;
18
- CRYPTO: string;
19
- };
20
- };
21
- //# sourceMappingURL=custom.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../../../src/components/ComputeGraph/custom.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAIhE,OAAO,EAAsB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAO3E;;GAEG;AACH,qBAAa,YAAa,SAAQ,mBAAmB;IACnD,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB;IAQ/C,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB;CAelD;AAgBD,eAAO,MAAM,wBAAwB;;;;;;;;;CASpC,CAAC"}
@@ -1,20 +0,0 @@
1
- import { type InterpreterState } from 'hyperformula/typings/interpreter/InterpreterState';
2
- import { type ProcedureAst } from 'hyperformula/typings/parser';
3
- import { FunctionPluginAsync } from './async-function';
4
- /**
5
- * A hyperformula function plugin for calling EDGE functions.
6
- *
7
- * https://hyperformula.handsontable.com/guide/custom-functions.html#add-a-simple-custom-function
8
- */
9
- export declare class EdgeFunctionPlugin extends FunctionPluginAsync {
10
- edge(ast: ProcedureAst, state: InterpreterState): import("hyperformula/typings/interpreter/InterpreterValue").RawInterpreterValue;
11
- }
12
- export declare const EdgeFunctionPluginTranslations: {
13
- enGB: {
14
- EDGE: string;
15
- };
16
- enUS: {
17
- EDGE: string;
18
- };
19
- };
20
- //# sourceMappingURL=edge-function.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"edge-function.d.ts","sourceRoot":"","sources":["../../../../../src/components/ComputeGraph/edge-function.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAQhE,OAAO,EAAsB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAI3E;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,mBAAmB;IACzD,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB;CAyChD;AAwBD,eAAO,MAAM,8BAA8B;;;;;;;CAO1C,CAAC"}
@@ -1,12 +0,0 @@
1
- import React, { type PropsWithChildren } from 'react';
2
- import { type Space } from '@dxos/react-client/echo';
3
- import { type FunctionContextOptions } from './async-function';
4
- import { type ComputeGraph } from './graph';
5
- export type ComputeGraphContextType = {
6
- graphs: Record<string, ComputeGraph>;
7
- setGraph: (key: string, graph: ComputeGraph) => void;
8
- };
9
- export declare const ComputeGraphContext: React.Context<ComputeGraphContextType>;
10
- export declare const ComputeGraphContextProvider: ({ children, graphs, setGraph, }: PropsWithChildren<ComputeGraphContextType>) => React.JSX.Element;
11
- export declare const useComputeGraph: (space: Space, options?: Partial<FunctionContextOptions>) => ComputeGraph;
12
- //# sourceMappingURL=graph-context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph-context.d.ts","sourceRoot":"","sources":["../../../../../src/components/ComputeGraph/graph-context.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAiB,KAAK,iBAAiB,EAAyB,MAAM,OAAO,CAAC;AAE5F,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG/D,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAEhE,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,mBAAmB,wCAA6E,CAAC;AAE9G,eAAO,MAAM,2BAA2B,oCAIrC,iBAAiB,CAAC,uBAAuB,CAAC,sBAE5C,CAAC;AAEF,eAAO,MAAM,eAAe,UAAW,KAAK,YAAY,OAAO,CAAC,sBAAsB,CAAC,KAAG,YAqBzF,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=graph.browser.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.browser.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/ComputeGraph/graph.browser.test.ts"],"names":[],"mappings":""}
@@ -1,26 +0,0 @@
1
- import { type FunctionPluginDefinition, HyperFormula } from 'hyperformula';
2
- import { type FunctionTranslationsPackage } from 'hyperformula/typings/interpreter';
3
- import { Event } from '@dxos/async';
4
- import { type Space } from '@dxos/client/echo';
5
- import { FunctionContext, type FunctionContextOptions } from './async-function';
6
- /**
7
- * Create root graph for space.
8
- */
9
- export declare const createComputeGraph: (functionPlugins?: {
10
- plugin: FunctionPluginDefinition;
11
- translations: FunctionTranslationsPackage;
12
- }[], space?: Space, options?: Partial<FunctionContextOptions>) => ComputeGraph;
13
- /**
14
- * Per-space compute and dependency graph.
15
- */
16
- export declare class ComputeGraph {
17
- readonly hf: HyperFormula;
18
- private readonly _space?;
19
- private readonly _options?;
20
- readonly id: string;
21
- readonly update: Event<void>;
22
- readonly context: FunctionContext;
23
- constructor(hf: HyperFormula, _space?: Space | undefined, _options?: Partial<FunctionContextOptions> | undefined);
24
- refresh(): void;
25
- }
26
- //# sourceMappingURL=graph.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../../../src/components/ComputeGraph/graph.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,wBAAwB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAEpF,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI/C,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,kBAAkB,qBAEZ;IAAE,MAAM,EAAE,wBAAwB,CAAC;IAAC,YAAY,EAAE,2BAA2B,CAAA;CAAE,EAAE,UAC1F,KAAK,YACH,OAAO,CAAC,sBAAsB,CAAC,KACxC,YAOF,CAAC;AAEF;;GAEG;AAEH,qBAAa,YAAY;aAeL,EAAE,EAAE,YAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAhB5B,SAAgB,EAAE,SAA4C;IAC9D,SAAgB,MAAM,cAAe;IAGrC,SAAgB,OAAO,kBAOrB;gBAGgB,EAAE,EAAE,YAAY,EACf,MAAM,CAAC,EAAE,KAAK,YAAA,EACd,QAAQ,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,YAAA;IAK7D,OAAO;CAIR"}
@@ -1,14 +0,0 @@
1
- import { type ClassNameValue } from '@dxos/react-ui-types';
2
- import { type SheetModel, type CellAddress } from '../../model';
3
- export declare class FormattingModel {
4
- private readonly model;
5
- constructor(model: SheetModel);
6
- /**
7
- * Get formatted string value and className for cell.
8
- */
9
- getFormatting(cell: CellAddress): {
10
- value?: string;
11
- classNames?: ClassNameValue;
12
- };
13
- }
14
- //# sourceMappingURL=formatting.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../../../../src/components/Sheet/formatting.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAA2C,MAAM,aAAa,CAAC;AAGzG,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,UAAU;IAE9C;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,cAAc,CAAA;KAAE;CA0FlF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../src/model/functions.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,EA42EhD,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=model.browser.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model.browser.test.d.ts","sourceRoot":"","sources":["../../../../src/model/model.browser.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/model/model.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/model/types.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,QAAU,CAAC;AAEnC,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,EAAE,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAEhE,eAAO,MAAM,SAAS,MAAO,WAAW,GAAG,SAAS,KAAK,WAAW,GAAG,SAAS,YAE/E,CAAC;AAEF,eAAO,MAAM,YAAY,WAAY,MAAM,KAAG,MAM7C,CAAC;AAEF,eAAO,MAAM,mBAAmB,oBAAqB,WAAW,KAAG,MAElE,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAS,MAAM,KAAG,WAOnD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,SAAS,WAIjD,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAS,MAAM,KAAG,SAGjD,CAAC;AAEF,eAAO,MAAM,OAAO,UAAW,SAAS,GAAG,SAAS,QAAQ,WAAW,KAAG,OAuBzE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../../../src/model/types.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/model/util.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,GAAG,CAAC;AACrD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,qBAAa,QAAS,SAAQ,KAAK;CAAG;AACtC,qBAAa,iBAAkB,SAAQ,QAAQ;CAAG;AAClD,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,CAAC,EAAE,MAAM;CAGtB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,uBAAiB,MAKxC,CAAC;AAEF,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,MAAM,EAAqD,CAAC;AAE3G;;GAEG;AACH,eAAO,MAAM,cAAc,UAAW,SAAS,QAAQ,WAAW,KAAG,MAEpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,UAAW,SAAS,OAAO,MAAM,KAAG,WAMhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,UAAW,SAAS,SAAS,SAAS,KAAG,MAEjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,UAAW,SAAS,OAAO,MAAM,KAAG,SAG9D,CAAC;AAGF,eAAO,MAAM,OAAO,GAAI,CAAC,UAAU,CAAC,EAAE,KAAG,CAAsD,CAAC;AAChG,eAAO,MAAM,QAAQ,GAAI,CAAC,UAAU,CAAC,EAAE,iBAAU,CAAC,EAMjD,CAAC;AAEF,eAAO,MAAM,OAAO,WAAY,WAAW,SAAS,WAAW,EAAE,KAAG,WAAW,GAAG,SAajF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,UAAW,SAAS,UAAU,MAAM,UAAU,MAAM,KAAG,MAUxF,CAAC"}
@@ -1,9 +0,0 @@
1
- import { type ComputeGraph } from './components';
2
- import { type CellValue } from './types';
3
- export declare const testSheetName = "test";
4
- export declare const createCells: () => Record<string, CellValue>;
5
- export declare const createTestSheet: ({ name, graph, }?: {
6
- name?: string;
7
- graph?: ComputeGraph;
8
- }) => Promise<import("./types").SheetType>;
9
- //# sourceMappingURL=testing.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../src/testing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,cAAc,CAAC;AAErE,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAEtD,eAAO,MAAM,aAAa,SAAS,CAAC;AAEpC,eAAO,MAAM,WAAW,QAAO,MAAM,CAAC,MAAM,EAAE,SAAS,CA0BrD,CAAC;AAEH,eAAO,MAAM,eAAe,sBAGzB;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAA;CAAE,yCAQzC,CAAC"}
@@ -1,50 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import React, { createContext, type PropsWithChildren, useContext, useEffect } from 'react';
6
-
7
- import { type Space } from '@dxos/react-client/echo';
8
-
9
- import { type FunctionContextOptions } from './async-function';
10
- import { CustomPlugin, CustomPluginTranslations } from './custom';
11
- import { EdgeFunctionPlugin, EdgeFunctionPluginTranslations } from './edge-function';
12
- import { createComputeGraph, type ComputeGraph } from './graph';
13
-
14
- export type ComputeGraphContextType = {
15
- graphs: Record<string, ComputeGraph>;
16
- setGraph: (key: string, graph: ComputeGraph) => void;
17
- };
18
-
19
- export const ComputeGraphContext = createContext<ComputeGraphContextType>({ graphs: {}, setGraph: () => {} });
20
-
21
- export const ComputeGraphContextProvider = ({
22
- children,
23
- graphs,
24
- setGraph,
25
- }: PropsWithChildren<ComputeGraphContextType>) => {
26
- return <ComputeGraphContext.Provider value={{ graphs, setGraph }}>{children}</ComputeGraphContext.Provider>;
27
- };
28
-
29
- export const useComputeGraph = (space: Space, options?: Partial<FunctionContextOptions>): ComputeGraph => {
30
- const { graphs, setGraph } = useContext(ComputeGraphContext);
31
- const graph =
32
- graphs[space.id] ??
33
- createComputeGraph(
34
- [
35
- { plugin: EdgeFunctionPlugin, translations: EdgeFunctionPluginTranslations },
36
- // TODO(wittjosiah): Remove. Needed for current test sheet generated data.
37
- { plugin: CustomPlugin, translations: CustomPluginTranslations },
38
- ],
39
- space,
40
- options,
41
- );
42
-
43
- useEffect(() => {
44
- if (!graphs[space.id]) {
45
- setGraph(space.id, graph);
46
- }
47
- }, [space]);
48
-
49
- return graph;
50
- };
@@ -1,49 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { describe, expect, test } from 'vitest';
6
-
7
- import { Trigger } from '@dxos/async';
8
-
9
- import { CustomPlugin, CustomPluginTranslations } from './custom';
10
- import { createComputeGraph } from './graph';
11
- import { addressFromA1Notation, SheetModel } from '../../model';
12
- import { type CellScalarValue, createSheet } from '../../types';
13
-
14
- /**
15
- * VITEST_ENV=chrome p vitest --watch
16
- * NOTE: Browser test required for hyperformula due to raw translation files.
17
- */
18
- describe('compute graph', () => {
19
- const createModel = async () => {
20
- const graph = createComputeGraph([{ plugin: CustomPlugin, translations: CustomPluginTranslations }]);
21
- const sheet = createSheet();
22
- const model = new SheetModel(graph, sheet, undefined, { rows: 5, columns: 5 });
23
- graph.update.on(() => model.update.emit());
24
- return { graph, model };
25
- };
26
-
27
- test('async function', async () => {
28
- const { graph, model } = await createModel();
29
-
30
- // Triggers function.
31
- model.setValue(addressFromA1Notation('A1'), '=TEST()');
32
-
33
- const trigger = new Trigger<CellScalarValue>();
34
- model.update.on(() => {
35
- const value = model.getValue(addressFromA1Notation('A1'));
36
- trigger.wake(value);
37
- });
38
-
39
- // Get initial value (i.e., null).
40
- const v1 = model.getValue(addressFromA1Notation('A1'));
41
- expect(v1).to.be.null;
42
- expect(graph.context.info.invocations.TEST).to.eq(undefined);
43
-
44
- // Wait until async update triggered.
45
- const v2 = await trigger.wait();
46
- expect(v2).not.to.be.null;
47
- expect(graph.context.info.invocations.TEST).to.eq(1);
48
- });
49
- });
@@ -1,62 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type FunctionPluginDefinition, HyperFormula } from 'hyperformula';
6
- import { type FunctionTranslationsPackage } from 'hyperformula/typings/interpreter';
7
-
8
- import { Event } from '@dxos/async';
9
- import { type Space } from '@dxos/client/echo';
10
- import { PublicKey } from '@dxos/keys';
11
- import { log } from '@dxos/log';
12
-
13
- import { FunctionContext, type FunctionContextOptions } from './async-function';
14
-
15
- /**
16
- * Create root graph for space.
17
- */
18
- export const createComputeGraph = (
19
- // TODO(wittjosiah): Factor out this type to make these easier to define.
20
- functionPlugins: { plugin: FunctionPluginDefinition; translations: FunctionTranslationsPackage }[] = [],
21
- space?: Space,
22
- options?: Partial<FunctionContextOptions>,
23
- ): ComputeGraph => {
24
- functionPlugins.forEach(({ plugin, translations }) => {
25
- HyperFormula.registerFunctionPlugin(plugin, translations);
26
- });
27
-
28
- const hf = HyperFormula.buildEmpty({ licenseKey: 'gpl-v3' });
29
- return new ComputeGraph(hf, space, options);
30
- };
31
-
32
- /**
33
- * Per-space compute and dependency graph.
34
- */
35
- // TODO(burdon): Create instance for each space.
36
- export class ComputeGraph {
37
- public readonly id = `graph-${PublicKey.random().truncate()}`;
38
- public readonly update = new Event();
39
-
40
- // The context is passed to all functions.
41
- public readonly context = new FunctionContext(
42
- this.hf,
43
- this._space,
44
- () => {
45
- this.refresh();
46
- },
47
- this._options,
48
- );
49
-
50
- constructor(
51
- public readonly hf: HyperFormula,
52
- private readonly _space?: Space,
53
- private readonly _options?: Partial<FunctionContextOptions>,
54
- ) {
55
- this.hf.updateConfig({ context: this.context });
56
- }
57
-
58
- refresh() {
59
- log('refresh', { id: this.id });
60
- this.update.emit();
61
- }
62
- }
@@ -1,99 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { describe, expect, test } from 'vitest';
6
-
7
- import { SheetModel } from './model';
8
- import { addressFromA1Notation, rangeFromA1Notation } from './types';
9
- import { createComputeGraph } from '../components';
10
- import { createSheet, ValueTypeEnum } from '../types';
11
-
12
- // TODO(burdon): Test undo (e.g., clear cells).
13
-
14
- /**
15
- * VITEST_ENV=chrome p vitest --watch
16
- * NOTE: Browser test required for hyperformula due to raw translation files.
17
- */
18
- describe('model', () => {
19
- const createModel = async () => {
20
- const graph = createComputeGraph();
21
- const sheet = createSheet();
22
- const model = new SheetModel(graph, sheet, undefined, { rows: 5, columns: 5 });
23
- await model.initialize();
24
- return model;
25
- };
26
-
27
- test('create', async () => {
28
- const model = await createModel();
29
- expect(model.bounds).to.deep.eq({ rows: 5, columns: 5 });
30
- model.setValue(addressFromA1Notation('A1'), 100);
31
- const value = model.getValue(addressFromA1Notation('A1'));
32
- expect(value).to.eq(100);
33
- });
34
-
35
- test('map formula', async () => {
36
- const model = await createModel();
37
- const x1 = model.mapFormulaRefsToIndices('=SUM(A1:A3)');
38
- const x2 = model.mapFormulaIndicesToRefs(x1);
39
- expect(x2).to.eq('=SUM(A1:A3)');
40
- });
41
-
42
- test('dates', async () => {
43
- const model = await createModel();
44
- const cell = addressFromA1Notation('A1');
45
- model.setValue(cell, '=NOW()');
46
- const type = model.getValueType(cell);
47
- expect(type).to.eq(ValueTypeEnum.DateTime);
48
- const value = model.getValue(cell);
49
- const date = model.toLocalDate(value as number);
50
- const now = new Date();
51
- expect(date.getUTCFullYear()).to.eq(now.getUTCFullYear());
52
- expect(date.getUTCMonth()).to.eq(now.getUTCMonth());
53
- expect(date.getUTCDate()).to.eq(now.getUTCDate());
54
- });
55
-
56
- test('formula', async () => {
57
- const model = await createModel();
58
-
59
- // Nested formula.
60
- {
61
- model.setValue(addressFromA1Notation('A1'), 100);
62
- model.setValue(addressFromA1Notation('A2'), 200);
63
- model.setValue(addressFromA1Notation('A3'), '=SUM(A1:A2)');
64
- model.setValue(addressFromA1Notation('A4'), '=SUM(A1:A3)');
65
- const value = model.getValue(addressFromA1Notation('A4'));
66
- expect(value).to.eq(600);
67
- // console.log(JSON.stringify(model.sheet.cells, undefined, 2));
68
-
69
- const cells = model.getCellValues(rangeFromA1Notation('A1:A4'));
70
- expect(cells).to.deep.eq([
71
- [100],
72
- [200],
73
- [model.mapFormulaRefsToIndices('=SUM(A1:A2)')],
74
- [model.mapFormulaRefsToIndices('=SUM(A1:A3)')],
75
- ]);
76
- // console.log(JSON.stringify(model.sheet.cells, undefined, 2));
77
- // console.log(cells);
78
- }
79
-
80
- // Insert row.
81
- {
82
- model.insertRows(2, 1);
83
- model.setValue(addressFromA1Notation('A3'), 400);
84
- const value = model.getValue(addressFromA1Notation('A5'));
85
- expect(value).to.eq(1000);
86
-
87
- const cells = model.getCellValues(rangeFromA1Notation('A1:A5'));
88
- expect(cells).to.deep.eq([
89
- [100],
90
- [200],
91
- [400],
92
- [model.mapFormulaRefsToIndices('=SUM(A1:A2)')],
93
- [model.mapFormulaRefsToIndices('=SUM(A1:A4)')],
94
- ]);
95
- // console.log(JSON.stringify(model.sheet.cells, undefined, 2));
96
- // console.log(cells);
97
- }
98
- });
99
- });
package/src/testing.ts DELETED
@@ -1,50 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type ComputeGraph, createComputeGraph } from './components';
6
- import { SheetModel } from './model';
7
- import { createSheet, type CellValue } from './types';
8
-
9
- export const testSheetName = 'test';
10
-
11
- export const createCells = (): Record<string, CellValue> => ({
12
- B1: { value: 'Qty' },
13
- B3: { value: 1 },
14
- B4: { value: 2 },
15
- B5: { value: 3 },
16
- B7: { value: 'Total' },
17
-
18
- C1: { value: 'Price' },
19
- C3: { value: 2_000 },
20
- C4: { value: 2_500 },
21
- C5: { value: 3_000 },
22
- C7: { value: '=SUMPRODUCT(B2:B6, C2:C6)' },
23
- // C8: { value: '=C7*CRYPTO(D7)' },
24
- C8: { value: '=C7*TEST()' },
25
-
26
- D7: { value: 'USD' },
27
- D8: { value: 'BTC' },
28
-
29
- E3: { value: '=TODAY()' },
30
- E4: { value: '=NOW()' },
31
-
32
- F1: { value: `=${testSheetName}!A1` }, // Ref test sheet.
33
- F3: { value: true },
34
- F4: { value: false },
35
- F5: { value: '8%' },
36
- F6: { value: '$10000' },
37
- });
38
-
39
- export const createTestSheet = async ({
40
- name,
41
- graph = createComputeGraph(),
42
- }: { name?: string; graph?: ComputeGraph } = {}) => {
43
- const sheet = createSheet(name);
44
- const model = new SheetModel(graph, sheet);
45
- await model.initialize();
46
- model.setValues(createCells());
47
- model.sheet.columnMeta[model.sheet.columns[0]] = { size: 100 };
48
- await model.destroy();
49
- return sheet;
50
- };
File without changes