@dxos/plugin-sheet 0.6.14-main.7bd9c89 → 0.6.14-main.8b352a0

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 (217) hide show
  1. package/dist/lib/browser/{SheetContainer-AKWROARP.mjs → SheetContainer-R65IDJHN.mjs} +54 -58
  2. package/dist/lib/browser/SheetContainer-R65IDJHN.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-BWN5DZWZ.mjs → chunk-5KVQ5IPW.mjs} +3 -12
  4. package/dist/lib/browser/chunk-5KVQ5IPW.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-FGMFOW6U.mjs → chunk-I2DKJ72A.mjs} +570 -669
  6. package/dist/lib/browser/chunk-I2DKJ72A.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-GSV5QNLD.mjs → chunk-KCYJSOFB.mjs} +252 -33
  8. package/dist/lib/browser/chunk-KCYJSOFB.mjs.map +7 -0
  9. package/dist/lib/browser/{graph-M4IQ76QX.mjs → compute-graph-SJT67236.mjs} +4 -2
  10. package/dist/lib/browser/index.mjs +62 -20
  11. package/dist/lib/browser/index.mjs.map +4 -4
  12. package/dist/lib/browser/meta.json +1 -1
  13. package/dist/lib/browser/types.mjs +1 -1
  14. package/dist/lib/node/{SheetContainer-N5IQGEFL.cjs → SheetContainer-6BO4C5X2.cjs} +52 -62
  15. package/dist/lib/node/SheetContainer-6BO4C5X2.cjs.map +7 -0
  16. package/dist/lib/node/{chunk-NZARD7UP.cjs → chunk-2XJ5I4UF.cjs} +6 -15
  17. package/dist/lib/node/chunk-2XJ5I4UF.cjs.map +7 -0
  18. package/dist/lib/node/{chunk-53BMSUIK.cjs → chunk-DEPJHN47.cjs} +534 -646
  19. package/dist/lib/node/chunk-DEPJHN47.cjs.map +7 -0
  20. package/dist/lib/node/{chunk-5XPK2V4A.cjs → chunk-JF5XNTF3.cjs} +257 -28
  21. package/dist/lib/node/chunk-JF5XNTF3.cjs.map +7 -0
  22. package/dist/lib/node/{graph-Q3N2X26H.cjs → compute-graph-AQBDL7HO.cjs} +21 -19
  23. package/dist/lib/node/compute-graph-AQBDL7HO.cjs.map +7 -0
  24. package/dist/lib/node/index.cjs +70 -31
  25. package/dist/lib/node/index.cjs.map +4 -4
  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-46PBMF2E.mjs → SheetContainer-MJXC5E3P.mjs} +54 -58
  30. package/dist/lib/node-esm/SheetContainer-MJXC5E3P.mjs.map +7 -0
  31. package/dist/lib/node-esm/{chunk-T3PRH7QS.mjs → chunk-25V7WY4R.mjs} +570 -669
  32. package/dist/lib/node-esm/chunk-25V7WY4R.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-WFDTY3IC.mjs → chunk-5TXLF6PL.mjs} +3 -12
  34. package/dist/lib/node-esm/chunk-5TXLF6PL.mjs.map +7 -0
  35. package/dist/lib/node-esm/{chunk-5WPZCXNS.mjs → chunk-XBEHKYO7.mjs} +251 -33
  36. package/dist/lib/node-esm/chunk-XBEHKYO7.mjs.map +7 -0
  37. package/dist/lib/node-esm/{graph-SMPUMOV2.mjs → compute-graph-FRCKXEYK.mjs} +4 -2
  38. package/dist/lib/node-esm/index.mjs +62 -20
  39. package/dist/lib/node-esm/index.mjs.map +4 -4
  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/ComputeGraph/ComputeGraphContextProvider.d.ts +3 -1
  44. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
  45. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  46. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  47. package/dist/types/src/components/GridSheet/util.d.ts +1 -2
  48. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
  49. package/dist/types/src/components/RangeList/RangeList.d.ts +7 -0
  50. package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -0
  51. package/dist/types/src/components/RangeList/index.d.ts +2 -0
  52. package/dist/types/src/components/RangeList/index.d.ts.map +1 -0
  53. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +6 -3
  54. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  55. package/dist/types/src/components/SheetContext/SheetContext.d.ts +7 -5
  56. package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
  57. package/dist/types/src/components/Toolbar/Toolbar.d.ts +1 -1
  58. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  59. package/dist/types/src/components/index.d.ts +5 -2
  60. package/dist/types/src/components/index.d.ts.map +1 -1
  61. package/dist/types/src/compute-graph/compute-graph-registry.d.ts.map +1 -0
  62. package/dist/types/src/{graph → compute-graph}/compute-graph.d.ts +1 -1
  63. package/dist/types/src/compute-graph/compute-graph.d.ts.map +1 -0
  64. package/dist/types/src/compute-graph/compute-graph.stories.d.ts.map +1 -0
  65. package/dist/types/src/compute-graph/compute-graph.test.d.ts.map +1 -0
  66. package/dist/types/src/compute-graph/compute-node.d.ts.map +1 -0
  67. package/dist/types/src/compute-graph/functions/async-function.d.ts.map +1 -0
  68. package/dist/types/src/compute-graph/functions/edge-function.d.ts.map +1 -0
  69. package/dist/types/src/compute-graph/functions/function-defs.d.ts.map +1 -0
  70. package/dist/types/src/compute-graph/functions/index.d.ts.map +1 -0
  71. package/dist/types/src/compute-graph/hyperformula.test.d.ts.map +1 -0
  72. package/dist/types/src/compute-graph/index.d.ts.map +1 -0
  73. package/dist/types/src/compute-graph/testing/index.d.ts.map +1 -0
  74. package/dist/types/src/compute-graph/testing/test-builder.d.ts.map +1 -0
  75. package/dist/types/src/compute-graph/testing/test-plugin.d.ts.map +1 -0
  76. package/dist/types/src/compute-graph/util.d.ts.map +1 -0
  77. package/dist/types/src/defs/index.d.ts +1 -1
  78. package/dist/types/src/defs/index.d.ts.map +1 -1
  79. package/dist/types/src/defs/sheet-range-types.d.ts +1 -1
  80. package/dist/types/src/defs/sheet-range-types.d.ts.map +1 -1
  81. package/dist/types/src/defs/types.d.ts +6 -0
  82. package/dist/types/src/defs/types.d.ts.map +1 -1
  83. package/dist/types/src/defs/util.d.ts +2 -6
  84. package/dist/types/src/defs/util.d.ts.map +1 -1
  85. package/dist/types/src/extensions/compute.d.ts +1 -1
  86. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  87. package/dist/types/src/extensions/editor/extension.d.ts +23 -3
  88. package/dist/types/src/extensions/editor/extension.d.ts.map +1 -1
  89. package/dist/types/src/index.d.ts +1 -1
  90. package/dist/types/src/index.d.ts.map +1 -1
  91. package/dist/types/src/integrations/index.d.ts +2 -0
  92. package/dist/types/src/integrations/index.d.ts.map +1 -0
  93. package/dist/types/src/integrations/thread-ranges.d.ts +7 -0
  94. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -0
  95. package/dist/types/src/model/index.d.ts +1 -1
  96. package/dist/types/src/model/index.d.ts.map +1 -1
  97. package/dist/types/src/model/sheet-model.d.ts +1 -1
  98. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  99. package/dist/types/src/{hooks → model}/useSheetModel.d.ts +1 -1
  100. package/dist/types/src/model/useSheetModel.d.ts.map +1 -0
  101. package/dist/types/src/serializer.d.ts +4 -0
  102. package/dist/types/src/serializer.d.ts.map +1 -0
  103. package/dist/types/src/testing/testing.d.ts +1 -1
  104. package/dist/types/src/testing/testing.d.ts.map +1 -1
  105. package/dist/types/src/translations.d.ts +13 -3
  106. package/dist/types/src/translations.d.ts.map +1 -1
  107. package/dist/types/src/types.d.ts +4 -30
  108. package/dist/types/src/types.d.ts.map +1 -1
  109. package/package.json +43 -50
  110. package/src/SheetPlugin.tsx +25 -12
  111. package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +19 -2
  112. package/src/components/FunctionEditor/FunctionEditor.tsx +5 -5
  113. package/src/components/GridSheet/GridSheet.stories.tsx +3 -1
  114. package/src/components/GridSheet/GridSheet.tsx +118 -22
  115. package/src/components/GridSheet/SheetCellEditor.stories.tsx +1 -1
  116. package/src/components/GridSheet/util.ts +24 -14
  117. package/src/components/RangeList/RangeList.tsx +53 -0
  118. package/src/components/RangeList/index.ts +5 -0
  119. package/src/components/SheetContainer/SheetContainer.stories.tsx +3 -3
  120. package/src/components/SheetContainer/SheetContainer.tsx +10 -4
  121. package/src/components/SheetContext/SheetContext.tsx +43 -20
  122. package/src/components/Toolbar/Toolbar.tsx +44 -41
  123. package/src/components/index.ts +1 -0
  124. package/src/{graph → compute-graph}/compute-graph.stories.tsx +2 -1
  125. package/src/{graph → compute-graph}/compute-graph.ts +5 -2
  126. package/src/{graph → compute-graph}/compute-node.ts +2 -3
  127. package/src/defs/index.ts +1 -1
  128. package/src/defs/sheet-range-types.ts +5 -4
  129. package/src/defs/types.ts +6 -1
  130. package/src/defs/util.ts +3 -19
  131. package/src/extensions/compute.stories.tsx +2 -2
  132. package/src/extensions/compute.ts +2 -2
  133. package/src/extensions/editor/extension.test.ts +1 -1
  134. package/src/extensions/editor/extension.ts +48 -23
  135. package/src/index.ts +2 -2
  136. package/src/integrations/index.ts +5 -0
  137. package/src/integrations/thread-ranges.ts +101 -0
  138. package/src/model/index.ts +1 -1
  139. package/src/model/sheet-model.test.ts +1 -1
  140. package/src/model/sheet-model.ts +13 -8
  141. package/src/{hooks → model}/useSheetModel.ts +1 -1
  142. package/src/serializer.ts +27 -0
  143. package/src/testing/testing.tsx +1 -1
  144. package/src/translations.ts +13 -3
  145. package/src/types.ts +4 -2
  146. package/dist/lib/browser/SheetContainer-AKWROARP.mjs.map +0 -7
  147. package/dist/lib/browser/chunk-BWN5DZWZ.mjs.map +0 -7
  148. package/dist/lib/browser/chunk-FGMFOW6U.mjs.map +0 -7
  149. package/dist/lib/browser/chunk-GSV5QNLD.mjs.map +0 -7
  150. package/dist/lib/node/SheetContainer-N5IQGEFL.cjs.map +0 -7
  151. package/dist/lib/node/chunk-53BMSUIK.cjs.map +0 -7
  152. package/dist/lib/node/chunk-5XPK2V4A.cjs.map +0 -7
  153. package/dist/lib/node/chunk-NZARD7UP.cjs.map +0 -7
  154. package/dist/lib/node/graph-Q3N2X26H.cjs.map +0 -7
  155. package/dist/lib/node-esm/SheetContainer-46PBMF2E.mjs.map +0 -7
  156. package/dist/lib/node-esm/chunk-5WPZCXNS.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-T3PRH7QS.mjs.map +0 -7
  158. package/dist/lib/node-esm/chunk-WFDTY3IC.mjs.map +0 -7
  159. package/dist/types/src/graph/compute-graph-registry.d.ts.map +0 -1
  160. package/dist/types/src/graph/compute-graph.d.ts.map +0 -1
  161. package/dist/types/src/graph/compute-graph.stories.d.ts.map +0 -1
  162. package/dist/types/src/graph/compute-graph.test.d.ts.map +0 -1
  163. package/dist/types/src/graph/compute-node.d.ts.map +0 -1
  164. package/dist/types/src/graph/functions/async-function.d.ts.map +0 -1
  165. package/dist/types/src/graph/functions/edge-function.d.ts.map +0 -1
  166. package/dist/types/src/graph/functions/function-defs.d.ts.map +0 -1
  167. package/dist/types/src/graph/functions/index.d.ts.map +0 -1
  168. package/dist/types/src/graph/hyperformula.test.d.ts.map +0 -1
  169. package/dist/types/src/graph/index.d.ts.map +0 -1
  170. package/dist/types/src/graph/testing/index.d.ts.map +0 -1
  171. package/dist/types/src/graph/testing/test-builder.d.ts.map +0 -1
  172. package/dist/types/src/graph/testing/test-plugin.d.ts.map +0 -1
  173. package/dist/types/src/graph/util.d.ts.map +0 -1
  174. package/dist/types/src/hooks/hooks.stories.d.ts +0 -6
  175. package/dist/types/src/hooks/hooks.stories.d.ts.map +0 -1
  176. package/dist/types/src/hooks/index.d.ts +0 -4
  177. package/dist/types/src/hooks/index.d.ts.map +0 -1
  178. package/dist/types/src/hooks/threads.d.ts +0 -8
  179. package/dist/types/src/hooks/threads.d.ts.map +0 -1
  180. package/dist/types/src/hooks/useComputeGraph.d.ts +0 -7
  181. package/dist/types/src/hooks/useComputeGraph.d.ts.map +0 -1
  182. package/dist/types/src/hooks/useSheetModel.d.ts.map +0 -1
  183. package/dist/types/src/model/decorations.d.ts +0 -26
  184. package/dist/types/src/model/decorations.d.ts.map +0 -1
  185. package/src/hooks/hooks.stories.tsx +0 -53
  186. package/src/hooks/index.ts +0 -7
  187. package/src/hooks/threads.ts +0 -147
  188. package/src/hooks/useComputeGraph.ts +0 -28
  189. package/src/model/decorations.ts +0 -66
  190. /package/dist/lib/browser/{graph-M4IQ76QX.mjs.map → compute-graph-SJT67236.mjs.map} +0 -0
  191. /package/dist/lib/node-esm/{graph-SMPUMOV2.mjs.map → compute-graph-FRCKXEYK.mjs.map} +0 -0
  192. /package/dist/types/src/{graph → compute-graph}/compute-graph-registry.d.ts +0 -0
  193. /package/dist/types/src/{graph → compute-graph}/compute-graph.stories.d.ts +0 -0
  194. /package/dist/types/src/{graph → compute-graph}/compute-graph.test.d.ts +0 -0
  195. /package/dist/types/src/{graph → compute-graph}/compute-node.d.ts +0 -0
  196. /package/dist/types/src/{graph → compute-graph}/functions/async-function.d.ts +0 -0
  197. /package/dist/types/src/{graph → compute-graph}/functions/edge-function.d.ts +0 -0
  198. /package/dist/types/src/{graph → compute-graph}/functions/function-defs.d.ts +0 -0
  199. /package/dist/types/src/{graph → compute-graph}/functions/index.d.ts +0 -0
  200. /package/dist/types/src/{graph → compute-graph}/hyperformula.test.d.ts +0 -0
  201. /package/dist/types/src/{graph → compute-graph}/index.d.ts +0 -0
  202. /package/dist/types/src/{graph → compute-graph}/testing/index.d.ts +0 -0
  203. /package/dist/types/src/{graph → compute-graph}/testing/test-builder.d.ts +0 -0
  204. /package/dist/types/src/{graph → compute-graph}/testing/test-plugin.d.ts +0 -0
  205. /package/dist/types/src/{graph → compute-graph}/util.d.ts +0 -0
  206. /package/src/{graph → compute-graph}/compute-graph-registry.ts +0 -0
  207. /package/src/{graph → compute-graph}/compute-graph.test.ts +0 -0
  208. /package/src/{graph → compute-graph}/functions/async-function.ts +0 -0
  209. /package/src/{graph → compute-graph}/functions/edge-function.ts +0 -0
  210. /package/src/{graph → compute-graph}/functions/function-defs.ts +0 -0
  211. /package/src/{graph → compute-graph}/functions/index.ts +0 -0
  212. /package/src/{graph → compute-graph}/hyperformula.test.ts +0 -0
  213. /package/src/{graph → compute-graph}/index.ts +0 -0
  214. /package/src/{graph → compute-graph}/testing/index.ts +0 -0
  215. /package/src/{graph → compute-graph}/testing/test-builder.ts +0 -0
  216. /package/src/{graph → compute-graph}/testing/test-plugin.ts +0 -0
  217. /package/src/{graph → compute-graph}/util.ts +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_N5IQGEFL_exports = {};
30
- __export(SheetContainer_N5IQGEFL_exports, {
29
+ var SheetContainer_6BO4C5X2_exports = {};
30
+ __export(SheetContainer_6BO4C5X2_exports, {
31
31
  default: () => SheetContainer_default
32
32
  });
33
- module.exports = __toCommonJS(SheetContainer_N5IQGEFL_exports);
34
- var import_chunk_53BMSUIK = require("./chunk-53BMSUIK.cjs");
35
- var import_chunk_NZARD7UP = require("./chunk-NZARD7UP.cjs");
33
+ module.exports = __toCommonJS(SheetContainer_6BO4C5X2_exports);
34
+ var import_chunk_DEPJHN47 = require("./chunk-DEPJHN47.cjs");
35
+ var import_chunk_JF5XNTF3 = require("./chunk-JF5XNTF3.cjs");
36
+ var import_chunk_2XJ5I4UF = require("./chunk-2XJ5I4UF.cjs");
36
37
  var import_chunk_QIFIGEKV = require("./chunk-QIFIGEKV.cjs");
37
- var import_chunk_5XPK2V4A = require("./chunk-5XPK2V4A.cjs");
38
38
  var import_react = __toESM(require("react"));
39
39
  var import_react2 = __toESM(require("react"));
40
40
  var import_react_ui = require("@dxos/react-ui");
@@ -46,14 +46,14 @@ 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_53BMSUIK.useSheetContext)();
49
+ const { model, cursor, range } = (0, import_chunk_DEPJHN47.useSheetContext)();
50
50
  let value;
51
- let isFormula = false;
51
+ let formula = false;
52
52
  if (cursor) {
53
53
  value = model.getCellValue(cursor);
54
- if (typeof value === "string" && value.charAt(0) === "=") {
54
+ if ((0, import_chunk_JF5XNTF3.isFormula)(value)) {
55
55
  value = model.graph.mapFunctionBindingFromId(model.mapFormulaIndicesToRefs(value));
56
- isFormula = true;
56
+ formula = true;
57
57
  } else if (value != null) {
58
58
  value = String(value);
59
59
  }
@@ -64,13 +64,13 @@ 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_53BMSUIK.rangeToA1Notation)(range) || cursor && (0, import_chunk_53BMSUIK.addressToA1Notation)(cursor)), /* @__PURE__ */ import_react2.default.createElement("div", {
67
+ }, range && (0, import_chunk_JF5XNTF3.rangeToA1Notation)(range) || cursor && (0, import_chunk_JF5XNTF3.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",
71
71
  classNames: [
72
72
  "text-greenText",
73
- isFormula ? "visible" : "invisible"
73
+ formula ? "visible" : "invisible"
74
74
  ]
75
75
  }), /* @__PURE__ */ import_react2.default.createElement("span", {
76
76
  className: "font-mono"
@@ -103,23 +103,16 @@ var ToolbarItem = ({ itemType, icon, children, ...props }) => {
103
103
  var [ToolbarContextProvider, useToolbarContext] = (0, import_react_context.createContext)("Toolbar");
104
104
  var sectionToolbarLayout = "bs-[--rail-action] bg-[--sticky-bg] sticky block-start-0 __-block-start-px transition-opacity";
105
105
  var ToolbarRoot = ({ children, role, classNames }) => {
106
- const { id, model, range, cursor } = (0, import_chunk_53BMSUIK.useSheetContext)();
106
+ const { id, model, cursorFallbackRange, cursor } = (0, import_chunk_DEPJHN47.useSheetContext)();
107
107
  const { hasAttention } = (0, import_react_ui_attention.useAttention)(id);
108
108
  const dispatch = (0, import_app_framework.useIntentDispatcher)();
109
109
  const handleAction = (0, import_react3.useCallback)((action) => {
110
110
  switch (action.key) {
111
- case "align":
112
- if (cursor) {
113
- const index = model.sheet.ranges?.findIndex((range2) => range2.key === action.key && (0, import_chunk_53BMSUIK.inRange)(range2.range, cursor));
114
- const nextRange = range ? {
115
- from: range.from,
116
- to: range.to ?? range.from
117
- } : {
118
- from: cursor,
119
- to: cursor
120
- };
111
+ case "alignment":
112
+ if (cursor && cursorFallbackRange) {
113
+ const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && (0, import_chunk_JF5XNTF3.inRange)((0, import_chunk_JF5XNTF3.rangeFromIndex)(model.sheet, range.range), cursor));
121
114
  const nextRangeEntity = {
122
- range: nextRange,
115
+ range: (0, import_chunk_JF5XNTF3.rangeToIndex)(model.sheet, cursorFallbackRange),
123
116
  key: action.key,
124
117
  value: action.value
125
118
  };
@@ -132,39 +125,34 @@ var ToolbarRoot = ({ children, role, classNames }) => {
132
125
  break;
133
126
  case "style":
134
127
  if (action.value === "unset") {
135
- const index = model.sheet.ranges?.findIndex((range2) => range2.key === action.key);
128
+ const index = model.sheet.ranges?.findIndex((range) => range.key === action.key);
136
129
  if (index >= 0) {
137
130
  model.sheet.ranges?.splice(index, 1);
138
131
  }
139
- } else if (range || cursor) {
140
- const nextRange = range ? {
141
- from: range.from,
142
- to: range.to ?? range.from
143
- } : {
144
- from: cursor,
145
- to: cursor
146
- };
132
+ } else if (cursorFallbackRange) {
147
133
  model.sheet.ranges?.push({
148
- range: nextRange,
134
+ range: (0, import_chunk_JF5XNTF3.rangeToIndex)(model.sheet, cursorFallbackRange),
149
135
  key: action.key,
150
136
  value: action.value
151
137
  });
152
138
  }
153
139
  break;
154
140
  case "comment": {
155
- void dispatch({
156
- action: "dxos.org/plugin/thread/action/create",
157
- data: {
158
- cursor: action.value,
159
- name: action.cellContent,
160
- subject: model.sheet
161
- }
162
- });
141
+ if (cursorFallbackRange) {
142
+ void dispatch({
143
+ action: "dxos.org/plugin/thread/action/create",
144
+ data: {
145
+ cursor: (0, import_chunk_DEPJHN47.completeCellRangeToThreadCursor)(cursorFallbackRange),
146
+ name: action.cellContent,
147
+ subject: model.sheet
148
+ }
149
+ });
150
+ }
163
151
  }
164
152
  }
165
153
  }, [
166
154
  model.sheet,
167
- range,
155
+ cursorFallbackRange,
168
156
  cursor,
169
157
  dispatch
170
158
  ]);
@@ -198,10 +186,10 @@ var alignmentOptions = [
198
186
  }
199
187
  ];
200
188
  var Alignment = () => {
201
- const { cursor, model } = (0, import_chunk_53BMSUIK.useSheetContext)();
189
+ const { cursor, model } = (0, import_chunk_DEPJHN47.useSheetContext)();
202
190
  const { onAction } = useToolbarContext("Alignment");
203
191
  const { t } = (0, import_react_ui2.useTranslation)(import_chunk_QIFIGEKV.SHEET_PLUGIN);
204
- const value = (0, import_react3.useMemo)(() => cursor ? model.sheet.ranges?.find(({ range, key }) => key === "alignment" && (0, import_chunk_53BMSUIK.inRange)(range, cursor))?.value : void 0, [
192
+ const value = (0, import_react3.useMemo)(() => cursor ? model.sheet.ranges?.find(({ range, key }) => key === import_chunk_JF5XNTF3.alignKey && (0, import_chunk_JF5XNTF3.inRange)((0, import_chunk_JF5XNTF3.rangeFromIndex)(model.sheet, range), cursor))?.value : void 0, [
205
193
  cursor,
206
194
  model.sheet.ranges
207
195
  ]);
@@ -209,7 +197,7 @@ var Alignment = () => {
209
197
  type: "single",
210
198
  value,
211
199
  onValueChange: (value2) => onAction?.({
212
- key: "align",
200
+ key: import_chunk_JF5XNTF3.alignKey,
213
201
  value: value2
214
202
  })
215
203
  }, alignmentOptions.map(({ value: value2, icon }) => /* @__PURE__ */ import_react3.default.createElement(ToolbarItem, {
@@ -217,7 +205,10 @@ var Alignment = () => {
217
205
  key: value2,
218
206
  value: value2,
219
207
  icon
220
- }, t(`toolbar ${value2} label`))));
208
+ }, t("toolbar action label", {
209
+ key: t(`range key ${import_chunk_JF5XNTF3.alignKey} label`),
210
+ value: t(`range value ${value2} label`)
211
+ }))));
221
212
  };
222
213
  var styleOptions = [
223
214
  {
@@ -226,10 +217,10 @@ var styleOptions = [
226
217
  }
227
218
  ];
228
219
  var Styles = () => {
229
- const { cursor, model } = (0, import_chunk_53BMSUIK.useSheetContext)();
220
+ const { cursor, model } = (0, import_chunk_DEPJHN47.useSheetContext)();
230
221
  const { onAction } = useToolbarContext("Styles");
231
222
  const { t } = (0, import_react_ui2.useTranslation)(import_chunk_QIFIGEKV.SHEET_PLUGIN);
232
- const activeValues = (0, import_react3.useMemo)(() => cursor ? model.sheet.ranges?.filter(({ range, key }) => key === "style" && (0, import_chunk_53BMSUIK.inRange)(range, cursor)).reduce((acc, { value }) => {
223
+ const activeValues = (0, import_react3.useMemo)(() => cursor ? model.sheet.ranges?.filter(({ range, key }) => key === "style" && (0, import_chunk_JF5XNTF3.inRange)((0, import_chunk_JF5XNTF3.rangeFromIndex)(model.sheet, range), cursor)).reduce((acc, { value }) => {
233
224
  acc.add(value);
234
225
  return acc;
235
226
  }, /* @__PURE__ */ new Set()) : void 0, [
@@ -249,33 +240,31 @@ var Styles = () => {
249
240
  };
250
241
  var Actions = () => {
251
242
  const { onAction } = useToolbarContext("Actions");
252
- const { cursor, range, model } = (0, import_chunk_53BMSUIK.useSheetContext)();
243
+ const { cursorFallbackRange, cursor, model } = (0, import_chunk_DEPJHN47.useSheetContext)();
253
244
  const { t } = (0, import_react_ui2.useTranslation)(import_chunk_QIFIGEKV.SHEET_PLUGIN);
254
245
  const overlapsCommentAnchor = (model.sheet.threads ?? []).filter(import_util.nonNullable).filter((thread) => thread.status !== "resolved").some((thread) => {
255
- if (!cursor) {
246
+ if (!cursorFallbackRange) {
256
247
  return false;
257
248
  }
258
- return (0, import_chunk_53BMSUIK.addressToIndex)(model.sheet, cursor) === thread.anchor;
249
+ return (0, import_chunk_JF5XNTF3.rangeToIndex)(model.sheet, cursorFallbackRange) === thread.anchor;
259
250
  });
260
- const hasCursor = !!cursor;
261
- const cursorOnly = hasCursor && !range && !overlapsCommentAnchor;
262
- const tooltipLabelKey = !hasCursor ? "no cursor label" : overlapsCommentAnchor ? "selection overlaps existing comment label" : range ? "comment ranges not supported label" : "comment label";
251
+ const tooltipLabelKey = !cursor ? "no cursor label" : overlapsCommentAnchor ? "selection overlaps existing comment label" : "comment label";
263
252
  return /* @__PURE__ */ import_react3.default.createElement(ToolbarItem, {
264
253
  itemType: "button",
265
254
  value: "comment",
266
255
  icon: "ph--chat-text--regular",
267
256
  "data-testid": "editor.toolbar.comment",
268
257
  onClick: () => {
269
- if (!cursor) {
258
+ if (!(cursorFallbackRange && cursor)) {
270
259
  return;
271
260
  }
272
261
  return onAction?.({
273
262
  key: "comment",
274
- value: (0, import_chunk_53BMSUIK.addressToIndex)(model.sheet, cursor),
263
+ value: (0, import_chunk_JF5XNTF3.rangeToIndex)(model.sheet, cursorFallbackRange),
275
264
  cellContent: model.getCellText(cursor)
276
265
  });
277
266
  },
278
- disabled: !cursorOnly || overlapsCommentAnchor
267
+ disabled: !cursor || overlapsCommentAnchor
279
268
  }, t(tooltipLabelKey));
280
269
  };
281
270
  var Toolbar = {
@@ -285,8 +274,9 @@ var Toolbar = {
285
274
  Styles,
286
275
  Actions
287
276
  };
288
- var SheetContainer = ({ graph, sheet, role }) => {
289
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_53BMSUIK.SheetProvider, {
277
+ var SheetContainer = ({ space, sheet, role }) => {
278
+ const graph = (0, import_chunk_DEPJHN47.useComputeGraph)(space);
279
+ return graph ? /* @__PURE__ */ import_react.default.createElement(import_chunk_DEPJHN47.SheetProvider, {
290
280
  sheet,
291
281
  graph
292
282
  }, /* @__PURE__ */ import_react.default.createElement(Toolbar.Root, {
@@ -294,7 +284,7 @@ var SheetContainer = ({ graph, sheet, role }) => {
294
284
  }, /* @__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("div", {
295
285
  role: "none",
296
286
  className: "border-bs border-separator grid cols-1 rows-[1fr_min-content] min-bs-0"
297
- }, /* @__PURE__ */ import_react.default.createElement(import_chunk_53BMSUIK.GridSheet, null), /* @__PURE__ */ import_react.default.createElement(FunctionEditor, null)));
287
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_DEPJHN47.GridSheet, null), /* @__PURE__ */ import_react.default.createElement(FunctionEditor, null))) : null;
298
288
  };
299
289
  var SheetContainer_default = SheetContainer;
300
- //# sourceMappingURL=SheetContainer-N5IQGEFL.cjs.map
290
+ //# sourceMappingURL=SheetContainer-6BO4C5X2.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';\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 = ({ space, sheet, role }: { space: Space; sheet: SheetType; role?: string }) => {\n const graph = useComputeGraph(space);\n\n return graph ? (\n <SheetProvider sheet={sheet} graph={graph}>\n <Toolbar.Root role={role}>\n <Toolbar.Styles />\n <Toolbar.Alignment />\n <Toolbar.Separator />\n <Toolbar.Actions />\n </Toolbar.Root>\n <div role='none' className='border-bs border-separator grid cols-1 rows-[1fr_min-content] min-bs-0'>\n <GridSheet />\n <FunctionEditor />\n </div>\n </SheetProvider>\n ) : null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Icon } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { addressToA1Notation, isFormula, 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(model.mapFormulaIndicesToRefs(value));\n formula = true;\n } else if (value != null) {\n value = String(value);\n }\n }\n\n return (\n <div\n className={mx(\n 'flex shrink-0 justify-between items-center px-4 py-1 text-sm border-bs !border-separator attention-surface',\n )}\n >\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, useMemo } 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 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;\n\nexport type ToolbarActionType = ToolbarAction['key'];\n\nexport type ToolbarActionHandler = (action: ToolbarAction) => void;\n\nexport type ToolbarProps = ThemedClassName<\n PropsWithChildren<{\n role?: string;\n }>\n>;\n\nconst [ToolbarContextProvider, useToolbarContext] = createContext<{ onAction: (action: ToolbarAction) => void }>(\n 'Toolbar',\n);\n\n// TODO(Zan): Factor out, copied this from MarkdownPlugin.\nconst sectionToolbarLayout =\n 'bs-[--rail-action] bg-[--sticky-bg] sticky block-start-0 __-block-start-px transition-opacity';\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: ToolbarAction) => {\n switch (action.key) {\n case 'alignment':\n if (cursor && cursorFallbackRange) {\n const index = model.sheet.ranges?.findIndex(\n (range) => range.key === action.key && inRange(rangeFromIndex(model.sheet, range.range), cursor),\n );\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 {\n model.sheet.ranges?.splice(index, 1, nextRangeEntity);\n }\n }\n break;\n case 'style':\n if (action.value === 'unset') {\n const index = model.sheet.ranges?.findIndex((range) => range.key === action.key);\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\n classNames={[\n ...(role === 'section'\n ? ['z-[2] group-focus-within/section:visible', !hasAttention && 'invisible', sectionToolbarLayout]\n : ['attention-surface']),\n classNames,\n ]}\n >\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 const value = useMemo(\n () =>\n cursor\n ? model.sheet.ranges?.find(\n ({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor),\n )?.value\n : undefined,\n [cursor, model.sheet.ranges],\n );\n\n return (\n <NaturalToolbar.ToggleGroup\n type='single'\n value={value}\n onValueChange={(value: AlignValue) => onAction?.({ key: alignKey, value })}\n >\n {alignmentOptions.map(({ value, icon }) => (\n <ToolbarItem itemType='toggleGroupItem' key={value} value={value} icon={icon}>\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>[] = [{ value: 'highlight', icon: 'ph--highlighter--regular' }];\n\nconst Styles = () => {\n const { cursor, model } = useSheetContext();\n const { onAction } = useToolbarContext('Styles');\n const { t } = useTranslation(SHEET_PLUGIN);\n\n const activeValues = useMemo(\n () =>\n cursor\n ? model.sheet.ranges\n ?.filter(({ range, key }) => key === 'style' && inRange(rangeFromIndex(model.sheet, range), cursor))\n .reduce((acc, { value }) => {\n acc.add(value);\n return acc;\n }, new Set())\n : undefined,\n [cursor, model.sheet.ranges],\n );\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) => onAction?.({ key: 'style', value: nextPressed ? value : 'unset' })}\n icon={icon}\n >\n {t(`toolbar ${value} label`)}\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 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 && cursor)) {\n return;\n }\n return onAction?.({\n key: 'comment',\n value: rangeToIndex(model.sheet, cursorFallbackRange),\n cellContent: model.getCellText(cursor),\n });\n }}\n disabled={!cursor || 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", "String", "React", "div", "className", "mx", "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", "sectionToolbarLayout", "ToolbarRoot", "id", "cursorFallbackRange", "hasAttention", "useAttention", "dispatch", "useIntentDispatcher", "handleAction", "useCallback", "action", "key", "index", "sheet", "ranges", "findIndex", "inRange", "rangeFromIndex", "nextRangeEntity", "rangeToIndex", "push", "splice", "data", "completeCellRangeToThreadCursor", "name", "cellContent", "subject", "onAction", "alignmentOptions", "Alignment", "t", "useTranslation", "SHEET_PLUGIN", "useMemo", "find", "alignKey", "undefined", "ToggleGroup", "type", "onValueChange", "map", "styleOptions", "Styles", "activeValues", "filter", "reduce", "acc", "add", "Set", "pressed", "has", "onPressedChange", "nextPressed", "Actions", "overlapsCommentAnchor", "threads", "nonNullable", "thread", "status", "some", "anchor", "tooltipLabelKey", "data-testid", "onClick", "getCellText", "disabled", "Toolbar", "Separator", "SheetContainer", "space", "useComputeGraph", "SheetProvider", "GridSheet"]
7
+ }
@@ -16,15 +16,15 @@ 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_NZARD7UP_exports = {};
20
- __export(chunk_NZARD7UP_exports, {
19
+ var chunk_2XJ5I4UF_exports = {};
20
+ __export(chunk_2XJ5I4UF_exports, {
21
21
  CellValue: () => CellValue,
22
22
  Range: () => Range,
23
23
  RowColumnMeta: () => RowColumnMeta,
24
24
  SheetAction: () => SheetAction,
25
25
  SheetType: () => SheetType
26
26
  });
27
- module.exports = __toCommonJS(chunk_NZARD7UP_exports);
27
+ module.exports = __toCommonJS(chunk_2XJ5I4UF_exports);
28
28
  var import_chunk_QIFIGEKV = require("./chunk-QIFIGEKV.cjs");
29
29
  var import_echo_schema = require("@dxos/echo-schema");
30
30
  var import_types = require("@dxos/plugin-space/types");
@@ -40,16 +40,7 @@ var CellValue = import_echo_schema.S.Struct({
40
40
  value: import_echo_schema.S.Any
41
41
  });
42
42
  var Range = import_echo_schema.S.Struct({
43
- range: import_echo_schema.S.Struct({
44
- from: import_echo_schema.S.Struct({
45
- col: import_echo_schema.S.Number,
46
- row: import_echo_schema.S.Number
47
- }),
48
- to: import_echo_schema.S.Struct({
49
- col: import_echo_schema.S.Number,
50
- row: import_echo_schema.S.Number
51
- })
52
- }),
43
+ range: import_echo_schema.S.String,
53
44
  key: import_echo_schema.S.String,
54
45
  value: import_echo_schema.S.String
55
46
  });
@@ -57,7 +48,7 @@ var RowColumnMeta = import_echo_schema.S.Struct({
57
48
  size: import_echo_schema.S.optional(import_echo_schema.S.Number)
58
49
  });
59
50
  var SheetType = class extends (0, import_echo_schema.TypedObject)({
60
- typename: "dxos.org/type/SheetType",
51
+ typename: "dxos.org/type/Sheet",
61
52
  version: "0.1.0"
62
53
  })({
63
54
  name: import_echo_schema.S.optional(import_echo_schema.S.String),
@@ -94,4 +85,4 @@ var SheetType = class extends (0, import_echo_schema.TypedObject)({
94
85
  SheetAction,
95
86
  SheetType
96
87
  });
97
- //# sourceMappingURL=chunk-NZARD7UP.cjs.map
88
+ //# sourceMappingURL=chunk-2XJ5I4UF.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n IntentResolverProvides,\n MetadataRecordsProvides,\n SurfaceProvides,\n TranslationsProvides,\n} from '@dxos/app-framework';\nimport { ref, S, TypedObject } from '@dxos/echo-schema';\nimport { type SchemaProvides } from '@dxos/plugin-client';\nimport { type MarkdownExtensionProvides } from '@dxos/plugin-markdown';\nimport { type SpaceInitProvides } from '@dxos/plugin-space';\nimport { ThreadType } from '@dxos/plugin-space/types';\nimport { type StackProvides } from '@dxos/plugin-stack';\n\nimport { SHEET_PLUGIN } from './meta';\n\nconst SHEET_ACTION = `${SHEET_PLUGIN}/action`;\n\nexport enum SheetAction {\n CREATE = `${SHEET_ACTION}/create`,\n}\n\n// TODO(Zan): Move this to the plugin-space plugin or another common location\n// when we implement comments in sheets.\n// This is currently duplicated in a few places.\ntype ThreadProvides<T> = {\n thread: {\n predicate: (obj: any) => obj is T;\n createSort: (obj: T) => (anchorA: string | undefined, anchorB: string | undefined) => number;\n };\n};\n\nexport type SheetPluginProvides = SurfaceProvides &\n IntentResolverProvides &\n GraphBuilderProvides &\n MarkdownExtensionProvides &\n MetadataRecordsProvides &\n TranslationsProvides &\n SchemaProvides &\n SpaceInitProvides &\n StackProvides &\n ThreadProvides<SheetType>;\n\nexport type CellScalarValue = number | string | boolean | null;\n\nexport const CellValue = S.Struct({\n // TODO(burdon): How to store dates (datetime, date, time), percentages, etc.\n // Consider import/export; natural access for other plugins. Special handling for currency (precision).\n // TODO(burdon): Automerge (long string) or short string or number.\n value: S.Any,\n});\n\nexport type CellValue = S.Schema.Type<typeof CellValue>;\n\n// TODO(burdon): IMPORTANT: Reconcile with Field definition.\nexport const Range = S.Struct({\n range: S.String,\n key: S.String,\n value: S.String,\n});\n\nexport type Range = S.Schema.Type<typeof Range>;\n\n// TODO(burdon): Visibility, locked, frozen, etc.\nexport const RowColumnMeta = S.Struct({\n size: S.optional(S.Number),\n});\n\n// TODO(burdon): Index to all updates when rows/columns are inserted/deleted.\nexport class SheetType extends TypedObject({ typename: 'dxos.org/type/Sheet', version: '0.1.0' })({\n name: S.optional(S.String),\n\n // Sparse map of cells referenced by index.\n cells: S.mutable(S.Record({ key: S.String, value: S.mutable(CellValue) })),\n\n // Ordered row indices.\n rows: S.mutable(S.Array(S.String)),\n\n // Ordered column indices.\n columns: S.mutable(S.Array(S.String)),\n\n // Row metadata referenced by index.\n rowMeta: S.mutable(S.Record({ key: S.String, value: S.mutable(RowColumnMeta) })),\n\n // Column metadata referenced by index.\n columnMeta: S.mutable(S.Record({ key: S.String, value: S.mutable(RowColumnMeta) })),\n\n // Cell formatting referenced by indexed range.\n ranges: S.mutable(S.Array(Range)),\n\n // Threads associated with the sheet\n threads: S.optional(S.mutable(S.Array(ref(ThreadType)))),\n}) {}\n\nexport type SheetSize = {\n rows: number;\n columns: number;\n};\n\nexport type CreateSheetOptions = {\n name?: string;\n cells?: Record<string, CellValue>;\n} & Partial<SheetSize>;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,yBAAoC;AAIpC,mBAA2B;AAK3B,IAAMA,eAAe,GAAGC,kCAAAA;;UAEZC,cAAAA;wCACD,GAAGF,YAAAA,SAAqB,IAAA;GADvBE,gBAAAA,cAAAA,CAAAA,EAAAA;AA2BL,IAAMC,YAAYC,qBAAEC,OAAO;;;;EAIhCC,OAAOF,qBAAEG;AACX,CAAA;AAKO,IAAMC,QAAQJ,qBAAEC,OAAO;EAC5BI,OAAOL,qBAAEM;EACTC,KAAKP,qBAAEM;EACPJ,OAAOF,qBAAEM;AACX,CAAA;AAKO,IAAME,gBAAgBR,qBAAEC,OAAO;EACpCQ,MAAMT,qBAAEU,SAASV,qBAAEW,MAAM;AAC3B,CAAA;AAGO,IAAMC,YAAN,kBAAwBC,gCAAY;EAAEC,UAAU;EAAuBC,SAAS;AAAQ,CAAA,EAAG;EAChGC,MAAMhB,qBAAEU,SAASV,qBAAEM,MAAM;;EAGzBW,OAAOjB,qBAAEkB,QAAQlB,qBAAEmB,OAAO;IAAEZ,KAAKP,qBAAEM;IAAQJ,OAAOF,qBAAEkB,QAAQnB,SAAAA;EAAW,CAAA,CAAA;;EAGvEqB,MAAMpB,qBAAEkB,QAAQlB,qBAAEqB,MAAMrB,qBAAEM,MAAM,CAAA;;EAGhCgB,SAAStB,qBAAEkB,QAAQlB,qBAAEqB,MAAMrB,qBAAEM,MAAM,CAAA;;EAGnCiB,SAASvB,qBAAEkB,QAAQlB,qBAAEmB,OAAO;IAAEZ,KAAKP,qBAAEM;IAAQJ,OAAOF,qBAAEkB,QAAQV,aAAAA;EAAe,CAAA,CAAA;;EAG7EgB,YAAYxB,qBAAEkB,QAAQlB,qBAAEmB,OAAO;IAAEZ,KAAKP,qBAAEM;IAAQJ,OAAOF,qBAAEkB,QAAQV,aAAAA;EAAe,CAAA,CAAA;;EAGhFiB,QAAQzB,qBAAEkB,QAAQlB,qBAAEqB,MAAMjB,KAAAA,CAAAA;;EAG1BsB,SAAS1B,qBAAEU,SAASV,qBAAEkB,QAAQlB,qBAAEqB,UAAMM,wBAAIC,uBAAAA,CAAAA,CAAAA,CAAAA;AAC5C,CAAA,EAAA;AAAI;",
6
+ "names": ["SHEET_ACTION", "SHEET_PLUGIN", "SheetAction", "CellValue", "S", "Struct", "value", "Any", "Range", "range", "String", "key", "RowColumnMeta", "size", "optional", "Number", "SheetType", "TypedObject", "typename", "version", "name", "cells", "mutable", "Record", "rows", "Array", "columns", "rowMeta", "columnMeta", "ranges", "threads", "ref", "ThreadType"]
7
+ }