@dxos/plugin-sheet 0.7.2 → 0.7.3-staging.0905f03

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 (128) hide show
  1. package/dist/lib/browser/{SheetContainer-YAMIOFC6.mjs → SheetContainer-KCLT6PEO.mjs} +8 -6
  2. package/dist/lib/browser/SheetContainer-KCLT6PEO.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-QHQFM7LV.mjs → chunk-E5WQ7U7G.mjs} +77 -78
  4. package/dist/lib/browser/chunk-E5WQ7U7G.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-VMSX6Z4X.mjs → chunk-F3HE6D3J.mjs} +76 -26
  6. package/dist/lib/browser/chunk-F3HE6D3J.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-BVUN7SHF.mjs → chunk-JXFPOYNA.mjs} +1 -1
  8. package/dist/lib/browser/chunk-JXFPOYNA.mjs.map +7 -0
  9. package/dist/lib/browser/{compute-graph-GGWUX644.mjs → compute-graph-SNUS7HOH.mjs} +3 -3
  10. package/dist/lib/browser/index.mjs +84 -32
  11. package/dist/lib/browser/index.mjs.map +3 -3
  12. package/dist/lib/browser/meta.json +1 -1
  13. package/dist/lib/browser/types.mjs +1 -1
  14. package/dist/lib/node/{SheetContainer-BSDHHYXE.cjs → SheetContainer-VVVRYTQG.cjs} +32 -31
  15. package/dist/lib/node/SheetContainer-VVVRYTQG.cjs.map +7 -0
  16. package/dist/lib/node/{chunk-J5ZFWMOD.cjs → chunk-45YW2DX2.cjs} +96 -101
  17. package/dist/lib/node/chunk-45YW2DX2.cjs.map +7 -0
  18. package/dist/lib/node/{chunk-O7XR4R7Y.cjs → chunk-KSEEI5VC.cjs} +87 -27
  19. package/dist/lib/node/chunk-KSEEI5VC.cjs.map +7 -0
  20. package/dist/lib/node/{chunk-AWKOWDMI.cjs → chunk-OWH2EUHZ.cjs} +4 -4
  21. package/dist/lib/node/chunk-OWH2EUHZ.cjs.map +7 -0
  22. package/dist/lib/node/{compute-graph-KGWA2QLE.cjs → compute-graph-WILPHO4A.cjs} +20 -20
  23. package/dist/lib/node/{compute-graph-KGWA2QLE.cjs.map → compute-graph-WILPHO4A.cjs.map} +2 -2
  24. package/dist/lib/node/index.cjs +101 -47
  25. package/dist/lib/node/index.cjs.map +3 -3
  26. package/dist/lib/node/meta.json +1 -1
  27. package/dist/lib/node/types.cjs +6 -6
  28. package/dist/lib/node/types.cjs.map +1 -1
  29. package/dist/lib/node-esm/{SheetContainer-T47T2NYJ.mjs → SheetContainer-LSBE6Q4X.mjs} +8 -6
  30. package/dist/lib/node-esm/SheetContainer-LSBE6Q4X.mjs.map +7 -0
  31. package/dist/lib/node-esm/{chunk-CR4K75EL.mjs → chunk-6JF2AHKO.mjs} +76 -26
  32. package/dist/lib/node-esm/chunk-6JF2AHKO.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-UIBWRHW7.mjs → chunk-BVS2IQRO.mjs} +1 -1
  34. package/dist/lib/node-esm/chunk-BVS2IQRO.mjs.map +7 -0
  35. package/dist/lib/node-esm/{chunk-6GSTEN7N.mjs → chunk-NYDNXI7L.mjs} +77 -78
  36. package/dist/lib/node-esm/chunk-NYDNXI7L.mjs.map +7 -0
  37. package/dist/lib/node-esm/{compute-graph-2SCZT7N5.mjs → compute-graph-S6CVN7RS.mjs} +3 -3
  38. package/dist/lib/node-esm/index.mjs +84 -32
  39. package/dist/lib/node-esm/index.mjs.map +3 -3
  40. package/dist/lib/node-esm/meta.json +1 -1
  41. package/dist/lib/node-esm/types.mjs +1 -1
  42. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  43. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  44. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +1 -0
  45. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  46. package/dist/types/src/components/GridSheet/util.d.ts +0 -2
  47. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
  48. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +2 -0
  49. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  50. package/dist/types/src/components/SheetObjectSettings.d.ts +7 -0
  51. package/dist/types/src/components/SheetObjectSettings.d.ts.map +1 -0
  52. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  53. package/dist/types/src/components/index.d.ts +1 -0
  54. package/dist/types/src/components/index.d.ts.map +1 -1
  55. package/dist/types/src/defs/sheet-range-types.d.ts.map +1 -1
  56. package/dist/types/src/defs/types.d.ts +2 -4
  57. package/dist/types/src/defs/types.d.ts.map +1 -1
  58. package/dist/types/src/defs/util.d.ts +8 -0
  59. package/dist/types/src/defs/util.d.ts.map +1 -1
  60. package/dist/types/src/extensions/editor/extension.d.ts +2 -1
  61. package/dist/types/src/extensions/editor/extension.d.ts.map +1 -1
  62. package/dist/types/src/index.d.ts +1 -0
  63. package/dist/types/src/index.d.ts.map +1 -1
  64. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  65. package/dist/types/src/model/sheet-model.d.ts +0 -4
  66. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  67. package/dist/types/src/model/testing.d.ts +6 -0
  68. package/dist/types/src/model/testing.d.ts.map +1 -0
  69. package/dist/types/src/testing/data.d.ts +3 -0
  70. package/dist/types/src/testing/data.d.ts.map +1 -0
  71. package/dist/types/src/testing/index.d.ts +1 -0
  72. package/dist/types/src/testing/index.d.ts.map +1 -1
  73. package/dist/types/src/testing/playwright/playwright.config.d.ts +3 -0
  74. package/dist/types/src/testing/playwright/playwright.config.d.ts.map +1 -0
  75. package/dist/types/src/testing/playwright/sheet-manager.d.ts +24 -0
  76. package/dist/types/src/testing/playwright/sheet-manager.d.ts.map +1 -0
  77. package/dist/types/src/testing/playwright/sheet.spec.d.ts +2 -0
  78. package/dist/types/src/testing/playwright/sheet.spec.d.ts.map +1 -0
  79. package/dist/types/src/testing/testing.d.ts +1 -2
  80. package/dist/types/src/testing/testing.d.ts.map +1 -1
  81. package/dist/types/src/translations.d.ts +61 -0
  82. package/dist/types/src/translations.d.ts.map +1 -1
  83. package/dist/types/src/types.d.ts +2 -3
  84. package/dist/types/src/types.d.ts.map +1 -1
  85. package/package.json +40 -37
  86. package/src/SheetPlugin.tsx +9 -21
  87. package/src/components/FunctionEditor/FunctionEditor.tsx +2 -2
  88. package/src/components/GridSheet/GridSheet.stories.tsx +2 -0
  89. package/src/components/GridSheet/GridSheet.tsx +18 -8
  90. package/src/components/GridSheet/util.ts +1 -9
  91. package/src/components/SheetContainer/SheetContainer.stories.tsx +44 -2
  92. package/src/components/SheetObjectSettings.tsx +38 -0
  93. package/src/components/Toolbar/Toolbar.tsx +7 -1
  94. package/src/components/index.ts +1 -0
  95. package/src/compute-graph/compute-graph.stories.tsx +1 -1
  96. package/src/compute-graph/compute-graph.test.ts +1 -1
  97. package/src/defs/sheet-range-types.ts +3 -0
  98. package/src/defs/types.ts +3 -1
  99. package/src/defs/util.ts +32 -1
  100. package/src/extensions/editor/extension.ts +3 -3
  101. package/src/index.ts +3 -0
  102. package/src/integrations/thread-ranges.ts +2 -0
  103. package/src/model/sheet-model.test.ts +35 -1
  104. package/src/model/sheet-model.ts +5 -17
  105. package/src/model/testing.ts +35 -0
  106. package/src/sanity.test.ts +1 -1
  107. package/src/testing/data.ts +33 -0
  108. package/src/testing/index.ts +1 -0
  109. package/src/testing/playwright/playwright.config.ts +18 -0
  110. package/src/testing/playwright/sheet-manager.ts +91 -0
  111. package/src/testing/playwright/sheet.spec.ts +78 -0
  112. package/src/testing/testing.tsx +1 -31
  113. package/src/translations.ts +4 -0
  114. package/src/types.ts +1 -3
  115. package/dist/lib/browser/SheetContainer-YAMIOFC6.mjs.map +0 -7
  116. package/dist/lib/browser/chunk-BVUN7SHF.mjs.map +0 -7
  117. package/dist/lib/browser/chunk-QHQFM7LV.mjs.map +0 -7
  118. package/dist/lib/browser/chunk-VMSX6Z4X.mjs.map +0 -7
  119. package/dist/lib/node/SheetContainer-BSDHHYXE.cjs.map +0 -7
  120. package/dist/lib/node/chunk-AWKOWDMI.cjs.map +0 -7
  121. package/dist/lib/node/chunk-J5ZFWMOD.cjs.map +0 -7
  122. package/dist/lib/node/chunk-O7XR4R7Y.cjs.map +0 -7
  123. package/dist/lib/node-esm/SheetContainer-T47T2NYJ.mjs.map +0 -7
  124. package/dist/lib/node-esm/chunk-6GSTEN7N.mjs.map +0 -7
  125. package/dist/lib/node-esm/chunk-CR4K75EL.mjs.map +0 -7
  126. package/dist/lib/node-esm/chunk-UIBWRHW7.mjs.map +0 -7
  127. /package/dist/lib/browser/{compute-graph-GGWUX644.mjs.map → compute-graph-SNUS7HOH.mjs.map} +0 -0
  128. /package/dist/lib/node-esm/{compute-graph-2SCZT7N5.mjs.map → compute-graph-S6CVN7RS.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_BSDHHYXE_exports = {};
30
- __export(SheetContainer_BSDHHYXE_exports, {
29
+ var SheetContainer_VVVRYTQG_exports = {};
30
+ __export(SheetContainer_VVVRYTQG_exports, {
31
31
  default: () => SheetContainer_default
32
32
  });
33
- module.exports = __toCommonJS(SheetContainer_BSDHHYXE_exports);
34
- var import_chunk_J5ZFWMOD = require("./chunk-J5ZFWMOD.cjs");
35
- var import_chunk_O7XR4R7Y = require("./chunk-O7XR4R7Y.cjs");
36
- var import_chunk_AWKOWDMI = require("./chunk-AWKOWDMI.cjs");
33
+ module.exports = __toCommonJS(SheetContainer_VVVRYTQG_exports);
34
+ var import_chunk_45YW2DX2 = require("./chunk-45YW2DX2.cjs");
35
+ var import_chunk_KSEEI5VC = require("./chunk-KSEEI5VC.cjs");
36
+ var import_chunk_OWH2EUHZ = require("./chunk-OWH2EUHZ.cjs");
37
37
  var import_chunk_2ZVZI2KJ = require("./chunk-2ZVZI2KJ.cjs");
38
38
  var import_react = __toESM(require("react"));
39
39
  var import_react_ui_stack = require("@dxos/react-ui-stack");
@@ -46,13 +46,13 @@ var import_react_ui2 = require("@dxos/react-ui");
46
46
  var import_react_ui_attention = require("@dxos/react-ui-attention");
47
47
  var import_util = require("@dxos/util");
48
48
  var FunctionEditor = () => {
49
- const { model, cursor, range } = (0, import_chunk_J5ZFWMOD.useSheetContext)();
49
+ const { model, cursor, range } = (0, import_chunk_45YW2DX2.useSheetContext)();
50
50
  let value;
51
51
  let formula = false;
52
52
  if (cursor) {
53
53
  value = model.getCellValue(cursor);
54
- if ((0, import_chunk_O7XR4R7Y.isFormula)(value)) {
55
- value = model.graph.mapFunctionBindingFromId(model.mapFormulaIndicesToRefs(value));
54
+ if ((0, import_chunk_KSEEI5VC.isFormula)(value)) {
55
+ value = model.graph.mapFunctionBindingFromId((0, import_chunk_KSEEI5VC.mapFormulaIndicesToRefs)(model.sheet, value));
56
56
  formula = true;
57
57
  } else if (value != null) {
58
58
  value = String(value);
@@ -64,7 +64,7 @@ var FunctionEditor = () => {
64
64
  className: "flex gap-4 items-center"
65
65
  }, /* @__PURE__ */ import_react2.default.createElement("div", {
66
66
  className: "flex w-16 items-center font-mono"
67
- }, range && (0, import_chunk_O7XR4R7Y.rangeToA1Notation)(range) || cursor && (0, import_chunk_O7XR4R7Y.addressToA1Notation)(cursor)), /* @__PURE__ */ import_react2.default.createElement("div", {
67
+ }, range && (0, import_chunk_KSEEI5VC.rangeToA1Notation)(range) || cursor && (0, import_chunk_KSEEI5VC.addressToA1Notation)(cursor)), /* @__PURE__ */ import_react2.default.createElement("div", {
68
68
  className: "flex gap-2 items-center"
69
69
  }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Icon, {
70
70
  icon: "ph--function--regular",
@@ -102,16 +102,16 @@ var ToolbarItem = ({ itemType, icon, children, ...props }) => {
102
102
  };
103
103
  var [ToolbarContextProvider, useToolbarContext] = (0, import_react_context.createContext)("Toolbar");
104
104
  var ToolbarRoot = ({ children, role, classNames }) => {
105
- const { id, model, cursorFallbackRange, cursor } = (0, import_chunk_J5ZFWMOD.useSheetContext)();
105
+ const { id, model, cursorFallbackRange, cursor } = (0, import_chunk_45YW2DX2.useSheetContext)();
106
106
  const { hasAttention } = (0, import_react_ui_attention.useAttention)(id);
107
107
  const dispatch = (0, import_app_framework.useIntentDispatcher)();
108
108
  const handleAction = (0, import_react3.useCallback)((action) => {
109
109
  switch (action.key) {
110
110
  case "alignment":
111
111
  if (cursorFallbackRange) {
112
- const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && (0, import_chunk_O7XR4R7Y.inRange)((0, import_chunk_O7XR4R7Y.rangeFromIndex)(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
112
+ const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && (0, import_chunk_KSEEI5VC.inRange)((0, import_chunk_KSEEI5VC.rangeFromIndex)(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
113
113
  const nextRangeEntity = {
114
- range: (0, import_chunk_O7XR4R7Y.rangeToIndex)(model.sheet, cursorFallbackRange),
114
+ range: (0, import_chunk_KSEEI5VC.rangeToIndex)(model.sheet, cursorFallbackRange),
115
115
  key: action.key,
116
116
  value: action.value
117
117
  };
@@ -126,13 +126,13 @@ var ToolbarRoot = ({ children, role, classNames }) => {
126
126
  break;
127
127
  case "style":
128
128
  if (action.unset) {
129
- const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && cursorFallbackRange && (0, import_chunk_O7XR4R7Y.inRange)((0, import_chunk_O7XR4R7Y.rangeFromIndex)(model.sheet, range.range), cursorFallbackRange.from));
129
+ const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && cursorFallbackRange && (0, import_chunk_KSEEI5VC.inRange)((0, import_chunk_KSEEI5VC.rangeFromIndex)(model.sheet, range.range), cursorFallbackRange.from));
130
130
  if (index >= 0) {
131
131
  model.sheet.ranges?.splice(index, 1);
132
132
  }
133
133
  } else if (cursorFallbackRange) {
134
134
  model.sheet.ranges?.push({
135
- range: (0, import_chunk_O7XR4R7Y.rangeToIndex)(model.sheet, cursorFallbackRange),
135
+ range: (0, import_chunk_KSEEI5VC.rangeToIndex)(model.sheet, cursorFallbackRange),
136
136
  key: action.key,
137
137
  value: action.value
138
138
  });
@@ -143,7 +143,7 @@ var ToolbarRoot = ({ children, role, classNames }) => {
143
143
  void dispatch({
144
144
  action: "dxos.org/plugin/thread/action/create",
145
145
  data: {
146
- cursor: (0, import_chunk_J5ZFWMOD.completeCellRangeToThreadCursor)(cursorFallbackRange),
146
+ cursor: (0, import_chunk_45YW2DX2.completeCellRangeToThreadCursor)(cursorFallbackRange),
147
147
  name: action.cellContent,
148
148
  subject: model.sheet
149
149
  }
@@ -182,10 +182,10 @@ var alignmentOptions = [
182
182
  }
183
183
  ];
184
184
  var Alignment = () => {
185
- const { cursor, model } = (0, import_chunk_J5ZFWMOD.useSheetContext)();
185
+ const { cursor, model } = (0, import_chunk_45YW2DX2.useSheetContext)();
186
186
  const { onAction } = useToolbarContext("Alignment");
187
187
  const { t } = (0, import_react_ui2.useTranslation)(import_chunk_2ZVZI2KJ.SHEET_PLUGIN);
188
- const value = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === import_chunk_O7XR4R7Y.alignKey && (0, import_chunk_O7XR4R7Y.inRange)((0, import_chunk_O7XR4R7Y.rangeFromIndex)(model.sheet, range), cursor))?.value : void 0;
188
+ const value = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === import_chunk_KSEEI5VC.alignKey && (0, import_chunk_KSEEI5VC.inRange)((0, import_chunk_KSEEI5VC.rangeFromIndex)(model.sheet, range), cursor))?.value : void 0;
189
189
  return /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Toolbar.ToggleGroup, {
190
190
  type: "single",
191
191
  value: (
@@ -193,16 +193,17 @@ var Alignment = () => {
193
193
  value ?? "never"
194
194
  ),
195
195
  onValueChange: (value2) => onAction?.({
196
- key: import_chunk_O7XR4R7Y.alignKey,
196
+ key: import_chunk_KSEEI5VC.alignKey,
197
197
  value: value2
198
198
  })
199
199
  }, alignmentOptions.map(({ value: value2, icon }) => /* @__PURE__ */ import_react3.default.createElement(ToolbarItem, {
200
200
  itemType: "toggleGroupItem",
201
201
  key: value2,
202
202
  value: value2,
203
- icon
203
+ icon,
204
+ "data-testid": `grid.toolbar.${import_chunk_KSEEI5VC.alignKey}.${value2}`
204
205
  }, t("toolbar action label", {
205
- key: t(`range key ${import_chunk_O7XR4R7Y.alignKey} label`),
206
+ key: t(`range key ${import_chunk_KSEEI5VC.alignKey} label`),
206
207
  value: t(`range value ${value2} label`)
207
208
  }))));
208
209
  };
@@ -217,10 +218,10 @@ var styleOptions = [
217
218
  }
218
219
  ];
219
220
  var Styles = () => {
220
- const { cursorFallbackRange, model } = (0, import_chunk_J5ZFWMOD.useSheetContext)();
221
+ const { cursorFallbackRange, model } = (0, import_chunk_45YW2DX2.useSheetContext)();
221
222
  const { onAction } = useToolbarContext("Styles");
222
223
  const { t } = (0, import_react_ui2.useTranslation)(import_chunk_2ZVZI2KJ.SHEET_PLUGIN);
223
- const activeValues = cursorFallbackRange ? model.sheet.ranges?.filter(({ range, key }) => key === "style" && (0, import_chunk_O7XR4R7Y.inRange)((0, import_chunk_O7XR4R7Y.rangeFromIndex)(model.sheet, range), cursorFallbackRange.from)).reduce((acc, { value }) => {
224
+ const activeValues = cursorFallbackRange ? model.sheet.ranges?.filter(({ range, key }) => key === "style" && (0, import_chunk_KSEEI5VC.inRange)((0, import_chunk_KSEEI5VC.rangeFromIndex)(model.sheet, range), cursorFallbackRange.from)).reduce((acc, { value }) => {
224
225
  acc.add(value);
225
226
  return acc;
226
227
  }, /* @__PURE__ */ new Set()) : void 0;
@@ -237,19 +238,19 @@ var Styles = () => {
237
238
  },
238
239
  icon
239
240
  }, t("toolbar action label", {
240
- key: t(`range key ${import_chunk_O7XR4R7Y.styleKey} label`),
241
+ key: t(`range key ${import_chunk_KSEEI5VC.styleKey} label`),
241
242
  value: t(`range value ${value} label`)
242
243
  }))));
243
244
  };
244
245
  var Actions = () => {
245
246
  const { onAction } = useToolbarContext("Actions");
246
- const { cursorFallbackRange, cursor, model } = (0, import_chunk_J5ZFWMOD.useSheetContext)();
247
+ const { cursorFallbackRange, cursor, model } = (0, import_chunk_45YW2DX2.useSheetContext)();
247
248
  const { t } = (0, import_react_ui2.useTranslation)(import_chunk_2ZVZI2KJ.SHEET_PLUGIN);
248
249
  const overlapsCommentAnchor = (model.sheet.threads ?? []).filter(import_util.nonNullable).filter((thread) => thread.status !== "resolved").some((thread) => {
249
250
  if (!cursorFallbackRange) {
250
251
  return false;
251
252
  }
252
- return (0, import_chunk_O7XR4R7Y.rangeToIndex)(model.sheet, cursorFallbackRange) === thread.anchor;
253
+ return (0, import_chunk_KSEEI5VC.rangeToIndex)(model.sheet, cursorFallbackRange) === thread.anchor;
253
254
  });
254
255
  const tooltipLabelKey = !cursor ? "no cursor label" : overlapsCommentAnchor ? "selection overlaps existing comment label" : "comment label";
255
256
  return /* @__PURE__ */ import_react3.default.createElement(ToolbarItem, {
@@ -263,7 +264,7 @@ var Actions = () => {
263
264
  }
264
265
  return onAction?.({
265
266
  key: "comment",
266
- value: (0, import_chunk_O7XR4R7Y.rangeToIndex)(model.sheet, cursorFallbackRange),
267
+ value: (0, import_chunk_KSEEI5VC.rangeToIndex)(model.sheet, cursorFallbackRange),
267
268
  cellContent: model.getCellText(cursorFallbackRange.from)
268
269
  });
269
270
  },
@@ -278,8 +279,8 @@ var Toolbar = {
278
279
  Actions
279
280
  };
280
281
  var SheetContainer = ({ space, sheet, role, ignoreAttention }) => {
281
- const graph = (0, import_chunk_J5ZFWMOD.useComputeGraph)(space);
282
- return graph ? /* @__PURE__ */ import_react.default.createElement(import_chunk_J5ZFWMOD.SheetProvider, {
282
+ const graph = (0, import_chunk_45YW2DX2.useComputeGraph)(space);
283
+ return graph ? /* @__PURE__ */ import_react.default.createElement(import_chunk_45YW2DX2.SheetProvider, {
283
284
  sheet,
284
285
  graph,
285
286
  ignoreAttention
@@ -291,7 +292,7 @@ var SheetContainer = ({ space, sheet, role, ignoreAttention }) => {
291
292
  }
292
293
  }, /* @__PURE__ */ import_react.default.createElement(Toolbar.Root, {
293
294
  role
294
- }, /* @__PURE__ */ import_react.default.createElement(Toolbar.Styles, null), /* @__PURE__ */ import_react.default.createElement(Toolbar.Alignment, null), /* @__PURE__ */ import_react.default.createElement(Toolbar.Separator, null), /* @__PURE__ */ import_react.default.createElement(Toolbar.Actions, null)), /* @__PURE__ */ import_react.default.createElement(import_chunk_J5ZFWMOD.GridSheet, null), /* @__PURE__ */ import_react.default.createElement(FunctionEditor, null))) : null;
295
+ }, /* @__PURE__ */ import_react.default.createElement(Toolbar.Styles, null), /* @__PURE__ */ import_react.default.createElement(Toolbar.Alignment, null), /* @__PURE__ */ import_react.default.createElement(Toolbar.Separator, null), /* @__PURE__ */ import_react.default.createElement(Toolbar.Actions, null)), /* @__PURE__ */ import_react.default.createElement(import_chunk_45YW2DX2.GridSheet, null), /* @__PURE__ */ import_react.default.createElement(FunctionEditor, null))) : null;
295
296
  };
296
297
  var SheetContainer_default = SheetContainer;
297
- //# sourceMappingURL=SheetContainer-BSDHHYXE.cjs.map
298
+ //# sourceMappingURL=SheetContainer-VVVRYTQG.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/SheetContainer/SheetContainer.tsx", "../../../src/components/FunctionEditor/FunctionEditor.tsx", "../../../src/components/Toolbar/Toolbar.tsx", "../../../src/components/SheetContainer/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { type SheetType } from '../../types';\nimport { useComputeGraph } from '../ComputeGraph';\nimport { FunctionEditor } from '../FunctionEditor';\nimport { GridSheet } from '../GridSheet';\nimport { SheetProvider } from '../SheetContext';\nimport { Toolbar } from '../Toolbar';\n\nexport const SheetContainer = ({\n space,\n sheet,\n role,\n ignoreAttention,\n}: {\n space: Space;\n sheet: SheetType;\n role?: string;\n ignoreAttention?: boolean;\n}) => {\n const graph = useComputeGraph(space);\n\n return graph ? (\n <SheetProvider sheet={sheet} graph={graph} ignoreAttention={ignoreAttention}>\n <StackItem.Content toolbar statusbar {...(role === 'section' && { classNames: 'aspect-video' })}>\n <Toolbar.Root role={role}>\n <Toolbar.Styles />\n <Toolbar.Alignment />\n <Toolbar.Separator />\n <Toolbar.Actions />\n </Toolbar.Root>\n <GridSheet />\n <FunctionEditor />\n </StackItem.Content>\n </SheetProvider>\n ) : null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Icon } from '@dxos/react-ui';\n\nimport { addressToA1Notation, isFormula, mapFormulaIndicesToRefs, rangeToA1Notation } from '../../defs';\nimport { useSheetContext } from '../SheetContext';\n\nexport const FunctionEditor = () => {\n const { model, cursor, range } = useSheetContext();\n\n let value;\n let formula = false;\n if (cursor) {\n value = model.getCellValue(cursor);\n if (isFormula(value)) {\n value = model.graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(model.sheet, value));\n formula = true;\n } else if (value != null) {\n value = String(value);\n }\n }\n\n return (\n <div className='flex shrink-0 justify-between items-center px-4 py-1 text-sm attention-surface border-bs !border-separator'>\n <div className='flex gap-4 items-center'>\n <div className='flex w-16 items-center font-mono'>\n {(range && rangeToA1Notation(range)) || (cursor && addressToA1Notation(cursor))}\n </div>\n <div className='flex gap-2 items-center'>\n <Icon icon='ph--function--regular' classNames={['text-greenText', formula ? 'visible' : 'invisible']} />\n <span className='font-mono'>{value}</span>\n </div>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren, useCallback } from 'react';\n\nimport { useIntentDispatcher } from '@dxos/app-framework';\nimport {\n Icon,\n type ThemedClassName,\n Toolbar as NaturalToolbar,\n type ToolbarButtonProps as NaturalToolbarButtonProps,\n type ToolbarToggleGroupItemProps as NaturalToolbarToggleGroupItemProps,\n type ToolbarToggleProps as NaturalToolbarToggleProps,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { nonNullable } from '@dxos/util';\n\nimport {\n alignKey,\n type AlignKey,\n type AlignValue,\n type CommentKey,\n type CommentValue,\n inRange,\n rangeFromIndex,\n rangeToIndex,\n styleKey,\n type StyleKey,\n type StyleValue,\n} from '../../defs';\nimport { completeCellRangeToThreadCursor } from '../../integrations';\nimport { SHEET_PLUGIN } from '../../meta';\nimport { type SheetType } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\n//\n// Buttons\n//\n\nconst buttonStyles = 'min-bs-0 p-2';\nconst tooltipProps = { side: 'bottom' as const, classNames: 'z-10' };\n\nconst ToolbarSeparator = () => <div role='separator' className='grow' />;\n\n//\n// ToolbarItem\n//\n\ntype ToolbarItemProps =\n | (NaturalToolbarButtonProps & { itemType: 'button'; icon: string })\n | (NaturalToolbarToggleGroupItemProps & { itemType: 'toggleGroupItem'; icon: string })\n | (NaturalToolbarToggleProps & { itemType: 'toggle'; icon: string });\n\nexport const ToolbarItem = ({ itemType, icon, children, ...props }: ToolbarItemProps) => {\n const Invoker =\n itemType === 'toggleGroupItem'\n ? NaturalToolbar.ToggleGroupItem\n : itemType === 'toggle'\n ? NaturalToolbar.Toggle\n : NaturalToolbar.Button;\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n {/* TODO(thure): type the props spread better. */}\n <Invoker variant='ghost' {...(props as any)} classNames={buttonStyles}>\n <Icon icon={icon} size={5} />\n <span className='sr-only'>{children}</span>\n </Invoker>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content {...tooltipProps}>\n {children}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\n//\n// Root\n//\n\ntype AlignAction = { key: AlignKey; value: AlignValue };\ntype CommentAction = { key: CommentKey; value: CommentValue; cellContent?: string };\ntype StyleAction = { key: StyleKey; value: StyleValue };\n\nexport type ToolbarAction = StyleAction | AlignAction | CommentAction;\nexport type ToolbarActionAnnotated = ToolbarAction & { unset?: boolean };\n\nexport type ToolbarActionType = ToolbarAction['key'];\n\nexport type ToolbarActionHandler = (action: ToolbarActionAnnotated) => void;\n\nexport type ToolbarProps = ThemedClassName<\n PropsWithChildren<{\n role?: string;\n }>\n>;\n\nconst [ToolbarContextProvider, useToolbarContext] = createContext<{\n onAction: (action: ToolbarActionAnnotated) => void;\n}>('Toolbar');\n\ntype Range = SheetType['ranges'][number];\n\nconst ToolbarRoot = ({ children, role, classNames }: ToolbarProps) => {\n const { id, model, cursorFallbackRange, cursor } = useSheetContext();\n const { hasAttention } = useAttention(id);\n const dispatch = useIntentDispatcher();\n\n // TODO(Zan): Externalize the toolbar action handler. E.g., Toolbar/keys should both fire events.\n const handleAction = useCallback(\n (action: ToolbarActionAnnotated) => {\n switch (action.key) {\n case 'alignment':\n if (cursorFallbackRange) {\n const index =\n model.sheet.ranges?.findIndex(\n (range) =>\n range.key === action.key &&\n inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: action.key,\n value: action.value,\n };\n if (index < 0) {\n model.sheet.ranges?.push(nextRangeEntity);\n } else if (model.sheet.ranges![index].value === action.value) {\n model.sheet.ranges?.splice(index, 1);\n } else {\n model.sheet.ranges?.splice(index, 1, nextRangeEntity);\n }\n }\n break;\n case 'style':\n if (action.unset) {\n const index = model.sheet.ranges?.findIndex(\n (range) =>\n range.key === action.key &&\n cursorFallbackRange &&\n inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n );\n if (index >= 0) {\n model.sheet.ranges?.splice(index, 1);\n }\n } else if (cursorFallbackRange) {\n model.sheet.ranges?.push({\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: action.key,\n value: action.value,\n });\n }\n break;\n case 'comment': {\n // TODO(Zan): We shouldn't hardcode the action ID.\n if (cursorFallbackRange) {\n void dispatch({\n action: 'dxos.org/plugin/thread/action/create',\n data: {\n cursor: completeCellRangeToThreadCursor(cursorFallbackRange),\n name: action.cellContent,\n subject: model.sheet,\n },\n });\n }\n }\n }\n },\n [model.sheet, cursorFallbackRange, cursor, dispatch],\n );\n\n return (\n <ToolbarContextProvider onAction={handleAction}>\n <NaturalToolbar.Root classNames={['pli-0.5 attention-surface', !hasAttention && 'opacity-20', classNames]}>\n {children}\n </NaturalToolbar.Root>\n </ToolbarContextProvider>\n );\n};\n\n// TODO(burdon): Generalize.\n// TODO(burdon): Detect and display current state.\ntype ButtonProps<T> = {\n value: T;\n icon: string;\n disabled?: (state: Range) => boolean;\n};\n\n//\n// Alignment\n//\n\nconst alignmentOptions: ButtonProps<AlignValue>[] = [\n { value: 'start', icon: 'ph--text-align-left--regular' },\n { value: 'center', icon: 'ph--text-align-center--regular' },\n { value: 'end', icon: 'ph--text-align-right--regular' },\n];\n\nconst Alignment = () => {\n const { cursor, model } = useSheetContext();\n const { onAction } = useToolbarContext('Alignment');\n const { t } = useTranslation(SHEET_PLUGIN);\n\n // TODO(thure): Can this O(n) call be memoized?\n const value = cursor\n ? model.sheet.ranges?.findLast(\n ({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor),\n )?.value\n : undefined;\n\n return (\n <NaturalToolbar.ToggleGroup\n type='single'\n value={\n // TODO(thure): providing `undefined` leaves the last item active which was active rather than showing none.\n value ?? 'never'\n }\n onValueChange={(value: AlignValue) => onAction?.({ key: alignKey, value })}\n >\n {alignmentOptions.map(({ value, icon }) => (\n <ToolbarItem\n itemType='toggleGroupItem'\n key={value}\n value={value}\n icon={icon}\n data-testid={`grid.toolbar.${alignKey}.${value}`}\n >\n {t('toolbar action label', {\n key: t(`range key ${alignKey} label`),\n value: t(`range value ${value} label`),\n })}\n </ToolbarItem>\n ))}\n </NaturalToolbar.ToggleGroup>\n );\n};\n\nconst styleOptions: ButtonProps<StyleValue>[] = [\n { value: 'highlight', icon: 'ph--highlighter--regular' },\n { value: 'softwrap', icon: 'ph--paragraph--regular' },\n];\n\nconst Styles = () => {\n const { cursorFallbackRange, model } = useSheetContext();\n const { onAction } = useToolbarContext('Styles');\n const { t } = useTranslation(SHEET_PLUGIN);\n\n // TODO(thure): Can this O(n) call be memoized?\n const activeValues = cursorFallbackRange\n ? model.sheet.ranges\n ?.filter(\n ({ range, key }) => key === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .reduce((acc, { value }) => {\n acc.add(value);\n return acc;\n }, new Set())\n : undefined;\n\n return (\n <>\n {styleOptions.map(({ value, icon }) => (\n <ToolbarItem\n itemType='toggle'\n key={value}\n pressed={activeValues?.has(value)}\n onPressedChange={(nextPressed: boolean) => {\n onAction?.({ key: 'style', value, unset: !nextPressed });\n }}\n icon={icon}\n >\n {t('toolbar action label', {\n key: t(`range key ${styleKey} label`),\n value: t(`range value ${value} label`),\n })}\n </ToolbarItem>\n ))}\n </>\n );\n};\n\n//\n// Actions\n//\n\nconst Actions = () => {\n const { onAction } = useToolbarContext('Actions');\n const { cursorFallbackRange, cursor, model } = useSheetContext();\n const { t } = useTranslation(SHEET_PLUGIN);\n\n // TODO(thure): Can this O(n) call be memoized?\n const overlapsCommentAnchor = (model.sheet.threads ?? [])\n .filter(nonNullable)\n .filter((thread) => thread.status !== 'resolved')\n .some((thread) => {\n if (!cursorFallbackRange) {\n return false;\n }\n return rangeToIndex(model.sheet, cursorFallbackRange) === thread.anchor;\n });\n\n const tooltipLabelKey = !cursor\n ? 'no cursor label'\n : overlapsCommentAnchor\n ? 'selection overlaps existing comment label'\n : 'comment label';\n\n return (\n <ToolbarItem\n itemType='button'\n value='comment'\n icon='ph--chat-text--regular'\n data-testid='editor.toolbar.comment'\n onClick={() => {\n if (!cursorFallbackRange) {\n return;\n }\n return onAction?.({\n key: 'comment',\n value: rangeToIndex(model.sheet, cursorFallbackRange),\n cellContent: model.getCellText(cursorFallbackRange.from),\n });\n }}\n disabled={!cursorFallbackRange || overlapsCommentAnchor}\n >\n {t(tooltipLabelKey)}\n </ToolbarItem>\n );\n};\n\nexport const Toolbar = {\n Root: ToolbarRoot,\n Separator: ToolbarSeparator,\n Alignment,\n Styles,\n Actions,\n};\n\nexport { useToolbarContext };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { SheetContainer } from './SheetContainer';\n\nexport default SheetContainer;\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_react_ui", "FunctionEditor", "model", "cursor", "range", "useSheetContext", "value", "formula", "getCellValue", "isFormula", "graph", "mapFunctionBindingFromId", "mapFormulaIndicesToRefs", "sheet", "String", "React", "div", "className", "rangeToA1Notation", "addressToA1Notation", "Icon", "icon", "classNames", "span", "buttonStyles", "tooltipProps", "side", "ToolbarSeparator", "role", "ToolbarItem", "itemType", "children", "props", "Invoker", "NaturalToolbar", "ToggleGroupItem", "Toggle", "Button", "Tooltip", "Root", "Trigger", "asChild", "variant", "size", "Portal", "Content", "Arrow", "ToolbarContextProvider", "useToolbarContext", "createContext", "ToolbarRoot", "id", "cursorFallbackRange", "hasAttention", "useAttention", "dispatch", "useIntentDispatcher", "handleAction", "useCallback", "action", "key", "index", "ranges", "findIndex", "inRange", "rangeFromIndex", "from", "nextRangeEntity", "rangeToIndex", "push", "splice", "unset", "data", "completeCellRangeToThreadCursor", "name", "cellContent", "subject", "onAction", "alignmentOptions", "Alignment", "t", "useTranslation", "SHEET_PLUGIN", "findLast", "alignKey", "undefined", "ToggleGroup", "type", "onValueChange", "map", "data-testid", "styleOptions", "Styles", "activeValues", "filter", "reduce", "acc", "add", "Set", "pressed", "has", "onPressedChange", "nextPressed", "styleKey", "Actions", "overlapsCommentAnchor", "threads", "nonNullable", "thread", "status", "some", "anchor", "tooltipLabelKey", "onClick", "getCellText", "disabled", "Toolbar", "Separator", "SheetContainer", "space", "ignoreAttention", "useComputeGraph", "SheetProvider", "StackItem", "toolbar", "statusbar", "GridSheet"]
7
+ }