@dxos/plugin-sheet 0.7.5-main.9cb18ac → 0.7.5-main.9d2a38b

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 (191) hide show
  1. package/dist/lib/browser/SheetContainer-CM4CO3DC.mjs +370 -0
  2. package/dist/lib/browser/SheetContainer-CM4CO3DC.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-FOO6NGBM.mjs +229 -0
  4. package/dist/lib/browser/chunk-FOO6NGBM.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-A374JPWV.mjs → chunk-H23JW3DX.mjs} +139 -381
  6. package/dist/lib/browser/chunk-H23JW3DX.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-RABELMEQ.mjs → chunk-K6EUYKWT.mjs} +3 -3
  8. package/dist/lib/browser/chunk-K6EUYKWT.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-PW25VUP6.mjs +15 -0
  10. package/dist/lib/browser/chunk-PW25VUP6.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-Q4XS4YWF.mjs → chunk-T3IVPMRX.mjs} +2 -2
  12. package/dist/lib/browser/chunk-T3IVPMRX.mjs.map +7 -0
  13. package/dist/lib/browser/compute-graph-registry-XH6B2SWG.mjs +27 -0
  14. package/dist/lib/browser/compute-graph-registry-XH6B2SWG.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +86 -218
  16. package/dist/lib/browser/index.mjs.map +4 -4
  17. package/dist/lib/browser/intent-resolver-Q7DTHAM5.mjs +47 -0
  18. package/dist/lib/browser/intent-resolver-Q7DTHAM5.mjs.map +7 -0
  19. package/dist/lib/browser/markdown-IKG5FNCA.mjs +26 -0
  20. package/dist/lib/browser/markdown-IKG5FNCA.mjs.map +7 -0
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/react-context-JG43577H.mjs +28 -0
  23. package/dist/lib/browser/react-context-JG43577H.mjs.map +7 -0
  24. package/dist/lib/browser/react-surface-URRC3AFC.mjs +43 -0
  25. package/dist/lib/browser/react-surface-URRC3AFC.mjs.map +7 -0
  26. package/dist/lib/browser/thread-YX6KBQNQ.mjs +17 -0
  27. package/dist/lib/browser/thread-YX6KBQNQ.mjs.map +7 -0
  28. package/dist/lib/browser/types/index.mjs +2 -2
  29. package/dist/lib/node/SheetContainer-TJ3JQLWM.cjs +364 -0
  30. package/dist/lib/node/SheetContainer-TJ3JQLWM.cjs.map +7 -0
  31. package/dist/lib/node/{chunk-TQOJ7DG2.cjs → chunk-E3RXOEL6.cjs} +6 -6
  32. package/dist/lib/node/chunk-E3RXOEL6.cjs.map +7 -0
  33. package/dist/lib/node/{meta.cjs → chunk-FU5K66DS.cjs} +12 -8
  34. package/dist/lib/node/chunk-FU5K66DS.cjs.map +7 -0
  35. package/dist/lib/node/{chunk-2ZVZI2KJ.cjs → chunk-NLDXUFDG.cjs} +7 -7
  36. package/dist/lib/node/chunk-NLDXUFDG.cjs.map +7 -0
  37. package/dist/lib/node/chunk-P4KSGZSS.cjs +251 -0
  38. package/dist/lib/node/chunk-P4KSGZSS.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-FDEQ2PGJ.cjs → chunk-ZPWW4LPY.cjs} +181 -419
  40. package/dist/lib/node/chunk-ZPWW4LPY.cjs.map +7 -0
  41. package/dist/lib/node/compute-graph-registry-ORGTIE5M.cjs +53 -0
  42. package/dist/lib/node/compute-graph-registry-ORGTIE5M.cjs.map +7 -0
  43. package/dist/lib/node/index.cjs +87 -215
  44. package/dist/lib/node/index.cjs.map +4 -4
  45. package/dist/lib/node/intent-resolver-ZUDJJUFG.cjs +60 -0
  46. package/dist/lib/node/intent-resolver-ZUDJJUFG.cjs.map +7 -0
  47. package/dist/lib/node/markdown-EUUL3Q36.cjs +40 -0
  48. package/dist/lib/node/markdown-EUUL3Q36.cjs.map +7 -0
  49. package/dist/lib/node/meta.json +1 -1
  50. package/dist/lib/node/react-context-OOH5QFE2.cjs +50 -0
  51. package/dist/lib/node/react-context-OOH5QFE2.cjs.map +7 -0
  52. package/dist/lib/node/react-surface-IQN5JKSS.cjs +64 -0
  53. package/dist/lib/node/react-surface-IQN5JKSS.cjs.map +7 -0
  54. package/dist/lib/node/thread-VBPS23P2.cjs +32 -0
  55. package/dist/lib/node/thread-VBPS23P2.cjs.map +7 -0
  56. package/dist/lib/node/types/index.cjs +30 -30
  57. package/dist/lib/node/types/index.cjs.map +1 -1
  58. package/dist/lib/node-esm/SheetContainer-QEEFORIC.mjs +371 -0
  59. package/dist/lib/node-esm/SheetContainer-QEEFORIC.mjs.map +7 -0
  60. package/dist/lib/node-esm/{chunk-BM2Q3FFC.mjs → chunk-FMOVRTS4.mjs} +3 -3
  61. package/dist/lib/node-esm/chunk-FMOVRTS4.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-KCXK5UM6.mjs +16 -0
  63. package/dist/lib/node-esm/chunk-KCXK5UM6.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-NYYIDVR7.mjs → chunk-NSVUOAI6.mjs} +2 -2
  65. package/dist/lib/node-esm/chunk-NSVUOAI6.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-L5PQHVTX.mjs → chunk-OXD6RBFF.mjs} +139 -381
  67. package/dist/lib/node-esm/chunk-OXD6RBFF.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-PTOI45NK.mjs +231 -0
  69. package/dist/lib/node-esm/chunk-PTOI45NK.mjs.map +7 -0
  70. package/dist/lib/node-esm/compute-graph-registry-JH2FRHLD.mjs +28 -0
  71. package/dist/lib/node-esm/compute-graph-registry-JH2FRHLD.mjs.map +7 -0
  72. package/dist/lib/node-esm/index.mjs +86 -218
  73. package/dist/lib/node-esm/index.mjs.map +4 -4
  74. package/dist/lib/node-esm/intent-resolver-IF64RN7B.mjs +48 -0
  75. package/dist/lib/node-esm/intent-resolver-IF64RN7B.mjs.map +7 -0
  76. package/dist/lib/node-esm/markdown-D2ZMN7LR.mjs +27 -0
  77. package/dist/lib/node-esm/markdown-D2ZMN7LR.mjs.map +7 -0
  78. package/dist/lib/node-esm/meta.json +1 -1
  79. package/dist/lib/node-esm/react-context-CJVSLO74.mjs +29 -0
  80. package/dist/lib/node-esm/react-context-CJVSLO74.mjs.map +7 -0
  81. package/dist/lib/node-esm/react-surface-XJIX5G3I.mjs +44 -0
  82. package/dist/lib/node-esm/react-surface-XJIX5G3I.mjs.map +7 -0
  83. package/dist/lib/node-esm/thread-HSJD3SR6.mjs +18 -0
  84. package/dist/lib/node-esm/thread-HSJD3SR6.mjs.map +7 -0
  85. package/dist/lib/node-esm/types/index.mjs +2 -2
  86. package/dist/types/src/SheetPlugin.d.ts +1 -3
  87. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/capabilities.d.ts +5 -0
  89. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  90. package/dist/types/src/capabilities/compute-graph-registry.d.ts +4 -0
  91. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/index.d.ts +17 -0
  93. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
  95. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  96. package/dist/types/src/capabilities/markdown.d.ts +6 -0
  97. package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
  98. package/dist/types/src/capabilities/react-context.d.ts +8 -0
  99. package/dist/types/src/capabilities/react-context.d.ts.map +1 -0
  100. package/dist/types/src/capabilities/react-surface.d.ts +4 -0
  101. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  102. package/dist/types/src/capabilities/thread.d.ts +6 -0
  103. package/dist/types/src/capabilities/thread.d.ts.map +1 -0
  104. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  105. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  106. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +7 -0
  108. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -0
  109. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +6 -0
  110. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -0
  111. package/dist/types/src/components/SheetToolbar/align.d.ts +28 -0
  112. package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -0
  113. package/dist/types/src/components/SheetToolbar/comment.d.ts +23 -0
  114. package/dist/types/src/components/SheetToolbar/comment.d.ts.map +1 -0
  115. package/dist/types/src/components/SheetToolbar/index.d.ts +2 -0
  116. package/dist/types/src/components/SheetToolbar/index.d.ts.map +1 -0
  117. package/dist/types/src/components/SheetToolbar/style.d.ts +26 -0
  118. package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -0
  119. package/dist/types/src/components/SheetToolbar/useToolbarAction.d.ts +8 -0
  120. package/dist/types/src/components/SheetToolbar/useToolbarAction.d.ts.map +1 -0
  121. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts +6 -0
  122. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -0
  123. package/dist/types/src/components/index.d.ts +1 -2
  124. package/dist/types/src/components/index.d.ts.map +1 -1
  125. package/dist/types/src/index.d.ts +2 -3
  126. package/dist/types/src/index.d.ts.map +1 -1
  127. package/dist/types/src/meta.d.ts +1 -2
  128. package/dist/types/src/meta.d.ts.map +1 -1
  129. package/dist/types/src/testing/testing.d.ts +1 -1
  130. package/dist/types/src/testing/testing.d.ts.map +1 -1
  131. package/dist/types/src/types/sheet-range-types.d.ts +1 -1
  132. package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
  133. package/dist/types/src/types/types.d.ts +0 -11
  134. package/dist/types/src/types/types.d.ts.map +1 -1
  135. package/dist/types/tsconfig.tsbuildinfo +1 -1
  136. package/package.json +44 -51
  137. package/src/SheetPlugin.tsx +68 -103
  138. package/src/capabilities/capabilities.ts +14 -0
  139. package/src/capabilities/compute-graph-registry.ts +25 -0
  140. package/src/capabilities/index.ts +14 -0
  141. package/src/capabilities/intent-resolver.ts +29 -0
  142. package/src/capabilities/markdown.ts +22 -0
  143. package/src/capabilities/react-context.tsx +20 -0
  144. package/src/capabilities/react-surface.tsx +30 -0
  145. package/src/capabilities/thread.ts +14 -0
  146. package/src/components/GridSheet/GridSheet.stories.tsx +2 -0
  147. package/src/components/SheetContainer/SheetContainer.stories.tsx +25 -22
  148. package/src/components/SheetContainer/SheetContainer.tsx +3 -8
  149. package/src/components/{Toolbar/Toolbar.stories.tsx → SheetToolbar/SheetToolbar.stories.tsx} +4 -8
  150. package/src/components/SheetToolbar/SheetToolbar.tsx +48 -0
  151. package/src/components/SheetToolbar/align.ts +68 -0
  152. package/src/components/SheetToolbar/comment.ts +56 -0
  153. package/src/components/{Toolbar → SheetToolbar}/index.ts +1 -1
  154. package/src/components/SheetToolbar/style.ts +72 -0
  155. package/src/components/SheetToolbar/useToolbarAction.ts +87 -0
  156. package/src/components/SheetToolbar/useToolbarState.ts +17 -0
  157. package/src/components/index.ts +0 -1
  158. package/src/index.ts +2 -5
  159. package/src/meta.ts +1 -1
  160. package/src/types/sheet-range-types.ts +1 -1
  161. package/src/types/types.ts +0 -26
  162. package/dist/lib/browser/SheetContainer-S4NCLUYL.mjs +0 -290
  163. package/dist/lib/browser/SheetContainer-S4NCLUYL.mjs.map +0 -7
  164. package/dist/lib/browser/chunk-A374JPWV.mjs.map +0 -7
  165. package/dist/lib/browser/chunk-Q4XS4YWF.mjs.map +0 -7
  166. package/dist/lib/browser/chunk-RABELMEQ.mjs.map +0 -7
  167. package/dist/lib/browser/meta.mjs +0 -9
  168. package/dist/lib/browser/meta.mjs.map +0 -7
  169. package/dist/lib/node/SheetContainer-TP4GYXZB.cjs +0 -296
  170. package/dist/lib/node/SheetContainer-TP4GYXZB.cjs.map +0 -7
  171. package/dist/lib/node/chunk-2ZVZI2KJ.cjs.map +0 -7
  172. package/dist/lib/node/chunk-FDEQ2PGJ.cjs.map +0 -7
  173. package/dist/lib/node/chunk-TQOJ7DG2.cjs.map +0 -7
  174. package/dist/lib/node/meta.cjs.map +0 -7
  175. package/dist/lib/node-esm/SheetContainer-YB3JBVPZ.mjs +0 -291
  176. package/dist/lib/node-esm/SheetContainer-YB3JBVPZ.mjs.map +0 -7
  177. package/dist/lib/node-esm/chunk-BM2Q3FFC.mjs.map +0 -7
  178. package/dist/lib/node-esm/chunk-L5PQHVTX.mjs.map +0 -7
  179. package/dist/lib/node-esm/chunk-NYYIDVR7.mjs.map +0 -7
  180. package/dist/lib/node-esm/meta.mjs +0 -10
  181. package/dist/lib/node-esm/meta.mjs.map +0 -7
  182. package/dist/types/src/components/SheetObjectSettings.d.ts +0 -7
  183. package/dist/types/src/components/SheetObjectSettings.d.ts.map +0 -1
  184. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -48
  185. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  186. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +0 -7
  187. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +0 -1
  188. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  189. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  190. package/src/components/SheetObjectSettings.tsx +0 -38
  191. package/src/components/Toolbar/Toolbar.tsx +0 -344
@@ -6,10 +6,14 @@ import {
6
6
  cellClassNameForRange,
7
7
  rangeFromIndex,
8
8
  useSheetModel
9
- } from "./chunk-Q4XS4YWF.mjs";
9
+ } from "./chunk-T3IVPMRX.mjs";
10
+ import {
11
+ rangeExtension,
12
+ sheetExtension
13
+ } from "./chunk-FOO6NGBM.mjs";
10
14
  import {
11
15
  SHEET_PLUGIN
12
- } from "./chunk-RABELMEQ.mjs";
16
+ } from "./chunk-K6EUYKWT.mjs";
13
17
 
14
18
  // packages/plugins/plugin-sheet/src/components/ComputeGraph/ComputeGraphContextProvider.tsx
15
19
  import React, { createContext, useContext } from "react";
@@ -38,334 +42,8 @@ var useComputeGraph = (space) => {
38
42
  return graph;
39
43
  };
40
44
 
41
- // packages/plugins/plugin-sheet/src/extensions/compute.ts
42
- import { syntaxTree } from "@codemirror/language";
43
- import { RangeSetBuilder, StateEffect, StateField } from "@codemirror/state";
44
- import { Decoration, EditorView, ViewPlugin, WidgetType } from "@codemirror/view";
45
- import { debounce } from "@dxos/async";
46
- import { createSheetName } from "@dxos/compute";
47
- import { invariant } from "@dxos/invariant";
48
- import { documentId, singleValueFacet } from "@dxos/react-ui-editor";
49
- var updateAllDecorations = StateEffect.define();
50
- var computeGraphFacet = singleValueFacet();
51
-
52
- // packages/plugins/plugin-sheet/src/extensions/editor/extension.ts
53
- import { acceptCompletion, autocompletion, completionStatus, startCompletion } from "@codemirror/autocomplete";
54
- import { HighlightStyle, syntaxHighlighting } from "@codemirror/language";
55
- import { ViewPlugin as ViewPlugin2, keymap } from "@codemirror/view";
56
- import { tags } from "@lezer/highlight";
57
- import { spreadsheet } from "codemirror-lang-spreadsheet";
58
- import { RANGE_NOTATION } from "@dxos/compute";
59
- import { singleValueFacet as singleValueFacet2 } from "@dxos/react-ui-editor";
60
- import { mx } from "@dxos/react-ui-theme";
61
- var highlightStyles = HighlightStyle.define([
62
- // Function.
63
- {
64
- tag: tags.name,
65
- class: "text-accentText"
66
- },
67
- // Range.
68
- {
69
- tag: tags.tagName,
70
- class: "text-pinkText"
71
- },
72
- // Values.
73
- {
74
- tag: tags.number,
75
- class: "text-tealText"
76
- },
77
- {
78
- tag: tags.bool,
79
- class: "text-tealText"
80
- },
81
- {
82
- tag: tags.string,
83
- class: "text-tealText"
84
- },
85
- // Error.
86
- {
87
- tag: tags.invalid,
88
- class: "text-unAccent"
89
- }
90
- ]);
91
- var languageFacet = singleValueFacet2();
92
- var sheetExtension = ({ debug, functions = [] }) => {
93
- const { extension, language } = spreadsheet({
94
- idiom: "en-US",
95
- decimalSeparator: "."
96
- });
97
- const createCompletion = (name) => {
98
- const { section = "Custom", description, syntax } = functions.find((value) => value.name === name) ?? {};
99
- return {
100
- section,
101
- label: name,
102
- info: () => {
103
- if (!description && !syntax) {
104
- return null;
105
- }
106
- const root = document.createElement("div");
107
- root.className = "flex flex-col gap-2 text-sm";
108
- const title = document.createElement("h2");
109
- title.innerText = name;
110
- title.className = "text-lg font-mono text-accentText";
111
- root.appendChild(title);
112
- if (description) {
113
- const info = document.createElement("p");
114
- info.innerText = description;
115
- info.className = "text-subdued";
116
- root.appendChild(info);
117
- }
118
- if (syntax) {
119
- const detail = document.createElement("pre");
120
- detail.innerText = syntax;
121
- detail.className = "whitespace-pre-wrap text-greenText";
122
- root.appendChild(detail);
123
- }
124
- return root;
125
- },
126
- apply: (view, completion, from, to) => {
127
- const insertParens = to === view.state.doc.toString().length;
128
- view.dispatch(view.state.update({
129
- changes: {
130
- from,
131
- to,
132
- insert: completion.label + (insertParens ? "()" : "")
133
- },
134
- selection: {
135
- anchor: from + completion.label.length + 1
136
- }
137
- }));
138
- }
139
- };
140
- };
141
- return [
142
- extension,
143
- languageFacet.of(language),
144
- language.data.of({
145
- autocomplete: (context) => {
146
- if (context.state.doc.toString()[0] !== "=") {
147
- return null;
148
- }
149
- const match = context.matchBefore(/\w*/);
150
- if (!match || match.from === match.to) {
151
- return null;
152
- }
153
- const text = match.text.toUpperCase();
154
- if (!context.explicit && match.text.length < 2) {
155
- return null;
156
- }
157
- return {
158
- from: match.from,
159
- options: functions?.filter(({ name }) => name.startsWith(text)).map(({ name }) => createCompletion(name)) ?? []
160
- };
161
- }
162
- }),
163
- syntaxHighlighting(highlightStyles),
164
- autocompletion({
165
- aboveCursor: false,
166
- defaultKeymap: true,
167
- activateOnTyping: true,
168
- closeOnBlur: !debug,
169
- icons: false,
170
- tooltipClass: () => mx("!-left-[1px] !top-[33px] !-m-0 border !border-t-0 [&>ul]:!min-w-[198px]", "[&>ul>li[aria-selected]]:!bg-accentSurface", "border-separator")
171
- }),
172
- keymap.of([
173
- {
174
- key: "Tab",
175
- run: (view) => {
176
- return completionStatus(view.state) === "active" ? acceptCompletion(view) : startCompletion(view);
177
- }
178
- }
179
- ])
180
- ];
181
- };
182
- var rangeExtension = ({ onInit, onStateChange }) => {
183
- let view;
184
- let activeRange;
185
- const notifier = {
186
- setRange: (range) => {
187
- if (activeRange) {
188
- view.dispatch(view.state.update({
189
- changes: {
190
- ...activeRange,
191
- insert: range.toString()
192
- },
193
- selection: {
194
- anchor: activeRange.from + range.length
195
- }
196
- }));
197
- }
198
- view.focus();
199
- }
200
- };
201
- return ViewPlugin2.fromClass(class {
202
- constructor(_view) {
203
- view = _view;
204
- onInit?.(notifier);
205
- }
206
- update(view2) {
207
- const { anchor } = view2.state.selection.ranges[0];
208
- activeRange = void 0;
209
- const language = view2.state.facet(languageFacet);
210
- const { topNode } = language.parser.parse(view2.state.doc.toString());
211
- visitTree(topNode, ({ type, from, to }) => {
212
- if (from <= anchor && to >= anchor) {
213
- switch (type.name) {
214
- case "Function":
215
- activeRange = {
216
- from: to,
217
- to
218
- };
219
- break;
220
- case "CloseParen":
221
- activeRange = {
222
- from,
223
- to: from
224
- };
225
- break;
226
- case "RangeToken":
227
- case "CellToken":
228
- activeRange = {
229
- from,
230
- to
231
- };
232
- return true;
233
- }
234
- }
235
- return false;
236
- });
237
- if (!activeRange && view2.state.doc.toString()[0] === "=") {
238
- const str = view2.state.doc.sliceString(1);
239
- if (RANGE_NOTATION.test(str)) {
240
- activeRange = {
241
- from: 1,
242
- to: str.length + 1
243
- };
244
- }
245
- }
246
- onStateChange?.({
247
- activeRange: activeRange ? view2.state.doc.sliceString(activeRange.from, activeRange.to) : void 0
248
- });
249
- }
250
- });
251
- };
252
- var visitTree = (node, callback) => {
253
- if (callback(node)) {
254
- return true;
255
- }
256
- for (let child = node.firstChild; child !== null; child = child.nextSibling) {
257
- if (visitTree(child, callback)) {
258
- return true;
259
- }
260
- }
261
- return false;
262
- };
263
-
264
- // packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx
265
- import React2, { createContext as createContext2, useCallback, useContext as useContext2, useState } from "react";
266
- import { invariant as invariant2 } from "@dxos/invariant";
267
- import { fullyQualifiedId } from "@dxos/react-client/echo";
268
- import { Grid, useGridContext } from "@dxos/react-ui-grid";
269
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx";
270
- var SheetContext = /* @__PURE__ */ createContext2(void 0);
271
- var useSheetContext = () => {
272
- const context = useContext2(SheetContext);
273
- invariant2(context, void 0, {
274
- F: __dxlog_file,
275
- L: 54,
276
- S: void 0,
277
- A: [
278
- "context",
279
- ""
280
- ]
281
- });
282
- return context;
283
- };
284
- var SheetProviderImpl = ({ model, onInfo, ignoreAttention, children, __gridScope }) => {
285
- const { id, editing, setEditing } = useGridContext("SheetProvider", __gridScope);
286
- const [cursor, setCursorInternal] = useState();
287
- const [range, setRangeInternal] = useState();
288
- const [cursorFallbackRange, setCursorFallbackRange] = useState();
289
- const [activeRefs, setActiveRefs] = useState("");
290
- const setCursor = useCallback((nextCursor) => {
291
- setCursorInternal(nextCursor);
292
- setCursorFallbackRange(range?.to ? range : nextCursor ? {
293
- from: nextCursor,
294
- to: nextCursor
295
- } : void 0);
296
- }, [
297
- range
298
- ]);
299
- const setRange = useCallback((nextRange) => {
300
- setRangeInternal(nextRange);
301
- setCursorFallbackRange(nextRange?.to ? nextRange : cursor ? {
302
- from: cursor,
303
- to: cursor
304
- } : void 0);
305
- }, [
306
- cursor
307
- ]);
308
- return /* @__PURE__ */ React2.createElement(SheetContext.Provider, {
309
- value: {
310
- id,
311
- model,
312
- editing,
313
- setEditing,
314
- cursor,
315
- setCursor,
316
- range,
317
- setRange,
318
- cursorFallbackRange,
319
- activeRefs,
320
- setActiveRefs,
321
- // TODO(burdon): Change to event.
322
- onInfo,
323
- ignoreAttention
324
- }
325
- }, children);
326
- };
327
- var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo }) => {
328
- const model = useSheetModel(graph, sheet, {
329
- readonly
330
- });
331
- return !model ? null : /* @__PURE__ */ React2.createElement(Grid.Root, {
332
- id: fullyQualifiedId(sheet)
333
- }, /* @__PURE__ */ React2.createElement(SheetProviderImpl, {
334
- model,
335
- onInfo,
336
- ignoreAttention
337
- }, children));
338
- };
339
-
340
- // packages/plugins/plugin-sheet/src/components/GridSheet/GridSheet.tsx
341
- import React5, { useCallback as useCallback4, useMemo as useMemo2, useRef, useState as useState3 } from "react";
342
- import { createIntent as createIntent2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
343
- import { rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute";
344
- import { DropdownMenu, Icon, useTranslation as useTranslation3 } from "@dxos/react-ui";
345
- import { useAttention } from "@dxos/react-ui-attention";
346
- import { closestCell, defaultSizeRow, editorKeys, Grid as Grid2, GridCellEditor, parseCellIndex } from "@dxos/react-ui-grid";
347
-
348
- // packages/plugins/plugin-sheet/src/components/GridSheet/util.ts
349
- import { useEffect as useEffect2, useState as useState2 } from "react";
350
- import { inRange as inRange2 } from "@dxos/compute";
351
- import { createDocAccessor, fullyQualifiedId as fullyQualifiedId3 } from "@dxos/react-client/echo";
352
- import { parseValue, cellClassesForFieldType } from "@dxos/react-ui-form";
353
- import { colToA1Notation, rowToA1Notation, commentedClassName } from "@dxos/react-ui-grid";
354
- import { mx as mx2 } from "@dxos/react-ui-theme";
355
-
356
- // packages/plugins/plugin-sheet/src/integrations/thread-ranges.ts
357
- import { useCallback as useCallback3, useEffect, useMemo } from "react";
358
- import { createIntent, createResolver, LayoutAction, useIntentDispatcher, useIntentResolver } from "@dxos/app-framework";
359
- import { debounce as debounce2 } from "@dxos/async";
360
- import { inRange } from "@dxos/compute";
361
- import { ThreadAction } from "@dxos/plugin-thread/types";
362
- import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
363
-
364
- // packages/plugins/plugin-sheet/src/components/index.ts
365
- import { lazy } from "react";
366
-
367
45
  // packages/plugins/plugin-sheet/src/components/RangeList/RangeList.tsx
368
- import React3, { useCallback as useCallback2 } from "react";
46
+ import React2, { useCallback } from "react";
369
47
  import { rangeToA1Notation } from "@dxos/compute";
370
48
  import { S } from "@dxos/echo-schema";
371
49
  import { useTranslation } from "@dxos/react-ui";
@@ -375,59 +53,61 @@ var RangeList = ({ sheet }) => {
375
53
  const { t } = useTranslation(SHEET_PLUGIN);
376
54
  const handleSelectRange = (range) => {
377
55
  };
378
- const handleDeleteRange = useCallback2((range) => {
56
+ const handleDeleteRange = useCallback((range) => {
379
57
  const index = sheet.ranges.findIndex((sheetRange) => sheetRange === range);
380
58
  sheet.ranges.splice(index, 1);
381
59
  }, [
382
60
  sheet
383
61
  ]);
384
- return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement("h2", {
62
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("h2", {
385
63
  className: "p-2 text-sm font-semibold"
386
- }, t("range list heading")), /* @__PURE__ */ React3.createElement(List.Root, {
64
+ }, t("range list heading")), /* @__PURE__ */ React2.createElement(List.Root, {
387
65
  items: sheet.ranges,
388
66
  isItem: S.is(Range)
389
- }, ({ items: ranges }) => ranges.map((range, i) => /* @__PURE__ */ React3.createElement(List.Item, {
67
+ }, ({ items: ranges }) => ranges.map((range, i) => /* @__PURE__ */ React2.createElement(List.Item, {
390
68
  key: i,
391
69
  item: range,
392
70
  classNames: [
393
71
  "p-2",
394
72
  ghostHover
395
73
  ]
396
- }, /* @__PURE__ */ React3.createElement(List.ItemDragHandle, null), /* @__PURE__ */ React3.createElement(List.ItemTitle, {
74
+ }, /* @__PURE__ */ React2.createElement(List.ItemDragHandle, null), /* @__PURE__ */ React2.createElement(List.ItemTitle, {
397
75
  onClick: () => handleSelectRange(range)
398
76
  }, t("range title", {
399
77
  position: rangeToA1Notation(rangeFromIndex(sheet, range.range)),
400
78
  key: t(`range key ${range.key} label`),
401
79
  value: t(`range value ${range.value} label`)
402
- })), /* @__PURE__ */ React3.createElement(List.ItemDeleteButton, {
80
+ })), /* @__PURE__ */ React2.createElement(List.ItemDeleteButton, {
403
81
  onClick: () => handleDeleteRange(range)
404
82
  })))));
405
83
  };
406
84
 
407
- // packages/plugins/plugin-sheet/src/components/SheetObjectSettings.tsx
408
- import React4 from "react";
409
- import { SPACE_PLUGIN } from "@dxos/plugin-space/meta";
410
- import { Input, useTranslation as useTranslation2 } from "@dxos/react-ui";
411
- var SheetObjectSettings = ({ sheet }) => {
412
- const { t } = useTranslation2(SPACE_PLUGIN);
413
- return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement("div", {
414
- role: "form",
415
- className: "flex flex-col w-full p-2 gap-1"
416
- }, /* @__PURE__ */ React4.createElement(Input.Root, null, /* @__PURE__ */ React4.createElement(Input.Label, null, t("name label")), /* @__PURE__ */ React4.createElement(Input.TextInput, {
417
- placeholder: t("name placeholder"),
418
- value: sheet.name ?? "",
419
- onChange: (event) => {
420
- sheet.name = event.target.value;
421
- }
422
- }))), /* @__PURE__ */ React4.createElement(RangeList, {
423
- sheet
424
- }));
425
- };
426
-
427
85
  // packages/plugins/plugin-sheet/src/components/index.ts
428
- var SheetContainer = lazy(() => import("./SheetContainer-S4NCLUYL.mjs"));
86
+ import { lazy } from "react";
87
+
88
+ // packages/plugins/plugin-sheet/src/components/GridSheet/GridSheet.tsx
89
+ import React4, { useCallback as useCallback4, useMemo as useMemo2, useRef, useState as useState3 } from "react";
90
+ import { createIntent as createIntent2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
91
+ import { rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute";
92
+ import { DropdownMenu, Icon, useTranslation as useTranslation2 } from "@dxos/react-ui";
93
+ import { useAttention } from "@dxos/react-ui-attention";
94
+ import { closestCell, defaultSizeRow, editorKeys, Grid as Grid2, GridCellEditor, parseCellIndex } from "@dxos/react-ui-grid";
95
+
96
+ // packages/plugins/plugin-sheet/src/components/GridSheet/util.ts
97
+ import { useEffect as useEffect2, useState } from "react";
98
+ import { inRange as inRange2 } from "@dxos/compute";
99
+ import { createDocAccessor, fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
100
+ import { parseValue, cellClassesForFieldType } from "@dxos/react-ui-form";
101
+ import { colToA1Notation, rowToA1Notation, commentedClassName } from "@dxos/react-ui-grid";
102
+ import { mx } from "@dxos/react-ui-theme";
429
103
 
430
104
  // packages/plugins/plugin-sheet/src/integrations/thread-ranges.ts
105
+ import { useCallback as useCallback2, useEffect, useMemo } from "react";
106
+ import { createIntent, createResolver, LayoutAction, useIntentDispatcher, useIntentResolver } from "@dxos/app-framework";
107
+ import { debounce } from "@dxos/async";
108
+ import { inRange } from "@dxos/compute";
109
+ import { ThreadAction } from "@dxos/plugin-thread/types";
110
+ import { fullyQualifiedId } from "@dxos/react-client/echo";
431
111
  var completeCellRangeToThreadCursor = (range) => {
432
112
  return `${range.from.col},${range.from.row},${range.to.col},${range.to.row}`;
433
113
  };
@@ -460,7 +140,7 @@ var useUpdateFocusedCellOnThreadSelection = (grid) => {
460
140
  }, true);
461
141
  }, {
462
142
  disposition: "hoist",
463
- filter: (data) => data.id === fullyQualifiedId2(model.sheet) && !!data.cursor
143
+ filter: (data) => data.id === fullyQualifiedId(model.sheet) && !!data.cursor
464
144
  }), [
465
145
  model.sheet,
466
146
  setActiveRefs
@@ -474,7 +154,7 @@ var useSelectThreadOnCellFocus = () => {
474
154
  // TODO(thure): Surely we can find a better dependency for this…
475
155
  JSON.stringify(model.sheet.threads)
476
156
  ]);
477
- const selectClosestThread = useCallback3((cellAddress) => {
157
+ const selectClosestThread = useCallback2((cellAddress) => {
478
158
  if (!cellAddress || !threads) {
479
159
  return;
480
160
  }
@@ -488,7 +168,7 @@ var useSelectThreadOnCellFocus = () => {
488
168
  });
489
169
  if (closestThread) {
490
170
  void dispatch(createIntent(ThreadAction.Select, {
491
- current: fullyQualifiedId2(closestThread)
171
+ current: fullyQualifiedId(closestThread)
492
172
  }));
493
173
  }
494
174
  }, [
@@ -496,7 +176,7 @@ var useSelectThreadOnCellFocus = () => {
496
176
  threads
497
177
  ]);
498
178
  const debounced = useMemo(() => {
499
- return debounce2((cellCoords) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);
179
+ return debounce((cellCoords) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);
500
180
  }, [
501
181
  selectClosestThread
502
182
  ]);
@@ -548,7 +228,7 @@ var projectCellProps = (model, col, row) => {
548
228
  const threadRefs = model.sheet.threads?.filter((thread) => {
549
229
  const range = thread.target?.anchor && parseThreadAnchorAsCellRange(thread.target.anchor);
550
230
  return thread && range ? inRange2(range, address) : false;
551
- }).map((thread) => fullyQualifiedId3(thread)).join(" ");
231
+ }).map((thread) => fullyQualifiedId2(thread)).join(" ");
552
232
  const description = model.getValueDescription(address);
553
233
  const type = description?.type;
554
234
  const format = description?.format;
@@ -559,7 +239,7 @@ var projectCellProps = (model, col, row) => {
559
239
  format,
560
240
  value: rawValue
561
241
  }),
562
- className: mx2(cellClassesForFieldType({
242
+ className: mx(cellClassesForFieldType({
563
243
  type,
564
244
  format
565
245
  }), threadRefs && commentedClassName, classNames),
@@ -621,8 +301,8 @@ var cellGetter = (model) => {
621
301
  };
622
302
  };
623
303
  var useSheetModelDxGridProps = (dxGrid, model) => {
624
- const [columns, setColumns] = useState2(createDxGridColumns(model));
625
- const [rows, setRows] = useState2(createDxGridRows(model));
304
+ const [columns, setColumns] = useState(createDxGridColumns(model));
305
+ const [rows, setRows] = useState(createDxGridRows(model));
626
306
  useEffect2(() => {
627
307
  const cellsAccessor = createDocAccessor(model.sheet, [
628
308
  "cells"
@@ -672,6 +352,82 @@ var useSheetModelDxGridProps = (dxGrid, model) => {
672
352
  };
673
353
  };
674
354
 
355
+ // packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx
356
+ import React3, { createContext as createContext2, useCallback as useCallback3, useContext as useContext2, useState as useState2 } from "react";
357
+ import { invariant } from "@dxos/invariant";
358
+ import { fullyQualifiedId as fullyQualifiedId3 } from "@dxos/react-client/echo";
359
+ import { Grid, useGridContext } from "@dxos/react-ui-grid";
360
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx";
361
+ var SheetContext = /* @__PURE__ */ createContext2(void 0);
362
+ var useSheetContext = () => {
363
+ const context = useContext2(SheetContext);
364
+ invariant(context, void 0, {
365
+ F: __dxlog_file,
366
+ L: 54,
367
+ S: void 0,
368
+ A: [
369
+ "context",
370
+ ""
371
+ ]
372
+ });
373
+ return context;
374
+ };
375
+ var SheetProviderImpl = ({ model, onInfo, ignoreAttention, children, __gridScope }) => {
376
+ const { id, editing, setEditing } = useGridContext("SheetProvider", __gridScope);
377
+ const [cursor, setCursorInternal] = useState2();
378
+ const [range, setRangeInternal] = useState2();
379
+ const [cursorFallbackRange, setCursorFallbackRange] = useState2();
380
+ const [activeRefs, setActiveRefs] = useState2("");
381
+ const setCursor = useCallback3((nextCursor) => {
382
+ setCursorInternal(nextCursor);
383
+ setCursorFallbackRange(range?.to ? range : nextCursor ? {
384
+ from: nextCursor,
385
+ to: nextCursor
386
+ } : void 0);
387
+ }, [
388
+ range
389
+ ]);
390
+ const setRange = useCallback3((nextRange) => {
391
+ setRangeInternal(nextRange);
392
+ setCursorFallbackRange(nextRange?.to ? nextRange : cursor ? {
393
+ from: cursor,
394
+ to: cursor
395
+ } : void 0);
396
+ }, [
397
+ cursor
398
+ ]);
399
+ return /* @__PURE__ */ React3.createElement(SheetContext.Provider, {
400
+ value: {
401
+ id,
402
+ model,
403
+ editing,
404
+ setEditing,
405
+ cursor,
406
+ setCursor,
407
+ range,
408
+ setRange,
409
+ cursorFallbackRange,
410
+ activeRefs,
411
+ setActiveRefs,
412
+ // TODO(burdon): Change to event.
413
+ onInfo,
414
+ ignoreAttention
415
+ }
416
+ }, children);
417
+ };
418
+ var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo }) => {
419
+ const model = useSheetModel(graph, sheet, {
420
+ readonly
421
+ });
422
+ return !model ? null : /* @__PURE__ */ React3.createElement(Grid.Root, {
423
+ id: fullyQualifiedId3(sheet)
424
+ }, /* @__PURE__ */ React3.createElement(SheetProviderImpl, {
425
+ model,
426
+ onInfo,
427
+ ignoreAttention
428
+ }, children));
429
+ };
430
+
675
431
  // packages/plugins/plugin-sheet/src/components/GridSheet/GridSheet.tsx
676
432
  var inertPosition = {
677
433
  plane: "grid",
@@ -718,7 +474,7 @@ var sheetColDefault = {
718
474
  }
719
475
  };
720
476
  var GridSheet = () => {
721
- const { t } = useTranslation3(SHEET_PLUGIN);
477
+ const { t } = useTranslation2(SHEET_PLUGIN);
722
478
  const { id, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, ignoreAttention } = useSheetContext();
723
479
  const [dxGrid, setDxGrid] = useState3(null);
724
480
  const [extraplanarFocus, setExtraplanarFocus] = useState3(null);
@@ -970,14 +726,14 @@ var GridSheet = () => {
970
726
  ]);
971
727
  useUpdateFocusedCellOnThreadSelection(dxGrid);
972
728
  useSelectThreadOnCellFocus();
973
- return /* @__PURE__ */ React5.createElement("div", {
729
+ return /* @__PURE__ */ React4.createElement("div", {
974
730
  role: "none",
975
731
  className: "relative min-bs-0"
976
- }, /* @__PURE__ */ React5.createElement(GridCellEditor, {
732
+ }, /* @__PURE__ */ React4.createElement(GridCellEditor, {
977
733
  getCellContent,
978
734
  extension,
979
735
  onBlur: handleBlur
980
- }), /* @__PURE__ */ React5.createElement(Grid2.Content, {
736
+ }), /* @__PURE__ */ React4.createElement(Grid2.Content, {
981
737
  initialCells,
982
738
  limitColumns: DEFAULT_COLS,
983
739
  limitRows: DEFAULT_ROWS,
@@ -997,46 +753,48 @@ var GridSheet = () => {
997
753
  className: "[--dx-grid-base:var(--surface-bg)] [&_.dx-grid]:border-bs [&_.dx-grid]:absolute [&_.dx-grid]:inset-0 [&_.dx-grid]:border-separator",
998
754
  activeRefs,
999
755
  ref: setDxGrid
1000
- }), /* @__PURE__ */ React5.createElement(DropdownMenu.Root, {
756
+ }), /* @__PURE__ */ React4.createElement(DropdownMenu.Root, {
1001
757
  modal: false,
1002
758
  open: !!contextMenuOpen,
1003
759
  onOpenChange: (nextOpen) => setContextMenuOpen(nextOpen ? inertPosition : null)
1004
- }, /* @__PURE__ */ React5.createElement(DropdownMenu.VirtualTrigger, {
760
+ }, /* @__PURE__ */ React4.createElement(DropdownMenu.VirtualTrigger, {
1005
761
  virtualRef: contextMenuAnchorRef
1006
- }), /* @__PURE__ */ React5.createElement(DropdownMenu.Content, {
762
+ }), /* @__PURE__ */ React4.createElement(DropdownMenu.Content, {
1007
763
  side: contextMenuAxis === "col" ? "bottom" : "right",
1008
764
  sideOffset: 4,
1009
765
  collisionPadding: 8
1010
- }, /* @__PURE__ */ React5.createElement(DropdownMenu.Viewport, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
766
+ }, /* @__PURE__ */ React4.createElement(DropdownMenu.Viewport, null, /* @__PURE__ */ React4.createElement(DropdownMenu.Item, {
1011
767
  onClick: () => handleAxisMenuAction("insert-before"),
1012
768
  "data-testid": `grid.${contextMenuAxis}.insert-before`
1013
- }, /* @__PURE__ */ React5.createElement(Icon, {
769
+ }, /* @__PURE__ */ React4.createElement(Icon, {
1014
770
  size: 5,
1015
771
  icon: contextMenuAxis === "col" ? "ph--columns-plus-left--regular" : "ph--rows-plus-top--regular"
1016
- }), /* @__PURE__ */ React5.createElement("span", null, t(`add ${contextMenuAxis} before label`))), /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
772
+ }), /* @__PURE__ */ React4.createElement("span", null, t(`add ${contextMenuAxis} before label`))), /* @__PURE__ */ React4.createElement(DropdownMenu.Item, {
1017
773
  onClick: () => handleAxisMenuAction("insert-after"),
1018
774
  "data-testid": `grid.${contextMenuAxis}.insert-after`
1019
- }, /* @__PURE__ */ React5.createElement(Icon, {
775
+ }, /* @__PURE__ */ React4.createElement(Icon, {
1020
776
  size: 5,
1021
777
  icon: contextMenuAxis === "col" ? "ph--columns-plus-right--regular" : "ph--rows-plus-bottom--regular"
1022
- }), /* @__PURE__ */ React5.createElement("span", null, t(`add ${contextMenuAxis} after label`))), /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
778
+ }), /* @__PURE__ */ React4.createElement("span", null, t(`add ${contextMenuAxis} after label`))), /* @__PURE__ */ React4.createElement(DropdownMenu.Item, {
1023
779
  onClick: () => handleAxisMenuAction("drop"),
1024
780
  "data-testid": `grid.${contextMenuAxis}.drop`
1025
- }, /* @__PURE__ */ React5.createElement(Icon, {
781
+ }, /* @__PURE__ */ React4.createElement(Icon, {
1026
782
  size: 5,
1027
783
  icon: "ph--backspace--regular"
1028
- }), /* @__PURE__ */ React5.createElement("span", null, t(`delete ${contextMenuAxis} label`)))), /* @__PURE__ */ React5.createElement(DropdownMenu.Arrow, null))));
784
+ }), /* @__PURE__ */ React4.createElement("span", null, t(`delete ${contextMenuAxis} label`)))), /* @__PURE__ */ React4.createElement(DropdownMenu.Arrow, null))));
1029
785
  };
1030
786
 
787
+ // packages/plugins/plugin-sheet/src/components/index.ts
788
+ var SheetContainer = lazy(() => import("./SheetContainer-CM4CO3DC.mjs"));
789
+
1031
790
  export {
1032
791
  ComputeGraphContextProvider,
1033
792
  useComputeGraph,
1034
793
  completeCellRangeToThreadCursor,
1035
- computeGraphFacet,
1036
794
  useSheetContext,
1037
795
  SheetProvider,
1038
796
  GridSheet,
1039
- SheetObjectSettings,
797
+ RangeList,
1040
798
  SheetContainer
1041
799
  };
1042
- //# sourceMappingURL=chunk-A374JPWV.mjs.map
800
+ //# sourceMappingURL=chunk-H23JW3DX.mjs.map