@dxos/plugin-sheet 0.8.4-main.ae835ea → 0.8.4-main.bc674ce

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