@dxos/plugin-sheet 0.8.4-main.c85a9c8dae → 0.8.4-main.d9fc60f731

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 (321) hide show
  1. package/LICENSE +102 -5
  2. package/PLUGIN.mdl +359 -0
  3. package/dist/lib/{browser/RangeList-S3SHV7T6.mjs → neutral/RangeList-HYB5S6KQ.mjs} +21 -28
  4. package/dist/lib/neutral/RangeList-HYB5S6KQ.mjs.map +7 -0
  5. package/dist/lib/neutral/SheetArticle-5AJRM3V3.mjs +33 -0
  6. package/dist/lib/neutral/SheetArticle-5AJRM3V3.mjs.map +7 -0
  7. package/dist/lib/neutral/SheetPlugin.mjs +59 -0
  8. package/dist/lib/neutral/SheetPlugin.mjs.map +7 -0
  9. package/dist/lib/neutral/SheetPlugin.node.mjs +27 -0
  10. package/dist/lib/neutral/SheetPlugin.node.mjs.map +7 -0
  11. package/dist/lib/neutral/SheetPlugin.workerd.mjs +21 -0
  12. package/dist/lib/neutral/SheetPlugin.workerd.mjs.map +7 -0
  13. package/dist/lib/{browser/anchor-sort-DZ3IHHJJ.mjs → neutral/anchor-sort-2POWTKTD.mjs} +6 -8
  14. package/dist/lib/neutral/anchor-sort-2POWTKTD.mjs.map +7 -0
  15. package/dist/lib/neutral/capabilities/index.mjs +25 -0
  16. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  17. package/dist/lib/neutral/chunk-3AIMSE7U.mjs +83 -0
  18. package/dist/lib/neutral/chunk-3AIMSE7U.mjs.map +7 -0
  19. package/dist/lib/neutral/chunk-7ZUM64KO.mjs +8 -0
  20. package/dist/lib/neutral/chunk-7ZUM64KO.mjs.map +7 -0
  21. package/dist/lib/{browser/chunk-NNWF7EKC.mjs → neutral/chunk-ERHMBRSU.mjs} +4 -4
  22. package/dist/lib/neutral/chunk-ERHMBRSU.mjs.map +7 -0
  23. package/dist/lib/{browser/chunk-S445OQGW.mjs → neutral/chunk-EUM3RVML.mjs} +173 -196
  24. package/dist/lib/neutral/chunk-EUM3RVML.mjs.map +7 -0
  25. package/dist/lib/neutral/chunk-FQHTXKMF.mjs +34 -0
  26. package/dist/lib/neutral/chunk-FQHTXKMF.mjs.map +7 -0
  27. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  28. package/dist/lib/neutral/comment-config-6JAROASH.mjs +21 -0
  29. package/dist/lib/neutral/comment-config-6JAROASH.mjs.map +7 -0
  30. package/dist/lib/{browser/SheetContainer-I3NFVVDQ.mjs → neutral/components/index.mjs} +163 -416
  31. package/dist/lib/neutral/components/index.mjs.map +7 -0
  32. package/dist/lib/neutral/compute-graph-registry-YYINTFC2.mjs +26 -0
  33. package/dist/lib/neutral/compute-graph-registry-YYINTFC2.mjs.map +7 -0
  34. package/dist/lib/neutral/containers/index.mjs +11 -0
  35. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  36. package/dist/lib/neutral/create-object-6FZSSROF.mjs +28 -0
  37. package/dist/lib/neutral/create-object-6FZSSROF.mjs.map +7 -0
  38. package/dist/lib/neutral/drop-axis-MO3KUU4C.mjs +23 -0
  39. package/dist/lib/neutral/drop-axis-MO3KUU4C.mjs.map +7 -0
  40. package/dist/lib/{browser/types → neutral}/index.mjs +14 -5
  41. package/dist/lib/neutral/insert-axis-V7E5PTMG.mjs +16 -0
  42. package/dist/lib/neutral/insert-axis-V7E5PTMG.mjs.map +7 -0
  43. package/dist/lib/{browser/markdown-S6GVLHB4.mjs → neutral/markdown-O37EE3ER.mjs} +5 -6
  44. package/dist/lib/neutral/markdown-O37EE3ER.mjs.map +7 -0
  45. package/dist/lib/neutral/meta.json +1 -0
  46. package/dist/lib/neutral/meta.mjs +8 -0
  47. package/dist/lib/neutral/meta.mjs.map +7 -0
  48. package/dist/lib/neutral/operation-handler-TB6LFV2H.mjs +13 -0
  49. package/dist/lib/neutral/operation-handler-TB6LFV2H.mjs.map +7 -0
  50. package/dist/lib/neutral/operations/index.mjs +8 -0
  51. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  52. package/dist/lib/neutral/plugin.mjs +16 -0
  53. package/dist/lib/neutral/plugin.mjs.map +7 -0
  54. package/dist/lib/{browser/react-surface-KIU6DGKW.mjs → neutral/react-surface-4H3PC4WG.mjs} +13 -20
  55. package/dist/lib/neutral/react-surface-4H3PC4WG.mjs.map +7 -0
  56. package/dist/lib/neutral/restore-axis-BAM44OPG.mjs +16 -0
  57. package/dist/lib/neutral/restore-axis-BAM44OPG.mjs.map +7 -0
  58. package/dist/lib/neutral/scroll-to-anchor-TBE2FTTT.mjs +33 -0
  59. package/dist/lib/neutral/scroll-to-anchor-TBE2FTTT.mjs.map +7 -0
  60. package/dist/lib/neutral/state-HPA27MX2.mjs +29 -0
  61. package/dist/lib/neutral/state-HPA27MX2.mjs.map +7 -0
  62. package/dist/lib/neutral/testing/index.mjs +103 -0
  63. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  64. package/dist/lib/neutral/translations.mjs +56 -0
  65. package/dist/lib/neutral/translations.mjs.map +7 -0
  66. package/dist/lib/{node-esm → neutral}/types/index.mjs +6 -6
  67. package/dist/lib/neutral/types/index.mjs.map +7 -0
  68. package/dist/lib/neutral/undo-mappings-3FQLSTCZ.mjs +31 -0
  69. package/dist/lib/neutral/undo-mappings-3FQLSTCZ.mjs.map +7 -0
  70. package/dist/types/src/SheetPlugin.d.ts +1 -0
  71. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  72. package/dist/types/src/SheetPlugin.node.d.ts +4 -0
  73. package/dist/types/src/SheetPlugin.node.d.ts.map +1 -0
  74. package/dist/types/src/SheetPlugin.test.d.ts +2 -0
  75. package/dist/types/src/SheetPlugin.test.d.ts.map +1 -0
  76. package/dist/types/src/SheetPlugin.workerd.d.ts +4 -0
  77. package/dist/types/src/SheetPlugin.workerd.d.ts.map +1 -0
  78. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -0
  79. package/dist/types/src/capabilities/comment-config.d.ts +12 -0
  80. package/dist/types/src/capabilities/comment-config.d.ts.map +1 -0
  81. package/dist/types/src/capabilities/compute-graph-registry.d.ts +11 -0
  82. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -0
  83. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  84. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  85. package/dist/types/src/capabilities/index.d.ts +23 -5
  86. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
  88. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  89. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  90. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/{compute-graph-registry/compute-graph-registry.d.ts → state.d.ts} +3 -2
  92. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/undo-mappings.d.ts +5 -0
  94. package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
  95. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts +1 -1
  96. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
  97. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts.map +1 -1
  98. package/dist/types/src/components/Sheet/Sheet.d.ts +10 -4
  99. package/dist/types/src/components/Sheet/Sheet.d.ts.map +1 -1
  100. package/dist/types/src/components/SheetContent/SheetCellEditor.stories.d.ts.map +1 -1
  101. package/dist/types/src/components/SheetContent/SheetContent.d.ts +4 -3
  102. package/dist/types/src/components/SheetContent/SheetContent.d.ts.map +1 -1
  103. package/dist/types/src/components/SheetContent/SheetContent.stories.d.ts +77 -39
  104. package/dist/types/src/components/SheetContent/SheetContent.stories.d.ts.map +1 -1
  105. package/dist/types/src/components/SheetContent/util.d.ts +1 -1
  106. package/dist/types/src/components/SheetContent/util.d.ts.map +1 -1
  107. package/dist/types/src/components/SheetRoot/SheetRoot.d.ts +5 -3
  108. package/dist/types/src/components/SheetRoot/SheetRoot.d.ts.map +1 -1
  109. package/dist/types/src/components/SheetStatusbar/SheetStatusbar.d.ts +4 -3
  110. package/dist/types/src/components/SheetStatusbar/SheetStatusbar.d.ts.map +1 -1
  111. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +5 -8
  112. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
  113. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +72 -68
  114. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -1
  115. package/dist/types/src/components/SheetToolbar/align.d.ts +2 -2
  116. package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -1
  117. package/dist/types/src/components/SheetToolbar/style.d.ts +2 -2
  118. package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -1
  119. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -1
  120. package/dist/types/src/containers/RangeList/RangeList.d.ts +2 -2
  121. package/dist/types/src/containers/RangeList/RangeList.d.ts.map +1 -1
  122. package/dist/types/src/containers/RangeList/index.d.ts +1 -2
  123. package/dist/types/src/containers/RangeList/index.d.ts.map +1 -1
  124. package/dist/types/src/containers/SheetArticle/SheetArticle.d.ts +12 -0
  125. package/dist/types/src/containers/SheetArticle/SheetArticle.d.ts.map +1 -0
  126. package/dist/types/src/containers/SheetArticle/SheetArticle.stories.d.ts +92 -0
  127. package/dist/types/src/containers/SheetArticle/SheetArticle.stories.d.ts.map +1 -0
  128. package/dist/types/src/containers/SheetArticle/index.d.ts +2 -0
  129. package/dist/types/src/containers/SheetArticle/index.d.ts.map +1 -0
  130. package/dist/types/src/containers/index.d.ts +1 -1
  131. package/dist/types/src/containers/index.d.ts.map +1 -1
  132. package/dist/types/src/extensions/compute.d.ts +1 -1
  133. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  134. package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
  135. package/dist/types/src/extensions/editor/sheet-extension.d.ts +1 -1
  136. package/dist/types/src/extensions/editor/sheet-extension.d.ts.map +1 -1
  137. package/dist/types/src/index.d.ts +2 -2
  138. package/dist/types/src/index.d.ts.map +1 -1
  139. package/dist/types/src/integrations/thread-ranges.d.ts +1 -3
  140. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  141. package/dist/types/src/meta.d.ts +1 -1
  142. package/dist/types/src/meta.d.ts.map +1 -1
  143. package/dist/types/src/model/sheet-model.d.ts +27 -3
  144. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  145. package/dist/types/src/model/testing.d.ts +1 -1
  146. package/dist/types/src/model/testing.d.ts.map +1 -1
  147. package/dist/types/src/model/useSheetModel.d.ts +2 -2
  148. package/dist/types/src/model/useSheetModel.d.ts.map +1 -1
  149. package/dist/types/src/operations/drop-axis.d.ts +5 -0
  150. package/dist/types/src/operations/drop-axis.d.ts.map +1 -0
  151. package/dist/types/src/operations/index.d.ts +3 -0
  152. package/dist/types/src/operations/index.d.ts.map +1 -0
  153. package/dist/types/src/operations/insert-axis.d.ts +5 -0
  154. package/dist/types/src/operations/insert-axis.d.ts.map +1 -0
  155. package/dist/types/src/operations/restore-axis.d.ts +5 -0
  156. package/dist/types/src/operations/restore-axis.d.ts.map +1 -0
  157. package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
  158. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
  159. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -1
  160. package/dist/types/src/playwright/sheet-manager.d.ts.map +1 -1
  161. package/dist/types/src/plugin.d.ts +4 -0
  162. package/dist/types/src/plugin.d.ts.map +1 -0
  163. package/dist/types/src/serializer.d.ts +2 -2
  164. package/dist/types/src/serializer.d.ts.map +1 -1
  165. package/dist/types/src/testing/data.d.ts +1 -1
  166. package/dist/types/src/testing/data.d.ts.map +1 -1
  167. package/dist/types/src/testing/testing.d.ts +5 -5
  168. package/dist/types/src/testing/testing.d.ts.map +1 -1
  169. package/dist/types/src/translations.d.ts +74 -39
  170. package/dist/types/src/translations.d.ts.map +1 -1
  171. package/dist/types/src/types/Sheet.d.ts +5 -6
  172. package/dist/types/src/types/Sheet.d.ts.map +1 -1
  173. package/dist/types/src/types/SheetCapabilities.d.ts +16 -0
  174. package/dist/types/src/types/SheetCapabilities.d.ts.map +1 -0
  175. package/dist/types/src/types/SheetOperation.d.ts +45 -0
  176. package/dist/types/src/types/SheetOperation.d.ts.map +1 -0
  177. package/dist/types/src/types/index.d.ts +3 -2
  178. package/dist/types/src/types/index.d.ts.map +1 -1
  179. package/dist/types/src/types/sheet-range-types.d.ts +1 -1
  180. package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
  181. package/dist/types/src/types/types.d.ts +0 -92
  182. package/dist/types/src/types/types.d.ts.map +1 -1
  183. package/dist/types/src/types/util.d.ts +1 -1
  184. package/dist/types/src/types/util.d.ts.map +1 -1
  185. package/dist/types/tsconfig.tsbuildinfo +1 -1
  186. package/package.json +120 -94
  187. package/src/SheetPlugin.node.ts +21 -0
  188. package/src/SheetPlugin.test.ts +30 -0
  189. package/src/SheetPlugin.tsx +31 -36
  190. package/src/SheetPlugin.workerd.ts +18 -0
  191. package/src/capabilities/{anchor-sort/anchor-sort.ts → anchor-sort.ts} +3 -3
  192. package/src/capabilities/comment-config.ts +25 -0
  193. package/src/capabilities/compute-graph-registry.ts +42 -0
  194. package/src/capabilities/create-object.ts +31 -0
  195. package/src/capabilities/index.ts +17 -5
  196. package/src/capabilities/{markdown/markdown.ts → markdown.ts} +3 -2
  197. package/src/capabilities/operation-handler.ts +16 -0
  198. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +13 -10
  199. package/src/capabilities/state.ts +29 -0
  200. package/src/capabilities/undo-mappings.ts +30 -0
  201. package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +1 -1
  202. package/src/components/ComputeGraph/compute-graph.stories.tsx +23 -15
  203. package/src/components/SheetContent/SheetCellEditor.stories.tsx +8 -7
  204. package/src/components/SheetContent/SheetContent.stories.tsx +11 -11
  205. package/src/components/SheetContent/SheetContent.tsx +40 -23
  206. package/src/components/SheetContent/util.ts +4 -3
  207. package/src/components/SheetRoot/SheetRoot.tsx +18 -7
  208. package/src/components/SheetStatusbar/SheetStatusbar.tsx +16 -8
  209. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +1 -1
  210. package/src/components/SheetToolbar/SheetToolbar.tsx +15 -20
  211. package/src/components/SheetToolbar/align.ts +9 -9
  212. package/src/components/SheetToolbar/style.ts +7 -7
  213. package/src/containers/RangeList/RangeList.tsx +17 -17
  214. package/src/containers/RangeList/index.ts +1 -3
  215. package/src/containers/{SheetContainer/SheetContainer.stories.tsx → SheetArticle/SheetArticle.stories.tsx} +42 -26
  216. package/src/containers/{SheetContainer/SheetContainer.tsx → SheetArticle/SheetArticle.tsx} +12 -12
  217. package/src/containers/SheetArticle/index.ts +5 -0
  218. package/src/containers/index.ts +1 -1
  219. package/src/extensions/compute.stories.tsx +11 -11
  220. package/src/extensions/compute.ts +1 -1
  221. package/src/extensions/editor/sheet-extension.test.ts +1 -1
  222. package/src/extensions/editor/sheet-extension.ts +3 -3
  223. package/src/index.ts +2 -2
  224. package/src/integrations/thread-ranges.ts +10 -42
  225. package/src/meta.ts +18 -6
  226. package/src/model/sheet-model.test.ts +5 -5
  227. package/src/model/sheet-model.ts +19 -19
  228. package/src/model/testing.ts +2 -2
  229. package/src/model/useSheetModel.ts +3 -2
  230. package/src/operations/drop-axis.ts +26 -0
  231. package/src/operations/index.ts +12 -0
  232. package/src/operations/insert-axis.ts +19 -0
  233. package/src/operations/restore-axis.ts +19 -0
  234. package/src/operations/scroll-to-anchor.ts +30 -0
  235. package/src/playwright/sheet.spec.ts +3 -3
  236. package/src/plugin.ts +11 -0
  237. package/src/sanity.test.ts +10 -3
  238. package/src/serializer.ts +2 -2
  239. package/src/testing/data.ts +1 -1
  240. package/src/testing/testing.tsx +4 -4
  241. package/src/translations.ts +43 -37
  242. package/src/types/Sheet.ts +13 -13
  243. package/src/types/SheetCapabilities.ts +26 -0
  244. package/src/types/SheetOperation.ts +84 -0
  245. package/src/types/index.ts +4 -2
  246. package/src/types/types.ts +0 -80
  247. package/src/types/util.ts +4 -4
  248. package/src/vite-env.d.ts +10 -0
  249. package/dist/lib/browser/RangeList-S3SHV7T6.mjs.map +0 -7
  250. package/dist/lib/browser/SheetContainer-I3NFVVDQ.mjs.map +0 -7
  251. package/dist/lib/browser/anchor-sort-DZ3IHHJJ.mjs.map +0 -7
  252. package/dist/lib/browser/chunk-NNWF7EKC.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-S445OQGW.mjs.map +0 -7
  254. package/dist/lib/browser/compute-graph-registry-W6HO2G3P.mjs +0 -21
  255. package/dist/lib/browser/compute-graph-registry-W6HO2G3P.mjs.map +0 -7
  256. package/dist/lib/browser/index.mjs +0 -145
  257. package/dist/lib/browser/index.mjs.map +0 -7
  258. package/dist/lib/browser/markdown-S6GVLHB4.mjs.map +0 -7
  259. package/dist/lib/browser/meta.json +0 -1
  260. package/dist/lib/browser/operation-resolver-Z4X4UWNR.mjs +0 -79
  261. package/dist/lib/browser/operation-resolver-Z4X4UWNR.mjs.map +0 -7
  262. package/dist/lib/browser/react-surface-KIU6DGKW.mjs.map +0 -7
  263. package/dist/lib/node-esm/RangeList-IB23OJK2.mjs +0 -54
  264. package/dist/lib/node-esm/RangeList-IB23OJK2.mjs.map +0 -7
  265. package/dist/lib/node-esm/SheetContainer-KUXNCSFP.mjs +0 -1806
  266. package/dist/lib/node-esm/SheetContainer-KUXNCSFP.mjs.map +0 -7
  267. package/dist/lib/node-esm/anchor-sort-24OXMOSX.mjs +0 -25
  268. package/dist/lib/node-esm/anchor-sort-24OXMOSX.mjs.map +0 -7
  269. package/dist/lib/node-esm/chunk-M52YLLWU.mjs +0 -236
  270. package/dist/lib/node-esm/chunk-M52YLLWU.mjs.map +0 -7
  271. package/dist/lib/node-esm/chunk-NKZ3O4OR.mjs +0 -398
  272. package/dist/lib/node-esm/chunk-NKZ3O4OR.mjs.map +0 -7
  273. package/dist/lib/node-esm/compute-graph-registry-2C3Y2RPQ.mjs +0 -22
  274. package/dist/lib/node-esm/compute-graph-registry-2C3Y2RPQ.mjs.map +0 -7
  275. package/dist/lib/node-esm/index.mjs +0 -146
  276. package/dist/lib/node-esm/index.mjs.map +0 -7
  277. package/dist/lib/node-esm/markdown-YT5KJTQT.mjs +0 -30
  278. package/dist/lib/node-esm/markdown-YT5KJTQT.mjs.map +0 -7
  279. package/dist/lib/node-esm/meta.json +0 -1
  280. package/dist/lib/node-esm/operation-resolver-7VD2YXSQ.mjs +0 -80
  281. package/dist/lib/node-esm/operation-resolver-7VD2YXSQ.mjs.map +0 -7
  282. package/dist/lib/node-esm/react-surface-7FZAE3S7.mjs +0 -52
  283. package/dist/lib/node-esm/react-surface-7FZAE3S7.mjs.map +0 -7
  284. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +0 -1
  285. package/dist/types/src/capabilities/anchor-sort/index.d.ts +0 -3
  286. package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +0 -1
  287. package/dist/types/src/capabilities/compute-graph-registry/compute-graph-registry.d.ts.map +0 -1
  288. package/dist/types/src/capabilities/compute-graph-registry/index.d.ts +0 -3
  289. package/dist/types/src/capabilities/compute-graph-registry/index.d.ts.map +0 -1
  290. package/dist/types/src/capabilities/markdown/index.d.ts +0 -3
  291. package/dist/types/src/capabilities/markdown/index.d.ts.map +0 -1
  292. package/dist/types/src/capabilities/markdown/markdown.d.ts.map +0 -1
  293. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  294. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  295. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  296. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  297. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  298. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  299. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  300. package/dist/types/src/containers/SheetContainer/SheetContainer.d.ts +0 -12
  301. package/dist/types/src/containers/SheetContainer/SheetContainer.d.ts.map +0 -1
  302. package/dist/types/src/containers/SheetContainer/SheetContainer.stories.d.ts +0 -56
  303. package/dist/types/src/containers/SheetContainer/SheetContainer.stories.d.ts.map +0 -1
  304. package/dist/types/src/containers/SheetContainer/index.d.ts +0 -3
  305. package/dist/types/src/containers/SheetContainer/index.d.ts.map +0 -1
  306. package/dist/types/src/types/capabilities.d.ts +0 -6
  307. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  308. package/src/capabilities/anchor-sort/index.ts +0 -7
  309. package/src/capabilities/compute-graph-registry/compute-graph-registry.ts +0 -27
  310. package/src/capabilities/compute-graph-registry/index.ts +0 -7
  311. package/src/capabilities/markdown/index.ts +0 -7
  312. package/src/capabilities/operation-resolver/index.ts +0 -7
  313. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -77
  314. package/src/capabilities/react-surface/index.ts +0 -7
  315. package/src/containers/SheetContainer/index.ts +0 -7
  316. package/src/types/capabilities.ts +0 -14
  317. /package/dist/lib/{browser/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  318. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
  319. /package/dist/types/src/capabilities/{anchor-sort/anchor-sort.d.ts → anchor-sort.d.ts} +0 -0
  320. /package/dist/types/src/capabilities/{markdown/markdown.d.ts → markdown.d.ts} +0 -0
  321. /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
@@ -1,31 +1,11 @@
1
+ import {
2
+ useSelectThreadOnCellFocus
3
+ } from "../chunk-3AIMSE7U.mjs";
1
4
  import {
2
5
  rangeExtension,
3
6
  sheetExtension
4
- } from "./chunk-NNWF7EKC.mjs";
5
- import {
6
- DEFAULT_COLS,
7
- DEFAULT_ROWS,
8
- MAX_COLS,
9
- MAX_ROWS,
10
- ReadonlyException,
11
- SheetOperation,
12
- addressFromIndex,
13
- addressToIndex,
14
- alignKey,
15
- cellClassNameForRange,
16
- initialize,
17
- insertIndices,
18
- mapFormulaIndicesToRefs,
19
- mapFormulaRefsToIndices,
20
- meta,
21
- rangeFromIndex,
22
- rangeToIndex
23
- } from "./chunk-S445OQGW.mjs";
24
-
25
- // src/containers/SheetContainer/SheetContainer.tsx
26
- import React6 from "react";
27
- import { Obj as Obj7 } from "@dxos/echo";
28
- import { Panel } from "@dxos/react-ui";
7
+ } from "../chunk-ERHMBRSU.mjs";
8
+ import "../chunk-J5LGTIGS.mjs";
29
9
 
30
10
  // src/components/ComputeGraph/ComputeGraphContextProvider.tsx
31
11
  import React, { createContext, useContext } from "react";
@@ -55,136 +35,34 @@ var useComputeGraph = (space) => {
55
35
  };
56
36
 
57
37
  // src/components/SheetContent/SheetContent.tsx
58
- import React3, { useCallback as useCallback3, useMemo as useMemo2, useRef, useState as useState4 } from "react";
59
- import { useOperationInvoker as useOperationInvoker2 } from "@dxos/app-framework/ui";
60
- import { rangeToA1Notation } from "@dxos/compute";
61
- import { Obj as Obj4 } from "@dxos/echo";
38
+ import React3, { useCallback as useCallback2, useEffect as useEffect3, useMemo, useRef, useState as useState4 } from "react";
39
+ import { useCapabilities, useOperationInvoker } from "@dxos/app-framework/ui";
40
+ import { rangeToA1Notation } from "@dxos/compute-hyperformula";
41
+ import { Obj as Obj2 } from "@dxos/echo";
62
42
  import { defaultColSize, defaultRowSize } from "@dxos/lit-grid";
63
43
  import { DropdownMenu, Icon, useTranslation } from "@dxos/react-ui";
44
+ import { composable, composableProps } from "@dxos/react-ui";
64
45
  import { useAttention } from "@dxos/react-ui-attention";
65
46
  import { Grid as Grid2, GridCellEditor, closestCell, editorKeys, parseCellIndex } from "@dxos/react-ui-grid";
66
- import { mx as mx2, useComposableProps } from "@dxos/ui-theme";
67
-
68
- // src/integrations/thread-ranges.ts
69
- import * as Effect from "effect/Effect";
70
- import { useCallback, useEffect, useMemo } from "react";
71
- import { useOperationInvoker, useOperationResolver } from "@dxos/app-framework/ui";
72
- import { LayoutOperation } from "@dxos/app-toolkit";
73
- import { debounce } from "@dxos/async";
74
- import { inRange } from "@dxos/compute";
75
- import { Obj, Relation } from "@dxos/echo";
76
- import { OperationResolver } from "@dxos/operation";
77
- import { ATTENDABLE_PATH_SEPARATOR, DeckOperation } from "@dxos/plugin-deck/types";
78
- import { ThreadOperation } from "@dxos/plugin-thread/types";
79
- import { Filter, Query, useQuery } from "@dxos/react-client/echo";
80
- import { AnchoredTo, Thread } from "@dxos/types";
81
- var parseThreadAnchorAsCellRange = (cursor) => {
82
- const coords = cursor.split(",");
83
- if (coords.length !== 4) {
84
- return null;
85
- } else {
86
- const [fromCol, fromRow, toCol, toRow] = coords;
87
- return {
88
- from: {
89
- col: parseInt(fromCol),
90
- row: parseInt(fromRow)
91
- },
92
- to: {
93
- col: parseInt(toCol),
94
- row: parseInt(toRow)
95
- }
96
- };
97
- }
98
- };
99
- var useUpdateFocusedCellOnThreadSelection = (grid) => {
100
- const { model, setActiveRefs } = useSheetContext();
101
- const sheetId = Obj.getDXN(model.sheet).toString();
102
- const scrollIntoViewHandler = useMemo(() => OperationResolver.make({
103
- operation: LayoutOperation.ScrollIntoView,
104
- position: "hoist",
105
- filter: (input) => input.subject === sheetId && !!input.cursor,
106
- handler: (input) => Effect.sync(() => {
107
- const { cursor, ref } = input;
108
- if (cursor) {
109
- setActiveRefs(ref);
110
- const range = parseThreadAnchorAsCellRange(cursor);
111
- range && grid?.setFocus({
112
- ...range.to,
113
- plane: "grid"
114
- }, true);
115
- }
116
- })
117
- }), [
118
- sheetId,
119
- setActiveRefs,
120
- grid
121
- ]);
122
- useOperationResolver(meta.id, scrollIntoViewHandler);
123
- };
124
- var useSelectThreadOnCellFocus = () => {
125
- const { model, cursor } = useSheetContext();
126
- const { invokePromise } = useOperationInvoker();
127
- const db = Obj.getDatabase(model.sheet);
128
- const anchors = useQuery(db, Query.select(Filter.id(model.sheet.id)).targetOf(AnchoredTo.AnchoredTo));
129
- const selectClosestThread = useCallback((cellAddress) => {
130
- if (!cellAddress) {
131
- return;
132
- }
133
- const closestThread = anchors.find((anchor) => {
134
- const source = Relation.getSource(anchor);
135
- if (anchor.anchor && Obj.instanceOf(Thread.Thread, source)) {
136
- const range = parseThreadAnchorAsCellRange(anchor.anchor);
137
- return range ? inRange(range, cellAddress) : false;
138
- } else {
139
- return false;
140
- }
141
- });
142
- if (closestThread) {
143
- const primary = Obj.getDXN(model.sheet).toString();
144
- void (async () => {
145
- await invokePromise(ThreadOperation.Select, {
146
- current: Relation.getDXN(closestThread).toString()
147
- });
148
- await invokePromise(DeckOperation.ChangeCompanion, {
149
- companion: `${primary}${ATTENDABLE_PATH_SEPARATOR}comments`
150
- });
151
- })();
152
- }
153
- }, [
154
- invokePromise,
155
- anchors
156
- ]);
157
- const debounced = useMemo(() => {
158
- return debounce((cellCoords) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);
159
- }, [
160
- selectClosestThread
161
- ]);
162
- useEffect(() => {
163
- if (!cursor) {
164
- return;
165
- }
166
- debounced(cursor);
167
- }, [
168
- cursor,
169
- debounced
170
- ]);
171
- };
47
+ import { meta } from "#meta";
48
+ import { SheetOperation } from "#types";
49
+ import { DEFAULT_COLS, DEFAULT_ROWS, SheetCapabilities } from "#types";
172
50
 
173
51
  // src/components/SheetRoot/SheetRoot.tsx
174
- import React2, { createContext as createContext2, useCallback as useCallback2, useContext as useContext2, useState as useState2 } from "react";
52
+ import React2, { createContext as createContext2, useCallback, useContext as useContext2, useState as useState2 } from "react";
175
53
  import { raise as raise2 } from "@dxos/debug";
176
- import { Obj as Obj3 } from "@dxos/echo";
177
54
  import { Grid, useGridContext } from "@dxos/react-ui-grid";
178
55
 
179
56
  // src/model/sheet-model.ts
180
57
  import { Event } from "@dxos/async";
181
- import { DetailedCellError, ExportedCellChange, addressFromA1Notation, addressToA1Notation, createSheetName, isFormula } from "@dxos/compute";
58
+ import { DetailedCellError, ExportedCellChange, addressFromA1Notation, addressToA1Notation, createSheetName, isFormula } from "@dxos/compute-hyperformula";
182
59
  import { Resource } from "@dxos/context";
183
- import { Obj as Obj2 } from "@dxos/echo";
60
+ import { Obj } from "@dxos/echo";
184
61
  import { Format, TypeEnum } from "@dxos/echo/internal";
185
- import { invariant } from "@dxos/invariant";
62
+ import { assertArgument, invariant } from "@dxos/invariant";
186
63
  import { PublicKey } from "@dxos/keys";
187
64
  import { log } from "@dxos/log";
65
+ import { MAX_COLS, MAX_ROWS, ReadonlyException, addressFromIndex, addressToIndex, initialize, insertIndices, mapFormulaIndicesToRefs, mapFormulaRefsToIndices } from "#types";
188
66
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-sheet/src/model/sheet-model.ts";
189
67
  var typeMap = {
190
68
  BOOLEAN: {
@@ -262,13 +140,8 @@ var SheetModel = class extends Resource {
262
140
  async _open() {
263
141
  log("initialize", {
264
142
  id: this.id
265
- }, {
266
- F: __dxlog_file,
267
- L: 124,
268
- S: this,
269
- C: (f, a) => f(...a)
270
- });
271
- Obj2.change(this._sheet, (obj) => {
143
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 96, S: this });
144
+ Obj.update(this._sheet, (obj) => {
272
145
  initialize(obj);
273
146
  });
274
147
  this._graph.update.on((event) => {
@@ -277,7 +150,7 @@ var SheetModel = class extends Resource {
277
150
  }
278
151
  });
279
152
  this._node = this._graph.getOrCreateNode(createSheetName({
280
- type: Obj2.getTypename(this._sheet),
153
+ type: Obj.getTypename(this._sheet),
281
154
  id: this._sheet.id
282
155
  }));
283
156
  await this._node.open();
@@ -291,26 +164,10 @@ var SheetModel = class extends Resource {
291
164
  * @deprecated
292
165
  */
293
166
  reset() {
294
- invariant(this._node, void 0, {
295
- F: __dxlog_file,
296
- L: 154,
297
- S: this,
298
- A: [
299
- "this._node",
300
- ""
301
- ]
302
- });
167
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 123, S: this, A: ["this._node", ""] });
303
168
  this._node.graph.hf.clearSheet(this._node.sheetId);
304
169
  Object.entries(this._sheet.cells).forEach(([key, { value }]) => {
305
- invariant(this._node, void 0, {
306
- F: __dxlog_file,
307
- L: 157,
308
- S: this,
309
- A: [
310
- "this._node",
311
- ""
312
- ]
313
- });
170
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 126, S: this, A: ["this._node", ""] });
314
171
  const { col, row } = addressFromIndex(this._sheet, key);
315
172
  if (isFormula(value)) {
316
173
  const binding = this._graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(this._sheet, value));
@@ -339,7 +196,7 @@ var SheetModel = class extends Resource {
339
196
  }
340
197
  insertRows(i, n = 1) {
341
198
  let idx = [];
342
- Obj2.change(this._sheet, (obj) => {
199
+ Obj.update(this._sheet, (obj) => {
343
200
  idx = insertIndices(obj.rows, i, n, MAX_ROWS);
344
201
  });
345
202
  this.reset();
@@ -347,7 +204,7 @@ var SheetModel = class extends Resource {
347
204
  }
348
205
  insertColumns(i, n = 1) {
349
206
  let idx = [];
350
- Obj2.change(this._sheet, (obj) => {
207
+ Obj.update(this._sheet, (obj) => {
351
208
  idx = insertIndices(obj.columns, i, n, MAX_COLS);
352
209
  });
353
210
  this.reset();
@@ -361,7 +218,7 @@ var SheetModel = class extends Resource {
361
218
  const values = this.getCellValues(range).flat();
362
219
  const index = this._sheet.rows.indexOf(rowIndex);
363
220
  this.clear(range);
364
- Obj2.change(this._sheet, (obj) => {
221
+ Obj.update(this._sheet, (obj) => {
365
222
  obj.rows.splice(index, 1);
366
223
  delete obj.rowMeta[rowIndex];
367
224
  });
@@ -382,7 +239,7 @@ var SheetModel = class extends Resource {
382
239
  const values = this.getCellValues(range).flat();
383
240
  const index = this._sheet.columns.indexOf(colIndex);
384
241
  this.clear(range);
385
- Obj2.change(this._sheet, (obj) => {
242
+ Obj.update(this._sheet, (obj) => {
386
243
  obj.columns.splice(index, 1);
387
244
  delete obj.columnMeta[colIndex];
388
245
  });
@@ -396,7 +253,7 @@ var SheetModel = class extends Resource {
396
253
  };
397
254
  }
398
255
  restoreRow({ index, axisIndex, axisMeta, values }) {
399
- Obj2.change(this._sheet, (obj) => {
256
+ Obj.update(this._sheet, (obj) => {
400
257
  obj.rows.splice(index, 0, axisIndex);
401
258
  values.forEach((value, col) => {
402
259
  if (value) {
@@ -412,7 +269,7 @@ var SheetModel = class extends Resource {
412
269
  this.reset();
413
270
  }
414
271
  restoreColumn({ index, axisIndex, axisMeta, values }) {
415
- Obj2.change(this._sheet, (obj) => {
272
+ Obj.update(this._sheet, (obj) => {
416
273
  obj.columns.splice(index, 0, axisIndex);
417
274
  values.forEach((value, row) => {
418
275
  if (value) {
@@ -435,19 +292,11 @@ var SheetModel = class extends Resource {
435
292
  * Clear range of values.
436
293
  */
437
294
  clear(range) {
438
- invariant(this._node, void 0, {
439
- F: __dxlog_file,
440
- L: 276,
441
- S: this,
442
- A: [
443
- "this._node",
444
- ""
445
- ]
446
- });
295
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 251, S: this, A: ["this._node", ""] });
447
296
  const topLeft = getTopLeft(range);
448
297
  const values = this._iterRange(range, () => null);
449
298
  this._node.graph.hf.setCellContents(toSimpleCellAddress(this._node.sheetId, topLeft), values);
450
- Obj2.change(this._sheet, (obj) => {
299
+ Obj.update(this._sheet, (obj) => {
451
300
  this._iterRange(range, (cell) => {
452
301
  const idx = addressToIndex(this._sheet, cell);
453
302
  delete obj.cells[idx];
@@ -455,17 +304,9 @@ var SheetModel = class extends Resource {
455
304
  });
456
305
  }
457
306
  cut(range) {
458
- invariant(this._node, void 0, {
459
- F: __dxlog_file,
460
- L: 289,
461
- S: this,
462
- A: [
463
- "this._node",
464
- ""
465
- ]
466
- });
307
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 263, S: this, A: ["this._node", ""] });
467
308
  this._node.graph.hf.cut(toModelRange(this._node.sheetId, range));
468
- Obj2.change(this._sheet, (obj) => {
309
+ Obj.update(this._sheet, (obj) => {
469
310
  this._iterRange(range, (cell) => {
470
311
  const idx = addressToIndex(this._sheet, cell);
471
312
  delete obj.cells[idx];
@@ -473,30 +314,14 @@ var SheetModel = class extends Resource {
473
314
  });
474
315
  }
475
316
  copy(range) {
476
- invariant(this._node, void 0, {
477
- F: __dxlog_file,
478
- L: 300,
479
- S: this,
480
- A: [
481
- "this._node",
482
- ""
483
- ]
484
- });
317
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 273, S: this, A: ["this._node", ""] });
485
318
  this._node.graph.hf.copy(toModelRange(this._node.sheetId, range));
486
319
  }
487
320
  paste(cell) {
488
- invariant(this._node, void 0, {
489
- F: __dxlog_file,
490
- L: 305,
491
- S: this,
492
- A: [
493
- "this._node",
494
- ""
495
- ]
496
- });
321
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 277, S: this, A: ["this._node", ""] });
497
322
  if (!this._node.graph.hf.isClipboardEmpty()) {
498
323
  const changes = this._node.graph.hf.paste(toSimpleCellAddress(this._node.sheetId, cell));
499
- Obj2.change(this._sheet, (obj) => {
324
+ Obj.update(this._sheet, (obj) => {
500
325
  for (const change of changes) {
501
326
  if (change instanceof ExportedCellChange) {
502
327
  const { address, newValue } = change;
@@ -514,29 +339,13 @@ var SheetModel = class extends Resource {
514
339
  }
515
340
  // TODO(burdon): Display undo/redo state.
516
341
  undo() {
517
- invariant(this._node, void 0, {
518
- F: __dxlog_file,
519
- L: 322,
520
- S: this,
521
- A: [
522
- "this._node",
523
- ""
524
- ]
525
- });
342
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 298, S: this, A: ["this._node", ""] });
526
343
  if (this._node.graph.hf.isThereSomethingToUndo()) {
527
344
  this._node.graph.hf.undo();
528
345
  }
529
346
  }
530
347
  redo() {
531
- invariant(this._node, void 0, {
532
- F: __dxlog_file,
533
- L: 330,
534
- S: this,
535
- A: [
536
- "this._node",
537
- ""
538
- ]
539
- });
348
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 305, S: this, A: ["this._node", ""] });
540
349
  if (this._node.graph.hf.isThereSomethingToRedo()) {
541
350
  this._node.graph.hf.redo();
542
351
  }
@@ -572,27 +381,14 @@ var SheetModel = class extends Resource {
572
381
  * Gets the regular or computed value from the engine.
573
382
  */
574
383
  getValue(cell) {
575
- invariant(this._node, void 0, {
576
- F: __dxlog_file,
577
- L: 373,
578
- S: this,
579
- A: [
580
- "this._node",
581
- ""
582
- ]
583
- });
384
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 339, S: this, A: ["this._node", ""] });
584
385
  const address = toSimpleCellAddress(this._node.sheetId, cell);
585
386
  const value = this._node.graph.hf.getCellValue(address);
586
387
  if (value instanceof DetailedCellError) {
587
388
  log.warn("cell error", {
588
389
  cell,
589
390
  error: value
590
- }, {
591
- F: __dxlog_file,
592
- L: 378,
593
- S: this,
594
- C: (f, a) => f(...a)
595
- });
391
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 344, S: this });
596
392
  return value.toString();
597
393
  }
598
394
  return value;
@@ -601,15 +397,7 @@ var SheetModel = class extends Resource {
601
397
  * Get value type.
602
398
  */
603
399
  getValueDescription(cell) {
604
- invariant(this._node, void 0, {
605
- F: __dxlog_file,
606
- L: 389,
607
- S: this,
608
- A: [
609
- "this._node",
610
- ""
611
- ]
612
- });
400
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 355, S: this, A: ["this._node", ""] });
613
401
  const addr = toSimpleCellAddress(this._node.sheetId, cell);
614
402
  const type = this._node.graph.hf.getCellValueDetailedType(addr);
615
403
  return typeMap[type];
@@ -618,27 +406,19 @@ var SheetModel = class extends Resource {
618
406
  * Sets the value, updating the sheet and engine.
619
407
  */
620
408
  setValue(cell, value) {
621
- invariant(this._node, void 0, {
622
- F: __dxlog_file,
623
- L: 399,
624
- S: this,
625
- A: [
626
- "this._node",
627
- ""
628
- ]
629
- });
409
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 363, S: this, A: ["this._node", ""] });
630
410
  if (this._options.readonly) {
631
411
  throw new ReadonlyException();
632
412
  }
633
413
  let refresh = false;
634
414
  if (cell.row >= this._sheet.rows.length) {
635
- Obj2.change(this._sheet, (obj) => {
415
+ Obj.update(this._sheet, (obj) => {
636
416
  insertIndices(obj.rows, cell.row, 1, MAX_ROWS);
637
417
  });
638
418
  refresh = true;
639
419
  }
640
420
  if (cell.col >= this._sheet.columns.length) {
641
- Obj2.change(this._sheet, (obj) => {
421
+ Obj.update(this._sheet, (obj) => {
642
422
  insertIndices(obj.columns, cell.col, 1, MAX_COLS);
643
423
  });
644
424
  refresh = true;
@@ -657,14 +437,14 @@ var SheetModel = class extends Resource {
657
437
  ]);
658
438
  const idx = addressToIndex(this._sheet, cell);
659
439
  if (value === void 0 || value === null) {
660
- Obj2.change(this._sheet, (obj) => {
440
+ Obj.update(this._sheet, (obj) => {
661
441
  delete obj.cells[idx];
662
442
  });
663
443
  } else {
664
444
  if (isFormula(value)) {
665
445
  value = this._graph.mapFunctionBindingToId(mapFormulaRefsToIndices(this._sheet, value));
666
446
  }
667
- Obj2.change(this._sheet, (obj) => {
447
+ Obj.update(this._sheet, (obj) => {
668
448
  obj.cells[idx] = {
669
449
  value
670
450
  };
@@ -720,15 +500,7 @@ var SheetModel = class extends Resource {
720
500
  * Map from indices to A1 notation.
721
501
  */
722
502
  mapFormulaIndicesToRefs(formula) {
723
- invariant(isFormula(formula), void 0, {
724
- F: __dxlog_file,
725
- L: 492,
726
- S: this,
727
- A: [
728
- "isFormula(formula)",
729
- ""
730
- ]
731
- });
503
+ assertArgument(isFormula(formula), "formula");
732
504
  return formula.replace(/([a-zA-Z0-9]+)@([a-zA-Z0-9]+)/g, (idx) => {
733
505
  return addressToA1Notation(addressFromIndex(this._sheet, idx));
734
506
  });
@@ -746,48 +518,24 @@ var SheetModel = class extends Resource {
746
518
  return new Date(year, month - 1, day, hours, minutes, seconds);
747
519
  }
748
520
  toDateTime(num) {
749
- invariant(this._node, void 0, {
750
- F: __dxlog_file,
751
- L: 513,
752
- S: this,
753
- A: [
754
- "this._node",
755
- ""
756
- ]
757
- });
521
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 475, S: this, A: ["this._node", ""] });
758
522
  return this._node.graph.hf.numberToDateTime(num);
759
523
  }
760
524
  toDate(num) {
761
- invariant(this._node, void 0, {
762
- F: __dxlog_file,
763
- L: 518,
764
- S: this,
765
- A: [
766
- "this._node",
767
- ""
768
- ]
769
- });
525
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 479, S: this, A: ["this._node", ""] });
770
526
  return this._node.graph.hf.numberToDate(num);
771
527
  }
772
528
  toTime(num) {
773
- invariant(this._node, void 0, {
774
- F: __dxlog_file,
775
- L: 523,
776
- S: this,
777
- A: [
778
- "this._node",
779
- ""
780
- ]
781
- });
529
+ invariant(this._node, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 483, S: this, A: ["this._node", ""] });
782
530
  return this._node.graph.hf.numberToTime(num);
783
531
  }
784
532
  };
785
533
 
786
534
  // src/model/useSheetModel.ts
787
- import { useEffect as useEffect2, useState } from "react";
535
+ import { useEffect, useState } from "react";
788
536
  var useSheetModel = (graph, sheet, { readonly } = {}) => {
789
537
  const [model, setModel] = useState();
790
- useEffect2(() => {
538
+ useEffect(() => {
791
539
  if (!graph || !sheet) {
792
540
  return;
793
541
  }
@@ -816,7 +564,7 @@ var SheetContext = /* @__PURE__ */ createContext2(void 0);
816
564
  var useSheetContext = () => {
817
565
  return useContext2(SheetContext) ?? raise2(new Error("Missing SheetContext"));
818
566
  };
819
- var SheetRoot = ({ children, graph, sheet, readonly, ignoreAttention, onInfo }) => {
567
+ var SheetRoot = ({ children, graph, sheet, attendableId, readonly, ignoreAttention, onInfo }) => {
820
568
  const model = useSheetModel(graph, sheet, {
821
569
  readonly
822
570
  });
@@ -824,20 +572,21 @@ var SheetRoot = ({ children, graph, sheet, readonly, ignoreAttention, onInfo })
824
572
  return null;
825
573
  }
826
574
  return /* @__PURE__ */ React2.createElement(Grid.Root, {
827
- id: Obj3.getDXN(sheet).toString()
575
+ id: attendableId
828
576
  }, /* @__PURE__ */ React2.createElement(SheetProviderImpl, {
829
577
  model,
578
+ attendableId,
830
579
  onInfo,
831
580
  ignoreAttention
832
581
  }, children));
833
582
  };
834
- var SheetProviderImpl = ({ __gridScope, children, ignoreAttention, model, onInfo }) => {
583
+ var SheetProviderImpl = ({ __gridScope, children, attendableId, ignoreAttention, model, onInfo }) => {
835
584
  const { id, editing, setEditing } = useGridContext("SheetProvider", __gridScope);
836
585
  const [cursor, setCursorInternal] = useState2();
837
586
  const [range, setRangeInternal] = useState2();
838
587
  const [cursorFallbackRange, setCursorFallbackRange] = useState2();
839
588
  const [activeRefs, setActiveRefs] = useState2("");
840
- const setCursor = useCallback2((nextCursor) => {
589
+ const setCursor = useCallback((nextCursor) => {
841
590
  setCursorInternal(nextCursor);
842
591
  setCursorFallbackRange(range?.to ? range : nextCursor ? {
843
592
  from: nextCursor,
@@ -846,7 +595,7 @@ var SheetProviderImpl = ({ __gridScope, children, ignoreAttention, model, onInfo
846
595
  }, [
847
596
  range
848
597
  ]);
849
- const setRange = useCallback2((nextRange) => {
598
+ const setRange = useCallback((nextRange) => {
850
599
  setRangeInternal(nextRange);
851
600
  setCursorFallbackRange(nextRange?.to ? nextRange : cursor ? {
852
601
  from: cursor,
@@ -858,6 +607,7 @@ var SheetProviderImpl = ({ __gridScope, children, ignoreAttention, model, onInfo
858
607
  return /* @__PURE__ */ React2.createElement(SheetContext.Provider, {
859
608
  value: {
860
609
  id,
610
+ attendableId,
861
611
  model,
862
612
  editing,
863
613
  setEditing,
@@ -876,12 +626,13 @@ var SheetProviderImpl = ({ __gridScope, children, ignoreAttention, model, onInfo
876
626
  };
877
627
 
878
628
  // src/components/SheetContent/util.ts
879
- import { useEffect as useEffect3, useState as useState3 } from "react";
880
- import { inRange as inRange2 } from "@dxos/compute";
629
+ import { useEffect as useEffect2, useState as useState3 } from "react";
630
+ import { inRange } from "@dxos/compute-hyperformula";
881
631
  import { createDocAccessor } from "@dxos/echo-db";
882
632
  import { cellClassesForFieldType, parseValue } from "@dxos/react-ui-form";
883
633
  import { colToA1Notation, commentedClassName, rowToA1Notation } from "@dxos/react-ui-grid";
884
634
  import { mx } from "@dxos/ui-theme";
635
+ import { cellClassNameForRange, rangeFromIndex } from "#types";
885
636
  var createDxGridColumns = (model) => {
886
637
  return model.sheet.columns.reduce((acc, columnId, numericIndex) => {
887
638
  if (model.sheet.columnMeta[columnId] && model.sheet.columnMeta[columnId].size) {
@@ -914,7 +665,7 @@ var projectCellProps = (model, col, row) => {
914
665
  row
915
666
  };
916
667
  const rawValue = model.getValue(address);
917
- const ranges = model.sheet.ranges?.filter(({ range }) => inRange2(rangeFromIndex(model.sheet, range), address));
668
+ const ranges = model.sheet.ranges?.filter(({ range }) => inRange(rangeFromIndex(model.sheet, range), address));
918
669
  const threadRefs = void 0;
919
670
  const description = model.getValueDescription(address);
920
671
  const type = description?.type;
@@ -997,7 +748,7 @@ var cellGetter = (model) => {
997
748
  var useSheetModelDxGridProps = (dxGrid, model) => {
998
749
  const [columns, setColumns] = useState3(createDxGridColumns(model));
999
750
  const [rows, setRows] = useState3(createDxGridRows(model));
1000
- useEffect3(() => {
751
+ useEffect2(() => {
1001
752
  const cellsAccessor = createDocAccessor(model.sheet, [
1002
753
  "cells"
1003
754
  ]);
@@ -1017,7 +768,7 @@ var useSheetModelDxGridProps = (dxGrid, model) => {
1017
768
  model,
1018
769
  dxGrid
1019
770
  ]);
1020
- useEffect3(() => {
771
+ useEffect2(() => {
1021
772
  const columnMetaAccessor = createDocAccessor(model.sheet, [
1022
773
  "columnMeta"
1023
774
  ]);
@@ -1093,16 +844,15 @@ var sheetRowDefault = {
1093
844
  resizeable: true
1094
845
  }
1095
846
  };
1096
- var SheetContent = (props) => {
847
+ var SheetContent = composable((props, forwardedRef) => {
1097
848
  const { t } = useTranslation(meta.id);
1098
- const { id, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, ignoreAttention } = useSheetContext();
849
+ const { id, attendableId, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, setActiveRefs, ignoreAttention } = useSheetContext();
1099
850
  const [dxGrid, setDxGrid] = useState4(null);
1100
851
  const [extraplanarFocus, setExtraplanarFocus] = useState4(null);
1101
- const { invokePromise } = useOperationInvoker2();
852
+ const { invokePromise } = useOperationInvoker();
1102
853
  const rangeController = useRef(null);
1103
854
  const { hasAttention } = useAttention(id);
1104
- const { className, ...rest } = useComposableProps(props);
1105
- const handleFocus = useCallback3((event) => {
855
+ const handleFocus = useCallback2((event) => {
1106
856
  if (!editing) {
1107
857
  const cell = closestCell(event.target);
1108
858
  if (cell) {
@@ -1122,7 +872,7 @@ var SheetContent = (props) => {
1122
872
  }, [
1123
873
  editing
1124
874
  ]);
1125
- const handleClose = useCallback3((_value, event) => {
875
+ const handleClose = useCallback2((_value, event) => {
1126
876
  if (event) {
1127
877
  const { key, shift } = event;
1128
878
  const axis = [
@@ -1145,7 +895,7 @@ var SheetContent = (props) => {
1145
895
  editing,
1146
896
  dxGrid
1147
897
  ]);
1148
- const handleBlur = useCallback3((value) => {
898
+ const handleBlur = useCallback2((value) => {
1149
899
  if (value !== void 0) {
1150
900
  model.setValue(parseCellIndex(editing.index), value);
1151
901
  }
@@ -1153,8 +903,8 @@ var SheetContent = (props) => {
1153
903
  model,
1154
904
  editing
1155
905
  ]);
1156
- const handleAxisResize = useCallback3(({ axis, size, index: numericIndex }) => {
1157
- Obj4.change(model.sheet, (sheet) => {
906
+ const handleAxisResize = useCallback2(({ axis, size, index: numericIndex }) => {
907
+ Obj2.update(model.sheet, (sheet) => {
1158
908
  if (axis === "row") {
1159
909
  const rowId = sheet.rows[parseInt(numericIndex)];
1160
910
  sheet.rowMeta[rowId] ??= {};
@@ -1168,7 +918,7 @@ var SheetContent = (props) => {
1168
918
  }, [
1169
919
  model
1170
920
  ]);
1171
- const handleSelect = useCallback3(({ minCol, maxCol, minRow, maxRow }) => {
921
+ const handleSelect = useCallback2(({ minCol, maxCol, minRow, maxRow }) => {
1172
922
  const range = {
1173
923
  from: {
1174
924
  col: minCol,
@@ -1189,7 +939,7 @@ var SheetContent = (props) => {
1189
939
  }, [
1190
940
  editing
1191
941
  ]);
1192
- const handleWheel = useCallback3((event) => {
942
+ const handleWheel = useCallback2((event) => {
1193
943
  if (!ignoreAttention && !hasAttention) {
1194
944
  event.stopPropagation();
1195
945
  }
@@ -1197,7 +947,7 @@ var SheetContent = (props) => {
1197
947
  hasAttention,
1198
948
  ignoreAttention
1199
949
  ]);
1200
- const selectEntireAxis = useCallback3((pos) => {
950
+ const selectEntireAxis = useCallback2((pos) => {
1201
951
  switch (pos.plane) {
1202
952
  case "frozenRowsStart":
1203
953
  return dxGrid?.setSelection({
@@ -1230,7 +980,7 @@ var SheetContent = (props) => {
1230
980
  dxGrid,
1231
981
  model.sheet
1232
982
  ]);
1233
- const handleClick = useCallback3((event) => {
983
+ const handleClick = useCallback2((event) => {
1234
984
  const cell = closestCell(event.target);
1235
985
  if (cell) {
1236
986
  selectEntireAxis(cell);
@@ -1238,7 +988,7 @@ var SheetContent = (props) => {
1238
988
  }, [
1239
989
  selectEntireAxis
1240
990
  ]);
1241
- const handleKeyDown = useCallback3((event) => {
991
+ const handleKeyDown = useCallback2((event) => {
1242
992
  switch (event.key) {
1243
993
  case "Backspace":
1244
994
  case "Delete":
@@ -1288,7 +1038,7 @@ var SheetContent = (props) => {
1288
1038
  const contextMenuAnchorRef = useRef(null);
1289
1039
  const [contextMenuOpen, setContextMenuOpen] = useState4(null);
1290
1040
  const contextMenuAxis = contextMenuOpen?.plane.startsWith("frozenRows") ? "col" : "row";
1291
- const handleContextMenu = useCallback3((event) => {
1041
+ const handleContextMenu = useCallback2((event) => {
1292
1042
  const cell = closestCell(event.target);
1293
1043
  if (cell && cell.plane.startsWith("frozen")) {
1294
1044
  event.preventDefault();
@@ -1296,7 +1046,7 @@ var SheetContent = (props) => {
1296
1046
  setContextMenuOpen(cell);
1297
1047
  }
1298
1048
  }, []);
1299
- const handleAxisMenuAction = useCallback3((operation) => {
1049
+ const handleAxisMenuAction = useCallback2((operation) => {
1300
1050
  switch (operation) {
1301
1051
  case "insert-before":
1302
1052
  case "insert-after":
@@ -1319,7 +1069,7 @@ var SheetContent = (props) => {
1319
1069
  invokePromise
1320
1070
  ]);
1321
1071
  const { columns, rows } = useSheetModelDxGridProps(dxGrid, model);
1322
- const extensions = useMemo2(() => [
1072
+ const extensions = useMemo(() => [
1323
1073
  editorKeys({
1324
1074
  onClose: handleClose,
1325
1075
  ...editing?.initialContent && {
@@ -1342,17 +1092,29 @@ var SheetContent = (props) => {
1342
1092
  handleClose,
1343
1093
  editing
1344
1094
  ]);
1345
- const getCellContent = useCallback3((index) => {
1095
+ const getCellContent = useCallback2((index) => {
1346
1096
  return model.getCellText(parseCellIndex(index));
1347
1097
  }, [
1348
1098
  model
1349
1099
  ]);
1350
- useUpdateFocusedCellOnThreadSelection(dxGrid);
1100
+ const [gridInstances] = useCapabilities(SheetCapabilities.GridInstances);
1101
+ useEffect3(() => {
1102
+ if (dxGrid && gridInstances) {
1103
+ gridInstances.register(attendableId, dxGrid, setActiveRefs);
1104
+ return () => gridInstances.unregister(attendableId);
1105
+ }
1106
+ }, [
1107
+ dxGrid,
1108
+ gridInstances,
1109
+ attendableId,
1110
+ setActiveRefs
1111
+ ]);
1351
1112
  useSelectThreadOnCellFocus();
1352
1113
  return /* @__PURE__ */ React3.createElement("div", {
1353
- ...rest,
1354
- role: "none",
1355
- className: mx2("relative min-h-0", className)
1114
+ ref: forwardedRef,
1115
+ ...composableProps(props, {
1116
+ classNames: "relative min-h-0"
1117
+ })
1356
1118
  }, /* @__PURE__ */ React3.createElement(GridCellEditor, {
1357
1119
  getCellContent,
1358
1120
  extensions,
@@ -1391,43 +1153,45 @@ var SheetContent = (props) => {
1391
1153
  onClick: () => handleAxisMenuAction("insert-before"),
1392
1154
  "data-testid": `grid.${contextMenuAxis}.insert-before`
1393
1155
  }, /* @__PURE__ */ React3.createElement(Icon, {
1394
- size: 5,
1395
1156
  icon: contextMenuAxis === "col" ? "ph--columns-plus-left--regular" : "ph--rows-plus-top--regular"
1396
- }), /* @__PURE__ */ React3.createElement("span", null, t(`add ${contextMenuAxis} before label`))), /* @__PURE__ */ React3.createElement(DropdownMenu.Item, {
1157
+ }), /* @__PURE__ */ React3.createElement("span", null, t(`add-${contextMenuAxis}-before.label`))), /* @__PURE__ */ React3.createElement(DropdownMenu.Item, {
1397
1158
  onClick: () => handleAxisMenuAction("insert-after"),
1398
1159
  "data-testid": `grid.${contextMenuAxis}.insert-after`
1399
1160
  }, /* @__PURE__ */ React3.createElement(Icon, {
1400
- size: 5,
1401
1161
  icon: contextMenuAxis === "col" ? "ph--columns-plus-right--regular" : "ph--rows-plus-bottom--regular"
1402
- }), /* @__PURE__ */ React3.createElement("span", null, t(`add ${contextMenuAxis} after label`))), /* @__PURE__ */ React3.createElement(DropdownMenu.Item, {
1162
+ }), /* @__PURE__ */ React3.createElement("span", null, t(`add-${contextMenuAxis}-after.label`))), /* @__PURE__ */ React3.createElement(DropdownMenu.Item, {
1403
1163
  onClick: () => handleAxisMenuAction("drop"),
1404
1164
  "data-testid": `grid.${contextMenuAxis}.drop`
1405
1165
  }, /* @__PURE__ */ React3.createElement(Icon, {
1406
- size: 5,
1407
1166
  icon: "ph--backspace--regular"
1408
- }), /* @__PURE__ */ React3.createElement("span", null, t(`delete ${contextMenuAxis} label`)))), /* @__PURE__ */ React3.createElement(DropdownMenu.Arrow, null))));
1409
- };
1167
+ }), /* @__PURE__ */ React3.createElement("span", null, t(`delete-${contextMenuAxis}.label`)))), /* @__PURE__ */ React3.createElement(DropdownMenu.Arrow, null))));
1168
+ });
1410
1169
 
1411
1170
  // src/components/SheetStatusbar/SheetStatusbar.tsx
1412
1171
  import React4 from "react";
1413
- import { addressToA1Notation as addressToA1Notation2, isFormula as isFormula2, rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute";
1172
+ import { addressToA1Notation as addressToA1Notation2, isFormula as isFormula2, rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute-hyperformula";
1414
1173
  import { Icon as Icon2 } from "@dxos/react-ui";
1415
- var SheetStatusbar = (props) => {
1174
+ import { composable as composable2, composableProps as composableProps2 } from "@dxos/react-ui";
1175
+ import { mx as mx2 } from "@dxos/ui-theme";
1176
+ import { mapFormulaIndicesToRefs as mapFormulaIndicesToRefs2 } from "#types";
1177
+ var SheetStatusbar = composable2((props, forwardedRef) => {
1178
+ const { className, ...rest } = composableProps2(props);
1416
1179
  const { model, cursor, range } = useSheetContext();
1417
1180
  let value;
1418
1181
  let formula = false;
1419
1182
  if (cursor) {
1420
1183
  value = model.getCellValue(cursor);
1421
1184
  if (isFormula2(value)) {
1422
- value = model.graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(model.sheet, value));
1185
+ value = model.graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs2(model.sheet, value));
1423
1186
  formula = true;
1424
1187
  } else if (value != null) {
1425
1188
  value = String(value);
1426
1189
  }
1427
1190
  }
1428
1191
  return /* @__PURE__ */ React4.createElement("div", {
1429
- ...props,
1430
- className: "flex shrink-0 justify-between items-center px-4 py-1 text-sm bg-toolbar-surface border-y !border-subdued-separator"
1192
+ ref: forwardedRef,
1193
+ ...rest,
1194
+ className: mx2("flex shrink-0 justify-between items-center px-4 py-1 text-sm bg-toolbar-surface border-y !border-subdued-separator", className)
1431
1195
  }, /* @__PURE__ */ React4.createElement("div", {
1432
1196
  className: "flex gap-4 items-center"
1433
1197
  }, /* @__PURE__ */ React4.createElement("div", {
@@ -1443,20 +1207,23 @@ var SheetStatusbar = (props) => {
1443
1207
  }), /* @__PURE__ */ React4.createElement("span", {
1444
1208
  className: "font-mono"
1445
1209
  }, value))));
1446
- };
1210
+ });
1447
1211
 
1448
1212
  // src/components/SheetToolbar/SheetToolbar.tsx
1449
1213
  import { Atom as Atom2, RegistryContext as RegistryContext4 } from "@effect-atom/atom-react";
1450
- import React5, { useContext as useContext6, useMemo as useMemo4 } from "react";
1214
+ import React5, { useContext as useContext6, useMemo as useMemo3 } from "react";
1451
1215
  import { useAppGraph } from "@dxos/app-toolkit/ui";
1216
+ import { composable as composable3, composableProps as composableProps3 } from "@dxos/react-ui";
1452
1217
  import { Menu, createGapSeparator, useMenuActions } from "@dxos/react-ui-menu";
1453
1218
 
1454
1219
  // src/components/SheetToolbar/align.ts
1455
1220
  import { RegistryContext } from "@effect-atom/atom-react";
1456
1221
  import { useContext as useContext3, useEffect as useEffect4 } from "react";
1457
- import { inRange as inRange3 } from "@dxos/compute";
1458
- import { Obj as Obj5 } from "@dxos/echo";
1222
+ import { inRange as inRange2 } from "@dxos/compute-hyperformula";
1223
+ import { Obj as Obj3 } from "@dxos/echo";
1459
1224
  import { createMenuAction, createMenuItemGroup } from "@dxos/react-ui-menu";
1225
+ import { meta as meta2 } from "#meta";
1226
+ import { alignKey, rangeFromIndex as rangeFromIndex2, rangeToIndex } from "#types";
1460
1227
  var aligns = {
1461
1228
  start: "ph--text-align-left--regular",
1462
1229
  center: "ph--text-align-center--regular",
@@ -1466,7 +1233,7 @@ var useAlignState = (stateAtom) => {
1466
1233
  const registry = useContext3(RegistryContext);
1467
1234
  const { cursor, model } = useSheetContext();
1468
1235
  useEffect4(() => {
1469
- const alignValue = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === alignKey && inRange3(rangeFromIndex(model.sheet, range), cursor))?.value : void 0;
1236
+ const alignValue = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === alignKey && inRange2(rangeFromIndex2(model.sheet, range), cursor))?.value : void 0;
1470
1237
  const prev = registry.get(stateAtom);
1471
1238
  registry.set(stateAtom, {
1472
1239
  ...prev,
@@ -1481,9 +1248,9 @@ var useAlignState = (stateAtom) => {
1481
1248
  };
1482
1249
  var createAlignGroupAction = (value) => createMenuItemGroup("align", {
1483
1250
  label: [
1484
- "align label",
1251
+ "align.label",
1485
1252
  {
1486
- ns: meta.id
1253
+ ns: meta2.id
1487
1254
  }
1488
1255
  ],
1489
1256
  variant: "toggleGroup",
@@ -1495,7 +1262,7 @@ var createAlignActions = ({ model, state, stateAtom, registry, cursorFallbackRan
1495
1262
  if (!cursorFallbackRange) {
1496
1263
  return;
1497
1264
  }
1498
- const index = model.sheet.ranges?.findIndex((range) => range.key === alignKey && inRange3(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
1265
+ const index = model.sheet.ranges?.findIndex((range) => range.key === alignKey && inRange2(rangeFromIndex2(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
1499
1266
  const nextRangeEntity = {
1500
1267
  range: rangeToIndex(model.sheet, cursorFallbackRange),
1501
1268
  key: alignKey,
@@ -1503,7 +1270,7 @@ var createAlignActions = ({ model, state, stateAtom, registry, cursorFallbackRan
1503
1270
  };
1504
1271
  const currentState = registry.get(stateAtom);
1505
1272
  if (index < 0) {
1506
- Obj5.change(model.sheet, (obj) => {
1273
+ Obj3.update(model.sheet, (obj) => {
1507
1274
  obj.ranges?.push(nextRangeEntity);
1508
1275
  });
1509
1276
  registry.set(stateAtom, {
@@ -1511,7 +1278,7 @@ var createAlignActions = ({ model, state, stateAtom, registry, cursorFallbackRan
1511
1278
  [alignKey]: nextRangeEntity.value
1512
1279
  });
1513
1280
  } else if (model.sheet.ranges[index].value === nextRangeEntity.value) {
1514
- Obj5.change(model.sheet, (obj) => {
1281
+ Obj3.update(model.sheet, (obj) => {
1515
1282
  obj.ranges?.splice(index, 1);
1516
1283
  });
1517
1284
  registry.set(stateAtom, {
@@ -1519,7 +1286,7 @@ var createAlignActions = ({ model, state, stateAtom, registry, cursorFallbackRan
1519
1286
  [alignKey]: void 0
1520
1287
  });
1521
1288
  } else {
1522
- Obj5.change(model.sheet, (obj) => {
1289
+ Obj3.update(model.sheet, (obj) => {
1523
1290
  obj.ranges?.splice(index, 1, nextRangeEntity);
1524
1291
  });
1525
1292
  registry.set(stateAtom, {
@@ -1532,9 +1299,9 @@ var createAlignActions = ({ model, state, stateAtom, registry, cursorFallbackRan
1532
1299
  value: alignValue,
1533
1300
  checked: state[alignKey] === alignValue,
1534
1301
  label: [
1535
- `range value ${alignValue} label`,
1302
+ `range-value.${alignValue}.label`,
1536
1303
  {
1537
- ns: meta.id
1304
+ ns: meta2.id
1538
1305
  }
1539
1306
  ],
1540
1307
  icon,
@@ -1567,9 +1334,11 @@ var createAlign = (context) => {
1567
1334
  // src/components/SheetToolbar/style.ts
1568
1335
  import { RegistryContext as RegistryContext2 } from "@effect-atom/atom-react";
1569
1336
  import { useContext as useContext4, useEffect as useEffect5 } from "react";
1570
- import { inRange as inRange4 } from "@dxos/compute";
1571
- import { Obj as Obj6 } from "@dxos/echo";
1337
+ import { inRange as inRange3 } from "@dxos/compute-hyperformula";
1338
+ import { Obj as Obj4 } from "@dxos/echo";
1572
1339
  import { createMenuAction as createMenuAction2, createMenuItemGroup as createMenuItemGroup2 } from "@dxos/react-ui-menu";
1340
+ import { meta as meta3 } from "#meta";
1341
+ import { rangeFromIndex as rangeFromIndex3, rangeToIndex as rangeToIndex2 } from "#types";
1573
1342
  var styles = {
1574
1343
  highlight: "ph--highlighter--regular",
1575
1344
  softwrap: "ph--paragraph--regular"
@@ -1581,7 +1350,7 @@ var useStyleState = (stateAtom) => {
1581
1350
  let highlight = false;
1582
1351
  let softwrap = false;
1583
1352
  if (cursorFallbackRange && model.sheet.ranges) {
1584
- model.sheet.ranges.filter(({ range, key }) => key === "style" && inRange4(rangeFromIndex(model.sheet, range), cursorFallbackRange.from)).forEach(({ value }) => {
1353
+ model.sheet.ranges.filter(({ range, key }) => key === "style" && inRange3(rangeFromIndex3(model.sheet, range), cursorFallbackRange.from)).forEach(({ value }) => {
1585
1354
  if (value === "highlight") {
1586
1355
  highlight = true;
1587
1356
  }
@@ -1615,16 +1384,16 @@ var createStyleActions = ({ model, state, stateAtom, registry, cursorFallbackRan
1615
1384
  if (!cursorFallbackRange) {
1616
1385
  return;
1617
1386
  }
1618
- const index = model.sheet.ranges?.findIndex((range) => range.key === "style" && inRange4(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
1387
+ const index = model.sheet.ranges?.findIndex((range) => range.key === "style" && inRange3(rangeFromIndex3(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
1619
1388
  const nextRangeEntity = {
1620
- range: rangeToIndex(model.sheet, cursorFallbackRange),
1389
+ range: rangeToIndex2(model.sheet, cursorFallbackRange),
1621
1390
  key: "style",
1622
1391
  value: styleValue
1623
1392
  };
1624
1393
  const currentState = registry.get(stateAtom);
1625
- if (model.sheet.ranges.filter(({ range, key: rangeKey }) => rangeKey === "style" && inRange4(rangeFromIndex(model.sheet, range), cursorFallbackRange.from)).some(({ value: rangeValue }) => rangeValue === styleValue)) {
1394
+ if (model.sheet.ranges.filter(({ range, key: rangeKey }) => rangeKey === "style" && inRange3(rangeFromIndex3(model.sheet, range), cursorFallbackRange.from)).some(({ value: rangeValue }) => rangeValue === styleValue)) {
1626
1395
  if (index >= 0) {
1627
- Obj6.change(model.sheet, (obj) => {
1396
+ Obj4.update(model.sheet, (obj) => {
1628
1397
  obj.ranges?.splice(index, 1);
1629
1398
  });
1630
1399
  }
@@ -1633,7 +1402,7 @@ var createStyleActions = ({ model, state, stateAtom, registry, cursorFallbackRan
1633
1402
  [nextRangeEntity.value]: false
1634
1403
  });
1635
1404
  } else {
1636
- Obj6.change(model.sheet, (obj) => {
1405
+ Obj4.update(model.sheet, (obj) => {
1637
1406
  obj.ranges?.push(nextRangeEntity);
1638
1407
  });
1639
1408
  registry.set(stateAtom, {
@@ -1646,9 +1415,9 @@ var createStyleActions = ({ model, state, stateAtom, registry, cursorFallbackRan
1646
1415
  value: styleValue,
1647
1416
  icon,
1648
1417
  label: [
1649
- `range value ${styleValue} label`,
1418
+ `range-value.${styleValue}.label`,
1650
1419
  {
1651
- ns: meta.id
1420
+ ns: meta3.id
1652
1421
  }
1653
1422
  ],
1654
1423
  checked: !!state[styleValue]
@@ -1679,9 +1448,9 @@ var createStyle = (context) => {
1679
1448
 
1680
1449
  // src/components/SheetToolbar/useToolbarState.ts
1681
1450
  import { Atom, RegistryContext as RegistryContext3, useAtomValue } from "@effect-atom/atom-react";
1682
- import { useContext as useContext5, useMemo as useMemo3 } from "react";
1451
+ import { useContext as useContext5, useMemo as useMemo2 } from "react";
1683
1452
  var useToolbarState = (initialState = {}) => {
1684
- return useMemo3(() => Atom.make(initialState).pipe(Atom.keepAlive), []);
1453
+ return useMemo2(() => Atom.make(initialState).pipe(Atom.keepAlive), []);
1685
1454
  };
1686
1455
 
1687
1456
  // src/components/SheetToolbar/SheetToolbar.tsx
@@ -1718,16 +1487,16 @@ var createToolbarActions = ({ model, stateAtom, registry, cursorFallbackRange, c
1718
1487
  return graph;
1719
1488
  });
1720
1489
  };
1721
- var SheetToolbar = ({ id, ...props }) => {
1722
- const { model, cursorFallbackRange } = useSheetContext();
1490
+ var SheetToolbar = composable3((props, forwardedRef) => {
1491
+ const { attendableId, model, cursorFallbackRange } = useSheetContext();
1723
1492
  const stateAtom = useToolbarState({});
1724
1493
  const registry = useContext6(RegistryContext4);
1725
1494
  useAlignState(stateAtom);
1726
1495
  useStyleState(stateAtom);
1727
1496
  const { graph } = useAppGraph();
1728
- const customActions = useMemo4(() => {
1497
+ const customActions = useMemo3(() => {
1729
1498
  return Atom2.make((get) => {
1730
- const actions = get(graph.actions(id));
1499
+ const actions = get(graph.actions(attendableId));
1731
1500
  const nodes = actions.filter((action) => action.properties.disposition === "toolbar");
1732
1501
  return {
1733
1502
  nodes,
@@ -1740,9 +1509,9 @@ var SheetToolbar = ({ id, ...props }) => {
1740
1509
  });
1741
1510
  }, [
1742
1511
  graph,
1743
- id
1512
+ attendableId
1744
1513
  ]);
1745
- const actionsCreator = useMemo4(() => createToolbarActions({
1514
+ const actionsCreator = useMemo3(() => createToolbarActions({
1746
1515
  model,
1747
1516
  stateAtom,
1748
1517
  registry,
@@ -1755,13 +1524,16 @@ var SheetToolbar = ({ id, ...props }) => {
1755
1524
  cursorFallbackRange,
1756
1525
  customActions
1757
1526
  ]);
1758
- const menu = useMenuActions(actionsCreator);
1527
+ const menuActions = useMenuActions(actionsCreator);
1759
1528
  return /* @__PURE__ */ React5.createElement(Menu.Root, {
1760
- ...props,
1761
- ...menu,
1762
- attendableId: id
1763
- }, /* @__PURE__ */ React5.createElement(Menu.Toolbar, null));
1764
- };
1529
+ ...menuActions,
1530
+ attendableId
1531
+ }, /* @__PURE__ */ React5.createElement(Menu.Toolbar, {
1532
+ ...composableProps3(props),
1533
+ ref: forwardedRef
1534
+ }));
1535
+ });
1536
+ SheetToolbar.displayName = "SheetToolbar";
1765
1537
 
1766
1538
  // src/components/Sheet/Sheet.tsx
1767
1539
  var Sheet = {
@@ -1770,36 +1542,11 @@ var Sheet = {
1770
1542
  Content: SheetContent,
1771
1543
  Statusbar: SheetStatusbar
1772
1544
  };
1773
-
1774
- // src/containers/SheetContainer/SheetContainer.tsx
1775
- var SheetContainer = ({ registry, ...props }) => /* @__PURE__ */ React6.createElement(ComputeGraphContextProvider, {
1776
- registry
1777
- }, /* @__PURE__ */ React6.createElement(SheetContainerInner, props));
1778
- var SheetContainerInner = ({ role, subject: sheet, space, ignoreAttention }) => {
1779
- const graph = useComputeGraph(space);
1780
- if (!graph) {
1781
- return null;
1782
- }
1783
- return /* @__PURE__ */ React6.createElement(Sheet.Root, {
1784
- graph,
1785
- sheet,
1786
- ignoreAttention
1787
- }, /* @__PURE__ */ React6.createElement(Panel.Root, {
1788
- classNames: role === "section" && "aspect-aquare"
1789
- }, /* @__PURE__ */ React6.createElement(Panel.Toolbar, {
1790
- asChild: true
1791
- }, /* @__PURE__ */ React6.createElement(Sheet.Toolbar, {
1792
- id: Obj7.getDXN(sheet).toString()
1793
- })), /* @__PURE__ */ React6.createElement(Panel.Content, {
1794
- asChild: true
1795
- }, /* @__PURE__ */ React6.createElement(Sheet.Content, null)), /* @__PURE__ */ React6.createElement(Panel.Statusbar, {
1796
- asChild: true
1797
- }, /* @__PURE__ */ React6.createElement(Sheet.Statusbar, null))));
1798
- };
1799
-
1800
- // src/containers/SheetContainer/index.ts
1801
- var SheetContainer_default = SheetContainer;
1802
1545
  export {
1803
- SheetContainer_default as default
1546
+ ComputeGraphContext,
1547
+ ComputeGraphContextProvider,
1548
+ Sheet,
1549
+ useComputeGraph,
1550
+ useSheetContext
1804
1551
  };
1805
- //# sourceMappingURL=SheetContainer-I3NFVVDQ.mjs.map
1552
+ //# sourceMappingURL=index.mjs.map