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

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 (117) hide show
  1. package/dist/lib/browser/{SheetContainer-CM4CO3DC.mjs → SheetContainer-IMHGS7Z4.mjs} +5 -5
  2. package/dist/lib/browser/{chunk-H23JW3DX.mjs → chunk-AT7F2WDW.mjs} +28 -20
  3. package/dist/lib/browser/chunk-AT7F2WDW.mjs.map +7 -0
  4. package/dist/lib/browser/chunk-GAFHJBCU.mjs +18 -0
  5. package/dist/lib/browser/chunk-GAFHJBCU.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-PW25VUP6.mjs → chunk-LXHRT3CC.mjs} +2 -2
  7. package/dist/lib/browser/{chunk-T3IVPMRX.mjs → chunk-OOSRC36N.mjs} +2 -2
  8. package/dist/lib/browser/{compute-graph-registry-XH6B2SWG.mjs → compute-graph-registry-EGPD4HEX.mjs} +3 -3
  9. package/dist/lib/browser/index.mjs +13 -19
  10. package/dist/lib/browser/index.mjs.map +3 -3
  11. package/dist/lib/browser/intent-resolver-6S2RMLQF.mjs +56 -0
  12. package/dist/lib/browser/intent-resolver-6S2RMLQF.mjs.map +7 -0
  13. package/dist/lib/browser/{markdown-IKG5FNCA.mjs → markdown-CFJIWHZX.mjs} +3 -3
  14. package/dist/lib/browser/meta.json +1 -1
  15. package/dist/lib/browser/{react-surface-URRC3AFC.mjs → react-surface-PHKJZYFB.mjs} +20 -11
  16. package/dist/lib/browser/react-surface-PHKJZYFB.mjs.map +7 -0
  17. package/dist/lib/browser/{thread-YX6KBQNQ.mjs → thread-7ZWW5EA7.mjs} +3 -3
  18. package/dist/lib/browser/types/index.mjs +2 -2
  19. package/dist/lib/node/{SheetContainer-TJ3JQLWM.cjs → SheetContainer-NNIZN4AK.cjs} +36 -36
  20. package/dist/lib/node/{chunk-ZPWW4LPY.cjs → chunk-2KCZUH72.cjs} +38 -30
  21. package/dist/lib/node/chunk-2KCZUH72.cjs.map +7 -0
  22. package/dist/lib/node/{chunk-E3RXOEL6.cjs → chunk-4LSYTNS4.cjs} +6 -6
  23. package/dist/lib/node/{chunk-NLDXUFDG.cjs → chunk-MLU6KRQN.cjs} +9 -6
  24. package/dist/lib/node/chunk-MLU6KRQN.cjs.map +7 -0
  25. package/dist/lib/node/{chunk-FU5K66DS.cjs → chunk-ZV2RS3QH.cjs} +6 -6
  26. package/dist/lib/node/{compute-graph-registry-ORGTIE5M.cjs → compute-graph-registry-GJK5H264.cjs} +7 -7
  27. package/dist/lib/node/index.cjs +32 -38
  28. package/dist/lib/node/index.cjs.map +3 -3
  29. package/dist/lib/node/intent-resolver-I25V7SBT.cjs +69 -0
  30. package/dist/lib/node/intent-resolver-I25V7SBT.cjs.map +7 -0
  31. package/dist/lib/node/{markdown-EUUL3Q36.cjs → markdown-YTCSW66K.cjs} +7 -7
  32. package/dist/lib/node/meta.json +1 -1
  33. package/dist/lib/node/{react-surface-IQN5JKSS.cjs → react-surface-HLE6CRA6.cjs} +23 -17
  34. package/dist/lib/node/react-surface-HLE6CRA6.cjs.map +7 -0
  35. package/dist/lib/node/{thread-VBPS23P2.cjs → thread-DRNYTR6M.cjs} +8 -8
  36. package/dist/lib/node/types/index.cjs +30 -30
  37. package/dist/lib/node/types/index.cjs.map +1 -1
  38. package/dist/lib/node-esm/{SheetContainer-QEEFORIC.mjs → SheetContainer-PGDJKGTZ.mjs} +5 -5
  39. package/dist/lib/node-esm/{chunk-NSVUOAI6.mjs → chunk-HPAMZ6SP.mjs} +2 -2
  40. package/dist/lib/node-esm/chunk-RTZXXOS2.mjs +20 -0
  41. package/dist/lib/node-esm/chunk-RTZXXOS2.mjs.map +7 -0
  42. package/dist/lib/node-esm/{chunk-KCXK5UM6.mjs → chunk-SX3S7UKU.mjs} +2 -2
  43. package/dist/lib/node-esm/{chunk-OXD6RBFF.mjs → chunk-ZM7XLUGL.mjs} +28 -20
  44. package/dist/lib/node-esm/chunk-ZM7XLUGL.mjs.map +7 -0
  45. package/dist/lib/node-esm/{compute-graph-registry-JH2FRHLD.mjs → compute-graph-registry-3F5JCYEN.mjs} +3 -3
  46. package/dist/lib/node-esm/index.mjs +13 -19
  47. package/dist/lib/node-esm/index.mjs.map +3 -3
  48. package/dist/lib/node-esm/intent-resolver-IPRSINII.mjs +57 -0
  49. package/dist/lib/node-esm/intent-resolver-IPRSINII.mjs.map +7 -0
  50. package/dist/lib/node-esm/{markdown-D2ZMN7LR.mjs → markdown-CGSK44XJ.mjs} +3 -3
  51. package/dist/lib/node-esm/meta.json +1 -1
  52. package/dist/lib/node-esm/{react-surface-XJIX5G3I.mjs → react-surface-PFRJ7V5N.mjs} +20 -11
  53. package/dist/lib/node-esm/react-surface-PFRJ7V5N.mjs.map +7 -0
  54. package/dist/lib/node-esm/{thread-HSJD3SR6.mjs → thread-6T5VXPAF.mjs} +3 -3
  55. package/dist/lib/node-esm/types/index.mjs +2 -2
  56. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  57. package/dist/types/src/capabilities/index.d.ts +7 -12
  58. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  59. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  60. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  61. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  62. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  63. package/dist/types/src/meta.d.ts +1 -0
  64. package/dist/types/src/meta.d.ts.map +1 -1
  65. package/package.json +45 -45
  66. package/src/SheetPlugin.tsx +6 -19
  67. package/src/capabilities/index.ts +0 -1
  68. package/src/capabilities/intent-resolver.ts +24 -15
  69. package/src/capabilities/react-surface.tsx +12 -5
  70. package/src/components/GridSheet/util.ts +1 -1
  71. package/src/components/SheetContainer/SheetContainer.stories.tsx +5 -2
  72. package/src/integrations/thread-ranges.ts +21 -10
  73. package/src/meta.ts +3 -1
  74. package/dist/lib/browser/chunk-H23JW3DX.mjs.map +0 -7
  75. package/dist/lib/browser/chunk-K6EUYKWT.mjs +0 -15
  76. package/dist/lib/browser/chunk-K6EUYKWT.mjs.map +0 -7
  77. package/dist/lib/browser/intent-resolver-Q7DTHAM5.mjs +0 -47
  78. package/dist/lib/browser/intent-resolver-Q7DTHAM5.mjs.map +0 -7
  79. package/dist/lib/browser/react-context-JG43577H.mjs +0 -28
  80. package/dist/lib/browser/react-context-JG43577H.mjs.map +0 -7
  81. package/dist/lib/browser/react-surface-URRC3AFC.mjs.map +0 -7
  82. package/dist/lib/node/chunk-NLDXUFDG.cjs.map +0 -7
  83. package/dist/lib/node/chunk-ZPWW4LPY.cjs.map +0 -7
  84. package/dist/lib/node/intent-resolver-ZUDJJUFG.cjs +0 -60
  85. package/dist/lib/node/intent-resolver-ZUDJJUFG.cjs.map +0 -7
  86. package/dist/lib/node/react-context-OOH5QFE2.cjs +0 -50
  87. package/dist/lib/node/react-context-OOH5QFE2.cjs.map +0 -7
  88. package/dist/lib/node/react-surface-IQN5JKSS.cjs.map +0 -7
  89. package/dist/lib/node-esm/chunk-FMOVRTS4.mjs +0 -17
  90. package/dist/lib/node-esm/chunk-FMOVRTS4.mjs.map +0 -7
  91. package/dist/lib/node-esm/chunk-OXD6RBFF.mjs.map +0 -7
  92. package/dist/lib/node-esm/intent-resolver-IF64RN7B.mjs +0 -48
  93. package/dist/lib/node-esm/intent-resolver-IF64RN7B.mjs.map +0 -7
  94. package/dist/lib/node-esm/react-context-CJVSLO74.mjs +0 -29
  95. package/dist/lib/node-esm/react-context-CJVSLO74.mjs.map +0 -7
  96. package/dist/lib/node-esm/react-surface-XJIX5G3I.mjs.map +0 -7
  97. package/dist/types/src/capabilities/react-context.d.ts +0 -8
  98. package/dist/types/src/capabilities/react-context.d.ts.map +0 -1
  99. package/src/capabilities/react-context.tsx +0 -20
  100. /package/dist/lib/browser/{SheetContainer-CM4CO3DC.mjs.map → SheetContainer-IMHGS7Z4.mjs.map} +0 -0
  101. /package/dist/lib/browser/{chunk-PW25VUP6.mjs.map → chunk-LXHRT3CC.mjs.map} +0 -0
  102. /package/dist/lib/browser/{chunk-T3IVPMRX.mjs.map → chunk-OOSRC36N.mjs.map} +0 -0
  103. /package/dist/lib/browser/{compute-graph-registry-XH6B2SWG.mjs.map → compute-graph-registry-EGPD4HEX.mjs.map} +0 -0
  104. /package/dist/lib/browser/{markdown-IKG5FNCA.mjs.map → markdown-CFJIWHZX.mjs.map} +0 -0
  105. /package/dist/lib/browser/{thread-YX6KBQNQ.mjs.map → thread-7ZWW5EA7.mjs.map} +0 -0
  106. /package/dist/lib/node/{SheetContainer-TJ3JQLWM.cjs.map → SheetContainer-NNIZN4AK.cjs.map} +0 -0
  107. /package/dist/lib/node/{chunk-E3RXOEL6.cjs.map → chunk-4LSYTNS4.cjs.map} +0 -0
  108. /package/dist/lib/node/{chunk-FU5K66DS.cjs.map → chunk-ZV2RS3QH.cjs.map} +0 -0
  109. /package/dist/lib/node/{compute-graph-registry-ORGTIE5M.cjs.map → compute-graph-registry-GJK5H264.cjs.map} +0 -0
  110. /package/dist/lib/node/{markdown-EUUL3Q36.cjs.map → markdown-YTCSW66K.cjs.map} +0 -0
  111. /package/dist/lib/node/{thread-VBPS23P2.cjs.map → thread-DRNYTR6M.cjs.map} +0 -0
  112. /package/dist/lib/node-esm/{SheetContainer-QEEFORIC.mjs.map → SheetContainer-PGDJKGTZ.mjs.map} +0 -0
  113. /package/dist/lib/node-esm/{chunk-NSVUOAI6.mjs.map → chunk-HPAMZ6SP.mjs.map} +0 -0
  114. /package/dist/lib/node-esm/{chunk-KCXK5UM6.mjs.map → chunk-SX3S7UKU.mjs.map} +0 -0
  115. /package/dist/lib/node-esm/{compute-graph-registry-JH2FRHLD.mjs.map → compute-graph-registry-3F5JCYEN.mjs.map} +0 -0
  116. /package/dist/lib/node-esm/{markdown-D2ZMN7LR.mjs.map → markdown-CGSK44XJ.mjs.map} +0 -0
  117. /package/dist/lib/node-esm/{thread-HSJD3SR6.mjs.map → thread-6T5VXPAF.mjs.map} +0 -0
@@ -26,15 +26,15 @@ 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_TJ3JQLWM_exports = {};
30
- __export(SheetContainer_TJ3JQLWM_exports, {
29
+ var SheetContainer_NNIZN4AK_exports = {};
30
+ __export(SheetContainer_NNIZN4AK_exports, {
31
31
  default: () => SheetContainer_default
32
32
  });
33
- module.exports = __toCommonJS(SheetContainer_TJ3JQLWM_exports);
34
- var import_chunk_ZPWW4LPY = require("./chunk-ZPWW4LPY.cjs");
35
- var import_chunk_E3RXOEL6 = require("./chunk-E3RXOEL6.cjs");
33
+ module.exports = __toCommonJS(SheetContainer_NNIZN4AK_exports);
34
+ var import_chunk_2KCZUH72 = require("./chunk-2KCZUH72.cjs");
36
35
  var import_chunk_P4KSGZSS = require("./chunk-P4KSGZSS.cjs");
37
- var import_chunk_NLDXUFDG = require("./chunk-NLDXUFDG.cjs");
36
+ var import_chunk_4LSYTNS4 = require("./chunk-4LSYTNS4.cjs");
37
+ var import_chunk_MLU6KRQN = require("./chunk-MLU6KRQN.cjs");
38
38
  var import_react = __toESM(require("react"));
39
39
  var import_echo = require("@dxos/react-client/echo");
40
40
  var import_react_ui_stack = require("@dxos/react-ui-stack");
@@ -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_ZPWW4LPY.useSheetContext)();
62
+ const { model, cursor, range } = (0, import_chunk_2KCZUH72.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_E3RXOEL6.mapFormulaIndicesToRefs)(model.sheet, value));
68
+ value = model.graph.mapFunctionBindingFromId((0, import_chunk_4LSYTNS4.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_ZPWW4LPY.useSheetContext)();
98
+ const { cursor, model } = (0, import_chunk_2KCZUH72.useSheetContext)();
99
99
  (0, import_react4.useEffect)(() => {
100
- state[import_chunk_E3RXOEL6.alignKey] = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === import_chunk_E3RXOEL6.alignKey && (0, import_compute2.inRange)((0, import_chunk_E3RXOEL6.rangeFromIndex)(model.sheet, range), cursor))?.value : void 0;
100
+ state[import_chunk_4LSYTNS4.alignKey] = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === import_chunk_4LSYTNS4.alignKey && (0, import_compute2.inRange)((0, import_chunk_4LSYTNS4.rangeFromIndex)(model.sheet, range), cursor))?.value : void 0;
101
101
  }, [
102
102
  cursor,
103
103
  model.sheet
@@ -107,29 +107,29 @@ var createAlignGroupAction = (value) => (0, import_react_ui_menu2.createMenuItem
107
107
  label: [
108
108
  "align label",
109
109
  {
110
- ns: import_chunk_NLDXUFDG.SHEET_PLUGIN
110
+ ns: import_chunk_MLU6KRQN.SHEET_PLUGIN
111
111
  }
112
112
  ],
113
113
  variant: "toggleGroup",
114
114
  selectCardinality: "single",
115
- value: `${import_chunk_E3RXOEL6.alignKey}--${value}`
115
+ value: `${import_chunk_4LSYTNS4.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_E3RXOEL6.alignKey}--${alignValue}`, {
119
- key: import_chunk_E3RXOEL6.alignKey,
118
+ return (0, import_react_ui_menu2.createMenuAction)(`${import_chunk_4LSYTNS4.alignKey}--${alignValue}`, {
119
+ key: import_chunk_4LSYTNS4.alignKey,
120
120
  value: alignValue,
121
121
  checked: value === alignValue,
122
122
  label: [
123
123
  `range value ${alignValue} label`,
124
124
  {
125
- ns: import_chunk_NLDXUFDG.SHEET_PLUGIN
125
+ ns: import_chunk_MLU6KRQN.SHEET_PLUGIN
126
126
  }
127
127
  ],
128
128
  icon,
129
- testId: `grid.toolbar.${import_chunk_E3RXOEL6.alignKey}.${alignValue}`
129
+ testId: `grid.toolbar.${import_chunk_4LSYTNS4.alignKey}.${alignValue}`
130
130
  });
131
131
  });
132
- var createAlign = ({ [import_chunk_E3RXOEL6.alignKey]: alignValue }) => {
132
+ var createAlign = ({ [import_chunk_4LSYTNS4.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_E3RXOEL6.alignKey]: alignValue }) => {
150
150
  };
151
151
  };
152
152
  var useCommentState = (state) => {
153
- const { cursorFallbackRange, model } = (0, import_chunk_ZPWW4LPY.useSheetContext)();
153
+ const { cursorFallbackRange, model } = (0, import_chunk_2KCZUH72.useSheetContext)();
154
154
  const overlapsCommentAnchor = (0, import_react5.useMemo)(() => import_live_object.RefArray.allResolvedTargets(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_E3RXOEL6.rangeToIndex)(model.sheet, cursorFallbackRange) === thread.anchor;
158
+ return (0, import_chunk_4LSYTNS4.rangeToIndex)(model.sheet, cursorFallbackRange) === thread.anchor;
159
159
  }), [
160
160
  cursorFallbackRange,
161
161
  model.sheet
@@ -168,13 +168,13 @@ var useCommentState = (state) => {
168
168
  ]);
169
169
  };
170
170
  var createCommentAction = (state) => (0, import_react_ui_menu3.createMenuAction)("comment", {
171
- key: import_chunk_E3RXOEL6.commentKey,
171
+ key: import_chunk_4LSYTNS4.commentKey,
172
172
  testId: "editor.toolbar.comment",
173
173
  icon: "ph--chat-text--regular",
174
174
  label: [
175
175
  `${state.commentEnabled} label`,
176
176
  {
177
- ns: import_chunk_NLDXUFDG.SHEET_PLUGIN
177
+ ns: import_chunk_MLU6KRQN.SHEET_PLUGIN
178
178
  }
179
179
  ],
180
180
  disabled: state.commentEnabled !== "comment"
@@ -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_ZPWW4LPY.useSheetContext)();
198
+ const { cursorFallbackRange, model } = (0, import_chunk_2KCZUH72.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_E3RXOEL6.rangeFromIndex)(model.sheet, range), cursorFallbackRange.from)).forEach(({ value }) => {
203
+ model.sheet.ranges.filter(({ range, key }) => key === "style" && (0, import_compute3.inRange)((0, import_chunk_4LSYTNS4.rangeFromIndex)(model.sheet, range), cursorFallbackRange.from)).forEach(({ value }) => {
204
204
  state[value] = true;
205
205
  });
206
206
  }
@@ -224,7 +224,7 @@ var createStyleActions = (state) => Object.entries(styles).map(([styleValue, ico
224
224
  label: [
225
225
  `range value ${styleValue} label`,
226
226
  {
227
- ns: import_chunk_NLDXUFDG.SHEET_PLUGIN
227
+ ns: import_chunk_MLU6KRQN.SHEET_PLUGIN
228
228
  }
229
229
  ],
230
230
  checked: !!state[styleValue]
@@ -251,14 +251,14 @@ var createStyle = (state) => {
251
251
  };
252
252
  };
253
253
  var useToolbarAction = (state) => {
254
- const { model, cursorFallbackRange, cursor } = (0, import_chunk_ZPWW4LPY.useSheetContext)();
254
+ const { model, cursorFallbackRange, cursor } = (0, import_chunk_2KCZUH72.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_E3RXOEL6.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_4LSYTNS4.rangeFromIndex)(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
260
260
  const nextRangeEntity = {
261
- range: (0, import_chunk_E3RXOEL6.rangeToIndex)(model.sheet, cursorFallbackRange),
261
+ range: (0, import_chunk_4LSYTNS4.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_E3RXOEL6.alignKey] = value;
269
+ state[import_chunk_4LSYTNS4.alignKey] = value;
270
270
  } else if (model.sheet.ranges[index].value === value) {
271
271
  model.sheet.ranges?.splice(index, 1);
272
- state[import_chunk_E3RXOEL6.alignKey] = void 0;
272
+ state[import_chunk_4LSYTNS4.alignKey] = void 0;
273
273
  } else {
274
274
  model.sheet.ranges?.splice(index, 1, nextRangeEntity);
275
- state[import_chunk_E3RXOEL6.alignKey] = value;
275
+ state[import_chunk_4LSYTNS4.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_E3RXOEL6.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_4LSYTNS4.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_ZPWW4LPY.completeCellRangeToThreadCursor)(cursorFallbackRange),
292
+ cursor: (0, import_chunk_2KCZUH72.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_ZPWW4LPY.useComputeGraph)(space);
349
- return graph ? /* @__PURE__ */ import_react.default.createElement(import_chunk_ZPWW4LPY.SheetProvider, {
348
+ const graph = (0, import_chunk_2KCZUH72.useComputeGraph)(space);
349
+ return graph ? /* @__PURE__ */ import_react.default.createElement(import_chunk_2KCZUH72.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_ZPWW4LPY.GridSheet, null), /* @__PURE__ */ import_react.default.createElement(FunctionEditor, null))) : null;
361
+ }), /* @__PURE__ */ import_react.default.createElement(import_chunk_2KCZUH72.GridSheet, null), /* @__PURE__ */ import_react.default.createElement(FunctionEditor, null))) : null;
362
362
  };
363
363
  var SheetContainer_default = SheetContainer;
364
- //# sourceMappingURL=SheetContainer-TJ3JQLWM.cjs.map
364
+ //# sourceMappingURL=SheetContainer-NNIZN4AK.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_ZPWW4LPY_exports = {};
30
- __export(chunk_ZPWW4LPY_exports, {
29
+ var chunk_2KCZUH72_exports = {};
30
+ __export(chunk_2KCZUH72_exports, {
31
31
  ComputeGraphContextProvider: () => ComputeGraphContextProvider,
32
32
  GridSheet: () => GridSheet,
33
33
  RangeList: () => RangeList,
@@ -37,10 +37,10 @@ __export(chunk_ZPWW4LPY_exports, {
37
37
  useComputeGraph: () => useComputeGraph,
38
38
  useSheetContext: () => useSheetContext
39
39
  });
40
- module.exports = __toCommonJS(chunk_ZPWW4LPY_exports);
41
- var import_chunk_E3RXOEL6 = require("./chunk-E3RXOEL6.cjs");
40
+ module.exports = __toCommonJS(chunk_2KCZUH72_exports);
42
41
  var import_chunk_P4KSGZSS = require("./chunk-P4KSGZSS.cjs");
43
- var import_chunk_NLDXUFDG = require("./chunk-NLDXUFDG.cjs");
42
+ var import_chunk_4LSYTNS4 = require("./chunk-4LSYTNS4.cjs");
43
+ var import_chunk_MLU6KRQN = require("./chunk-MLU6KRQN.cjs");
44
44
  var import_react = __toESM(require("react"));
45
45
  var import_debug = require("@dxos/debug");
46
46
  var import_react_hooks = require("@dxos/react-hooks");
@@ -67,6 +67,7 @@ var import_react6 = require("react");
67
67
  var import_app_framework2 = require("@dxos/app-framework");
68
68
  var import_async = require("@dxos/async");
69
69
  var import_compute4 = require("@dxos/compute");
70
+ var import_echo_schema2 = require("@dxos/echo-schema");
70
71
  var import_types = require("@dxos/plugin-thread/types");
71
72
  var import_echo2 = require("@dxos/react-client/echo");
72
73
  var import_react7 = __toESM(require("react"));
@@ -96,7 +97,7 @@ var useComputeGraph = (space) => {
96
97
  return graph;
97
98
  };
98
99
  var RangeList = ({ sheet }) => {
99
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_NLDXUFDG.SHEET_PLUGIN);
100
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_MLU6KRQN.SHEET_PLUGIN);
100
101
  const handleSelectRange = (range) => {
101
102
  };
102
103
  const handleDeleteRange = (0, import_react2.useCallback)((range) => {
@@ -109,7 +110,7 @@ var RangeList = ({ sheet }) => {
109
110
  className: "p-2 text-sm font-semibold"
110
111
  }, t("range list heading")), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.Root, {
111
112
  items: sheet.ranges,
112
- isItem: import_echo_schema.S.is(import_chunk_E3RXOEL6.Range)
113
+ isItem: import_echo_schema.S.is(import_chunk_4LSYTNS4.Range)
113
114
  }, ({ items: ranges }) => ranges.map((range, i) => /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.Item, {
114
115
  key: i,
115
116
  item: range,
@@ -120,7 +121,7 @@ var RangeList = ({ sheet }) => {
120
121
  }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.ItemDragHandle, null), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.ItemTitle, {
121
122
  onClick: () => handleSelectRange(range)
122
123
  }, t("range title", {
123
- position: (0, import_compute.rangeToA1Notation)((0, import_chunk_E3RXOEL6.rangeFromIndex)(sheet, range.range)),
124
+ position: (0, import_compute.rangeToA1Notation)((0, import_chunk_4LSYTNS4.rangeFromIndex)(sheet, range.range)),
124
125
  key: t(`range key ${range.key} label`),
125
126
  value: t(`range value ${range.value} label`)
126
127
  })), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.ItemDeleteButton, {
@@ -150,21 +151,28 @@ var parseThreadAnchorAsCellRange = (cursor) => {
150
151
  };
151
152
  var useUpdateFocusedCellOnThreadSelection = (grid) => {
152
153
  const { model, setActiveRefs } = useSheetContext();
153
- const scrollIntoViewResolver = (0, import_react6.useMemo)(() => (0, import_app_framework2.createResolver)(import_app_framework2.LayoutAction.ScrollIntoView, ({ cursor, ref }) => {
154
- setActiveRefs(ref);
155
- const range = parseThreadAnchorAsCellRange(cursor);
156
- range && grid?.setFocus({
157
- ...range.to,
158
- plane: "grid"
159
- }, true);
160
- }, {
161
- disposition: "hoist",
162
- filter: (data) => data.id === (0, import_echo2.fullyQualifiedId)(model.sheet) && !!data.cursor
154
+ const scrollIntoViewResolver = (0, import_react6.useMemo)(() => (0, import_app_framework2.createResolver)({
155
+ intent: import_app_framework2.LayoutAction.ScrollIntoView,
156
+ position: "hoist",
157
+ filter: (data) => {
158
+ if (!import_echo_schema2.S.is(import_app_framework2.LayoutAction.ScrollIntoView.fields.input)(data)) {
159
+ return false;
160
+ }
161
+ return data.subject === (0, import_echo2.fullyQualifiedId)(model.sheet) && !!data.options?.cursor;
162
+ },
163
+ resolve: ({ options: { cursor, ref } }) => {
164
+ setActiveRefs(ref);
165
+ const range = parseThreadAnchorAsCellRange(cursor);
166
+ range && grid?.setFocus({
167
+ ...range.to,
168
+ plane: "grid"
169
+ }, true);
170
+ }
163
171
  }), [
164
172
  model.sheet,
165
173
  setActiveRefs
166
174
  ]);
167
- (0, import_app_framework2.useIntentResolver)(import_chunk_NLDXUFDG.SHEET_PLUGIN, scrollIntoViewResolver);
175
+ (0, import_app_framework2.useIntentResolver)(import_chunk_MLU6KRQN.SHEET_PLUGIN, scrollIntoViewResolver);
168
176
  };
169
177
  var useSelectThreadOnCellFocus = () => {
170
178
  const { model, cursor } = useSheetContext();
@@ -241,7 +249,7 @@ var projectCellProps = (model, col, row) => {
241
249
  row
242
250
  };
243
251
  const rawValue = model.getValue(address);
244
- const ranges = model.sheet.ranges?.filter(({ range }) => (0, import_compute3.inRange)((0, import_chunk_E3RXOEL6.rangeFromIndex)(model.sheet, range), address));
252
+ const ranges = model.sheet.ranges?.filter(({ range }) => (0, import_compute3.inRange)((0, import_chunk_4LSYTNS4.rangeFromIndex)(model.sheet, range), address));
245
253
  const threadRefs = model.sheet.threads?.filter((thread) => {
246
254
  const range = thread.target?.anchor && parseThreadAnchorAsCellRange(thread.target.anchor);
247
255
  return thread && range ? (0, import_compute3.inRange)(range, address) : false;
@@ -249,7 +257,7 @@ var projectCellProps = (model, col, row) => {
249
257
  const description = model.getValueDescription(address);
250
258
  const type = description?.type;
251
259
  const format = description?.format;
252
- const classNames = ranges?.map(import_chunk_E3RXOEL6.cellClassNameForRange).reverse();
260
+ const classNames = ranges?.map(import_chunk_4LSYTNS4.cellClassNameForRange).reverse();
253
261
  return {
254
262
  value: (0, import_react_ui_form.parseValue)({
255
263
  type,
@@ -282,7 +290,7 @@ var gridCellGetter = (model) => {
282
290
  };
283
291
  var rowLabelCell = (row) => ({
284
292
  value: (0, import_react_ui_grid2.rowToA1Notation)(row),
285
- className: "text-end !pie-1 text-subdued",
293
+ className: "text-end pie-1 text-subdued",
286
294
  resizeHandle: "row"
287
295
  });
288
296
  var colLabelCell = (col) => ({
@@ -427,7 +435,7 @@ var SheetProviderImpl = ({ model, onInfo, ignoreAttention, children, __gridScope
427
435
  }, children);
428
436
  };
429
437
  var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo }) => {
430
- const model = (0, import_chunk_E3RXOEL6.useSheetModel)(graph, sheet, {
438
+ const model = (0, import_chunk_4LSYTNS4.useSheetModel)(graph, sheet, {
431
439
  readonly
432
440
  });
433
441
  return !model ? null : /* @__PURE__ */ import_react7.default.createElement(import_react_ui_grid3.Grid.Root, {
@@ -483,7 +491,7 @@ var sheetColDefault = {
483
491
  }
484
492
  };
485
493
  var GridSheet = () => {
486
- const { t } = (0, import_react_ui2.useTranslation)(import_chunk_NLDXUFDG.SHEET_PLUGIN);
494
+ const { t } = (0, import_react_ui2.useTranslation)(import_chunk_MLU6KRQN.SHEET_PLUGIN);
487
495
  const { id, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, ignoreAttention } = useSheetContext();
488
496
  const [dxGrid, setDxGrid] = (0, import_react4.useState)(null);
489
497
  const [extraplanarFocus, setExtraplanarFocus] = (0, import_react4.useState)(null);
@@ -686,13 +694,13 @@ var GridSheet = () => {
686
694
  switch (operation) {
687
695
  case "insert-before":
688
696
  case "insert-after":
689
- return dispatch((0, import_app_framework.createIntent)(import_chunk_E3RXOEL6.SheetAction.InsertAxis, {
697
+ return dispatch((0, import_app_framework.createIntent)(import_chunk_4LSYTNS4.SheetAction.InsertAxis, {
690
698
  model,
691
699
  axis: contextMenuAxis,
692
700
  index: contextMenuOpen[contextMenuAxis] + (operation === "insert-before" ? 0 : 1)
693
701
  }));
694
702
  case "drop":
695
- return dispatch((0, import_app_framework.createIntent)(import_chunk_E3RXOEL6.SheetAction.DropAxis, {
703
+ return dispatch((0, import_app_framework.createIntent)(import_chunk_4LSYTNS4.SheetAction.DropAxis, {
696
704
  model,
697
705
  axis: contextMenuAxis,
698
706
  axisIndex: model.sheet[contextMenuAxis === "row" ? "rows" : "columns"][contextMenuOpen[contextMenuAxis]]
@@ -744,8 +752,8 @@ var GridSheet = () => {
744
752
  onBlur: handleBlur
745
753
  }), /* @__PURE__ */ import_react4.default.createElement(import_react_ui_grid.Grid.Content, {
746
754
  initialCells,
747
- limitColumns: import_chunk_E3RXOEL6.DEFAULT_COLS,
748
- limitRows: import_chunk_E3RXOEL6.DEFAULT_ROWS,
755
+ limitColumns: import_chunk_4LSYTNS4.DEFAULT_COLS,
756
+ limitRows: import_chunk_4LSYTNS4.DEFAULT_ROWS,
749
757
  columns,
750
758
  rows,
751
759
  onAxisResize: handleAxisResize,
@@ -792,7 +800,7 @@ var GridSheet = () => {
792
800
  icon: "ph--backspace--regular"
793
801
  }), /* @__PURE__ */ import_react4.default.createElement("span", null, t(`delete ${contextMenuAxis} label`)))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Arrow, null))));
794
802
  };
795
- var SheetContainer = (0, import_react3.lazy)(() => import("./SheetContainer-TJ3JQLWM.cjs"));
803
+ var SheetContainer = (0, import_react3.lazy)(() => import("./SheetContainer-NNIZN4AK.cjs"));
796
804
  // Annotate the CommonJS export names for ESM import in node:
797
805
  0 && (module.exports = {
798
806
  ComputeGraphContextProvider,
@@ -804,4 +812,4 @@ var SheetContainer = (0, import_react3.lazy)(() => import("./SheetContainer-TJ3J
804
812
  useComputeGraph,
805
813
  useSheetContext
806
814
  });
807
- //# sourceMappingURL=chunk-ZPWW4LPY.cjs.map
815
+ //# sourceMappingURL=chunk-2KCZUH72.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 { useCallback, useEffect, useMemo } from 'react';\n\nimport {\n createIntent,\n createResolver,\n LayoutAction,\n useIntentResolver,\n useIntentDispatcher,\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 { 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 void dispatch(createIntent(ThreadAction.Select, { current: fullyQualifiedId(closestThread) }));\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_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", "createIntent", "ThreadAction", "Select", "current", "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_E3RXOEL6_exports = {};
20
- __export(chunk_E3RXOEL6_exports, {
19
+ var chunk_4LSYTNS4_exports = {};
20
+ __export(chunk_4LSYTNS4_exports, {
21
21
  ApiError: () => ApiError,
22
22
  CellValue: () => CellValue,
23
23
  DEFAULT_COLS: () => DEFAULT_COLS,
@@ -48,8 +48,8 @@ __export(chunk_E3RXOEL6_exports, {
48
48
  styleKey: () => styleKey,
49
49
  useSheetModel: () => useSheetModel
50
50
  });
51
- module.exports = __toCommonJS(chunk_E3RXOEL6_exports);
52
- var import_chunk_NLDXUFDG = require("./chunk-NLDXUFDG.cjs");
51
+ module.exports = __toCommonJS(chunk_4LSYTNS4_exports);
52
+ var import_chunk_MLU6KRQN = require("./chunk-MLU6KRQN.cjs");
53
53
  var import_echo_schema = require("@dxos/echo-schema");
54
54
  var import_types = require("@dxos/plugin-space/types");
55
55
  var import_echo_schema2 = require("@dxos/echo-schema");
@@ -732,7 +732,7 @@ var useSheetModel = (graph, sheet, { readonly } = {}) => {
732
732
  };
733
733
  var SheetAction;
734
734
  (function(SheetAction2) {
735
- const SHEET_ACTION = `${import_chunk_NLDXUFDG.SHEET_PLUGIN}/action`;
735
+ const SHEET_ACTION = `${import_chunk_MLU6KRQN.SHEET_PLUGIN}/action`;
736
736
  class Create extends import_echo_schema2.S.TaggedClass()(`${SHEET_ACTION}/create`, {
737
737
  input: import_echo_schema2.S.Struct({
738
738
  name: import_echo_schema2.S.optional(import_echo_schema2.S.String)
@@ -932,4 +932,4 @@ var mapFormulaIndicesToRefs = (sheet, formula) => {
932
932
  styleKey,
933
933
  useSheetModel
934
934
  });
935
- //# sourceMappingURL=chunk-E3RXOEL6.cjs.map
935
+ //# sourceMappingURL=chunk-4LSYTNS4.cjs.map
@@ -16,23 +16,26 @@ 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_NLDXUFDG_exports = {};
20
- __export(chunk_NLDXUFDG_exports, {
19
+ var chunk_MLU6KRQN_exports = {};
20
+ __export(chunk_MLU6KRQN_exports, {
21
21
  SHEET_PLUGIN: () => SHEET_PLUGIN,
22
22
  meta: () => meta
23
23
  });
24
- module.exports = __toCommonJS(chunk_NLDXUFDG_exports);
24
+ module.exports = __toCommonJS(chunk_MLU6KRQN_exports);
25
25
  var SHEET_PLUGIN = "dxos.org/plugin/sheet";
26
26
  var meta = {
27
27
  id: SHEET_PLUGIN,
28
28
  name: "Sheet",
29
- description: "A simple spreadsheet plugin.",
29
+ description: "Sheets in Composer are simple spreadsheets which allow you to leverage custom functions inside of cell grids. Leverage more than 400 pre-built formulas like Sum, Average, Count, Max, Min along with many others. You can also deploy your own custom functions using the Scripts plugin. ",
30
30
  icon: "ph--grid-nine--regular",
31
- source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet"
31
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet",
32
+ screenshots: [
33
+ "https://dxos.network/plugin-details-sheet-dark.png"
34
+ ]
32
35
  };
33
36
  // Annotate the CommonJS export names for ESM import in node:
34
37
  0 && (module.exports = {
35
38
  SHEET_PLUGIN,
36
39
  meta
37
40
  });
38
- //# sourceMappingURL=chunk-NLDXUFDG.cjs.map
41
+ //# sourceMappingURL=chunk-MLU6KRQN.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const SHEET_PLUGIN = 'dxos.org/plugin/sheet';\n\nexport const meta = {\n id: SHEET_PLUGIN,\n name: 'Sheet',\n description:\n 'Sheets in Composer are simple spreadsheets which allow you to leverage custom functions inside of cell grids. Leverage more than 400 pre-built formulas like Sum, Average, Count, Max, Min along with many others. You can also deploy your own custom functions using the Scripts plugin. ',\n icon: 'ph--grid-nine--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet',\n screenshots: ['https://dxos.network/plugin-details-sheet-dark.png'],\n} satisfies PluginMeta;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,eAAe;AAErB,IAAMC,OAAO;EAClBC,IAAIF;EACJG,MAAM;EACNC,aACE;EACFC,MAAM;EACNC,QAAQ;EACRC,aAAa;IAAC;;AAChB;",
6
+ "names": ["SHEET_PLUGIN", "meta", "id", "name", "description", "icon", "source", "screenshots"]
7
+ }