@dxos/plugin-sheet 0.8.1-staging.5be625a → 0.8.1-staging.9eaf14f

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 (83) hide show
  1. package/dist/lib/browser/{SheetContainer-45IMNPCA.mjs → SheetContainer-B3A5443Z.mjs} +4 -4
  2. package/dist/lib/browser/{chunk-DN6QF7VV.mjs → chunk-AT5ZK6JD.mjs} +1 -1
  3. package/dist/lib/browser/chunk-AT5ZK6JD.mjs.map +7 -0
  4. package/dist/lib/browser/{chunk-DLSDEQ2V.mjs → chunk-CHMPICA6.mjs} +13 -6
  5. package/dist/lib/browser/chunk-CHMPICA6.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-4UDNLWW7.mjs → chunk-ZOKEQL2K.mjs} +2 -2
  7. package/dist/lib/browser/{chunk-4UDNLWW7.mjs.map → chunk-ZOKEQL2K.mjs.map} +2 -2
  8. package/dist/lib/browser/{compute-graph-registry-FW7GRR5X.mjs → compute-graph-registry-WEJLJJ6T.mjs} +5 -2
  9. package/dist/lib/browser/compute-graph-registry-WEJLJJ6T.mjs.map +7 -0
  10. package/dist/lib/browser/index.mjs +6 -6
  11. package/dist/lib/browser/{intent-resolver-ZLZZSOJB.mjs → intent-resolver-6OUEM3IG.mjs} +2 -2
  12. package/dist/lib/browser/{markdown-D6MQR2SL.mjs → markdown-DR4RDEEY.mjs} +2 -2
  13. package/dist/lib/browser/meta.json +1 -1
  14. package/dist/lib/browser/{react-surface-WBHKNFTW.mjs → react-surface-ECKBP3UZ.mjs} +6 -6
  15. package/dist/lib/browser/{react-surface-WBHKNFTW.mjs.map → react-surface-ECKBP3UZ.mjs.map} +1 -1
  16. package/dist/lib/browser/{thread-DWC3EEZF.mjs → thread-76MK2FMV.mjs} +2 -2
  17. package/dist/lib/browser/types/index.mjs +1 -1
  18. package/dist/lib/node/{SheetContainer-WGATRGMV.cjs → SheetContainer-LGRD3TTQ.cjs} +32 -32
  19. package/dist/lib/node/{chunk-BNTA7BX7.cjs → chunk-AEH3L5QZ.cjs} +27 -20
  20. package/dist/lib/node/chunk-AEH3L5QZ.cjs.map +7 -0
  21. package/dist/lib/node/{chunk-TRMVOTUW.cjs → chunk-D4MOMCEU.cjs} +5 -5
  22. package/dist/lib/node/{chunk-TRMVOTUW.cjs.map → chunk-D4MOMCEU.cjs.map} +2 -2
  23. package/dist/lib/node/{chunk-SQZEJPZ7.cjs → chunk-LEV7OSTK.cjs} +4 -4
  24. package/dist/lib/node/chunk-LEV7OSTK.cjs.map +7 -0
  25. package/dist/lib/node/{compute-graph-registry-GRIJY7HC.cjs → compute-graph-registry-VVSRJUGS.cjs} +8 -5
  26. package/dist/lib/node/compute-graph-registry-VVSRJUGS.cjs.map +7 -0
  27. package/dist/lib/node/index.cjs +12 -12
  28. package/dist/lib/node/{intent-resolver-FNEVXUYN.cjs → intent-resolver-ICHNDL6F.cjs} +9 -9
  29. package/dist/lib/node/{markdown-2JV7CLN4.cjs → markdown-E7OUIMZO.cjs} +6 -6
  30. package/dist/lib/node/meta.json +1 -1
  31. package/dist/lib/node/{react-surface-S67AU3L7.cjs → react-surface-6PBWE75L.cjs} +14 -14
  32. package/dist/lib/node/{react-surface-S67AU3L7.cjs.map → react-surface-6PBWE75L.cjs.map} +1 -1
  33. package/dist/lib/node/{thread-BRLYEK44.cjs → thread-WP43BC4N.cjs} +7 -7
  34. package/dist/lib/node/types/index.cjs +29 -29
  35. package/dist/lib/node/types/index.cjs.map +1 -1
  36. package/dist/lib/node-esm/{SheetContainer-MGLGBHZU.mjs → SheetContainer-4FNTLG5R.mjs} +4 -4
  37. package/dist/lib/node-esm/{chunk-ZSOBPK4C.mjs → chunk-6NB67Y6X.mjs} +2 -2
  38. package/dist/lib/node-esm/{chunk-ZSOBPK4C.mjs.map → chunk-6NB67Y6X.mjs.map} +2 -2
  39. package/dist/lib/node-esm/{chunk-7TL2H7LA.mjs → chunk-HXBUY5ET.mjs} +1 -1
  40. package/dist/lib/node-esm/chunk-HXBUY5ET.mjs.map +7 -0
  41. package/dist/lib/node-esm/{chunk-AXJBBZWW.mjs → chunk-WQHYR4WD.mjs} +13 -6
  42. package/dist/lib/node-esm/chunk-WQHYR4WD.mjs.map +7 -0
  43. package/dist/lib/node-esm/{compute-graph-registry-7QPVVG3V.mjs → compute-graph-registry-PBQ52KH6.mjs} +5 -2
  44. package/dist/lib/node-esm/compute-graph-registry-PBQ52KH6.mjs.map +7 -0
  45. package/dist/lib/node-esm/index.mjs +6 -6
  46. package/dist/lib/node-esm/{intent-resolver-YGXHQQWI.mjs → intent-resolver-2JNQCFCI.mjs} +2 -2
  47. package/dist/lib/node-esm/{markdown-JOT6YWLG.mjs → markdown-BPKS2TNG.mjs} +2 -2
  48. package/dist/lib/node-esm/meta.json +1 -1
  49. package/dist/lib/node-esm/{react-surface-FXMZK7ZZ.mjs → react-surface-UM2Y3ZWZ.mjs} +6 -6
  50. package/dist/lib/node-esm/{react-surface-FXMZK7ZZ.mjs.map → react-surface-UM2Y3ZWZ.mjs.map} +1 -1
  51. package/dist/lib/node-esm/{thread-3XAKFPK5.mjs → thread-4NCPE5FK.mjs} +2 -2
  52. package/dist/lib/node-esm/types/index.mjs +1 -1
  53. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
  54. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  55. package/dist/types/src/types/schema.d.ts +2 -0
  56. package/dist/types/src/types/schema.d.ts.map +1 -1
  57. package/package.json +47 -45
  58. package/src/capabilities/compute-graph-registry.ts +5 -2
  59. package/src/capabilities/react-surface.tsx +2 -2
  60. package/src/extensions/compute.ts +2 -2
  61. package/src/integrations/thread-ranges.ts +9 -1
  62. package/src/model/sheet-model.ts +1 -1
  63. package/dist/lib/browser/chunk-DLSDEQ2V.mjs.map +0 -7
  64. package/dist/lib/browser/chunk-DN6QF7VV.mjs.map +0 -7
  65. package/dist/lib/browser/compute-graph-registry-FW7GRR5X.mjs.map +0 -7
  66. package/dist/lib/node/chunk-BNTA7BX7.cjs.map +0 -7
  67. package/dist/lib/node/chunk-SQZEJPZ7.cjs.map +0 -7
  68. package/dist/lib/node/compute-graph-registry-GRIJY7HC.cjs.map +0 -7
  69. package/dist/lib/node-esm/chunk-7TL2H7LA.mjs.map +0 -7
  70. package/dist/lib/node-esm/chunk-AXJBBZWW.mjs.map +0 -7
  71. package/dist/lib/node-esm/compute-graph-registry-7QPVVG3V.mjs.map +0 -7
  72. /package/dist/lib/browser/{SheetContainer-45IMNPCA.mjs.map → SheetContainer-B3A5443Z.mjs.map} +0 -0
  73. /package/dist/lib/browser/{intent-resolver-ZLZZSOJB.mjs.map → intent-resolver-6OUEM3IG.mjs.map} +0 -0
  74. /package/dist/lib/browser/{markdown-D6MQR2SL.mjs.map → markdown-DR4RDEEY.mjs.map} +0 -0
  75. /package/dist/lib/browser/{thread-DWC3EEZF.mjs.map → thread-76MK2FMV.mjs.map} +0 -0
  76. /package/dist/lib/node/{SheetContainer-WGATRGMV.cjs.map → SheetContainer-LGRD3TTQ.cjs.map} +0 -0
  77. /package/dist/lib/node/{intent-resolver-FNEVXUYN.cjs.map → intent-resolver-ICHNDL6F.cjs.map} +0 -0
  78. /package/dist/lib/node/{markdown-2JV7CLN4.cjs.map → markdown-E7OUIMZO.cjs.map} +0 -0
  79. /package/dist/lib/node/{thread-BRLYEK44.cjs.map → thread-WP43BC4N.cjs.map} +0 -0
  80. /package/dist/lib/node-esm/{SheetContainer-MGLGBHZU.mjs.map → SheetContainer-4FNTLG5R.mjs.map} +0 -0
  81. /package/dist/lib/node-esm/{intent-resolver-YGXHQQWI.mjs.map → intent-resolver-2JNQCFCI.mjs.map} +0 -0
  82. /package/dist/lib/node-esm/{markdown-JOT6YWLG.mjs.map → markdown-BPKS2TNG.mjs.map} +0 -0
  83. /package/dist/lib/node-esm/{thread-3XAKFPK5.mjs.map → thread-4NCPE5FK.mjs.map} +0 -0
@@ -26,14 +26,14 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var SheetContainer_WGATRGMV_exports = {};
30
- __export(SheetContainer_WGATRGMV_exports, {
29
+ var SheetContainer_LGRD3TTQ_exports = {};
30
+ __export(SheetContainer_LGRD3TTQ_exports, {
31
31
  default: () => SheetContainer_default
32
32
  });
33
- module.exports = __toCommonJS(SheetContainer_WGATRGMV_exports);
34
- var import_chunk_BNTA7BX7 = require("./chunk-BNTA7BX7.cjs");
35
- var import_chunk_SQZEJPZ7 = require("./chunk-SQZEJPZ7.cjs");
36
- var import_chunk_TRMVOTUW = require("./chunk-TRMVOTUW.cjs");
33
+ module.exports = __toCommonJS(SheetContainer_LGRD3TTQ_exports);
34
+ var import_chunk_AEH3L5QZ = require("./chunk-AEH3L5QZ.cjs");
35
+ var import_chunk_LEV7OSTK = require("./chunk-LEV7OSTK.cjs");
36
+ var import_chunk_D4MOMCEU = require("./chunk-D4MOMCEU.cjs");
37
37
  var import_chunk_JSIDCZHB = require("./chunk-JSIDCZHB.cjs");
38
38
  var import_react = __toESM(require("react"));
39
39
  var import_echo = require("@dxos/react-client/echo");
@@ -59,13 +59,13 @@ var import_types = require("@dxos/plugin-thread/types");
59
59
  var import_react8 = require("react");
60
60
  var import_live_object2 = require("@dxos/live-object");
61
61
  var FunctionEditor = () => {
62
- const { model, cursor, range } = (0, import_chunk_BNTA7BX7.useSheetContext)();
62
+ const { model, cursor, range } = (0, import_chunk_AEH3L5QZ.useSheetContext)();
63
63
  let value;
64
64
  let formula = false;
65
65
  if (cursor) {
66
66
  value = model.getCellValue(cursor);
67
67
  if ((0, import_compute.isFormula)(value)) {
68
- value = model.graph.mapFunctionBindingFromId((0, import_chunk_TRMVOTUW.mapFormulaIndicesToRefs)(model.sheet, value));
68
+ value = model.graph.mapFunctionBindingFromId((0, import_chunk_D4MOMCEU.mapFormulaIndicesToRefs)(model.sheet, value));
69
69
  formula = true;
70
70
  } else if (value != null) {
71
71
  value = String(value);
@@ -95,9 +95,9 @@ var aligns = {
95
95
  end: "ph--text-align-right--regular"
96
96
  };
97
97
  var useAlignState = (state) => {
98
- const { cursor, model } = (0, import_chunk_BNTA7BX7.useSheetContext)();
98
+ const { cursor, model } = (0, import_chunk_AEH3L5QZ.useSheetContext)();
99
99
  (0, import_react4.useEffect)(() => {
100
- state[import_chunk_TRMVOTUW.alignKey] = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === import_chunk_TRMVOTUW.alignKey && (0, import_compute2.inRange)((0, import_chunk_TRMVOTUW.rangeFromIndex)(model.sheet, range), cursor))?.value : void 0;
100
+ state[import_chunk_D4MOMCEU.alignKey] = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === import_chunk_D4MOMCEU.alignKey && (0, import_compute2.inRange)((0, import_chunk_D4MOMCEU.rangeFromIndex)(model.sheet, range), cursor))?.value : void 0;
101
101
  }, [
102
102
  cursor,
103
103
  model.sheet
@@ -112,11 +112,11 @@ var createAlignGroupAction = (value) => (0, import_react_ui_menu2.createMenuItem
112
112
  ],
113
113
  variant: "toggleGroup",
114
114
  selectCardinality: "single",
115
- value: `${import_chunk_TRMVOTUW.alignKey}--${value}`
115
+ value: `${import_chunk_D4MOMCEU.alignKey}--${value}`
116
116
  });
117
117
  var createAlignActions = (value) => Object.entries(aligns).map(([alignValue, icon]) => {
118
- return (0, import_react_ui_menu2.createMenuAction)(`${import_chunk_TRMVOTUW.alignKey}--${alignValue}`, {
119
- key: import_chunk_TRMVOTUW.alignKey,
118
+ return (0, import_react_ui_menu2.createMenuAction)(`${import_chunk_D4MOMCEU.alignKey}--${alignValue}`, {
119
+ key: import_chunk_D4MOMCEU.alignKey,
120
120
  value: alignValue,
121
121
  checked: value === alignValue,
122
122
  label: [
@@ -126,10 +126,10 @@ var createAlignActions = (value) => Object.entries(aligns).map(([alignValue, ico
126
126
  }
127
127
  ],
128
128
  icon,
129
- testId: `grid.toolbar.${import_chunk_TRMVOTUW.alignKey}.${alignValue}`
129
+ testId: `grid.toolbar.${import_chunk_D4MOMCEU.alignKey}.${alignValue}`
130
130
  });
131
131
  });
132
- var createAlign = ({ [import_chunk_TRMVOTUW.alignKey]: alignValue }) => {
132
+ var createAlign = ({ [import_chunk_D4MOMCEU.alignKey]: alignValue }) => {
133
133
  const alignGroup = createAlignGroupAction(alignValue);
134
134
  const alignActions = createAlignActions(alignValue);
135
135
  return {
@@ -150,12 +150,12 @@ var createAlign = ({ [import_chunk_TRMVOTUW.alignKey]: alignValue }) => {
150
150
  };
151
151
  };
152
152
  var useCommentState = (state) => {
153
- const { cursorFallbackRange, model } = (0, import_chunk_BNTA7BX7.useSheetContext)();
153
+ const { cursorFallbackRange, model } = (0, import_chunk_AEH3L5QZ.useSheetContext)();
154
154
  const overlapsCommentAnchor = (0, import_react5.useMemo)(() => import_live_object.RefArray.targets(model.sheet.threads ?? []).filter((thread) => thread.status !== "resolved").some((thread) => {
155
155
  if (!cursorFallbackRange) {
156
156
  return false;
157
157
  }
158
- return (0, import_chunk_TRMVOTUW.rangeToIndex)(model.sheet, cursorFallbackRange) === thread.anchor;
158
+ return (0, import_chunk_D4MOMCEU.rangeToIndex)(model.sheet, cursorFallbackRange) === thread.anchor;
159
159
  }), [
160
160
  cursorFallbackRange,
161
161
  model.sheet
@@ -168,7 +168,7 @@ var useCommentState = (state) => {
168
168
  ]);
169
169
  };
170
170
  var createCommentAction = (state) => (0, import_react_ui_menu3.createMenuAction)("comment", {
171
- key: import_chunk_TRMVOTUW.commentKey,
171
+ key: import_chunk_D4MOMCEU.commentKey,
172
172
  testId: "editor.toolbar.comment",
173
173
  icon: "ph--chat-text--regular",
174
174
  label: [
@@ -195,12 +195,12 @@ var styles = {
195
195
  softwrap: "ph--paragraph--regular"
196
196
  };
197
197
  var useStyleState = (state) => {
198
- const { cursorFallbackRange, model } = (0, import_chunk_BNTA7BX7.useSheetContext)();
198
+ const { cursorFallbackRange, model } = (0, import_chunk_AEH3L5QZ.useSheetContext)();
199
199
  (0, import_react6.useEffect)(() => {
200
200
  state.highlight = false;
201
201
  state.softwrap = false;
202
202
  if (cursorFallbackRange && model.sheet.ranges) {
203
- model.sheet.ranges.filter(({ range, key }) => key === "style" && (0, import_compute3.inRange)((0, import_chunk_TRMVOTUW.rangeFromIndex)(model.sheet, range), cursorFallbackRange.from)).forEach(({ value }) => {
203
+ model.sheet.ranges.filter(({ range, key }) => key === "style" && (0, import_compute3.inRange)((0, import_chunk_D4MOMCEU.rangeFromIndex)(model.sheet, range), cursorFallbackRange.from)).forEach(({ value }) => {
204
204
  state[value] = true;
205
205
  });
206
206
  }
@@ -251,14 +251,14 @@ var createStyle = (state) => {
251
251
  };
252
252
  };
253
253
  var useToolbarAction = (state) => {
254
- const { model, cursorFallbackRange, cursor } = (0, import_chunk_BNTA7BX7.useSheetContext)();
254
+ const { model, cursorFallbackRange, cursor } = (0, import_chunk_AEH3L5QZ.useSheetContext)();
255
255
  const { dispatchPromise: dispatch } = (0, import_app_framework.useIntentDispatcher)();
256
256
  return (0, import_react7.useCallback)((action) => {
257
257
  const { key, value } = action.properties;
258
258
  if (cursorFallbackRange) {
259
- const index = model.sheet.ranges?.findIndex((range) => range.key === key && (0, import_compute4.inRange)((0, import_chunk_TRMVOTUW.rangeFromIndex)(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
259
+ const index = model.sheet.ranges?.findIndex((range) => range.key === key && (0, import_compute4.inRange)((0, import_chunk_D4MOMCEU.rangeFromIndex)(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
260
260
  const nextRangeEntity = {
261
- range: (0, import_chunk_TRMVOTUW.rangeToIndex)(model.sheet, cursorFallbackRange),
261
+ range: (0, import_chunk_D4MOMCEU.rangeToIndex)(model.sheet, cursorFallbackRange),
262
262
  key,
263
263
  value
264
264
  };
@@ -266,17 +266,17 @@ var useToolbarAction = (state) => {
266
266
  case "alignment":
267
267
  if (index < 0) {
268
268
  model.sheet.ranges?.push(nextRangeEntity);
269
- state[import_chunk_TRMVOTUW.alignKey] = value;
269
+ state[import_chunk_D4MOMCEU.alignKey] = value;
270
270
  } else if (model.sheet.ranges[index].value === value) {
271
271
  model.sheet.ranges?.splice(index, 1);
272
- state[import_chunk_TRMVOTUW.alignKey] = void 0;
272
+ state[import_chunk_D4MOMCEU.alignKey] = void 0;
273
273
  } else {
274
274
  model.sheet.ranges?.splice(index, 1, nextRangeEntity);
275
- state[import_chunk_TRMVOTUW.alignKey] = value;
275
+ state[import_chunk_D4MOMCEU.alignKey] = value;
276
276
  }
277
277
  break;
278
278
  case "style":
279
- if (model.sheet.ranges.filter(({ range, key: rangeKey }) => rangeKey === "style" && (0, import_compute4.inRange)((0, import_chunk_TRMVOTUW.rangeFromIndex)(model.sheet, range), cursorFallbackRange.from)).some(({ value: rangeValue }) => rangeValue === value)) {
279
+ if (model.sheet.ranges.filter(({ range, key: rangeKey }) => rangeKey === "style" && (0, import_compute4.inRange)((0, import_chunk_D4MOMCEU.rangeFromIndex)(model.sheet, range), cursorFallbackRange.from)).some(({ value: rangeValue }) => rangeValue === value)) {
280
280
  if (index >= 0) {
281
281
  model.sheet.ranges?.splice(index, 1);
282
282
  }
@@ -289,7 +289,7 @@ var useToolbarAction = (state) => {
289
289
  case "comment": {
290
290
  const cellContent = model.getCellText(cursorFallbackRange.from);
291
291
  void dispatch((0, import_app_framework.createIntent)(import_types.ThreadAction.Create, {
292
- cursor: (0, import_chunk_BNTA7BX7.completeCellRangeToThreadCursor)(cursorFallbackRange),
292
+ cursor: (0, import_chunk_AEH3L5QZ.completeCellRangeToThreadCursor)(cursorFallbackRange),
293
293
  name: cellContent,
294
294
  subject: model.sheet
295
295
  }));
@@ -345,8 +345,8 @@ var SheetToolbar = ({ attendableId, classNames }) => {
345
345
  }));
346
346
  };
347
347
  var SheetContainer = ({ space, sheet, role, ignoreAttention }) => {
348
- const graph = (0, import_chunk_BNTA7BX7.useComputeGraph)(space);
349
- return graph ? /* @__PURE__ */ import_react.default.createElement(import_chunk_BNTA7BX7.SheetProvider, {
348
+ const graph = (0, import_chunk_AEH3L5QZ.useComputeGraph)(space);
349
+ return graph ? /* @__PURE__ */ import_react.default.createElement(import_chunk_AEH3L5QZ.SheetProvider, {
350
350
  sheet,
351
351
  graph,
352
352
  ignoreAttention
@@ -358,7 +358,7 @@ var SheetContainer = ({ space, sheet, role, ignoreAttention }) => {
358
358
  }
359
359
  }, /* @__PURE__ */ import_react.default.createElement(SheetToolbar, {
360
360
  attendableId: (0, import_echo.fullyQualifiedId)(sheet)
361
- }), /* @__PURE__ */ import_react.default.createElement(import_chunk_BNTA7BX7.GridSheet, null), /* @__PURE__ */ import_react.default.createElement(FunctionEditor, null))) : null;
361
+ }), /* @__PURE__ */ import_react.default.createElement(import_chunk_AEH3L5QZ.GridSheet, null), /* @__PURE__ */ import_react.default.createElement(FunctionEditor, null))) : null;
362
362
  };
363
363
  var SheetContainer_default = SheetContainer;
364
- //# sourceMappingURL=SheetContainer-WGATRGMV.cjs.map
364
+ //# sourceMappingURL=SheetContainer-LGRD3TTQ.cjs.map
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_BNTA7BX7_exports = {};
30
- __export(chunk_BNTA7BX7_exports, {
29
+ var chunk_AEH3L5QZ_exports = {};
30
+ __export(chunk_AEH3L5QZ_exports, {
31
31
  ComputeGraphContextProvider: () => ComputeGraphContextProvider,
32
32
  GridSheet: () => GridSheet,
33
33
  RangeList: () => RangeList,
@@ -37,9 +37,9 @@ __export(chunk_BNTA7BX7_exports, {
37
37
  useComputeGraph: () => useComputeGraph,
38
38
  useSheetContext: () => useSheetContext
39
39
  });
40
- module.exports = __toCommonJS(chunk_BNTA7BX7_exports);
41
- var import_chunk_SQZEJPZ7 = require("./chunk-SQZEJPZ7.cjs");
42
- var import_chunk_TRMVOTUW = require("./chunk-TRMVOTUW.cjs");
40
+ module.exports = __toCommonJS(chunk_AEH3L5QZ_exports);
41
+ var import_chunk_LEV7OSTK = require("./chunk-LEV7OSTK.cjs");
42
+ var import_chunk_D4MOMCEU = require("./chunk-D4MOMCEU.cjs");
43
43
  var import_chunk_JSIDCZHB = require("./chunk-JSIDCZHB.cjs");
44
44
  var import_react = __toESM(require("react"));
45
45
  var import_debug = require("@dxos/debug");
@@ -63,12 +63,14 @@ var import_echo = require("@dxos/react-client/echo");
63
63
  var import_react_ui_form = require("@dxos/react-ui-form");
64
64
  var import_react_ui_grid2 = require("@dxos/react-ui-grid");
65
65
  var import_react_ui_theme2 = require("@dxos/react-ui-theme");
66
+ var import_effect = require("effect");
66
67
  var import_react6 = require("react");
67
68
  var import_app_framework2 = require("@dxos/app-framework");
68
69
  var import_async = require("@dxos/async");
69
70
  var import_compute4 = require("@dxos/compute");
70
71
  var import_echo_schema2 = require("@dxos/echo-schema");
71
- var import_types = require("@dxos/plugin-thread/types");
72
+ var import_types = require("@dxos/plugin-deck/types");
73
+ var import_types2 = require("@dxos/plugin-thread/types");
72
74
  var import_echo2 = require("@dxos/react-client/echo");
73
75
  var import_react7 = __toESM(require("react"));
74
76
  var import_invariant = require("@dxos/invariant");
@@ -110,7 +112,7 @@ var RangeList = ({ sheet }) => {
110
112
  className: "p-2 text-sm font-semibold"
111
113
  }, t("range list heading")), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.Root, {
112
114
  items: sheet.ranges,
113
- isItem: import_echo_schema.S.is(import_chunk_TRMVOTUW.Range)
115
+ isItem: import_echo_schema.S.is(import_chunk_D4MOMCEU.Range)
114
116
  }, ({ items: ranges }) => ranges.map((range, i) => /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.Item, {
115
117
  key: i,
116
118
  item: range,
@@ -121,7 +123,7 @@ var RangeList = ({ sheet }) => {
121
123
  }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.ItemDragHandle, null), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.ItemTitle, {
122
124
  onClick: () => handleSelectRange(range)
123
125
  }, t("range title", {
124
- position: (0, import_compute.rangeToA1Notation)((0, import_chunk_TRMVOTUW.rangeFromIndex)(sheet, range.range)),
126
+ position: (0, import_compute.rangeToA1Notation)((0, import_chunk_D4MOMCEU.rangeFromIndex)(sheet, range.range)),
125
127
  key: t(`range key ${range.key} label`),
126
128
  value: t(`range value ${range.value} label`)
127
129
  })), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.ItemDeleteButton, {
@@ -194,9 +196,14 @@ var useSelectThreadOnCellFocus = () => {
194
196
  }
195
197
  });
196
198
  if (closestThread) {
197
- void dispatch((0, import_app_framework2.createIntent)(import_types.ThreadAction.Select, {
199
+ const primary = (0, import_echo2.fullyQualifiedId)(model.sheet);
200
+ const intent = (0, import_effect.pipe)((0, import_app_framework2.createIntent)(import_types2.ThreadAction.Select, {
198
201
  current: (0, import_echo2.fullyQualifiedId)(closestThread)
202
+ }), (0, import_app_framework2.chain)(import_types.DeckAction.ChangeCompanion, {
203
+ primary,
204
+ companion: `${primary}${import_types.ATTENDABLE_PATH_SEPARATOR}comments`
199
205
  }));
206
+ void dispatch(intent);
200
207
  }
201
208
  }, [
202
209
  dispatch,
@@ -249,7 +256,7 @@ var projectCellProps = (model, col, row) => {
249
256
  row
250
257
  };
251
258
  const rawValue = model.getValue(address);
252
- const ranges = model.sheet.ranges?.filter(({ range }) => (0, import_compute3.inRange)((0, import_chunk_TRMVOTUW.rangeFromIndex)(model.sheet, range), address));
259
+ const ranges = model.sheet.ranges?.filter(({ range }) => (0, import_compute3.inRange)((0, import_chunk_D4MOMCEU.rangeFromIndex)(model.sheet, range), address));
253
260
  const threadRefs = model.sheet.threads?.filter((thread) => {
254
261
  const range = thread.target?.anchor && parseThreadAnchorAsCellRange(thread.target.anchor);
255
262
  return thread && range ? (0, import_compute3.inRange)(range, address) : false;
@@ -257,7 +264,7 @@ var projectCellProps = (model, col, row) => {
257
264
  const description = model.getValueDescription(address);
258
265
  const type = description?.type;
259
266
  const format = description?.format;
260
- const classNames = ranges?.map(import_chunk_TRMVOTUW.cellClassNameForRange).reverse();
267
+ const classNames = ranges?.map(import_chunk_D4MOMCEU.cellClassNameForRange).reverse();
261
268
  return {
262
269
  value: (0, import_react_ui_form.parseValue)({
263
270
  type,
@@ -435,7 +442,7 @@ var SheetProviderImpl = ({ model, onInfo, ignoreAttention, children, __gridScope
435
442
  }, children);
436
443
  };
437
444
  var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo }) => {
438
- const model = (0, import_chunk_TRMVOTUW.useSheetModel)(graph, sheet, {
445
+ const model = (0, import_chunk_D4MOMCEU.useSheetModel)(graph, sheet, {
439
446
  readonly
440
447
  });
441
448
  return !model ? null : /* @__PURE__ */ import_react7.default.createElement(import_react_ui_grid3.Grid.Root, {
@@ -694,13 +701,13 @@ var GridSheet = () => {
694
701
  switch (operation) {
695
702
  case "insert-before":
696
703
  case "insert-after":
697
- return dispatch((0, import_app_framework.createIntent)(import_chunk_TRMVOTUW.SheetAction.InsertAxis, {
704
+ return dispatch((0, import_app_framework.createIntent)(import_chunk_D4MOMCEU.SheetAction.InsertAxis, {
698
705
  model,
699
706
  axis: contextMenuAxis,
700
707
  index: contextMenuOpen[contextMenuAxis] + (operation === "insert-before" ? 0 : 1)
701
708
  }));
702
709
  case "drop":
703
- return dispatch((0, import_app_framework.createIntent)(import_chunk_TRMVOTUW.SheetAction.DropAxis, {
710
+ return dispatch((0, import_app_framework.createIntent)(import_chunk_D4MOMCEU.SheetAction.DropAxis, {
704
711
  model,
705
712
  axis: contextMenuAxis,
706
713
  axisIndex: model.sheet[contextMenuAxis === "row" ? "rows" : "columns"][contextMenuOpen[contextMenuAxis]]
@@ -720,10 +727,10 @@ var GridSheet = () => {
720
727
  onNav: handleClose
721
728
  }
722
729
  }),
723
- (0, import_chunk_SQZEJPZ7.sheetExtension)({
730
+ (0, import_chunk_LEV7OSTK.sheetExtension)({
724
731
  functions: model.graph.getFunctions()
725
732
  }),
726
- (0, import_chunk_SQZEJPZ7.rangeExtension)({
733
+ (0, import_chunk_LEV7OSTK.rangeExtension)({
727
734
  onInit: (fn) => rangeController.current = fn,
728
735
  onStateChange: (state) => {
729
736
  if (dxGrid) {
@@ -752,8 +759,8 @@ var GridSheet = () => {
752
759
  onBlur: handleBlur
753
760
  }), /* @__PURE__ */ import_react4.default.createElement(import_react_ui_grid.Grid.Content, {
754
761
  initialCells,
755
- limitColumns: import_chunk_TRMVOTUW.DEFAULT_COLS,
756
- limitRows: import_chunk_TRMVOTUW.DEFAULT_ROWS,
762
+ limitColumns: import_chunk_D4MOMCEU.DEFAULT_COLS,
763
+ limitRows: import_chunk_D4MOMCEU.DEFAULT_ROWS,
757
764
  columns,
758
765
  rows,
759
766
  onAxisResize: handleAxisResize,
@@ -800,7 +807,7 @@ var GridSheet = () => {
800
807
  icon: "ph--backspace--regular"
801
808
  }), /* @__PURE__ */ import_react4.default.createElement("span", null, t(`delete ${contextMenuAxis} label`)))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Arrow, null))));
802
809
  };
803
- var SheetContainer = (0, import_react3.lazy)(() => import("./SheetContainer-WGATRGMV.cjs"));
810
+ var SheetContainer = (0, import_react3.lazy)(() => import("./SheetContainer-LGRD3TTQ.cjs"));
804
811
  // Annotate the CommonJS export names for ESM import in node:
805
812
  0 && (module.exports = {
806
813
  ComputeGraphContextProvider,
@@ -812,4 +819,4 @@ var SheetContainer = (0, import_react3.lazy)(() => import("./SheetContainer-WGAT
812
819
  useComputeGraph,
813
820
  useSheetContext
814
821
  });
815
- //# sourceMappingURL=chunk-BNTA7BX7.cjs.map
822
+ //# sourceMappingURL=chunk-AEH3L5QZ.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ComputeGraph/ComputeGraphContextProvider.tsx", "../../../src/components/RangeList/RangeList.tsx", "../../../src/components/index.ts", "../../../src/components/GridSheet/GridSheet.tsx", "../../../src/components/GridSheet/util.ts", "../../../src/integrations/thread-ranges.ts", "../../../src/components/SheetContext/SheetContext.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { createContext, type PropsWithChildren, useContext } from 'react';\n\nimport { type ComputeGraph, type ComputeGraphRegistry } from '@dxos/compute';\nimport { raise } from '@dxos/debug';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncState } from '@dxos/react-hooks';\n\nexport type ComputeGraphContextType = {\n registry: ComputeGraphRegistry;\n};\n\n/**\n * The compute graph context manages a ComputeGraph for each space.\n */\nexport const ComputeGraphContext = createContext<ComputeGraphContextType | undefined>(undefined);\n\nexport const ComputeGraphContextProvider = ({ registry, children }: PropsWithChildren<ComputeGraphContextType>) => {\n return <ComputeGraphContext.Provider value={{ registry }}>{children}</ComputeGraphContext.Provider>;\n};\n\nexport const useComputeGraph = (space?: Space): ComputeGraph | undefined => {\n const { registry } = useContext(ComputeGraphContext) ?? raise(new Error('Missing ComputeGraphContext'));\n const [graph] = useAsyncState(async () => {\n if (space) {\n const graph = registry.getOrCreateGraph(space);\n await graph.open();\n return graph;\n }\n }, [space, registry]);\n\n return graph;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { rangeToA1Notation } from '@dxos/compute';\nimport { S } from '@dxos/echo-schema';\nimport { useTranslation } from '@dxos/react-ui';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover } from '@dxos/react-ui-theme';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { rangeFromIndex } from '../../types';\nimport { Range, type SheetType } from '../../types';\n\nexport type RangeListProps = {\n sheet: SheetType;\n};\n\nexport const RangeList = ({ sheet }: RangeListProps) => {\n const { t } = useTranslation(SHEET_PLUGIN);\n // TODO(thure): Implement similar to comments, #8121\n const handleSelectRange = (range: Range) => {};\n const handleDeleteRange = useCallback(\n (range: Range) => {\n const index = sheet.ranges.findIndex((sheetRange) => sheetRange === range);\n sheet.ranges.splice(index, 1);\n },\n [sheet],\n );\n return (\n <>\n <h2 className='p-2 text-sm font-semibold'>{t('range list heading')}</h2>\n <List.Root<Range> items={sheet.ranges} isItem={S.is(Range)}>\n {({ items: ranges }) =>\n ranges.map((range, i) => (\n <List.Item key={i} item={range} classNames={['p-2', ghostHover]}>\n <List.ItemDragHandle />\n <List.ItemTitle onClick={() => handleSelectRange(range)}>\n {t('range title', {\n position: rangeToA1Notation(rangeFromIndex(sheet, range.range)),\n key: t(`range key ${range.key} label`),\n value: t(`range value ${range.value} label`),\n })}\n </List.ItemTitle>\n <List.ItemDeleteButton onClick={() => handleDeleteRange(range)} />\n </List.Item>\n ))\n }\n </List.Root>\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './ComputeGraph';\nexport * from './GridSheet';\nexport * from './RangeList';\nexport * from './SheetContext';\n\nexport const SheetContainer = lazy(() => import('./SheetContainer'));\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, {\n useCallback,\n useMemo,\n useRef,\n type FocusEvent,\n type KeyboardEvent,\n type WheelEvent,\n type MouseEvent,\n useState,\n} from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { rangeToA1Notation, type CellRange } from '@dxos/compute';\nimport { DropdownMenu, Icon, useTranslation } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport {\n closestCell,\n defaultSizeRow,\n editorKeys,\n Grid,\n GridCellEditor,\n type DxGridElement,\n type DxGridPosition,\n type DxGridCellIndex,\n type EditorKeyHandler,\n type EditorBlurHandler,\n type GridContentProps,\n parseCellIndex,\n} from '@dxos/react-ui-grid';\n\nimport { colLabelCell, rowLabelCell, useSheetModelDxGridProps } from './util';\nimport { rangeExtension, sheetExtension, type RangeController } from '../../extensions';\nimport { useSelectThreadOnCellFocus, useUpdateFocusedCellOnThreadSelection } from '../../integrations';\nimport { SHEET_PLUGIN } from '../../meta';\nimport { DEFAULT_COLS, DEFAULT_ROWS, SheetAction } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nconst inertPosition: DxGridPosition = { plane: 'grid', col: 0, row: 0 };\n\nconst initialCells = {\n grid: {},\n frozenColsStart: [...Array(64)].reduce((acc, _, i) => {\n acc[`0,${i}`] = rowLabelCell(i);\n return acc;\n }, {}),\n frozenRowsStart: [...Array(12)].reduce((acc, _, i) => {\n acc[`${i},0`] = colLabelCell(i);\n return acc;\n }, {}),\n};\n\nconst frozen = {\n frozenColsStart: 1,\n frozenRowsStart: 1,\n};\n\nconst sheetRowDefault = {\n frozenRowsStart: { size: defaultSizeRow, readonly: true },\n grid: { size: defaultSizeRow, resizeable: true },\n};\nconst sheetColDefault = { frozenColsStart: { size: 48, readonly: true }, grid: { size: 180, resizeable: true } };\n\nexport const GridSheet = () => {\n const { t } = useTranslation(SHEET_PLUGIN);\n const { id, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, ignoreAttention } =\n useSheetContext();\n // NOTE(thure): using `useState` instead of `useRef` works with refs provided by `@lit/react` and gives us\n // a reliable dependency for `useEffect` whereas `useLayoutEffect` does not guarantee the element will be defined.\n const [dxGrid, setDxGrid] = useState<DxGridElement | null>(null);\n const [extraplanarFocus, setExtraplanarFocus] = useState<DxGridPosition | null>(null);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const rangeController = useRef<RangeController>();\n const { hasAttention } = useAttention(id);\n\n const handleFocus = useCallback(\n (event: FocusEvent) => {\n if (!editing) {\n const cell = closestCell(event.target);\n if (cell) {\n if (cell.plane === 'grid') {\n setCursor({ col: cell.col, row: cell.row });\n setExtraplanarFocus(null);\n } else {\n setExtraplanarFocus(cell);\n }\n } else {\n setExtraplanarFocus(null);\n }\n }\n },\n [editing],\n );\n\n // TODO(burdon): Validate formula before closing: hf.validateFormula();\n const handleClose = useCallback<EditorKeyHandler>(\n (_value, event) => {\n if (event) {\n const { key, shift } = event;\n const axis = ['Enter', 'ArrowUp', 'ArrowDown'].includes(key)\n ? 'row'\n : ['Tab', 'ArrowLeft', 'ArrowRight'].includes(key)\n ? 'col'\n : undefined;\n const delta = key.startsWith('Arrow') ? (['ArrowUp', 'ArrowLeft'].includes(key) ? -1 : 1) : shift ? -1 : 1;\n dxGrid?.refocus(axis, delta);\n }\n },\n [model, editing, dxGrid],\n );\n\n const handleBlur = useCallback<EditorBlurHandler>(\n (value) => {\n if (value !== undefined) {\n model.setValue(parseCellIndex(editing!.index), value);\n }\n },\n [model, editing],\n );\n\n const handleAxisResize = useCallback<NonNullable<GridContentProps['onAxisResize']>>(\n ({ axis, size, index: numericIndex }) => {\n if (axis === 'row') {\n const rowId = model.sheet.rows[parseInt(numericIndex)];\n model.sheet.rowMeta[rowId] ??= {};\n model.sheet.rowMeta[rowId].size = size;\n } else {\n const columnId = model.sheet.columns[parseInt(numericIndex)];\n model.sheet.columnMeta[columnId] ??= {};\n model.sheet.columnMeta[columnId].size = size;\n }\n },\n [model],\n );\n\n const handleSelect = useCallback<NonNullable<GridContentProps['onSelect']>>(\n ({ minCol, maxCol, minRow, maxRow }) => {\n const range: CellRange = { from: { col: minCol, row: minRow } };\n if (minCol !== maxCol || minRow !== maxRow) {\n range.to = { col: maxCol, row: maxRow };\n }\n if (editing) {\n // Update range selection in formula.\n rangeController.current?.setRange(rangeToA1Notation(range));\n } else {\n // Setting range while editing causes focus to move to null, avoid doing so.\n setRange(range.to ? range : undefined);\n }\n },\n [editing],\n );\n const handleWheel = useCallback(\n (event: WheelEvent) => {\n if (!ignoreAttention && !hasAttention) {\n event.stopPropagation();\n }\n },\n [hasAttention, ignoreAttention],\n );\n\n const selectEntireAxis = useCallback(\n (pos: DxGridPosition) => {\n switch (pos.plane) {\n case 'frozenRowsStart':\n return dxGrid?.setSelection({\n start: { col: pos.col, row: 0, plane: 'grid' },\n end: { col: pos.col, row: model.sheet.rows.length - 1, plane: 'grid' },\n });\n case 'frozenColsStart':\n return dxGrid?.setSelection({\n start: { row: pos.row, col: 0, plane: 'grid' },\n end: { row: pos.row, col: model.sheet.columns.length - 1, plane: 'grid' },\n });\n }\n },\n [dxGrid, model.sheet],\n );\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n const cell = closestCell(event.target);\n if (cell) {\n selectEntireAxis(cell);\n }\n },\n [selectEntireAxis],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Backspace':\n case 'Delete':\n event.preventDefault();\n return cursorFallbackRange && model.clear(cursorFallbackRange);\n case 'Enter':\n case 'Space':\n if (dxGrid && extraplanarFocus) {\n switch (extraplanarFocus.plane) {\n case 'frozenRowsStart':\n case 'frozenColsStart':\n event.preventDefault();\n return selectEntireAxis(extraplanarFocus);\n }\n }\n }\n if (event.metaKey || event.ctrlKey) {\n switch (event.key) {\n case 'x':\n case 'X':\n event.preventDefault();\n return cursorFallbackRange && model.cut(cursorFallbackRange);\n case 'c':\n case 'C':\n event.preventDefault();\n return cursorFallbackRange && model.copy(cursorFallbackRange);\n case 'v':\n case 'V':\n event.preventDefault();\n return cursor && model.paste(cursor);\n case 'z':\n event.preventDefault();\n return event.shiftKey ? model.redo() : model.undo();\n case 'Z':\n case 'y':\n event.preventDefault();\n return model.redo();\n }\n }\n },\n [cursorFallbackRange, model, cursor, extraplanarFocus, selectEntireAxis],\n );\n\n const contextMenuAnchorRef = useRef<HTMLButtonElement | null>(null);\n const [contextMenuOpen, setContextMenuOpen] = useState<DxGridPosition | null>(null);\n const contextMenuAxis = contextMenuOpen?.plane.startsWith('frozenRows') ? 'col' : 'row';\n\n const handleContextMenu = useCallback((event: MouseEvent) => {\n const cell = closestCell(event.target);\n if (cell && cell.plane.startsWith('frozen')) {\n event.preventDefault();\n contextMenuAnchorRef.current = event.target as HTMLButtonElement;\n setContextMenuOpen(cell);\n }\n }, []);\n\n const handleAxisMenuAction = useCallback(\n (operation: 'insert-before' | 'insert-after' | 'drop') => {\n switch (operation) {\n case 'insert-before':\n case 'insert-after':\n return dispatch(\n createIntent(SheetAction.InsertAxis, {\n model,\n axis: contextMenuAxis,\n index: contextMenuOpen![contextMenuAxis] + (operation === 'insert-before' ? 0 : 1),\n }),\n );\n case 'drop':\n return dispatch(\n createIntent(SheetAction.DropAxis, {\n model,\n axis: contextMenuAxis,\n axisIndex: model.sheet[contextMenuAxis === 'row' ? 'rows' : 'columns'][contextMenuOpen![contextMenuAxis]],\n }),\n );\n }\n },\n [contextMenuAxis, contextMenuOpen, model, dispatch],\n );\n\n const { columns, rows } = useSheetModelDxGridProps(dxGrid, model);\n\n const extension = useMemo(\n () => [\n editorKeys({ onClose: handleClose, ...(editing?.initialContent && { onNav: handleClose }) }),\n sheetExtension({ functions: model.graph.getFunctions() }),\n rangeExtension({\n onInit: (fn) => (rangeController.current = fn),\n onStateChange: (state) => {\n if (dxGrid) {\n // This can’t dispatch a setState in this component, otherwise the cell editor remounts and loses focus.\n dxGrid.mode = typeof state.activeRange === 'undefined' ? 'edit' : 'edit-select';\n }\n },\n }),\n ],\n [model, handleClose, editing],\n );\n\n const getCellContent = useCallback(\n (index: DxGridCellIndex) => {\n return model.getCellText(parseCellIndex(index));\n },\n [model],\n );\n\n useUpdateFocusedCellOnThreadSelection(dxGrid);\n useSelectThreadOnCellFocus();\n\n return (\n <div role='none' className='relative min-bs-0'>\n <GridCellEditor getCellContent={getCellContent} extension={extension} onBlur={handleBlur} />\n <Grid.Content\n initialCells={initialCells}\n limitColumns={DEFAULT_COLS}\n limitRows={DEFAULT_ROWS}\n columns={columns}\n rows={rows}\n onAxisResize={handleAxisResize}\n onSelect={handleSelect}\n rowDefault={sheetRowDefault}\n columnDefault={sheetColDefault}\n frozen={frozen}\n onFocus={handleFocus}\n onWheelCapture={handleWheel}\n onKeyDown={handleKeyDown}\n onContextMenu={handleContextMenu}\n onClick={handleClick}\n overscroll='trap'\n className='[--dx-grid-base:var(--surface-bg)] [&_.dx-grid]:border-bs [&_.dx-grid]:absolute [&_.dx-grid]:inset-0 [&_.dx-grid]:border-separator'\n activeRefs={activeRefs}\n ref={setDxGrid}\n />\n <DropdownMenu.Root\n modal={false}\n open={!!contextMenuOpen}\n onOpenChange={(nextOpen) => setContextMenuOpen(nextOpen ? inertPosition : null)}\n >\n <DropdownMenu.VirtualTrigger virtualRef={contextMenuAnchorRef} />\n <DropdownMenu.Content side={contextMenuAxis === 'col' ? 'bottom' : 'right'} sideOffset={4} collisionPadding={8}>\n <DropdownMenu.Viewport>\n <DropdownMenu.Item\n onClick={() => handleAxisMenuAction('insert-before')}\n data-testid={`grid.${contextMenuAxis}.insert-before`}\n >\n <Icon\n size={5}\n icon={contextMenuAxis === 'col' ? 'ph--columns-plus-left--regular' : 'ph--rows-plus-top--regular'}\n />\n <span>{t(`add ${contextMenuAxis} before label`)}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n onClick={() => handleAxisMenuAction('insert-after')}\n data-testid={`grid.${contextMenuAxis}.insert-after`}\n >\n <Icon\n size={5}\n icon={contextMenuAxis === 'col' ? 'ph--columns-plus-right--regular' : 'ph--rows-plus-bottom--regular'}\n />\n <span>{t(`add ${contextMenuAxis} after label`)}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n onClick={() => handleAxisMenuAction('drop')}\n data-testid={`grid.${contextMenuAxis}.drop`}\n >\n <Icon size={5} icon='ph--backspace--regular' />\n <span>{t(`delete ${contextMenuAxis} label`)}</span>\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { inRange } from '@dxos/compute';\nimport { createDocAccessor, fullyQualifiedId } from '@dxos/react-client/echo';\nimport { parseValue, cellClassesForFieldType } from '@dxos/react-ui-form';\nimport {\n type GridContentProps,\n type DxGridElement,\n type DxGridAxisMeta,\n type DxGridPlane,\n type DxGridPlaneRange,\n type DxGridPlaneCells,\n type DxGridCellValue,\n colToA1Notation,\n rowToA1Notation,\n commentedClassName,\n} from '@dxos/react-ui-grid';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { parseThreadAnchorAsCellRange } from '../../integrations';\nimport { type SheetModel } from '../../model';\nimport { cellClassNameForRange, rangeFromIndex } from '../../types';\n\nconst createDxGridColumns = (model: SheetModel): DxGridAxisMeta => {\n return model.sheet.columns.reduce(\n (acc: DxGridAxisMeta, columnId, numericIndex) => {\n if (model.sheet.columnMeta[columnId] && model.sheet.columnMeta[columnId].size) {\n acc.grid[numericIndex] = { size: model.sheet.columnMeta[columnId].size, resizeable: true };\n }\n return acc;\n },\n { grid: {} },\n );\n};\n\nconst createDxGridRows = (model: SheetModel): DxGridAxisMeta => {\n return model.sheet.rows.reduce(\n (acc: DxGridAxisMeta, rowId, numericIndex) => {\n if (model.sheet.rowMeta[rowId] && model.sheet.rowMeta[rowId].size) {\n acc.grid[numericIndex] = { size: model.sheet.rowMeta[rowId].size, resizeable: true };\n }\n return acc;\n },\n { grid: {} },\n );\n};\n\nconst projectCellProps = (model: SheetModel, col: number, row: number): DxGridCellValue => {\n const address = { col, row };\n const rawValue = model.getValue(address);\n const ranges = model.sheet.ranges?.filter(({ range }) => inRange(rangeFromIndex(model.sheet, range), address));\n const threadRefs = model.sheet.threads\n ?.filter((thread) => {\n const range = thread.target?.anchor && parseThreadAnchorAsCellRange(thread.target!.anchor);\n return thread && range ? inRange(range, address) : false;\n })\n .map((thread) => fullyQualifiedId(thread!))\n .join(' ');\n\n const description = model.getValueDescription(address);\n const type = description?.type;\n const format = description?.format;\n const classNames = ranges?.map(cellClassNameForRange).reverse();\n\n return {\n value: parseValue({ type, format, value: rawValue }),\n className: mx(cellClassesForFieldType({ type, format }), threadRefs && commentedClassName, classNames),\n dataRefs: threadRefs,\n };\n};\nconst gridCellGetter = (model: SheetModel) => {\n // TODO(thure): Actually use the cache.\n const cachedGridCells: DxGridPlaneCells = {};\n return (nextBounds: DxGridPlaneRange): DxGridPlaneCells => {\n [...Array(nextBounds.end.col - nextBounds.start.col)].forEach((_, c0) => {\n return [...Array(nextBounds.end.row - nextBounds.start.row)].forEach((_, r0) => {\n const col = nextBounds.start.col + c0;\n const row = nextBounds.start.row + r0;\n cachedGridCells[`${col},${row}`] = projectCellProps(model, col, row);\n });\n });\n return cachedGridCells;\n };\n};\n\nexport const rowLabelCell = (row: number) => ({\n value: rowToA1Notation(row),\n className: 'text-end pie-1 text-subdued',\n resizeHandle: 'row',\n});\n\nexport const colLabelCell = (col: number) => ({\n value: colToA1Notation(col),\n className: 'text-subdued',\n resizeHandle: 'col',\n});\n\nconst cellGetter = (model: SheetModel) => {\n const getGridCells = gridCellGetter(model);\n return (nextBounds: DxGridPlaneRange, plane: DxGridPlane): DxGridPlaneCells => {\n switch (plane) {\n case 'grid':\n return getGridCells(nextBounds);\n case 'frozenColsStart':\n return [...Array(nextBounds.end.row - nextBounds.start.row)].reduce((acc, _, r0) => {\n const r = nextBounds.start.row + r0;\n acc[`0,${r}`] = rowLabelCell(r);\n return acc;\n }, {});\n case 'frozenRowsStart':\n return [...Array(nextBounds.end.col - nextBounds.start.col)].reduce((acc, _, c0) => {\n const c = nextBounds.start.col + c0;\n acc[`${c},0`] = colLabelCell(c);\n return acc;\n }, {});\n default:\n return {};\n }\n };\n};\n\nexport const useSheetModelDxGridProps = (\n dxGrid: DxGridElement | null,\n model: SheetModel,\n): Pick<GridContentProps, 'columns' | 'rows'> => {\n const [columns, setColumns] = useState<DxGridAxisMeta>(createDxGridColumns(model));\n const [rows, setRows] = useState<DxGridAxisMeta>(createDxGridRows(model));\n\n useEffect(() => {\n const cellsAccessor = createDocAccessor(model.sheet, ['cells']);\n if (dxGrid) {\n dxGrid.getCells = cellGetter(model);\n }\n const handleCellsUpdate = () => {\n dxGrid?.requestUpdate('initialCells');\n };\n cellsAccessor.handle.addListener('change', handleCellsUpdate);\n const unsubscribe = model.graph.update.on(handleCellsUpdate);\n return () => {\n cellsAccessor.handle.removeListener('change', handleCellsUpdate);\n unsubscribe();\n };\n }, [model, dxGrid]);\n\n useEffect(() => {\n const columnMetaAccessor = createDocAccessor(model.sheet, ['columnMeta']);\n const rowMetaAccessor = createDocAccessor(model.sheet, ['rowMeta']);\n const handleColumnMetaUpdate = () => {\n setColumns(createDxGridColumns(model));\n };\n const handleRowMetaUpdate = () => {\n setRows(createDxGridRows(model));\n };\n columnMetaAccessor.handle.addListener('change', handleColumnMetaUpdate);\n rowMetaAccessor.handle.addListener('change', handleRowMetaUpdate);\n return () => {\n columnMetaAccessor.handle.removeListener('change', handleColumnMetaUpdate);\n rowMetaAccessor.handle.removeListener('change', handleRowMetaUpdate);\n };\n }, [model, dxGrid]);\n\n return { columns, rows };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { pipe } from 'effect';\nimport { useCallback, useEffect, useMemo } from 'react';\n\nimport {\n createIntent,\n createResolver,\n LayoutAction,\n useIntentResolver,\n useIntentDispatcher,\n chain,\n} from '@dxos/app-framework';\nimport { debounce } from '@dxos/async';\nimport { type CellAddress, type CompleteCellRange, inRange } from '@dxos/compute';\nimport { S } from '@dxos/echo-schema';\nimport { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';\nimport { ThreadAction } from '@dxos/plugin-thread/types';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { type DxGridElement, type DxGridPosition, type GridContentProps } from '@dxos/react-ui-grid';\n\nimport { useSheetContext } from '../components';\nimport { SHEET_PLUGIN } from '../meta';\n\nexport const completeCellRangeToThreadCursor = (range: CompleteCellRange): string => {\n return `${range.from.col},${range.from.row},${range.to.col},${range.to.row}`;\n};\n\nexport const parseThreadAnchorAsCellRange = (cursor: string): CompleteCellRange | null => {\n const coords = cursor.split(',');\n if (coords.length !== 4) {\n return null;\n } else {\n const [fromCol, fromRow, toCol, toRow] = coords;\n return {\n from: { col: parseInt(fromCol), row: parseInt(fromRow) },\n to: { col: parseInt(toCol), row: parseInt(toRow) },\n };\n }\n};\n\nexport const useUpdateFocusedCellOnThreadSelection = (grid: DxGridElement | null) => {\n const { model, setActiveRefs } = useSheetContext();\n const scrollIntoViewResolver = useMemo(\n () =>\n createResolver({\n intent: LayoutAction.ScrollIntoView,\n position: 'hoist',\n filter: (\n data,\n ): data is {\n part: 'current';\n subject: string;\n options: { cursor: string; ref: GridContentProps['activeRefs'] };\n } => {\n if (!S.is(LayoutAction.ScrollIntoView.fields.input)(data)) {\n return false;\n }\n\n return data.subject === fullyQualifiedId(model.sheet) && !!data.options?.cursor;\n },\n resolve: ({ options: { cursor, ref } }) => {\n setActiveRefs(ref);\n // TODO(Zan): Everywhere we refer to the cursor in a thread context should change to `anchor`.\n const range = parseThreadAnchorAsCellRange(cursor!);\n range && grid?.setFocus({ ...range.to, plane: 'grid' }, true);\n },\n }),\n [model.sheet, setActiveRefs],\n );\n\n useIntentResolver(SHEET_PLUGIN, scrollIntoViewResolver);\n};\n\nexport const useSelectThreadOnCellFocus = () => {\n const { model, cursor } = useSheetContext();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const threads = useMemo(\n () => model.sheet.threads?.filter((thread): thread is NonNullable<typeof thread> => !!thread) ?? [],\n [\n // TODO(thure): Surely we can find a better dependency for this…\n JSON.stringify(model.sheet.threads),\n ],\n );\n\n const selectClosestThread = useCallback(\n (cellAddress: CellAddress) => {\n if (!cellAddress || !threads) {\n return;\n }\n\n const closestThread = threads?.find((ref) => {\n if (ref.target?.anchor) {\n const range = parseThreadAnchorAsCellRange(ref.target!.anchor);\n return range ? inRange(range, cellAddress) : false;\n } else {\n return false;\n }\n });\n\n if (closestThread) {\n const primary = fullyQualifiedId(model.sheet);\n const intent = pipe(\n createIntent(ThreadAction.Select, { current: fullyQualifiedId(closestThread) }),\n chain(DeckAction.ChangeCompanion, { primary, companion: `${primary}${ATTENDABLE_PATH_SEPARATOR}comments` }),\n );\n void dispatch(intent);\n }\n },\n [dispatch, threads],\n );\n\n const debounced = useMemo(() => {\n return debounce((cellCoords: DxGridPosition) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);\n }, [selectClosestThread]);\n\n useEffect(() => {\n if (!cursor) {\n return;\n }\n debounced(cursor);\n }, [cursor, debounced]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren, createContext, useCallback, useContext, useState } from 'react';\n\nimport { type ComputeGraph, type CellAddress, type CellRange, type CompleteCellRange } from '@dxos/compute';\nimport { invariant } from '@dxos/invariant';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport {\n Grid,\n type GridContentProps,\n type GridEditing,\n type GridScopedProps,\n useGridContext,\n} from '@dxos/react-ui-grid';\n\nimport { type SheetModel, useSheetModel } from '../../model';\nimport { type SheetType } from '../../types';\n\nexport type SheetContextValue = {\n id: string;\n\n model: SheetModel;\n\n // Cursor state.\n // TODO(burdon): Cursor and range should use indices.\n cursor?: CellAddress;\n setCursor: (cell: CellAddress | undefined) => void;\n range?: CellRange;\n setRange: (range: CellRange | undefined) => void;\n cursorFallbackRange?: CompleteCellRange;\n\n // Editing state (undefined if not editing).\n editing: GridEditing;\n setEditing: (editing: GridEditing) => void;\n\n // Active refs\n activeRefs: GridContentProps['activeRefs'];\n setActiveRefs: (activeRefs: GridContentProps['activeRefs']) => void;\n\n // Events.\n // TODO(burdon): Generalize.\n onInfo?: () => void;\n\n // Flags\n ignoreAttention?: boolean;\n};\n\nconst SheetContext = createContext<SheetContextValue | undefined>(undefined);\n\nexport const useSheetContext = (): SheetContextValue => {\n const context = useContext(SheetContext);\n invariant(context);\n return context;\n};\n\nconst SheetProviderImpl = ({\n model,\n onInfo,\n ignoreAttention,\n children,\n __gridScope,\n}: GridScopedProps<PropsWithChildren<Pick<SheetContextValue, 'onInfo' | 'model' | 'ignoreAttention'>>>) => {\n const { id, editing, setEditing } = useGridContext('SheetProvider', __gridScope);\n\n const [cursor, setCursorInternal] = useState<CellAddress>();\n const [range, setRangeInternal] = useState<CellRange>();\n const [cursorFallbackRange, setCursorFallbackRange] = useState<CompleteCellRange>();\n const [activeRefs, setActiveRefs] = useState<GridContentProps['activeRefs']>('');\n\n const setCursor = useCallback(\n (nextCursor?: CellAddress) => {\n setCursorInternal(nextCursor);\n setCursorFallbackRange(\n range?.to ? (range as CompleteCellRange) : nextCursor ? { from: nextCursor!, to: nextCursor! } : undefined,\n );\n },\n [range],\n );\n const setRange = useCallback(\n (nextRange?: CellRange) => {\n setRangeInternal(nextRange);\n setCursorFallbackRange(\n nextRange?.to ? (nextRange as CompleteCellRange) : cursor ? { from: cursor!, to: cursor! } : undefined,\n );\n },\n [cursor],\n );\n\n return (\n <SheetContext.Provider\n value={{\n id,\n model,\n editing,\n setEditing,\n cursor,\n setCursor,\n range,\n setRange,\n cursorFallbackRange,\n activeRefs,\n setActiveRefs,\n // TODO(burdon): Change to event.\n onInfo,\n ignoreAttention,\n }}\n >\n {children}\n </SheetContext.Provider>\n );\n};\n\nexport type SheetProviderProps = {\n graph: ComputeGraph;\n sheet: SheetType;\n readonly?: boolean;\n ignoreAttention?: boolean;\n} & Pick<SheetContextValue, 'onInfo'>;\n\nexport const SheetProvider = ({\n children,\n graph,\n sheet,\n readonly,\n ignoreAttention,\n onInfo,\n}: PropsWithChildren<SheetProviderProps>) => {\n const model = useSheetModel(graph, sheet, { readonly });\n\n return !model ? null : (\n <Grid.Root id={fullyQualifiedId(sheet)}>\n <SheetProviderImpl model={model} onInfo={onInfo} ignoreAttention={ignoreAttention}>\n {children}\n </SheetProviderImpl>\n </Grid.Root>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_compute", "import_react_ui", "import_react_ui_grid", "import_react_ui_theme", "import_app_framework", "import_echo_schema", "import_types", "import_echo", "ComputeGraphContext", "createContext", "undefined", "ComputeGraphContextProvider", "registry", "children", "React", "Provider", "value", "useComputeGraph", "space", "useContext", "raise", "Error", "graph", "useAsyncState", "getOrCreateGraph", "open", "RangeList", "sheet", "t", "useTranslation", "SHEET_PLUGIN", "handleSelectRange", "range", "handleDeleteRange", "useCallback", "index", "ranges", "findIndex", "sheetRange", "splice", "h2", "className", "List", "Root", "items", "isItem", "S", "is", "Range", "map", "i", "Item", "key", "item", "classNames", "ghostHover", "ItemDragHandle", "ItemTitle", "onClick", "position", "rangeToA1Notation", "rangeFromIndex", "ItemDeleteButton", "completeCellRangeToThreadCursor", "from", "col", "row", "to", "parseThreadAnchorAsCellRange", "cursor", "coords", "split", "length", "fromCol", "fromRow", "toCol", "toRow", "parseInt", "useUpdateFocusedCellOnThreadSelection", "grid", "model", "setActiveRefs", "useSheetContext", "scrollIntoViewResolver", "useMemo", "createResolver", "intent", "LayoutAction", "ScrollIntoView", "filter", "data", "fields", "input", "subject", "fullyQualifiedId", "options", "resolve", "ref", "setFocus", "plane", "useIntentResolver", "useSelectThreadOnCellFocus", "dispatchPromise", "dispatch", "useIntentDispatcher", "threads", "thread", "JSON", "stringify", "selectClosestThread", "cellAddress", "closestThread", "find", "target", "anchor", "inRange", "primary", "pipe", "createIntent", "ThreadAction", "Select", "current", "chain", "DeckAction", "ChangeCompanion", "companion", "ATTENDABLE_PATH_SEPARATOR", "debounced", "debounce", "cellCoords", "requestAnimationFrame", "useEffect", "createDxGridColumns", "columns", "reduce", "acc", "columnId", "numericIndex", "columnMeta", "size", "resizeable", "createDxGridRows", "rows", "rowId", "rowMeta", "projectCellProps", "address", "rawValue", "getValue", "threadRefs", "join", "description", "getValueDescription", "type", "format", "cellClassNameForRange", "reverse", "parseValue", "mx", "cellClassesForFieldType", "commentedClassName", "dataRefs", "gridCellGetter", "cachedGridCells", "nextBounds", "Array", "end", "start", "forEach", "_", "c0", "r0", "rowLabelCell", "rowToA1Notation", "resizeHandle", "colLabelCell", "colToA1Notation", "cellGetter", "getGridCells", "r", "c", "useSheetModelDxGridProps", "dxGrid", "setColumns", "useState", "setRows", "cellsAccessor", "createDocAccessor", "getCells", "handleCellsUpdate", "requestUpdate", "handle", "addListener", "unsubscribe", "update", "on", "removeListener", "columnMetaAccessor", "rowMetaAccessor", "handleColumnMetaUpdate", "handleRowMetaUpdate", "SheetContext", "context", "invariant", "SheetProviderImpl", "onInfo", "ignoreAttention", "__gridScope", "id", "editing", "setEditing", "useGridContext", "setCursorInternal", "setRangeInternal", "cursorFallbackRange", "setCursorFallbackRange", "activeRefs", "setCursor", "nextCursor", "setRange", "nextRange", "SheetProvider", "readonly", "useSheetModel", "Grid", "inertPosition", "initialCells", "frozenColsStart", "frozenRowsStart", "frozen", "sheetRowDefault", "defaultSizeRow", "sheetColDefault", "GridSheet", "setDxGrid", "extraplanarFocus", "setExtraplanarFocus", "rangeController", "useRef", "hasAttention", "useAttention", "handleFocus", "event", "cell", "closestCell", "handleClose", "_value", "shift", "axis", "includes", "delta", "startsWith", "refocus", "handleBlur", "setValue", "parseCellIndex", "handleAxisResize", "handleSelect", "minCol", "maxCol", "minRow", "maxRow", "handleWheel", "stopPropagation", "selectEntireAxis", "pos", "setSelection", "handleClick", "handleKeyDown", "preventDefault", "clear", "metaKey", "ctrlKey", "cut", "copy", "paste", "shiftKey", "redo", "undo", "contextMenuAnchorRef", "contextMenuOpen", "setContextMenuOpen", "contextMenuAxis", "handleContextMenu", "handleAxisMenuAction", "operation", "SheetAction", "InsertAxis", "DropAxis", "axisIndex", "extension", "editorKeys", "onClose", "initialContent", "onNav", "sheetExtension", "functions", "getFunctions", "rangeExtension", "onInit", "fn", "onStateChange", "state", "mode", "activeRange", "getCellContent", "getCellText", "div", "role", "GridCellEditor", "onBlur", "Content", "limitColumns", "DEFAULT_COLS", "limitRows", "DEFAULT_ROWS", "onAxisResize", "onSelect", "rowDefault", "columnDefault", "onFocus", "onWheelCapture", "onKeyDown", "onContextMenu", "overscroll", "DropdownMenu", "modal", "onOpenChange", "nextOpen", "VirtualTrigger", "virtualRef", "side", "sideOffset", "collisionPadding", "Viewport", "data-testid", "Icon", "icon", "span", "Arrow", "SheetContainer", "lazy"]
7
+ }
@@ -16,8 +16,8 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_TRMVOTUW_exports = {};
20
- __export(chunk_TRMVOTUW_exports, {
19
+ var chunk_D4MOMCEU_exports = {};
20
+ __export(chunk_D4MOMCEU_exports, {
21
21
  ApiError: () => ApiError,
22
22
  CellValue: () => CellValue,
23
23
  DEFAULT_COLS: () => DEFAULT_COLS,
@@ -48,7 +48,7 @@ __export(chunk_TRMVOTUW_exports, {
48
48
  styleKey: () => styleKey,
49
49
  useSheetModel: () => useSheetModel
50
50
  });
51
- module.exports = __toCommonJS(chunk_TRMVOTUW_exports);
51
+ module.exports = __toCommonJS(chunk_D4MOMCEU_exports);
52
52
  var import_chunk_JSIDCZHB = require("./chunk-JSIDCZHB.cjs");
53
53
  var import_echo_schema = require("@dxos/echo-schema");
54
54
  var import_types = require("@dxos/plugin-space/types");
@@ -515,7 +515,7 @@ var SheetModel = class extends import_context.Resource {
515
515
  const address = toSimpleCellAddress(this._node.sheetId, cell);
516
516
  const value = this._node.graph.hf.getCellValue(address);
517
517
  if (value instanceof import_compute.DetailedCellError) {
518
- import_log.log.info("cell error", {
518
+ import_log.log.warn("cell error", {
519
519
  cell,
520
520
  error: value
521
521
  }, {
@@ -932,4 +932,4 @@ var mapFormulaIndicesToRefs = (sheet, formula) => {
932
932
  styleKey,
933
933
  useSheetModel
934
934
  });
935
- //# sourceMappingURL=chunk-TRMVOTUW.cjs.map
935
+ //# sourceMappingURL=chunk-D4MOMCEU.cjs.map