@dxos/plugin-sheet 0.8.3 → 0.8.4-main.1068cf700f

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 (297) hide show
  1. package/dist/lib/browser/SheetContainer-6DNFC4TY.mjs +397 -0
  2. package/dist/lib/browser/SheetContainer-6DNFC4TY.mjs.map +7 -0
  3. package/dist/lib/browser/anchor-sort-AMMLA66W.mjs +24 -0
  4. package/dist/lib/browser/anchor-sort-AMMLA66W.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-EDWHV64N.mjs +1473 -0
  6. package/dist/lib/browser/chunk-EDWHV64N.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-FJRLDX7Z.mjs → chunk-IFLWVS2V.mjs} +7 -7
  8. package/dist/lib/browser/chunk-IFLWVS2V.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-KE3AKN5W.mjs +397 -0
  10. package/dist/lib/browser/chunk-KE3AKN5W.mjs.map +7 -0
  11. package/dist/lib/browser/compute-graph-registry-RC5L7RE4.mjs +21 -0
  12. package/dist/lib/browser/compute-graph-registry-RC5L7RE4.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +80 -89
  14. package/dist/lib/browser/index.mjs.map +4 -4
  15. package/dist/lib/browser/markdown-D2T2DOVX.mjs +29 -0
  16. package/dist/lib/browser/markdown-D2T2DOVX.mjs.map +7 -0
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/operation-resolver-P2RX75DA.mjs +79 -0
  19. package/dist/lib/browser/operation-resolver-P2RX75DA.mjs.map +7 -0
  20. package/dist/lib/browser/react-surface-45CRAB5G.mjs +51 -0
  21. package/dist/lib/browser/react-surface-45CRAB5G.mjs.map +7 -0
  22. package/dist/lib/browser/types/index.mjs +7 -12
  23. package/dist/lib/node-esm/SheetContainer-7H5R7M54.mjs +398 -0
  24. package/dist/lib/node-esm/SheetContainer-7H5R7M54.mjs.map +7 -0
  25. package/dist/lib/node-esm/anchor-sort-VHMBRX2E.mjs +25 -0
  26. package/dist/lib/node-esm/anchor-sort-VHMBRX2E.mjs.map +7 -0
  27. package/dist/lib/node-esm/chunk-6J5L47IB.mjs +398 -0
  28. package/dist/lib/node-esm/chunk-6J5L47IB.mjs.map +7 -0
  29. package/dist/lib/node-esm/chunk-AYSEWH7N.mjs +1474 -0
  30. package/dist/lib/node-esm/chunk-AYSEWH7N.mjs.map +7 -0
  31. package/dist/lib/node-esm/{chunk-NMCVJWDT.mjs → chunk-PPOYR7DK.mjs} +7 -7
  32. package/dist/lib/node-esm/chunk-PPOYR7DK.mjs.map +7 -0
  33. package/dist/lib/node-esm/compute-graph-registry-ZGXVLVGD.mjs +22 -0
  34. package/dist/lib/node-esm/compute-graph-registry-ZGXVLVGD.mjs.map +7 -0
  35. package/dist/lib/node-esm/index.mjs +80 -89
  36. package/dist/lib/node-esm/index.mjs.map +4 -4
  37. package/dist/lib/node-esm/markdown-PTV72DLO.mjs +30 -0
  38. package/dist/lib/node-esm/markdown-PTV72DLO.mjs.map +7 -0
  39. package/dist/lib/node-esm/meta.json +1 -1
  40. package/dist/lib/node-esm/operation-resolver-WPIWQ5IO.mjs +80 -0
  41. package/dist/lib/node-esm/operation-resolver-WPIWQ5IO.mjs.map +7 -0
  42. package/dist/lib/node-esm/react-surface-ITV2L6HK.mjs +52 -0
  43. package/dist/lib/node-esm/react-surface-ITV2L6HK.mjs.map +7 -0
  44. package/dist/lib/node-esm/types/index.mjs +7 -12
  45. package/dist/types/src/SheetPlugin.d.ts +2 -1
  46. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  47. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +6 -0
  48. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +1 -0
  49. package/dist/types/src/capabilities/anchor-sort/index.d.ts +3 -0
  50. package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +1 -0
  51. package/dist/types/src/capabilities/compute-graph-registry/compute-graph-registry.d.ts +5 -0
  52. package/dist/types/src/capabilities/compute-graph-registry/compute-graph-registry.d.ts.map +1 -0
  53. package/dist/types/src/capabilities/compute-graph-registry/index.d.ts +3 -0
  54. package/dist/types/src/capabilities/compute-graph-registry/index.d.ts.map +1 -0
  55. package/dist/types/src/capabilities/index.d.ts +5 -11
  56. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  57. package/dist/types/src/capabilities/markdown/index.d.ts +3 -0
  58. package/dist/types/src/capabilities/markdown/index.d.ts.map +1 -0
  59. package/dist/types/src/capabilities/markdown/markdown.d.ts +5 -0
  60. package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -0
  61. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  62. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  63. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  64. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  65. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  66. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  67. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  68. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  69. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
  70. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts +9 -4
  71. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts.map +1 -1
  72. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  73. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +51 -3
  74. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  75. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts +11 -20
  76. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts.map +1 -1
  77. package/dist/types/src/components/GridSheet/util.d.ts +1 -1
  78. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
  79. package/dist/types/src/components/RangeList/RangeList.d.ts +2 -2
  80. package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -1
  81. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +5 -6
  82. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  83. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +54 -5
  84. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  85. package/dist/types/src/components/SheetContext/SheetContext.d.ts +3 -3
  86. package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
  87. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +3 -4
  88. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
  89. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +88 -4
  90. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -1
  91. package/dist/types/src/components/SheetToolbar/align.d.ts +13 -20
  92. package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -1
  93. package/dist/types/src/components/SheetToolbar/style.d.ts +12 -18
  94. package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -1
  95. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts +14 -1
  96. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -1
  97. package/dist/types/src/components/index.d.ts +1 -1
  98. package/dist/types/src/components/index.d.ts.map +1 -1
  99. package/dist/types/src/extensions/compute.d.ts +1 -1
  100. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  101. package/dist/types/src/extensions/compute.stories.d.ts +10 -13
  102. package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
  103. package/dist/types/src/extensions/editor/index.d.ts +1 -1
  104. package/dist/types/src/extensions/editor/index.d.ts.map +1 -1
  105. package/dist/types/src/extensions/editor/{extension.d.ts → sheet-extension.d.ts} +1 -1
  106. package/dist/types/src/extensions/editor/sheet-extension.d.ts.map +1 -0
  107. package/dist/types/src/extensions/editor/sheet-extension.test.d.ts +2 -0
  108. package/dist/types/src/extensions/editor/sheet-extension.test.d.ts.map +1 -0
  109. package/dist/types/src/index.d.ts +1 -1
  110. package/dist/types/src/index.d.ts.map +1 -1
  111. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  112. package/dist/types/src/meta.d.ts +2 -3
  113. package/dist/types/src/meta.d.ts.map +1 -1
  114. package/dist/types/src/model/sheet-model.d.ts +6 -6
  115. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  116. package/dist/types/src/model/testing.d.ts +2 -2
  117. package/dist/types/src/model/testing.d.ts.map +1 -1
  118. package/dist/types/src/model/useSheetModel.d.ts +2 -2
  119. package/dist/types/src/model/useSheetModel.d.ts.map +1 -1
  120. package/dist/types/src/playwright/playwright.config.d.ts +3 -0
  121. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -0
  122. package/dist/types/src/{testing/playwright → playwright}/sheet-manager.d.ts +1 -1
  123. package/dist/types/src/playwright/sheet-manager.d.ts.map +1 -0
  124. package/dist/types/src/playwright/sheet.spec.d.ts.map +1 -0
  125. package/dist/types/src/serializer.d.ts +2 -2
  126. package/dist/types/src/serializer.d.ts.map +1 -1
  127. package/dist/types/src/testing/data.d.ts +2 -2
  128. package/dist/types/src/testing/data.d.ts.map +1 -1
  129. package/dist/types/src/testing/testing.d.ts +27 -3
  130. package/dist/types/src/testing/testing.d.ts.map +1 -1
  131. package/dist/types/src/translations.d.ts +8 -62
  132. package/dist/types/src/translations.d.ts.map +1 -1
  133. package/dist/types/src/types/Sheet.d.ts +76 -0
  134. package/dist/types/src/types/Sheet.d.ts.map +1 -0
  135. package/dist/types/src/types/capabilities.d.ts +6 -0
  136. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  137. package/dist/types/src/types/index.d.ts +2 -1
  138. package/dist/types/src/types/index.d.ts.map +1 -1
  139. package/dist/types/src/types/sheet-range-types.d.ts +2 -2
  140. package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
  141. package/dist/types/src/types/types.d.ts +92 -75
  142. package/dist/types/src/types/types.d.ts.map +1 -1
  143. package/dist/types/src/types/util.d.ts +10 -10
  144. package/dist/types/src/types/util.d.ts.map +1 -1
  145. package/dist/types/tsconfig.tsbuildinfo +1 -1
  146. package/package.json +83 -73
  147. package/src/SheetPlugin.tsx +53 -65
  148. package/src/capabilities/anchor-sort/anchor-sort.ts +27 -0
  149. package/src/capabilities/anchor-sort/index.ts +7 -0
  150. package/src/capabilities/compute-graph-registry/compute-graph-registry.ts +27 -0
  151. package/src/capabilities/compute-graph-registry/index.ts +7 -0
  152. package/src/capabilities/index.ts +5 -9
  153. package/src/capabilities/markdown/index.ts +7 -0
  154. package/src/capabilities/markdown/markdown.ts +30 -0
  155. package/src/capabilities/operation-resolver/index.ts +7 -0
  156. package/src/capabilities/operation-resolver/operation-resolver.ts +77 -0
  157. package/src/capabilities/react-surface/index.ts +7 -0
  158. package/src/capabilities/react-surface/react-surface.tsx +43 -0
  159. package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +1 -1
  160. package/src/components/ComputeGraph/compute-graph.stories.tsx +21 -20
  161. package/src/components/FunctionEditor/FunctionEditor.tsx +2 -2
  162. package/src/components/GridSheet/GridSheet.stories.tsx +23 -17
  163. package/src/components/GridSheet/GridSheet.tsx +63 -52
  164. package/src/components/GridSheet/SheetCellEditor.stories.tsx +44 -43
  165. package/src/components/GridSheet/util.ts +17 -11
  166. package/src/components/RangeList/RangeList.tsx +13 -10
  167. package/src/components/SheetContainer/SheetContainer.stories.tsx +71 -47
  168. package/src/components/SheetContainer/SheetContainer.tsx +30 -18
  169. package/src/components/SheetContext/SheetContext.tsx +9 -9
  170. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +19 -13
  171. package/src/components/SheetToolbar/SheetToolbar.tsx +52 -42
  172. package/src/components/SheetToolbar/align.ts +46 -20
  173. package/src/components/SheetToolbar/style.ts +48 -18
  174. package/src/components/SheetToolbar/useToolbarState.ts +22 -5
  175. package/src/extensions/compute.stories.tsx +43 -30
  176. package/src/extensions/compute.ts +3 -4
  177. package/src/extensions/editor/index.ts +1 -1
  178. package/src/extensions/editor/{extension.test.ts → sheet-extension.test.ts} +1 -1
  179. package/src/extensions/editor/{extension.ts → sheet-extension.ts} +7 -4
  180. package/src/index.ts +1 -1
  181. package/src/integrations/thread-ranges.ts +43 -51
  182. package/src/meta.ts +9 -7
  183. package/src/model/sheet-model.test.ts +5 -4
  184. package/src/model/sheet-model.ts +85 -53
  185. package/src/model/testing.ts +4 -4
  186. package/src/model/useSheetModel.ts +2 -2
  187. package/src/playwright/playwright.config.ts +17 -0
  188. package/src/{testing/playwright → playwright}/sheet-manager.ts +1 -1
  189. package/src/{testing/playwright → playwright}/sheet.spec.ts +3 -2
  190. package/src/sanity.test.ts +4 -5
  191. package/src/serializer.ts +4 -4
  192. package/src/testing/data.ts +2 -2
  193. package/src/testing/testing.tsx +11 -5
  194. package/src/translations.ts +10 -7
  195. package/src/types/Sheet.ts +97 -0
  196. package/src/types/capabilities.ts +14 -0
  197. package/src/types/index.ts +2 -1
  198. package/src/types/sheet-range-types.ts +2 -2
  199. package/src/types/types.ts +84 -49
  200. package/src/types/util.ts +14 -41
  201. package/dist/lib/browser/SheetContainer-BDZXBB5U.mjs +0 -351
  202. package/dist/lib/browser/SheetContainer-BDZXBB5U.mjs.map +0 -7
  203. package/dist/lib/browser/anchor-sort-NYYZLRAA.mjs +0 -24
  204. package/dist/lib/browser/anchor-sort-NYYZLRAA.mjs.map +0 -7
  205. package/dist/lib/browser/chunk-5TA43LO4.mjs +0 -847
  206. package/dist/lib/browser/chunk-5TA43LO4.mjs.map +0 -7
  207. package/dist/lib/browser/chunk-D3G4UGEK.mjs +0 -18
  208. package/dist/lib/browser/chunk-D3G4UGEK.mjs.map +0 -7
  209. package/dist/lib/browser/chunk-FJRLDX7Z.mjs.map +0 -7
  210. package/dist/lib/browser/chunk-I7FZ4TWJ.mjs +0 -892
  211. package/dist/lib/browser/chunk-I7FZ4TWJ.mjs.map +0 -7
  212. package/dist/lib/browser/chunk-IR42IS3F.mjs +0 -15
  213. package/dist/lib/browser/chunk-IR42IS3F.mjs.map +0 -7
  214. package/dist/lib/browser/compute-graph-registry-IXGGJJBU.mjs +0 -30
  215. package/dist/lib/browser/compute-graph-registry-IXGGJJBU.mjs.map +0 -7
  216. package/dist/lib/browser/intent-resolver-IBBI6B74.mjs +0 -56
  217. package/dist/lib/browser/intent-resolver-IBBI6B74.mjs.map +0 -7
  218. package/dist/lib/browser/markdown-T4TUP4BF.mjs +0 -26
  219. package/dist/lib/browser/markdown-T4TUP4BF.mjs.map +0 -7
  220. package/dist/lib/browser/react-surface-UI46P43F.mjs +0 -53
  221. package/dist/lib/browser/react-surface-UI46P43F.mjs.map +0 -7
  222. package/dist/lib/node/SheetContainer-VWPM3HYJ.cjs +0 -351
  223. package/dist/lib/node/SheetContainer-VWPM3HYJ.cjs.map +0 -7
  224. package/dist/lib/node/anchor-sort-A7NABMJM.cjs +0 -39
  225. package/dist/lib/node/anchor-sort-A7NABMJM.cjs.map +0 -7
  226. package/dist/lib/node/chunk-FIM6EZ6M.cjs +0 -256
  227. package/dist/lib/node/chunk-FIM6EZ6M.cjs.map +0 -7
  228. package/dist/lib/node/chunk-JSIDCZHB.cjs +0 -41
  229. package/dist/lib/node/chunk-JSIDCZHB.cjs.map +0 -7
  230. package/dist/lib/node/chunk-LJWWS53Z.cjs +0 -34
  231. package/dist/lib/node/chunk-LJWWS53Z.cjs.map +0 -7
  232. package/dist/lib/node/chunk-N7FSEUIN.cjs +0 -927
  233. package/dist/lib/node/chunk-N7FSEUIN.cjs.map +0 -7
  234. package/dist/lib/node/chunk-ST3WA73J.cjs +0 -855
  235. package/dist/lib/node/chunk-ST3WA73J.cjs.map +0 -7
  236. package/dist/lib/node/compute-graph-registry-ARLDHPFW.cjs +0 -56
  237. package/dist/lib/node/compute-graph-registry-ARLDHPFW.cjs.map +0 -7
  238. package/dist/lib/node/index.cjs +0 -173
  239. package/dist/lib/node/index.cjs.map +0 -7
  240. package/dist/lib/node/intent-resolver-2657YDOU.cjs +0 -69
  241. package/dist/lib/node/intent-resolver-2657YDOU.cjs.map +0 -7
  242. package/dist/lib/node/markdown-DBPOAYI7.cjs +0 -40
  243. package/dist/lib/node/markdown-DBPOAYI7.cjs.map +0 -7
  244. package/dist/lib/node/meta.json +0 -1
  245. package/dist/lib/node/react-surface-XQEIRKWU.cjs +0 -71
  246. package/dist/lib/node/react-surface-XQEIRKWU.cjs.map +0 -7
  247. package/dist/lib/node/types/index.cjs +0 -84
  248. package/dist/lib/node/types/index.cjs.map +0 -7
  249. package/dist/lib/node-esm/SheetContainer-V632Q4HA.mjs +0 -352
  250. package/dist/lib/node-esm/SheetContainer-V632Q4HA.mjs.map +0 -7
  251. package/dist/lib/node-esm/anchor-sort-JTNZOE67.mjs +0 -25
  252. package/dist/lib/node-esm/anchor-sort-JTNZOE67.mjs.map +0 -7
  253. package/dist/lib/node-esm/chunk-C4IKYVTV.mjs +0 -893
  254. package/dist/lib/node-esm/chunk-C4IKYVTV.mjs.map +0 -7
  255. package/dist/lib/node-esm/chunk-IQ76YE6M.mjs +0 -16
  256. package/dist/lib/node-esm/chunk-IQ76YE6M.mjs.map +0 -7
  257. package/dist/lib/node-esm/chunk-NMCVJWDT.mjs.map +0 -7
  258. package/dist/lib/node-esm/chunk-SOC52B67.mjs +0 -848
  259. package/dist/lib/node-esm/chunk-SOC52B67.mjs.map +0 -7
  260. package/dist/lib/node-esm/chunk-Y6ND5HWX.mjs +0 -20
  261. package/dist/lib/node-esm/chunk-Y6ND5HWX.mjs.map +0 -7
  262. package/dist/lib/node-esm/compute-graph-registry-7PDWXMHF.mjs +0 -31
  263. package/dist/lib/node-esm/compute-graph-registry-7PDWXMHF.mjs.map +0 -7
  264. package/dist/lib/node-esm/intent-resolver-M2HNR7PJ.mjs +0 -57
  265. package/dist/lib/node-esm/intent-resolver-M2HNR7PJ.mjs.map +0 -7
  266. package/dist/lib/node-esm/markdown-WWUJ3E5F.mjs +0 -27
  267. package/dist/lib/node-esm/markdown-WWUJ3E5F.mjs.map +0 -7
  268. package/dist/lib/node-esm/react-surface-OLXO2MVB.mjs +0 -54
  269. package/dist/lib/node-esm/react-surface-OLXO2MVB.mjs.map +0 -7
  270. package/dist/types/src/capabilities/anchor-sort.d.ts +0 -6
  271. package/dist/types/src/capabilities/anchor-sort.d.ts.map +0 -1
  272. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  273. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  274. package/dist/types/src/capabilities/compute-graph-registry.d.ts +0 -4
  275. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +0 -1
  276. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  277. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  278. package/dist/types/src/capabilities/markdown.d.ts +0 -6
  279. package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
  280. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  281. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  282. package/dist/types/src/extensions/editor/extension.d.ts.map +0 -1
  283. package/dist/types/src/extensions/editor/extension.test.d.ts +0 -2
  284. package/dist/types/src/extensions/editor/extension.test.d.ts.map +0 -1
  285. package/dist/types/src/testing/playwright/sheet-manager.d.ts.map +0 -1
  286. package/dist/types/src/testing/playwright/sheet.spec.d.ts.map +0 -1
  287. package/dist/types/src/types/schema.d.ts +0 -37
  288. package/dist/types/src/types/schema.d.ts.map +0 -1
  289. package/src/capabilities/anchor-sort.ts +0 -22
  290. package/src/capabilities/capabilities.ts +0 -14
  291. package/src/capabilities/compute-graph-registry.ts +0 -28
  292. package/src/capabilities/intent-resolver.ts +0 -38
  293. package/src/capabilities/markdown.ts +0 -22
  294. package/src/capabilities/react-surface.tsx +0 -39
  295. package/src/testing/playwright/playwright.config.cts +0 -18
  296. package/src/types/schema.ts +0 -60
  297. /package/dist/types/src/{testing/playwright → playwright}/sheet.spec.d.ts +0 -0
@@ -1,847 +0,0 @@
1
- import {
2
- DEFAULT_COLS,
3
- DEFAULT_ROWS,
4
- Range,
5
- SheetAction,
6
- cellClassNameForRange,
7
- rangeFromIndex,
8
- useSheetModel
9
- } from "./chunk-I7FZ4TWJ.mjs";
10
- import {
11
- rangeExtension,
12
- sheetExtension
13
- } from "./chunk-FJRLDX7Z.mjs";
14
- import {
15
- SHEET_PLUGIN
16
- } from "./chunk-D3G4UGEK.mjs";
17
-
18
- // packages/plugins/plugin-sheet/src/components/ComputeGraph/ComputeGraphContextProvider.tsx
19
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
20
- import React, { createContext, useContext } from "react";
21
- import { raise } from "@dxos/debug";
22
- import { useAsyncState } from "@dxos/react-hooks";
23
- var ComputeGraphContext = /* @__PURE__ */ createContext(void 0);
24
- var ComputeGraphContextProvider = ({ registry, children }) => {
25
- var _effect = _useSignals();
26
- try {
27
- return /* @__PURE__ */ React.createElement(ComputeGraphContext.Provider, {
28
- value: {
29
- registry
30
- }
31
- }, children);
32
- } finally {
33
- _effect.f();
34
- }
35
- };
36
- var useComputeGraph = (space) => {
37
- const { registry } = useContext(ComputeGraphContext) ?? raise(new Error("Missing ComputeGraphContext"));
38
- const [graph] = useAsyncState(async () => {
39
- if (space) {
40
- const graph2 = registry.getOrCreateGraph(space);
41
- await graph2.open();
42
- return graph2;
43
- }
44
- }, [
45
- space,
46
- registry
47
- ]);
48
- return graph;
49
- };
50
-
51
- // packages/plugins/plugin-sheet/src/components/RangeList/RangeList.tsx
52
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
53
- import { Schema } from "effect";
54
- import React2, { useCallback } from "react";
55
- import { rangeToA1Notation } from "@dxos/compute";
56
- import { Callout, useTranslation } from "@dxos/react-ui";
57
- import { List } from "@dxos/react-ui-list";
58
- import { ghostHover } from "@dxos/react-ui-theme";
59
- var RangeList = ({ sheet }) => {
60
- var _effect = _useSignals2();
61
- try {
62
- const { t } = useTranslation(SHEET_PLUGIN);
63
- const handleSelectRange = (range) => {
64
- };
65
- const handleDeleteRange = useCallback((range) => {
66
- const index = sheet.ranges.findIndex((sheetRange) => sheetRange === range);
67
- sheet.ranges.splice(index, 1);
68
- }, [
69
- sheet
70
- ]);
71
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("h2", {
72
- className: "mbs-cardSpacingBlock mbe-labelSpacingBlock text-sm font-semibold"
73
- }, t("range list heading")), sheet.ranges.length < 1 ? /* @__PURE__ */ React2.createElement(Callout.Root, null, /* @__PURE__ */ React2.createElement(Callout.Title, null, t("no ranges message"))) : /* @__PURE__ */ React2.createElement(List.Root, {
74
- items: sheet.ranges,
75
- isItem: Schema.is(Range)
76
- }, ({ items: ranges }) => ranges.map((range, i) => /* @__PURE__ */ React2.createElement(List.Item, {
77
- key: i,
78
- item: range,
79
- classNames: [
80
- "p-2",
81
- ghostHover
82
- ]
83
- }, /* @__PURE__ */ React2.createElement(List.ItemDragHandle, null), /* @__PURE__ */ React2.createElement(List.ItemTitle, {
84
- onClick: () => handleSelectRange(range)
85
- }, t("range title", {
86
- position: rangeToA1Notation(rangeFromIndex(sheet, range.range)),
87
- key: t(`range key ${range.key} label`),
88
- value: t(`range value ${range.value} label`)
89
- })), /* @__PURE__ */ React2.createElement(List.ItemDeleteButton, {
90
- onClick: () => handleDeleteRange(range)
91
- })))));
92
- } finally {
93
- _effect.f();
94
- }
95
- };
96
-
97
- // packages/plugins/plugin-sheet/src/components/index.ts
98
- import { lazy } from "react";
99
-
100
- // packages/plugins/plugin-sheet/src/components/GridSheet/GridSheet.tsx
101
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
102
- import React4, { useCallback as useCallback4, useMemo as useMemo2, useRef, useState as useState3 } from "react";
103
- import { createIntent as createIntent2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
104
- import { rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute";
105
- import { defaultColSize, defaultRowSize } from "@dxos/lit-grid";
106
- import { DropdownMenu, Icon, useTranslation as useTranslation2 } from "@dxos/react-ui";
107
- import { useAttention } from "@dxos/react-ui-attention";
108
- import { closestCell, editorKeys, parseCellIndex, Grid as Grid2, GridCellEditor } from "@dxos/react-ui-grid";
109
-
110
- // packages/plugins/plugin-sheet/src/components/GridSheet/util.ts
111
- import { useEffect, useState } from "react";
112
- import { inRange } from "@dxos/compute";
113
- import { createDocAccessor } from "@dxos/react-client/echo";
114
- import { parseValue, cellClassesForFieldType } from "@dxos/react-ui-form";
115
- import { colToA1Notation, rowToA1Notation, commentedClassName } from "@dxos/react-ui-grid";
116
- import { mx } from "@dxos/react-ui-theme";
117
- var createDxGridColumns = (model) => {
118
- return model.sheet.columns.reduce((acc, columnId, numericIndex) => {
119
- if (model.sheet.columnMeta[columnId] && model.sheet.columnMeta[columnId].size) {
120
- acc.grid[numericIndex] = {
121
- size: model.sheet.columnMeta[columnId].size,
122
- resizeable: true
123
- };
124
- }
125
- return acc;
126
- }, {
127
- grid: {}
128
- });
129
- };
130
- var createDxGridRows = (model) => {
131
- return model.sheet.rows.reduce((acc, rowId, numericIndex) => {
132
- if (model.sheet.rowMeta[rowId] && model.sheet.rowMeta[rowId].size) {
133
- acc.grid[numericIndex] = {
134
- size: model.sheet.rowMeta[rowId].size,
135
- resizeable: true
136
- };
137
- }
138
- return acc;
139
- }, {
140
- grid: {}
141
- });
142
- };
143
- var projectCellProps = (model, col, row) => {
144
- const address = {
145
- col,
146
- row
147
- };
148
- const rawValue = model.getValue(address);
149
- const ranges = model.sheet.ranges?.filter(({ range }) => inRange(rangeFromIndex(model.sheet, range), address));
150
- const threadRefs = void 0;
151
- const description = model.getValueDescription(address);
152
- const type = description?.type;
153
- const format = description?.format;
154
- const classNames = ranges?.map(cellClassNameForRange).reverse();
155
- return {
156
- value: parseValue({
157
- type,
158
- format,
159
- value: rawValue
160
- }),
161
- className: mx(cellClassesForFieldType({
162
- type,
163
- format
164
- }), threadRefs && commentedClassName, classNames),
165
- dataRefs: threadRefs
166
- };
167
- };
168
- var gridCellGetter = (model) => {
169
- const cachedGridCells = {};
170
- return (nextBounds) => {
171
- [
172
- ...Array(nextBounds.end.col - nextBounds.start.col)
173
- ].forEach((_, c0) => {
174
- return [
175
- ...Array(nextBounds.end.row - nextBounds.start.row)
176
- ].forEach((_2, r0) => {
177
- const col = nextBounds.start.col + c0;
178
- const row = nextBounds.start.row + r0;
179
- cachedGridCells[`${col},${row}`] = projectCellProps(model, col, row);
180
- });
181
- });
182
- return cachedGridCells;
183
- };
184
- };
185
- var rowLabelCell = (row) => ({
186
- value: rowToA1Notation(row),
187
- className: "!bg-toolbarSurface text-subdued text-end pie-1",
188
- resizeHandle: "row"
189
- });
190
- var colLabelCell = (col) => ({
191
- value: colToA1Notation(col),
192
- className: "!bg-toolbarSurface text-subdued",
193
- resizeHandle: "col"
194
- });
195
- var cellGetter = (model) => {
196
- const getGridCells = gridCellGetter(model);
197
- return (nextBounds, plane) => {
198
- switch (plane) {
199
- case "grid":
200
- return getGridCells(nextBounds);
201
- case "fixedStartStart": {
202
- return {
203
- "0,0": {
204
- className: "!bg-toolbarSurface"
205
- }
206
- };
207
- }
208
- case "frozenColsStart":
209
- return [
210
- ...Array(nextBounds.end.row - nextBounds.start.row)
211
- ].reduce((acc, _, r0) => {
212
- const r = nextBounds.start.row + r0;
213
- acc[`0,${r}`] = rowLabelCell(r);
214
- return acc;
215
- }, {});
216
- case "frozenRowsStart":
217
- return [
218
- ...Array(nextBounds.end.col - nextBounds.start.col)
219
- ].reduce((acc, _, c0) => {
220
- const c = nextBounds.start.col + c0;
221
- acc[`${c},0`] = colLabelCell(c);
222
- return acc;
223
- }, {});
224
- default:
225
- return {};
226
- }
227
- };
228
- };
229
- var useSheetModelDxGridProps = (dxGrid, model) => {
230
- const [columns, setColumns] = useState(createDxGridColumns(model));
231
- const [rows, setRows] = useState(createDxGridRows(model));
232
- useEffect(() => {
233
- const cellsAccessor = createDocAccessor(model.sheet, [
234
- "cells"
235
- ]);
236
- if (dxGrid) {
237
- dxGrid.getCells = cellGetter(model);
238
- }
239
- const handleCellsUpdate = () => {
240
- dxGrid?.requestUpdate("initialCells");
241
- };
242
- cellsAccessor.handle.addListener("change", handleCellsUpdate);
243
- const unsubscribe = model.graph.update.on(handleCellsUpdate);
244
- return () => {
245
- cellsAccessor.handle.removeListener("change", handleCellsUpdate);
246
- unsubscribe();
247
- };
248
- }, [
249
- model,
250
- dxGrid
251
- ]);
252
- useEffect(() => {
253
- const columnMetaAccessor = createDocAccessor(model.sheet, [
254
- "columnMeta"
255
- ]);
256
- const rowMetaAccessor = createDocAccessor(model.sheet, [
257
- "rowMeta"
258
- ]);
259
- const handleColumnMetaUpdate = () => {
260
- setColumns(createDxGridColumns(model));
261
- };
262
- const handleRowMetaUpdate = () => {
263
- setRows(createDxGridRows(model));
264
- };
265
- columnMetaAccessor.handle.addListener("change", handleColumnMetaUpdate);
266
- rowMetaAccessor.handle.addListener("change", handleRowMetaUpdate);
267
- return () => {
268
- columnMetaAccessor.handle.removeListener("change", handleColumnMetaUpdate);
269
- rowMetaAccessor.handle.removeListener("change", handleRowMetaUpdate);
270
- };
271
- }, [
272
- model,
273
- dxGrid
274
- ]);
275
- return {
276
- columns,
277
- rows
278
- };
279
- };
280
-
281
- // packages/plugins/plugin-sheet/src/integrations/thread-ranges.ts
282
- import { Schema as Schema2, pipe } from "effect";
283
- import { useCallback as useCallback2, useEffect as useEffect2, useMemo } from "react";
284
- import { createIntent, createResolver, LayoutAction, useIntentResolver, useIntentDispatcher, chain } from "@dxos/app-framework";
285
- import { debounce } from "@dxos/async";
286
- import { inRange as inRange2 } from "@dxos/compute";
287
- import { Obj, Relation } from "@dxos/echo";
288
- import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from "@dxos/plugin-deck/types";
289
- import { ThreadAction, ThreadType } from "@dxos/plugin-thread/types";
290
- import { Filter, fullyQualifiedId, getSpace, Query, useQuery } from "@dxos/react-client/echo";
291
- import { AnchoredTo } from "@dxos/schema";
292
- var parseThreadAnchorAsCellRange = (cursor) => {
293
- const coords = cursor.split(",");
294
- if (coords.length !== 4) {
295
- return null;
296
- } else {
297
- const [fromCol, fromRow, toCol, toRow] = coords;
298
- return {
299
- from: {
300
- col: parseInt(fromCol),
301
- row: parseInt(fromRow)
302
- },
303
- to: {
304
- col: parseInt(toCol),
305
- row: parseInt(toRow)
306
- }
307
- };
308
- }
309
- };
310
- var useUpdateFocusedCellOnThreadSelection = (grid) => {
311
- const { model, setActiveRefs } = useSheetContext();
312
- const scrollIntoViewResolver = useMemo(() => createResolver({
313
- intent: LayoutAction.ScrollIntoView,
314
- position: "hoist",
315
- filter: (data) => {
316
- if (!Schema2.is(LayoutAction.ScrollIntoView.fields.input)(data)) {
317
- return false;
318
- }
319
- return data.subject === fullyQualifiedId(model.sheet) && !!data.options?.cursor;
320
- },
321
- resolve: ({ options: { cursor, ref } }) => {
322
- setActiveRefs(ref);
323
- const range = parseThreadAnchorAsCellRange(cursor);
324
- range && grid?.setFocus({
325
- ...range.to,
326
- plane: "grid"
327
- }, true);
328
- }
329
- }), [
330
- model.sheet,
331
- setActiveRefs
332
- ]);
333
- useIntentResolver(SHEET_PLUGIN, scrollIntoViewResolver);
334
- };
335
- var useSelectThreadOnCellFocus = () => {
336
- const { model, cursor } = useSheetContext();
337
- const { dispatchPromise: dispatch } = useIntentDispatcher();
338
- const space = getSpace(model.sheet);
339
- const anchors = useQuery(space, Query.select(Filter.ids(model.sheet.id)).targetOf(AnchoredTo));
340
- const selectClosestThread = useCallback2((cellAddress) => {
341
- if (!cellAddress) {
342
- return;
343
- }
344
- const closestThread = anchors.find((anchor) => {
345
- const source = Relation.getSource(anchor);
346
- if (anchor.anchor && Obj.instanceOf(ThreadType, source)) {
347
- const range = parseThreadAnchorAsCellRange(anchor.anchor);
348
- return range ? inRange2(range, cellAddress) : false;
349
- } else {
350
- return false;
351
- }
352
- });
353
- if (closestThread) {
354
- const primary = fullyQualifiedId(model.sheet);
355
- const intent = pipe(createIntent(ThreadAction.Select, {
356
- current: fullyQualifiedId(closestThread)
357
- }), chain(DeckAction.ChangeCompanion, {
358
- primary,
359
- companion: `${primary}${ATTENDABLE_PATH_SEPARATOR}comments`
360
- }));
361
- void dispatch(intent);
362
- }
363
- }, [
364
- dispatch,
365
- anchors
366
- ]);
367
- const debounced = useMemo(() => {
368
- return debounce((cellCoords) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);
369
- }, [
370
- selectClosestThread
371
- ]);
372
- useEffect2(() => {
373
- if (!cursor) {
374
- return;
375
- }
376
- debounced(cursor);
377
- }, [
378
- cursor,
379
- debounced
380
- ]);
381
- };
382
-
383
- // packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx
384
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
385
- import React3, { createContext as createContext2, useCallback as useCallback3, useContext as useContext2, useState as useState2 } from "react";
386
- import { invariant } from "@dxos/invariant";
387
- import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
388
- import { Grid, useGridContext } from "@dxos/react-ui-grid";
389
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx";
390
- var SheetContext = /* @__PURE__ */ createContext2(void 0);
391
- var useSheetContext = () => {
392
- const context = useContext2(SheetContext);
393
- invariant(context, void 0, {
394
- F: __dxlog_file,
395
- L: 54,
396
- S: void 0,
397
- A: [
398
- "context",
399
- ""
400
- ]
401
- });
402
- return context;
403
- };
404
- var SheetProviderImpl = ({ model, onInfo, ignoreAttention, children, __gridScope }) => {
405
- var _effect = _useSignals3();
406
- try {
407
- const { id, editing, setEditing } = useGridContext("SheetProvider", __gridScope);
408
- const [cursor, setCursorInternal] = useState2();
409
- const [range, setRangeInternal] = useState2();
410
- const [cursorFallbackRange, setCursorFallbackRange] = useState2();
411
- const [activeRefs, setActiveRefs] = useState2("");
412
- const setCursor = useCallback3((nextCursor) => {
413
- setCursorInternal(nextCursor);
414
- setCursorFallbackRange(range?.to ? range : nextCursor ? {
415
- from: nextCursor,
416
- to: nextCursor
417
- } : void 0);
418
- }, [
419
- range
420
- ]);
421
- const setRange = useCallback3((nextRange) => {
422
- setRangeInternal(nextRange);
423
- setCursorFallbackRange(nextRange?.to ? nextRange : cursor ? {
424
- from: cursor,
425
- to: cursor
426
- } : void 0);
427
- }, [
428
- cursor
429
- ]);
430
- return /* @__PURE__ */ React3.createElement(SheetContext.Provider, {
431
- value: {
432
- id,
433
- model,
434
- editing,
435
- setEditing,
436
- cursor,
437
- setCursor,
438
- range,
439
- setRange,
440
- cursorFallbackRange,
441
- activeRefs,
442
- setActiveRefs,
443
- // TODO(burdon): Change to event.
444
- onInfo,
445
- ignoreAttention
446
- }
447
- }, children);
448
- } finally {
449
- _effect.f();
450
- }
451
- };
452
- var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo }) => {
453
- var _effect = _useSignals3();
454
- try {
455
- const model = useSheetModel(graph, sheet, {
456
- readonly
457
- });
458
- return !model ? null : /* @__PURE__ */ React3.createElement(Grid.Root, {
459
- id: fullyQualifiedId2(sheet)
460
- }, /* @__PURE__ */ React3.createElement(SheetProviderImpl, {
461
- model,
462
- onInfo,
463
- ignoreAttention
464
- }, children));
465
- } finally {
466
- _effect.f();
467
- }
468
- };
469
-
470
- // packages/plugins/plugin-sheet/src/components/GridSheet/GridSheet.tsx
471
- var inertPosition = {
472
- plane: "grid",
473
- col: 0,
474
- row: 0
475
- };
476
- var initialCells = {
477
- grid: {},
478
- frozenColsStart: [
479
- ...Array(64)
480
- ].reduce((acc, _, i) => {
481
- acc[`0,${i}`] = rowLabelCell(i);
482
- return acc;
483
- }, {}),
484
- frozenRowsStart: [
485
- ...Array(12)
486
- ].reduce((acc, _, i) => {
487
- acc[`${i},0`] = colLabelCell(i);
488
- return acc;
489
- }, {})
490
- };
491
- var frozen = {
492
- frozenColsStart: 1,
493
- frozenRowsStart: 1
494
- };
495
- var sheetColDefault = {
496
- frozenColsStart: {
497
- size: 48,
498
- readonly: true
499
- },
500
- grid: {
501
- size: defaultColSize,
502
- resizeable: true
503
- }
504
- };
505
- var sheetRowDefault = {
506
- frozenRowsStart: {
507
- size: defaultRowSize,
508
- readonly: true
509
- },
510
- grid: {
511
- size: defaultRowSize,
512
- resizeable: true
513
- }
514
- };
515
- var GridSheet = () => {
516
- var _effect = _useSignals4();
517
- try {
518
- const { t } = useTranslation2(SHEET_PLUGIN);
519
- const { id, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, ignoreAttention } = useSheetContext();
520
- const [dxGrid, setDxGrid] = useState3(null);
521
- const [extraplanarFocus, setExtraplanarFocus] = useState3(null);
522
- const { dispatchPromise: dispatch } = useIntentDispatcher2();
523
- const rangeController = useRef();
524
- const { hasAttention } = useAttention(id);
525
- const handleFocus = useCallback4((event) => {
526
- if (!editing) {
527
- const cell = closestCell(event.target);
528
- if (cell) {
529
- if (cell.plane === "grid") {
530
- setCursor({
531
- col: cell.col,
532
- row: cell.row
533
- });
534
- setExtraplanarFocus(null);
535
- } else {
536
- setExtraplanarFocus(cell);
537
- }
538
- } else {
539
- setExtraplanarFocus(null);
540
- }
541
- }
542
- }, [
543
- editing
544
- ]);
545
- const handleClose = useCallback4((_value, event) => {
546
- if (event) {
547
- const { key, shift } = event;
548
- const axis = [
549
- "Enter",
550
- "ArrowUp",
551
- "ArrowDown"
552
- ].includes(key) ? "row" : [
553
- "Tab",
554
- "ArrowLeft",
555
- "ArrowRight"
556
- ].includes(key) ? "col" : void 0;
557
- const delta = key.startsWith("Arrow") ? [
558
- "ArrowUp",
559
- "ArrowLeft"
560
- ].includes(key) ? -1 : 1 : shift ? -1 : 1;
561
- dxGrid?.refocus(axis, delta);
562
- }
563
- }, [
564
- model,
565
- editing,
566
- dxGrid
567
- ]);
568
- const handleBlur = useCallback4((value) => {
569
- if (value !== void 0) {
570
- model.setValue(parseCellIndex(editing.index), value);
571
- }
572
- }, [
573
- model,
574
- editing
575
- ]);
576
- const handleAxisResize = useCallback4(({ axis, size, index: numericIndex }) => {
577
- if (axis === "row") {
578
- const rowId = model.sheet.rows[parseInt(numericIndex)];
579
- model.sheet.rowMeta[rowId] ??= {};
580
- model.sheet.rowMeta[rowId].size = size;
581
- } else {
582
- const columnId = model.sheet.columns[parseInt(numericIndex)];
583
- model.sheet.columnMeta[columnId] ??= {};
584
- model.sheet.columnMeta[columnId].size = size;
585
- }
586
- }, [
587
- model
588
- ]);
589
- const handleSelect = useCallback4(({ minCol, maxCol, minRow, maxRow }) => {
590
- const range = {
591
- from: {
592
- col: minCol,
593
- row: minRow
594
- }
595
- };
596
- if (minCol !== maxCol || minRow !== maxRow) {
597
- range.to = {
598
- col: maxCol,
599
- row: maxRow
600
- };
601
- }
602
- if (editing) {
603
- rangeController.current?.setRange(rangeToA1Notation2(range));
604
- } else {
605
- setRange(range.to ? range : void 0);
606
- }
607
- }, [
608
- editing
609
- ]);
610
- const handleWheel = useCallback4((event) => {
611
- if (!ignoreAttention && !hasAttention) {
612
- event.stopPropagation();
613
- }
614
- }, [
615
- hasAttention,
616
- ignoreAttention
617
- ]);
618
- const selectEntireAxis = useCallback4((pos) => {
619
- switch (pos.plane) {
620
- case "frozenRowsStart":
621
- return dxGrid?.setSelection({
622
- start: {
623
- col: pos.col,
624
- row: 0,
625
- plane: "grid"
626
- },
627
- end: {
628
- col: pos.col,
629
- row: model.sheet.rows.length - 1,
630
- plane: "grid"
631
- }
632
- });
633
- case "frozenColsStart":
634
- return dxGrid?.setSelection({
635
- start: {
636
- row: pos.row,
637
- col: 0,
638
- plane: "grid"
639
- },
640
- end: {
641
- row: pos.row,
642
- col: model.sheet.columns.length - 1,
643
- plane: "grid"
644
- }
645
- });
646
- }
647
- }, [
648
- dxGrid,
649
- model.sheet
650
- ]);
651
- const handleClick = useCallback4((event) => {
652
- const cell = closestCell(event.target);
653
- if (cell) {
654
- selectEntireAxis(cell);
655
- }
656
- }, [
657
- selectEntireAxis
658
- ]);
659
- const handleKeyDown = useCallback4((event) => {
660
- switch (event.key) {
661
- case "Backspace":
662
- case "Delete":
663
- event.preventDefault();
664
- return cursorFallbackRange && model.clear(cursorFallbackRange);
665
- case "Enter":
666
- case "Space":
667
- if (dxGrid && extraplanarFocus) {
668
- switch (extraplanarFocus.plane) {
669
- case "frozenRowsStart":
670
- case "frozenColsStart":
671
- event.preventDefault();
672
- return selectEntireAxis(extraplanarFocus);
673
- }
674
- }
675
- }
676
- if (event.metaKey || event.ctrlKey) {
677
- switch (event.key) {
678
- case "x":
679
- case "X":
680
- event.preventDefault();
681
- return cursorFallbackRange && model.cut(cursorFallbackRange);
682
- case "c":
683
- case "C":
684
- event.preventDefault();
685
- return cursorFallbackRange && model.copy(cursorFallbackRange);
686
- case "v":
687
- case "V":
688
- event.preventDefault();
689
- return cursor && model.paste(cursor);
690
- case "z":
691
- event.preventDefault();
692
- return event.shiftKey ? model.redo() : model.undo();
693
- case "Z":
694
- case "y":
695
- event.preventDefault();
696
- return model.redo();
697
- }
698
- }
699
- }, [
700
- cursorFallbackRange,
701
- model,
702
- cursor,
703
- extraplanarFocus,
704
- selectEntireAxis
705
- ]);
706
- const contextMenuAnchorRef = useRef(null);
707
- const [contextMenuOpen, setContextMenuOpen] = useState3(null);
708
- const contextMenuAxis = contextMenuOpen?.plane.startsWith("frozenRows") ? "col" : "row";
709
- const handleContextMenu = useCallback4((event) => {
710
- const cell = closestCell(event.target);
711
- if (cell && cell.plane.startsWith("frozen")) {
712
- event.preventDefault();
713
- contextMenuAnchorRef.current = event.target;
714
- setContextMenuOpen(cell);
715
- }
716
- }, []);
717
- const handleAxisMenuAction = useCallback4((operation) => {
718
- switch (operation) {
719
- case "insert-before":
720
- case "insert-after":
721
- return dispatch(createIntent2(SheetAction.InsertAxis, {
722
- model,
723
- axis: contextMenuAxis,
724
- index: contextMenuOpen[contextMenuAxis] + (operation === "insert-before" ? 0 : 1)
725
- }));
726
- case "drop":
727
- return dispatch(createIntent2(SheetAction.DropAxis, {
728
- model,
729
- axis: contextMenuAxis,
730
- axisIndex: model.sheet[contextMenuAxis === "row" ? "rows" : "columns"][contextMenuOpen[contextMenuAxis]]
731
- }));
732
- }
733
- }, [
734
- contextMenuAxis,
735
- contextMenuOpen,
736
- model,
737
- dispatch
738
- ]);
739
- const { columns, rows } = useSheetModelDxGridProps(dxGrid, model);
740
- const extension = useMemo2(() => [
741
- editorKeys({
742
- onClose: handleClose,
743
- ...editing?.initialContent && {
744
- onNav: handleClose
745
- }
746
- }),
747
- sheetExtension({
748
- functions: model.graph.getFunctions()
749
- }),
750
- rangeExtension({
751
- onInit: (fn) => rangeController.current = fn,
752
- onStateChange: (state) => {
753
- if (dxGrid) {
754
- dxGrid.mode = typeof state.activeRange === "undefined" ? "edit" : "edit-select";
755
- }
756
- }
757
- })
758
- ], [
759
- model,
760
- handleClose,
761
- editing
762
- ]);
763
- const getCellContent = useCallback4((index) => {
764
- return model.getCellText(parseCellIndex(index));
765
- }, [
766
- model
767
- ]);
768
- useUpdateFocusedCellOnThreadSelection(dxGrid);
769
- useSelectThreadOnCellFocus();
770
- return (
771
- // TODO(thure): Why are Table’s and Sheet’s editor boxes off by 1px?
772
- /* @__PURE__ */ React4.createElement("div", {
773
- role: "none",
774
- className: "relative min-bs-0 [&_.cm-editor]:!border-lb [&_.cm-editor]:!border-transparent "
775
- }, /* @__PURE__ */ React4.createElement(GridCellEditor, {
776
- getCellContent,
777
- extension,
778
- onBlur: handleBlur
779
- }), /* @__PURE__ */ React4.createElement(Grid2.Content, {
780
- initialCells,
781
- limitColumns: DEFAULT_COLS,
782
- limitRows: DEFAULT_ROWS,
783
- columns,
784
- rows,
785
- // TODO(burdon): `col` vs. `column`?
786
- columnDefault: sheetColDefault,
787
- rowDefault: sheetRowDefault,
788
- frozen,
789
- onAxisResize: handleAxisResize,
790
- onSelect: handleSelect,
791
- onFocus: handleFocus,
792
- onWheelCapture: handleWheel,
793
- onKeyDown: handleKeyDown,
794
- onContextMenu: handleContextMenu,
795
- onClick: handleClick,
796
- overscroll: "trap",
797
- className: "[--dx-grid-base:var(--baseSurface)] [&_.dx-grid]:absolute [&_.dx-grid]:inset-0",
798
- activeRefs,
799
- ref: setDxGrid
800
- }), /* @__PURE__ */ React4.createElement(DropdownMenu.Root, {
801
- modal: false,
802
- open: !!contextMenuOpen,
803
- onOpenChange: (nextOpen) => setContextMenuOpen(nextOpen ? inertPosition : null)
804
- }, /* @__PURE__ */ React4.createElement(DropdownMenu.VirtualTrigger, {
805
- virtualRef: contextMenuAnchorRef
806
- }), /* @__PURE__ */ React4.createElement(DropdownMenu.Content, {
807
- side: contextMenuAxis === "col" ? "bottom" : "right",
808
- sideOffset: 4,
809
- collisionPadding: 8
810
- }, /* @__PURE__ */ React4.createElement(DropdownMenu.Viewport, null, /* @__PURE__ */ React4.createElement(DropdownMenu.Item, {
811
- onClick: () => handleAxisMenuAction("insert-before"),
812
- "data-testid": `grid.${contextMenuAxis}.insert-before`
813
- }, /* @__PURE__ */ React4.createElement(Icon, {
814
- size: 5,
815
- icon: contextMenuAxis === "col" ? "ph--columns-plus-left--regular" : "ph--rows-plus-top--regular"
816
- }), /* @__PURE__ */ React4.createElement("span", null, t(`add ${contextMenuAxis} before label`))), /* @__PURE__ */ React4.createElement(DropdownMenu.Item, {
817
- onClick: () => handleAxisMenuAction("insert-after"),
818
- "data-testid": `grid.${contextMenuAxis}.insert-after`
819
- }, /* @__PURE__ */ React4.createElement(Icon, {
820
- size: 5,
821
- icon: contextMenuAxis === "col" ? "ph--columns-plus-right--regular" : "ph--rows-plus-bottom--regular"
822
- }), /* @__PURE__ */ React4.createElement("span", null, t(`add ${contextMenuAxis} after label`))), /* @__PURE__ */ React4.createElement(DropdownMenu.Item, {
823
- onClick: () => handleAxisMenuAction("drop"),
824
- "data-testid": `grid.${contextMenuAxis}.drop`
825
- }, /* @__PURE__ */ React4.createElement(Icon, {
826
- size: 5,
827
- icon: "ph--backspace--regular"
828
- }), /* @__PURE__ */ React4.createElement("span", null, t(`delete ${contextMenuAxis} label`)))), /* @__PURE__ */ React4.createElement(DropdownMenu.Arrow, null))))
829
- );
830
- } finally {
831
- _effect.f();
832
- }
833
- };
834
-
835
- // packages/plugins/plugin-sheet/src/components/index.ts
836
- var SheetContainer = lazy(() => import("./SheetContainer-BDZXBB5U.mjs"));
837
-
838
- export {
839
- ComputeGraphContextProvider,
840
- useComputeGraph,
841
- useSheetContext,
842
- SheetProvider,
843
- GridSheet,
844
- RangeList,
845
- SheetContainer
846
- };
847
- //# sourceMappingURL=chunk-5TA43LO4.mjs.map