@dxos/plugin-sheet 0.6.14-main.7bd9c89 → 0.6.14-staging.9e90729

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 (208) hide show
  1. package/dist/lib/browser/{SheetContainer-AKWROARP.mjs → SheetContainer-JBB7W52Y.mjs} +42 -52
  2. package/dist/lib/browser/SheetContainer-JBB7W52Y.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-GSV5QNLD.mjs → chunk-2ZK3YMZG.mjs} +248 -33
  4. package/dist/lib/browser/{chunk-GSV5QNLD.mjs.map → chunk-2ZK3YMZG.mjs.map} +4 -4
  5. package/dist/lib/browser/{chunk-BWN5DZWZ.mjs → chunk-3QWIMZZJ.mjs} +2 -11
  6. package/dist/lib/browser/chunk-3QWIMZZJ.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-FGMFOW6U.mjs → chunk-XXDHBYZQ.mjs} +553 -668
  8. package/dist/lib/browser/chunk-XXDHBYZQ.mjs.map +7 -0
  9. package/dist/lib/browser/{graph-M4IQ76QX.mjs → compute-graph-ZQKB6QVP.mjs} +4 -2
  10. package/dist/lib/browser/index.mjs +57 -14
  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-L37HUFCF.cjs} +44 -58
  15. package/dist/lib/node/SheetContainer-L37HUFCF.cjs.map +7 -0
  16. package/dist/lib/node/{chunk-53BMSUIK.cjs → chunk-7AWAC3R3.cjs} +517 -645
  17. package/dist/lib/node/chunk-7AWAC3R3.cjs.map +7 -0
  18. package/dist/lib/node/{chunk-5XPK2V4A.cjs → chunk-QNFMTK3X.cjs} +252 -28
  19. package/dist/lib/node/{chunk-5XPK2V4A.cjs.map → chunk-QNFMTK3X.cjs.map} +4 -4
  20. package/dist/lib/node/{chunk-NZARD7UP.cjs → chunk-V7E5JZBD.cjs} +5 -14
  21. package/dist/lib/node/chunk-V7E5JZBD.cjs.map +7 -0
  22. package/dist/lib/node/{graph-Q3N2X26H.cjs → compute-graph-RJB6OVW6.cjs} +21 -19
  23. package/dist/lib/node/compute-graph-RJB6OVW6.cjs.map +7 -0
  24. package/dist/lib/node/index.cjs +66 -27
  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-CLKFEM35.mjs} +42 -52
  30. package/dist/lib/node-esm/SheetContainer-CLKFEM35.mjs.map +7 -0
  31. package/dist/lib/node-esm/{chunk-T3PRH7QS.mjs → chunk-3JYJEOCF.mjs} +553 -668
  32. package/dist/lib/node-esm/chunk-3JYJEOCF.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-5WPZCXNS.mjs → chunk-JBTORSST.mjs} +247 -33
  34. package/dist/lib/node-esm/{chunk-5WPZCXNS.mjs.map → chunk-JBTORSST.mjs.map} +4 -4
  35. package/dist/lib/node-esm/{chunk-WFDTY3IC.mjs → chunk-SPQFLYC2.mjs} +2 -11
  36. package/dist/lib/node-esm/chunk-SPQFLYC2.mjs.map +7 -0
  37. package/dist/lib/node-esm/{graph-SMPUMOV2.mjs → compute-graph-VKRG526N.mjs} +4 -2
  38. package/dist/lib/node-esm/index.mjs +57 -14
  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.map +1 -1
  48. package/dist/types/src/components/RangeList/RangeList.d.ts +9 -0
  49. package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -0
  50. package/dist/types/src/components/RangeList/index.d.ts +2 -0
  51. package/dist/types/src/components/RangeList/index.d.ts.map +1 -0
  52. package/dist/types/src/components/SheetContext/SheetContext.d.ts +7 -5
  53. package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
  54. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  55. package/dist/types/src/components/index.d.ts +1 -0
  56. package/dist/types/src/components/index.d.ts.map +1 -1
  57. package/dist/types/src/compute-graph/compute-graph-registry.d.ts.map +1 -0
  58. package/dist/types/src/{graph → compute-graph}/compute-graph.d.ts +1 -1
  59. package/dist/types/src/compute-graph/compute-graph.d.ts.map +1 -0
  60. package/dist/types/src/compute-graph/compute-graph.stories.d.ts.map +1 -0
  61. package/dist/types/src/compute-graph/compute-graph.test.d.ts.map +1 -0
  62. package/dist/types/src/compute-graph/compute-node.d.ts.map +1 -0
  63. package/dist/types/src/compute-graph/functions/async-function.d.ts.map +1 -0
  64. package/dist/types/src/compute-graph/functions/edge-function.d.ts.map +1 -0
  65. package/dist/types/src/compute-graph/functions/function-defs.d.ts.map +1 -0
  66. package/dist/types/src/compute-graph/functions/index.d.ts.map +1 -0
  67. package/dist/types/src/compute-graph/hyperformula.test.d.ts.map +1 -0
  68. package/dist/types/src/compute-graph/index.d.ts.map +1 -0
  69. package/dist/types/src/compute-graph/testing/index.d.ts.map +1 -0
  70. package/dist/types/src/compute-graph/testing/test-builder.d.ts.map +1 -0
  71. package/dist/types/src/compute-graph/testing/test-plugin.d.ts.map +1 -0
  72. package/dist/types/src/compute-graph/util.d.ts.map +1 -0
  73. package/dist/types/src/defs/index.d.ts +1 -1
  74. package/dist/types/src/defs/index.d.ts.map +1 -1
  75. package/dist/types/src/defs/sheet-range-types.d.ts.map +1 -1
  76. package/dist/types/src/defs/types.d.ts +6 -0
  77. package/dist/types/src/defs/types.d.ts.map +1 -1
  78. package/dist/types/src/defs/util.d.ts +2 -6
  79. package/dist/types/src/defs/util.d.ts.map +1 -1
  80. package/dist/types/src/extensions/compute.d.ts +1 -1
  81. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  82. package/dist/types/src/extensions/editor/extension.d.ts +23 -3
  83. package/dist/types/src/extensions/editor/extension.d.ts.map +1 -1
  84. package/dist/types/src/index.d.ts +1 -1
  85. package/dist/types/src/index.d.ts.map +1 -1
  86. package/dist/types/src/integrations/index.d.ts +2 -0
  87. package/dist/types/src/integrations/index.d.ts.map +1 -0
  88. package/dist/types/src/integrations/thread-ranges.d.ts +8 -0
  89. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -0
  90. package/dist/types/src/model/index.d.ts +1 -1
  91. package/dist/types/src/model/index.d.ts.map +1 -1
  92. package/dist/types/src/model/sheet-model.d.ts +1 -1
  93. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  94. package/dist/types/src/{hooks → model}/useSheetModel.d.ts +1 -1
  95. package/dist/types/src/model/useSheetModel.d.ts.map +1 -0
  96. package/dist/types/src/serializer.d.ts +4 -0
  97. package/dist/types/src/serializer.d.ts.map +1 -0
  98. package/dist/types/src/testing/testing.d.ts +1 -1
  99. package/dist/types/src/testing/testing.d.ts.map +1 -1
  100. package/dist/types/src/translations.d.ts +6 -0
  101. package/dist/types/src/translations.d.ts.map +1 -1
  102. package/dist/types/src/types.d.ts +4 -30
  103. package/dist/types/src/types.d.ts.map +1 -1
  104. package/package.json +43 -50
  105. package/src/SheetPlugin.tsx +23 -10
  106. package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +19 -2
  107. package/src/components/FunctionEditor/FunctionEditor.tsx +5 -5
  108. package/src/components/GridSheet/GridSheet.stories.tsx +3 -1
  109. package/src/components/GridSheet/GridSheet.tsx +114 -19
  110. package/src/components/GridSheet/SheetCellEditor.stories.tsx +1 -1
  111. package/src/components/GridSheet/util.ts +17 -7
  112. package/src/components/RangeList/RangeList.tsx +38 -0
  113. package/src/components/RangeList/index.ts +5 -0
  114. package/src/components/SheetContainer/SheetContainer.stories.tsx +1 -1
  115. package/src/components/SheetContext/SheetContext.tsx +43 -20
  116. package/src/components/Toolbar/Toolbar.tsx +34 -35
  117. package/src/components/index.ts +1 -0
  118. package/src/{graph → compute-graph}/compute-graph.stories.tsx +2 -1
  119. package/src/{graph → compute-graph}/compute-graph.ts +5 -2
  120. package/src/{graph → compute-graph}/compute-node.ts +2 -3
  121. package/src/defs/index.ts +1 -1
  122. package/src/defs/sheet-range-types.ts +1 -0
  123. package/src/defs/types.ts +6 -1
  124. package/src/defs/util.ts +3 -19
  125. package/src/extensions/compute.stories.tsx +2 -2
  126. package/src/extensions/compute.ts +2 -2
  127. package/src/extensions/editor/extension.test.ts +1 -1
  128. package/src/extensions/editor/extension.ts +48 -23
  129. package/src/index.ts +2 -2
  130. package/src/integrations/index.ts +5 -0
  131. package/src/integrations/thread-ranges.ts +101 -0
  132. package/src/model/index.ts +1 -1
  133. package/src/model/sheet-model.test.ts +1 -1
  134. package/src/model/sheet-model.ts +13 -8
  135. package/src/{hooks → model}/useSheetModel.ts +1 -1
  136. package/src/serializer.ts +27 -0
  137. package/src/testing/testing.tsx +1 -1
  138. package/src/translations.ts +6 -0
  139. package/src/types.ts +3 -1
  140. package/dist/lib/browser/SheetContainer-AKWROARP.mjs.map +0 -7
  141. package/dist/lib/browser/chunk-BWN5DZWZ.mjs.map +0 -7
  142. package/dist/lib/browser/chunk-FGMFOW6U.mjs.map +0 -7
  143. package/dist/lib/node/SheetContainer-N5IQGEFL.cjs.map +0 -7
  144. package/dist/lib/node/chunk-53BMSUIK.cjs.map +0 -7
  145. package/dist/lib/node/chunk-NZARD7UP.cjs.map +0 -7
  146. package/dist/lib/node/graph-Q3N2X26H.cjs.map +0 -7
  147. package/dist/lib/node-esm/SheetContainer-46PBMF2E.mjs.map +0 -7
  148. package/dist/lib/node-esm/chunk-T3PRH7QS.mjs.map +0 -7
  149. package/dist/lib/node-esm/chunk-WFDTY3IC.mjs.map +0 -7
  150. package/dist/types/src/graph/compute-graph-registry.d.ts.map +0 -1
  151. package/dist/types/src/graph/compute-graph.d.ts.map +0 -1
  152. package/dist/types/src/graph/compute-graph.stories.d.ts.map +0 -1
  153. package/dist/types/src/graph/compute-graph.test.d.ts.map +0 -1
  154. package/dist/types/src/graph/compute-node.d.ts.map +0 -1
  155. package/dist/types/src/graph/functions/async-function.d.ts.map +0 -1
  156. package/dist/types/src/graph/functions/edge-function.d.ts.map +0 -1
  157. package/dist/types/src/graph/functions/function-defs.d.ts.map +0 -1
  158. package/dist/types/src/graph/functions/index.d.ts.map +0 -1
  159. package/dist/types/src/graph/hyperformula.test.d.ts.map +0 -1
  160. package/dist/types/src/graph/index.d.ts.map +0 -1
  161. package/dist/types/src/graph/testing/index.d.ts.map +0 -1
  162. package/dist/types/src/graph/testing/test-builder.d.ts.map +0 -1
  163. package/dist/types/src/graph/testing/test-plugin.d.ts.map +0 -1
  164. package/dist/types/src/graph/util.d.ts.map +0 -1
  165. package/dist/types/src/hooks/hooks.stories.d.ts +0 -6
  166. package/dist/types/src/hooks/hooks.stories.d.ts.map +0 -1
  167. package/dist/types/src/hooks/index.d.ts +0 -4
  168. package/dist/types/src/hooks/index.d.ts.map +0 -1
  169. package/dist/types/src/hooks/threads.d.ts +0 -8
  170. package/dist/types/src/hooks/threads.d.ts.map +0 -1
  171. package/dist/types/src/hooks/useComputeGraph.d.ts +0 -7
  172. package/dist/types/src/hooks/useComputeGraph.d.ts.map +0 -1
  173. package/dist/types/src/hooks/useSheetModel.d.ts.map +0 -1
  174. package/dist/types/src/model/decorations.d.ts +0 -26
  175. package/dist/types/src/model/decorations.d.ts.map +0 -1
  176. package/src/hooks/hooks.stories.tsx +0 -53
  177. package/src/hooks/index.ts +0 -7
  178. package/src/hooks/threads.ts +0 -147
  179. package/src/hooks/useComputeGraph.ts +0 -28
  180. package/src/model/decorations.ts +0 -66
  181. /package/dist/lib/browser/{graph-M4IQ76QX.mjs.map → compute-graph-ZQKB6QVP.mjs.map} +0 -0
  182. /package/dist/lib/node-esm/{graph-SMPUMOV2.mjs.map → compute-graph-VKRG526N.mjs.map} +0 -0
  183. /package/dist/types/src/{graph → compute-graph}/compute-graph-registry.d.ts +0 -0
  184. /package/dist/types/src/{graph → compute-graph}/compute-graph.stories.d.ts +0 -0
  185. /package/dist/types/src/{graph → compute-graph}/compute-graph.test.d.ts +0 -0
  186. /package/dist/types/src/{graph → compute-graph}/compute-node.d.ts +0 -0
  187. /package/dist/types/src/{graph → compute-graph}/functions/async-function.d.ts +0 -0
  188. /package/dist/types/src/{graph → compute-graph}/functions/edge-function.d.ts +0 -0
  189. /package/dist/types/src/{graph → compute-graph}/functions/function-defs.d.ts +0 -0
  190. /package/dist/types/src/{graph → compute-graph}/functions/index.d.ts +0 -0
  191. /package/dist/types/src/{graph → compute-graph}/hyperformula.test.d.ts +0 -0
  192. /package/dist/types/src/{graph → compute-graph}/index.d.ts +0 -0
  193. /package/dist/types/src/{graph → compute-graph}/testing/index.d.ts +0 -0
  194. /package/dist/types/src/{graph → compute-graph}/testing/test-builder.d.ts +0 -0
  195. /package/dist/types/src/{graph → compute-graph}/testing/test-plugin.d.ts +0 -0
  196. /package/dist/types/src/{graph → compute-graph}/util.d.ts +0 -0
  197. /package/src/{graph → compute-graph}/compute-graph-registry.ts +0 -0
  198. /package/src/{graph → compute-graph}/compute-graph.test.ts +0 -0
  199. /package/src/{graph → compute-graph}/functions/async-function.ts +0 -0
  200. /package/src/{graph → compute-graph}/functions/edge-function.ts +0 -0
  201. /package/src/{graph → compute-graph}/functions/function-defs.ts +0 -0
  202. /package/src/{graph → compute-graph}/functions/index.ts +0 -0
  203. /package/src/{graph → compute-graph}/hyperformula.test.ts +0 -0
  204. /package/src/{graph → compute-graph}/index.ts +0 -0
  205. /package/src/{graph → compute-graph}/testing/index.ts +0 -0
  206. /package/src/{graph → compute-graph}/testing/test-builder.ts +0 -0
  207. /package/src/{graph → compute-graph}/testing/test-plugin.ts +0 -0
  208. /package/src/{graph → compute-graph}/util.ts +0 -0
@@ -1,17 +1,21 @@
1
1
  import {
2
2
  GridSheet,
3
3
  SheetProvider,
4
+ completeCellRangeToThreadCursor,
5
+ useSheetContext
6
+ } from "./chunk-XXDHBYZQ.mjs";
7
+ import {
4
8
  addressToA1Notation,
5
- addressToIndex,
6
9
  inRange,
10
+ isFormula,
11
+ rangeFromIndex,
7
12
  rangeToA1Notation,
8
- useSheetContext
9
- } from "./chunk-FGMFOW6U.mjs";
10
- import "./chunk-BWN5DZWZ.mjs";
13
+ rangeToIndex
14
+ } from "./chunk-2ZK3YMZG.mjs";
15
+ import "./chunk-3QWIMZZJ.mjs";
11
16
  import {
12
17
  SHEET_PLUGIN
13
18
  } from "./chunk-D3QTX46O.mjs";
14
- import "./chunk-GSV5QNLD.mjs";
15
19
 
16
20
  // packages/plugins/plugin-sheet/src/components/SheetContainer/SheetContainer.tsx
17
21
  import React3 from "react";
@@ -23,12 +27,12 @@ import { mx } from "@dxos/react-ui-theme";
23
27
  var FunctionEditor = () => {
24
28
  const { model, cursor, range } = useSheetContext();
25
29
  let value;
26
- let isFormula = false;
30
+ let formula = false;
27
31
  if (cursor) {
28
32
  value = model.getCellValue(cursor);
29
- if (typeof value === "string" && value.charAt(0) === "=") {
33
+ if (isFormula(value)) {
30
34
  value = model.graph.mapFunctionBindingFromId(model.mapFormulaIndicesToRefs(value));
31
- isFormula = true;
35
+ formula = true;
32
36
  } else if (value != null) {
33
37
  value = String(value);
34
38
  }
@@ -45,7 +49,7 @@ var FunctionEditor = () => {
45
49
  icon: "ph--function--regular",
46
50
  classNames: [
47
51
  "text-greenText",
48
- isFormula ? "visible" : "invisible"
52
+ formula ? "visible" : "invisible"
49
53
  ]
50
54
  }), /* @__PURE__ */ React.createElement("span", {
51
55
  className: "font-mono"
@@ -56,7 +60,7 @@ var FunctionEditor = () => {
56
60
  import { createContext } from "@radix-ui/react-context";
57
61
  import React2, { useCallback, useMemo } from "react";
58
62
  import { useIntentDispatcher } from "@dxos/app-framework";
59
- import { Icon as Icon2, Toolbar as NaturalToolbar, useTranslation, Tooltip } from "@dxos/react-ui";
63
+ import { Icon as Icon2, Toolbar as NaturalToolbar, Tooltip, useTranslation } from "@dxos/react-ui";
60
64
  import { useAttention } from "@dxos/react-ui-attention";
61
65
  import { nonNullable } from "@dxos/util";
62
66
  var buttonStyles = "min-bs-0 p-2";
@@ -86,23 +90,16 @@ var ToolbarItem = ({ itemType, icon, children, ...props }) => {
86
90
  var [ToolbarContextProvider, useToolbarContext] = createContext("Toolbar");
87
91
  var sectionToolbarLayout = "bs-[--rail-action] bg-[--sticky-bg] sticky block-start-0 __-block-start-px transition-opacity";
88
92
  var ToolbarRoot = ({ children, role, classNames }) => {
89
- const { id, model, range, cursor } = useSheetContext();
93
+ const { id, model, cursorFallbackRange, cursor } = useSheetContext();
90
94
  const { hasAttention } = useAttention(id);
91
95
  const dispatch = useIntentDispatcher();
92
96
  const handleAction = useCallback((action) => {
93
97
  switch (action.key) {
94
98
  case "align":
95
- if (cursor) {
96
- const index = model.sheet.ranges?.findIndex((range2) => range2.key === action.key && inRange(range2.range, cursor));
97
- const nextRange = range ? {
98
- from: range.from,
99
- to: range.to ?? range.from
100
- } : {
101
- from: cursor,
102
- to: cursor
103
- };
99
+ if (cursor && cursorFallbackRange) {
100
+ const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && inRange(rangeFromIndex(model.sheet, range.range), cursor));
104
101
  const nextRangeEntity = {
105
- range: nextRange,
102
+ range: rangeToIndex(model.sheet, cursorFallbackRange),
106
103
  key: action.key,
107
104
  value: action.value
108
105
  };
@@ -115,39 +112,34 @@ var ToolbarRoot = ({ children, role, classNames }) => {
115
112
  break;
116
113
  case "style":
117
114
  if (action.value === "unset") {
118
- const index = model.sheet.ranges?.findIndex((range2) => range2.key === action.key);
115
+ const index = model.sheet.ranges?.findIndex((range) => range.key === action.key);
119
116
  if (index >= 0) {
120
117
  model.sheet.ranges?.splice(index, 1);
121
118
  }
122
- } else if (range || cursor) {
123
- const nextRange = range ? {
124
- from: range.from,
125
- to: range.to ?? range.from
126
- } : {
127
- from: cursor,
128
- to: cursor
129
- };
119
+ } else if (cursorFallbackRange) {
130
120
  model.sheet.ranges?.push({
131
- range: nextRange,
121
+ range: rangeToIndex(model.sheet, cursorFallbackRange),
132
122
  key: action.key,
133
123
  value: action.value
134
124
  });
135
125
  }
136
126
  break;
137
127
  case "comment": {
138
- void dispatch({
139
- action: "dxos.org/plugin/thread/action/create",
140
- data: {
141
- cursor: action.value,
142
- name: action.cellContent,
143
- subject: model.sheet
144
- }
145
- });
128
+ if (cursorFallbackRange) {
129
+ void dispatch({
130
+ action: "dxos.org/plugin/thread/action/create",
131
+ data: {
132
+ cursor: completeCellRangeToThreadCursor(cursorFallbackRange),
133
+ name: action.cellContent,
134
+ subject: model.sheet
135
+ }
136
+ });
137
+ }
146
138
  }
147
139
  }
148
140
  }, [
149
141
  model.sheet,
150
- range,
142
+ cursorFallbackRange,
151
143
  cursor,
152
144
  dispatch
153
145
  ]);
@@ -184,7 +176,7 @@ var Alignment = () => {
184
176
  const { cursor, model } = useSheetContext();
185
177
  const { onAction } = useToolbarContext("Alignment");
186
178
  const { t } = useTranslation(SHEET_PLUGIN);
187
- const value = useMemo(() => cursor ? model.sheet.ranges?.find(({ range, key }) => key === "alignment" && inRange(range, cursor))?.value : void 0, [
179
+ const value = useMemo(() => cursor ? model.sheet.ranges?.find(({ range, key }) => key === "alignment" && inRange(rangeFromIndex(model.sheet, range), cursor))?.value : void 0, [
188
180
  cursor,
189
181
  model.sheet.ranges
190
182
  ]);
@@ -212,7 +204,7 @@ var Styles = () => {
212
204
  const { cursor, model } = useSheetContext();
213
205
  const { onAction } = useToolbarContext("Styles");
214
206
  const { t } = useTranslation(SHEET_PLUGIN);
215
- const activeValues = useMemo(() => cursor ? model.sheet.ranges?.filter(({ range, key }) => key === "style" && inRange(range, cursor)).reduce((acc, { value }) => {
207
+ const activeValues = useMemo(() => cursor ? model.sheet.ranges?.filter(({ range, key }) => key === "style" && inRange(rangeFromIndex(model.sheet, range), cursor)).reduce((acc, { value }) => {
216
208
  acc.add(value);
217
209
  return acc;
218
210
  }, /* @__PURE__ */ new Set()) : void 0, [
@@ -232,33 +224,31 @@ var Styles = () => {
232
224
  };
233
225
  var Actions = () => {
234
226
  const { onAction } = useToolbarContext("Actions");
235
- const { cursor, range, model } = useSheetContext();
227
+ const { cursorFallbackRange, cursor, model } = useSheetContext();
236
228
  const { t } = useTranslation(SHEET_PLUGIN);
237
229
  const overlapsCommentAnchor = (model.sheet.threads ?? []).filter(nonNullable).filter((thread) => thread.status !== "resolved").some((thread) => {
238
- if (!cursor) {
230
+ if (!cursorFallbackRange) {
239
231
  return false;
240
232
  }
241
- return addressToIndex(model.sheet, cursor) === thread.anchor;
233
+ return rangeToIndex(model.sheet, cursorFallbackRange) === thread.anchor;
242
234
  });
243
- const hasCursor = !!cursor;
244
- const cursorOnly = hasCursor && !range && !overlapsCommentAnchor;
245
- const tooltipLabelKey = !hasCursor ? "no cursor label" : overlapsCommentAnchor ? "selection overlaps existing comment label" : range ? "comment ranges not supported label" : "comment label";
235
+ const tooltipLabelKey = !cursor ? "no cursor label" : overlapsCommentAnchor ? "selection overlaps existing comment label" : "comment label";
246
236
  return /* @__PURE__ */ React2.createElement(ToolbarItem, {
247
237
  itemType: "button",
248
238
  value: "comment",
249
239
  icon: "ph--chat-text--regular",
250
240
  "data-testid": "editor.toolbar.comment",
251
241
  onClick: () => {
252
- if (!cursor) {
242
+ if (!(cursorFallbackRange && cursor)) {
253
243
  return;
254
244
  }
255
245
  return onAction?.({
256
246
  key: "comment",
257
- value: addressToIndex(model.sheet, cursor),
247
+ value: rangeToIndex(model.sheet, cursorFallbackRange),
258
248
  cellContent: model.getCellText(cursor)
259
249
  });
260
250
  },
261
- disabled: !cursorOnly || overlapsCommentAnchor
251
+ disabled: !cursor || overlapsCommentAnchor
262
252
  }, t(tooltipLabelKey));
263
253
  };
264
254
  var Toolbar = {
@@ -287,4 +277,4 @@ var SheetContainer_default = SheetContainer;
287
277
  export {
288
278
  SheetContainer_default as default
289
279
  };
290
- //# sourceMappingURL=SheetContainer-AKWROARP.mjs.map
280
+ //# sourceMappingURL=SheetContainer-JBB7W52Y.mjs.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 { FunctionEditor } from '../FunctionEditor';\nimport { GridSheet } from '../GridSheet';\nimport { SheetProvider, type SheetProviderProps } from '../SheetContext';\nimport { Toolbar } from '../Toolbar';\n\nexport const SheetContainer = ({ graph, sheet, role }: SheetProviderProps & { role?: string }) => {\n return (\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 );\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 Toolbar as NaturalToolbar,\n Tooltip,\n type ToolbarToggleGroupItemProps as NaturalToolbarToggleGroupItemProps,\n type ToolbarButtonProps as NaturalToolbarButtonProps,\n type ToolbarToggleProps as NaturalToolbarToggleProps,\n type ThemedClassName,\n useTranslation,\n} from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { nonNullable } from '@dxos/util';\n\nimport {\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 'align':\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 === 'alignment' && 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: 'align', value })}\n >\n {alignmentOptions.map(({ value, icon }) => (\n <ToolbarItem itemType='toggleGroupItem' key={value} value={value} icon={icon}>\n {t(`toolbar ${value} label`)}\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": ["React", "React", "Icon", "mx", "FunctionEditor", "model", "cursor", "range", "useSheetContext", "value", "formula", "getCellValue", "isFormula", "graph", "mapFunctionBindingFromId", "mapFormulaIndicesToRefs", "String", "div", "className", "mx", "rangeToA1Notation", "addressToA1Notation", "Icon", "icon", "classNames", "span", "createContext", "React", "useCallback", "useMemo", "useIntentDispatcher", "Icon", "Toolbar", "NaturalToolbar", "Tooltip", "useTranslation", "useAttention", "nonNullable", "buttonStyles", "tooltipProps", "side", "classNames", "ToolbarSeparator", "React", "div", "role", "className", "ToolbarItem", "itemType", "icon", "children", "props", "Invoker", "NaturalToolbar", "ToggleGroupItem", "Toggle", "Button", "Tooltip", "Root", "Trigger", "asChild", "variant", "Icon", "size", "span", "Portal", "Content", "Arrow", "ToolbarContextProvider", "useToolbarContext", "createContext", "sectionToolbarLayout", "ToolbarRoot", "id", "model", "cursorFallbackRange", "cursor", "useSheetContext", "hasAttention", "useAttention", "dispatch", "useIntentDispatcher", "handleAction", "useCallback", "action", "key", "index", "sheet", "ranges", "findIndex", "range", "inRange", "rangeFromIndex", "nextRangeEntity", "rangeToIndex", "value", "push", "splice", "data", "completeCellRangeToThreadCursor", "name", "cellContent", "subject", "onAction", "alignmentOptions", "Alignment", "t", "useTranslation", "SHEET_PLUGIN", "useMemo", "find", "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", "graph", "sheet", "role", "React", "SheetProvider", "Toolbar", "Root", "Styles", "Alignment", "Separator", "Actions", "div", "className", "GridSheet", "FunctionEditor", "SheetContainer"]
7
+ }