@dxos/plugin-sheet 0.8.2-staging.7ac8446 → 0.8.2

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 (188) hide show
  1. package/dist/lib/browser/SheetContainer-GXPG3ZDN.mjs +351 -0
  2. package/dist/lib/browser/SheetContainer-GXPG3ZDN.mjs.map +7 -0
  3. package/dist/lib/browser/anchor-sort-CUTFYIT4.mjs +24 -0
  4. package/dist/lib/browser/anchor-sort-CUTFYIT4.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-ZOKEQL2K.mjs → chunk-5FLX3UGU.mjs} +55 -63
  6. package/dist/lib/browser/chunk-5FLX3UGU.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-AYMJXZFS.mjs +847 -0
  8. package/dist/lib/browser/chunk-AYMJXZFS.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-AT5ZK6JD.mjs → chunk-FJRLDX7Z.mjs} +1 -1
  10. package/dist/lib/browser/chunk-FJRLDX7Z.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-EMSCNWEK.mjs → chunk-IR42IS3F.mjs} +2 -2
  12. package/dist/lib/{node-esm/chunk-76T5X4VP.mjs.map → browser/chunk-IR42IS3F.mjs.map} +1 -1
  13. package/dist/lib/browser/{compute-graph-registry-WEJLJJ6T.mjs → compute-graph-registry-IXGGJJBU.mjs} +3 -3
  14. package/dist/lib/browser/compute-graph-registry-IXGGJJBU.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +17 -16
  16. package/dist/lib/browser/index.mjs.map +3 -3
  17. package/dist/lib/browser/{intent-resolver-6OUEM3IG.mjs → intent-resolver-UI4DHURQ.mjs} +2 -2
  18. package/dist/lib/browser/{markdown-DR4RDEEY.mjs → markdown-T4TUP4BF.mjs} +4 -4
  19. package/dist/lib/browser/markdown-T4TUP4BF.mjs.map +7 -0
  20. package/dist/lib/browser/meta.json +1 -1
  21. package/dist/lib/browser/{react-surface-ECKBP3UZ.mjs → react-surface-KI6T5M2X.mjs} +5 -5
  22. package/dist/lib/browser/types/index.mjs +1 -1
  23. package/dist/lib/node/SheetContainer-UUDOHLZR.cjs +351 -0
  24. package/dist/lib/node/SheetContainer-UUDOHLZR.cjs.map +7 -0
  25. package/dist/lib/node/{thread-WP43BC4N.cjs → anchor-sort-LTLYUTUP.cjs} +17 -10
  26. package/dist/lib/node/anchor-sort-LTLYUTUP.cjs.map +7 -0
  27. package/dist/lib/node/{chunk-D4MOMCEU.cjs → chunk-76NESQLB.cjs} +70 -78
  28. package/dist/lib/node/chunk-76NESQLB.cjs.map +7 -0
  29. package/dist/lib/node/chunk-BXBNSNDK.cjs +855 -0
  30. package/dist/lib/node/chunk-BXBNSNDK.cjs.map +7 -0
  31. package/dist/lib/node/{chunk-LEV7OSTK.cjs → chunk-FIM6EZ6M.cjs} +4 -4
  32. package/dist/lib/node/chunk-FIM6EZ6M.cjs.map +7 -0
  33. package/dist/lib/node/{chunk-O2FOEUYB.cjs → chunk-LJWWS53Z.cjs} +5 -5
  34. package/dist/lib/node/{chunk-O2FOEUYB.cjs.map → chunk-LJWWS53Z.cjs.map} +1 -1
  35. package/dist/lib/node/{compute-graph-registry-VVSRJUGS.cjs → compute-graph-registry-ARLDHPFW.cjs} +7 -7
  36. package/dist/lib/node/compute-graph-registry-ARLDHPFW.cjs.map +7 -0
  37. package/dist/lib/node/index.cjs +21 -20
  38. package/dist/lib/node/index.cjs.map +3 -3
  39. package/dist/lib/node/{intent-resolver-ICHNDL6F.cjs → intent-resolver-EVLGL7VZ.cjs} +9 -9
  40. package/dist/lib/node/{markdown-E7OUIMZO.cjs → markdown-DBPOAYI7.cjs} +8 -8
  41. package/dist/lib/node/markdown-DBPOAYI7.cjs.map +7 -0
  42. package/dist/lib/node/meta.json +1 -1
  43. package/dist/lib/node/{react-surface-6PBWE75L.cjs → react-surface-QHAPOAR2.cjs} +14 -14
  44. package/dist/lib/node/types/index.cjs +29 -29
  45. package/dist/lib/node/types/index.cjs.map +1 -1
  46. package/dist/lib/node-esm/SheetContainer-44KHKMPI.mjs +352 -0
  47. package/dist/lib/node-esm/SheetContainer-44KHKMPI.mjs.map +7 -0
  48. package/dist/lib/node-esm/anchor-sort-3E2VGLO6.mjs +25 -0
  49. package/dist/lib/node-esm/anchor-sort-3E2VGLO6.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-6NB67Y6X.mjs → chunk-DIF3IOAB.mjs} +55 -63
  51. package/dist/lib/node-esm/chunk-DIF3IOAB.mjs.map +7 -0
  52. package/dist/lib/node-esm/chunk-GCCM7R45.mjs +848 -0
  53. package/dist/lib/node-esm/chunk-GCCM7R45.mjs.map +7 -0
  54. package/dist/lib/node-esm/{chunk-76T5X4VP.mjs → chunk-IQ76YE6M.mjs} +2 -2
  55. package/dist/lib/{browser/chunk-EMSCNWEK.mjs.map → node-esm/chunk-IQ76YE6M.mjs.map} +1 -1
  56. package/dist/lib/node-esm/{chunk-HXBUY5ET.mjs → chunk-NMCVJWDT.mjs} +1 -1
  57. package/dist/lib/node-esm/chunk-NMCVJWDT.mjs.map +7 -0
  58. package/dist/lib/node-esm/{compute-graph-registry-PBQ52KH6.mjs → compute-graph-registry-7PDWXMHF.mjs} +3 -3
  59. package/dist/lib/node-esm/compute-graph-registry-7PDWXMHF.mjs.map +7 -0
  60. package/dist/lib/node-esm/index.mjs +17 -16
  61. package/dist/lib/node-esm/index.mjs.map +3 -3
  62. package/dist/lib/node-esm/{intent-resolver-2JNQCFCI.mjs → intent-resolver-TPOH5JM5.mjs} +2 -2
  63. package/dist/lib/node-esm/{markdown-BPKS2TNG.mjs → markdown-WWUJ3E5F.mjs} +4 -4
  64. package/dist/lib/node-esm/markdown-WWUJ3E5F.mjs.map +7 -0
  65. package/dist/lib/node-esm/meta.json +1 -1
  66. package/dist/lib/node-esm/{react-surface-UM2Y3ZWZ.mjs → react-surface-XT2J3S67.mjs} +5 -5
  67. package/dist/lib/node-esm/types/index.mjs +1 -1
  68. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/anchor-sort.d.ts +6 -0
  70. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -0
  71. package/dist/types/src/capabilities/compute-graph-registry.d.ts +2 -2
  72. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/index.d.ts +6 -6
  74. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/markdown.d.ts +2 -2
  76. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  77. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
  78. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  79. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  80. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
  81. package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -1
  82. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +3 -2
  83. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  84. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  85. package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
  86. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +2 -2
  87. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
  88. package/dist/types/src/components/SheetToolbar/align.d.ts +4 -1
  89. package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -1
  90. package/dist/types/src/components/SheetToolbar/style.d.ts +3 -1
  91. package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -1
  92. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts +2 -3
  93. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -1
  94. package/dist/types/src/components/index.d.ts +1 -6
  95. package/dist/types/src/components/index.d.ts.map +1 -1
  96. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  97. package/dist/types/src/extensions/editor/extension.d.ts.map +1 -1
  98. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  99. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  100. package/dist/types/src/model/testing.d.ts.map +1 -1
  101. package/dist/types/src/model/useSheetModel.d.ts.map +1 -1
  102. package/dist/types/src/serializer.d.ts.map +1 -1
  103. package/dist/types/src/testing/data.d.ts.map +1 -1
  104. package/dist/types/src/testing/playwright/sheet-manager.d.ts.map +1 -1
  105. package/dist/types/src/testing/testing.d.ts.map +1 -1
  106. package/dist/types/src/translations.d.ts +2 -54
  107. package/dist/types/src/translations.d.ts.map +1 -1
  108. package/dist/types/src/types/schema.d.ts +38 -150
  109. package/dist/types/src/types/schema.d.ts.map +1 -1
  110. package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
  111. package/dist/types/src/types/types.d.ts +36 -36
  112. package/dist/types/src/types/types.d.ts.map +1 -1
  113. package/dist/types/src/types/util.d.ts.map +1 -1
  114. package/dist/types/tsconfig.tsbuildinfo +1 -1
  115. package/package.json +55 -48
  116. package/src/SheetPlugin.tsx +7 -5
  117. package/src/capabilities/anchor-sort.ts +22 -0
  118. package/src/capabilities/compute-graph-registry.ts +3 -3
  119. package/src/capabilities/index.ts +1 -1
  120. package/src/capabilities/markdown.ts +3 -3
  121. package/src/components/ComputeGraph/compute-graph.stories.tsx +4 -4
  122. package/src/components/FunctionEditor/FunctionEditor.tsx +1 -1
  123. package/src/components/GridSheet/GridSheet.stories.tsx +5 -2
  124. package/src/components/GridSheet/GridSheet.tsx +18 -12
  125. package/src/components/GridSheet/SheetCellEditor.stories.tsx +2 -2
  126. package/src/components/GridSheet/util.ts +17 -11
  127. package/src/components/RangeList/RangeList.tsx +2 -2
  128. package/src/components/SheetContainer/SheetContainer.stories.tsx +3 -6
  129. package/src/components/SheetContainer/SheetContainer.tsx +5 -8
  130. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +2 -2
  131. package/src/components/SheetToolbar/SheetToolbar.tsx +56 -20
  132. package/src/components/SheetToolbar/align.ts +44 -14
  133. package/src/components/SheetToolbar/style.ts +48 -12
  134. package/src/components/SheetToolbar/useToolbarState.ts +3 -4
  135. package/src/extensions/compute.ts +1 -1
  136. package/src/integrations/thread-ranges.ts +14 -17
  137. package/src/model/sheet-model.test.ts +1 -1
  138. package/src/model/sheet-model.ts +17 -17
  139. package/src/sanity.test.ts +3 -3
  140. package/src/serializer.ts +3 -4
  141. package/src/testing/playwright/sheet-manager.ts +9 -9
  142. package/src/types/schema.ts +20 -22
  143. package/src/types/types.ts +25 -25
  144. package/src/types/util.ts +2 -3
  145. package/dist/lib/browser/SheetContainer-B3A5443Z.mjs +0 -370
  146. package/dist/lib/browser/SheetContainer-B3A5443Z.mjs.map +0 -7
  147. package/dist/lib/browser/chunk-AT5ZK6JD.mjs.map +0 -7
  148. package/dist/lib/browser/chunk-CHMPICA6.mjs +0 -815
  149. package/dist/lib/browser/chunk-CHMPICA6.mjs.map +0 -7
  150. package/dist/lib/browser/chunk-ZOKEQL2K.mjs.map +0 -7
  151. package/dist/lib/browser/compute-graph-registry-WEJLJJ6T.mjs.map +0 -7
  152. package/dist/lib/browser/markdown-DR4RDEEY.mjs.map +0 -7
  153. package/dist/lib/browser/thread-76MK2FMV.mjs +0 -17
  154. package/dist/lib/browser/thread-76MK2FMV.mjs.map +0 -7
  155. package/dist/lib/node/SheetContainer-LGRD3TTQ.cjs +0 -364
  156. package/dist/lib/node/SheetContainer-LGRD3TTQ.cjs.map +0 -7
  157. package/dist/lib/node/chunk-AEH3L5QZ.cjs +0 -822
  158. package/dist/lib/node/chunk-AEH3L5QZ.cjs.map +0 -7
  159. package/dist/lib/node/chunk-D4MOMCEU.cjs.map +0 -7
  160. package/dist/lib/node/chunk-LEV7OSTK.cjs.map +0 -7
  161. package/dist/lib/node/compute-graph-registry-VVSRJUGS.cjs.map +0 -7
  162. package/dist/lib/node/markdown-E7OUIMZO.cjs.map +0 -7
  163. package/dist/lib/node/thread-WP43BC4N.cjs.map +0 -7
  164. package/dist/lib/node-esm/SheetContainer-4FNTLG5R.mjs +0 -371
  165. package/dist/lib/node-esm/SheetContainer-4FNTLG5R.mjs.map +0 -7
  166. package/dist/lib/node-esm/chunk-6NB67Y6X.mjs.map +0 -7
  167. package/dist/lib/node-esm/chunk-HXBUY5ET.mjs.map +0 -7
  168. package/dist/lib/node-esm/chunk-WQHYR4WD.mjs +0 -816
  169. package/dist/lib/node-esm/chunk-WQHYR4WD.mjs.map +0 -7
  170. package/dist/lib/node-esm/compute-graph-registry-PBQ52KH6.mjs.map +0 -7
  171. package/dist/lib/node-esm/markdown-BPKS2TNG.mjs.map +0 -7
  172. package/dist/lib/node-esm/thread-4NCPE5FK.mjs +0 -18
  173. package/dist/lib/node-esm/thread-4NCPE5FK.mjs.map +0 -7
  174. package/dist/types/src/capabilities/thread.d.ts +0 -6
  175. package/dist/types/src/capabilities/thread.d.ts.map +0 -1
  176. package/dist/types/src/components/SheetToolbar/comment.d.ts +0 -23
  177. package/dist/types/src/components/SheetToolbar/comment.d.ts.map +0 -1
  178. package/dist/types/src/components/SheetToolbar/useToolbarAction.d.ts +0 -8
  179. package/dist/types/src/components/SheetToolbar/useToolbarAction.d.ts.map +0 -1
  180. package/src/capabilities/thread.ts +0 -14
  181. package/src/components/SheetToolbar/comment.ts +0 -56
  182. package/src/components/SheetToolbar/useToolbarAction.ts +0 -87
  183. /package/dist/lib/browser/{intent-resolver-6OUEM3IG.mjs.map → intent-resolver-UI4DHURQ.mjs.map} +0 -0
  184. /package/dist/lib/browser/{react-surface-ECKBP3UZ.mjs.map → react-surface-KI6T5M2X.mjs.map} +0 -0
  185. /package/dist/lib/node/{intent-resolver-ICHNDL6F.cjs.map → intent-resolver-EVLGL7VZ.cjs.map} +0 -0
  186. /package/dist/lib/node/{react-surface-6PBWE75L.cjs.map → react-surface-QHAPOAR2.cjs.map} +0 -0
  187. /package/dist/lib/node-esm/{intent-resolver-2JNQCFCI.mjs.map → intent-resolver-TPOH5JM5.mjs.map} +0 -0
  188. /package/dist/lib/node-esm/{react-surface-UM2Y3ZWZ.mjs.map → react-surface-XT2J3S67.mjs.map} +0 -0
@@ -0,0 +1,351 @@
1
+ import {
2
+ GridSheet,
3
+ SheetProvider,
4
+ useComputeGraph,
5
+ useSheetContext
6
+ } from "./chunk-AYMJXZFS.mjs";
7
+ import {
8
+ alignKey,
9
+ mapFormulaIndicesToRefs,
10
+ rangeFromIndex,
11
+ rangeToIndex
12
+ } from "./chunk-5FLX3UGU.mjs";
13
+ import "./chunk-FJRLDX7Z.mjs";
14
+ import {
15
+ SHEET_PLUGIN
16
+ } from "./chunk-D3G4UGEK.mjs";
17
+
18
+ // packages/plugins/plugin-sheet/src/components/SheetContainer/SheetContainer.tsx
19
+ import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
20
+ import React3 from "react";
21
+ import { fullyQualifiedId } from "@dxos/react-client/echo";
22
+ import { StackItem } from "@dxos/react-ui-stack";
23
+
24
+ // packages/plugins/plugin-sheet/src/components/FunctionEditor/FunctionEditor.tsx
25
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
26
+ import React from "react";
27
+ import { addressToA1Notation, isFormula, rangeToA1Notation } from "@dxos/compute";
28
+ import { Icon } from "@dxos/react-ui";
29
+ var FunctionEditor = () => {
30
+ var _effect = _useSignals();
31
+ try {
32
+ const { model, cursor, range } = useSheetContext();
33
+ let value;
34
+ let formula = false;
35
+ if (cursor) {
36
+ value = model.getCellValue(cursor);
37
+ if (isFormula(value)) {
38
+ value = model.graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(model.sheet, value));
39
+ formula = true;
40
+ } else if (value != null) {
41
+ value = String(value);
42
+ }
43
+ }
44
+ return /* @__PURE__ */ React.createElement("div", {
45
+ className: "flex shrink-0 justify-between items-center px-4 py-1 text-sm bg-toolbarSurface border-bs !border-subduedSeparator"
46
+ }, /* @__PURE__ */ React.createElement("div", {
47
+ className: "flex gap-4 items-center"
48
+ }, /* @__PURE__ */ React.createElement("div", {
49
+ className: "flex w-16 items-center font-mono"
50
+ }, range && rangeToA1Notation(range) || cursor && addressToA1Notation(cursor)), /* @__PURE__ */ React.createElement("div", {
51
+ className: "flex gap-2 items-center"
52
+ }, /* @__PURE__ */ React.createElement(Icon, {
53
+ icon: "ph--function--regular",
54
+ classNames: [
55
+ "text-greenText",
56
+ formula ? "visible" : "invisible"
57
+ ]
58
+ }), /* @__PURE__ */ React.createElement("span", {
59
+ className: "font-mono"
60
+ }, value))));
61
+ } finally {
62
+ _effect.f();
63
+ }
64
+ };
65
+
66
+ // packages/plugins/plugin-sheet/src/components/SheetToolbar/SheetToolbar.tsx
67
+ import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
68
+ import { Rx } from "@effect-rx/rx-react";
69
+ import React2, { useMemo as useMemo2 } from "react";
70
+ import { useAppGraph } from "@dxos/app-framework";
71
+ import { createGapSeparator, MenuProvider, rxFromSignal, ToolbarMenu, useMenuActions } from "@dxos/react-ui-menu";
72
+
73
+ // packages/plugins/plugin-sheet/src/components/SheetToolbar/align.ts
74
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
75
+ import { useEffect } from "react";
76
+ import { inRange } from "@dxos/compute";
77
+ import { createMenuAction, createMenuItemGroup } from "@dxos/react-ui-menu";
78
+ var aligns = {
79
+ start: "ph--text-align-left--regular",
80
+ center: "ph--text-align-center--regular",
81
+ end: "ph--text-align-right--regular"
82
+ };
83
+ var useAlignState = (state) => {
84
+ var _effect = _useSignals2();
85
+ try {
86
+ const { cursor, model } = useSheetContext();
87
+ useEffect(() => {
88
+ state[alignKey] = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor))?.value : void 0;
89
+ }, [
90
+ cursor,
91
+ model.sheet
92
+ ]);
93
+ } finally {
94
+ _effect.f();
95
+ }
96
+ };
97
+ var createAlignGroupAction = (value) => createMenuItemGroup("align", {
98
+ label: [
99
+ "align label",
100
+ {
101
+ ns: SHEET_PLUGIN
102
+ }
103
+ ],
104
+ variant: "toggleGroup",
105
+ selectCardinality: "single",
106
+ value: `${alignKey}--${value}`
107
+ });
108
+ var createAlignActions = (model, state, cursorFallbackRange) => Object.entries(aligns).map(([alignValue, icon]) => {
109
+ return createMenuAction(`${alignKey}--${alignValue}`, () => {
110
+ if (!cursorFallbackRange) {
111
+ return;
112
+ }
113
+ const index = model.sheet.ranges?.findIndex((range) => range.key === alignKey && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
114
+ const nextRangeEntity = {
115
+ range: rangeToIndex(model.sheet, cursorFallbackRange),
116
+ key: alignKey,
117
+ value: alignValue
118
+ };
119
+ if (index < 0) {
120
+ model.sheet.ranges?.push(nextRangeEntity);
121
+ state[alignKey] = nextRangeEntity.value;
122
+ } else if (model.sheet.ranges[index].value === nextRangeEntity.value) {
123
+ model.sheet.ranges?.splice(index, 1);
124
+ state[alignKey] = void 0;
125
+ } else {
126
+ model.sheet.ranges?.splice(index, 1, nextRangeEntity);
127
+ state[alignKey] = nextRangeEntity.value;
128
+ }
129
+ }, {
130
+ key: alignKey,
131
+ value: alignValue,
132
+ checked: state[alignKey] === alignValue,
133
+ label: [
134
+ `range value ${alignValue} label`,
135
+ {
136
+ ns: SHEET_PLUGIN
137
+ }
138
+ ],
139
+ icon,
140
+ testId: `grid.toolbar.${alignKey}.${alignValue}`
141
+ });
142
+ });
143
+ var createAlign = (model, state, cursorFallbackRange) => {
144
+ const alignGroup = createAlignGroupAction(state[alignKey]);
145
+ const alignActions = createAlignActions(model, state, cursorFallbackRange);
146
+ return {
147
+ nodes: [
148
+ alignGroup,
149
+ ...alignActions
150
+ ],
151
+ edges: [
152
+ {
153
+ source: "root",
154
+ target: "align"
155
+ },
156
+ ...alignActions.map(({ id }) => ({
157
+ source: alignGroup.id,
158
+ target: id
159
+ }))
160
+ ]
161
+ };
162
+ };
163
+
164
+ // packages/plugins/plugin-sheet/src/components/SheetToolbar/style.ts
165
+ import { useEffect as useEffect2 } from "react";
166
+ import { inRange as inRange2 } from "@dxos/compute";
167
+ import { createMenuAction as createMenuAction2, createMenuItemGroup as createMenuItemGroup2 } from "@dxos/react-ui-menu";
168
+ var styles = {
169
+ highlight: "ph--highlighter--regular",
170
+ softwrap: "ph--paragraph--regular"
171
+ };
172
+ var useStyleState = (state) => {
173
+ const { cursorFallbackRange, model } = useSheetContext();
174
+ useEffect2(() => {
175
+ state.highlight = false;
176
+ state.softwrap = false;
177
+ if (cursorFallbackRange && model.sheet.ranges) {
178
+ model.sheet.ranges.filter(({ range, key }) => key === "style" && inRange2(rangeFromIndex(model.sheet, range), cursorFallbackRange.from)).forEach(({ value }) => {
179
+ state[value] = true;
180
+ });
181
+ }
182
+ }, [
183
+ cursorFallbackRange,
184
+ model.sheet
185
+ ]);
186
+ };
187
+ var createStyleGroup = (state) => {
188
+ return createMenuItemGroup2("style", {
189
+ variant: "toggleGroup",
190
+ selectCardinality: "multiple",
191
+ value: Object.keys(styles).filter((key) => !!state[key]).map((styleValue) => `style--${styleValue}`)
192
+ });
193
+ };
194
+ var createStyleActions = (model, state, cursorFallbackRange) => Object.entries(styles).map(([styleValue, icon]) => {
195
+ return createMenuAction2(`style--${styleValue}`, () => {
196
+ if (!cursorFallbackRange) {
197
+ return;
198
+ }
199
+ const index = model.sheet.ranges?.findIndex((range) => range.key === "style" && inRange2(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
200
+ const nextRangeEntity = {
201
+ range: rangeToIndex(model.sheet, cursorFallbackRange),
202
+ key: "style",
203
+ value: styleValue
204
+ };
205
+ if (model.sheet.ranges.filter(({ range, key: rangeKey }) => rangeKey === "style" && inRange2(rangeFromIndex(model.sheet, range), cursorFallbackRange.from)).some(({ value: rangeValue }) => rangeValue === styleValue)) {
206
+ if (index >= 0) {
207
+ model.sheet.ranges?.splice(index, 1);
208
+ }
209
+ state[nextRangeEntity.value] = false;
210
+ } else {
211
+ model.sheet.ranges?.push(nextRangeEntity);
212
+ state[nextRangeEntity.value] = true;
213
+ }
214
+ }, {
215
+ key: "style",
216
+ value: styleValue,
217
+ icon,
218
+ label: [
219
+ `range value ${styleValue} label`,
220
+ {
221
+ ns: SHEET_PLUGIN
222
+ }
223
+ ],
224
+ checked: !!state[styleValue]
225
+ });
226
+ });
227
+ var createStyle = (model, state, cursorFallbackRange) => {
228
+ const styleGroupAction = createStyleGroup(state);
229
+ const styleActions = createStyleActions(model, state, cursorFallbackRange);
230
+ return {
231
+ nodes: [
232
+ styleGroupAction,
233
+ ...styleActions
234
+ ],
235
+ edges: [
236
+ {
237
+ source: "root",
238
+ target: "style"
239
+ },
240
+ ...styleActions.map(({ id }) => ({
241
+ source: styleGroupAction.id,
242
+ target: id
243
+ }))
244
+ ]
245
+ };
246
+ };
247
+
248
+ // packages/plugins/plugin-sheet/src/components/SheetToolbar/useToolbarState.ts
249
+ import { useMemo } from "react";
250
+ import { live } from "@dxos/live-object";
251
+ var useToolbarState = (initialState = {}) => {
252
+ return useMemo(() => live(initialState), []);
253
+ };
254
+
255
+ // packages/plugins/plugin-sheet/src/components/SheetToolbar/SheetToolbar.tsx
256
+ var createToolbarActions = (model, state, cursorFallbackRange, customActions) => {
257
+ return Rx.make((get) => {
258
+ const align = get(rxFromSignal(() => createAlign(model, state, cursorFallbackRange)));
259
+ const style = get(rxFromSignal(() => createStyle(model, state, cursorFallbackRange)));
260
+ const gap = createGapSeparator();
261
+ const nodes = [
262
+ ...align.nodes,
263
+ ...style.nodes,
264
+ ...gap.nodes
265
+ ];
266
+ const edges = [
267
+ ...align.edges,
268
+ ...style.edges,
269
+ ...gap.edges
270
+ ];
271
+ if (customActions) {
272
+ const custom = get(customActions);
273
+ nodes.push(...custom.nodes);
274
+ edges.push(...custom.edges);
275
+ }
276
+ return {
277
+ nodes,
278
+ edges
279
+ };
280
+ });
281
+ };
282
+ var SheetToolbar = ({ id, classNames }) => {
283
+ var _effect = _useSignals3();
284
+ try {
285
+ const { model, cursorFallbackRange } = useSheetContext();
286
+ const state = useToolbarState({});
287
+ useAlignState(state);
288
+ useStyleState(state);
289
+ const { graph } = useAppGraph();
290
+ const customActions = useMemo2(() => {
291
+ return Rx.make((get) => {
292
+ const actions = get(graph.actions(id));
293
+ const nodes = actions.filter((action) => action.properties.disposition === "toolbar");
294
+ return {
295
+ nodes,
296
+ edges: nodes.map((node) => ({
297
+ source: "root",
298
+ target: node.id
299
+ }))
300
+ };
301
+ });
302
+ }, [
303
+ graph
304
+ ]);
305
+ const actionsCreator = useMemo2(() => createToolbarActions(model, state, cursorFallbackRange, customActions), [
306
+ model,
307
+ state,
308
+ cursorFallbackRange,
309
+ customActions
310
+ ]);
311
+ const menu = useMenuActions(actionsCreator);
312
+ return /* @__PURE__ */ React2.createElement(MenuProvider, {
313
+ ...menu,
314
+ attendableId: id
315
+ }, /* @__PURE__ */ React2.createElement(ToolbarMenu, {
316
+ classNames
317
+ }));
318
+ } finally {
319
+ _effect.f();
320
+ }
321
+ };
322
+
323
+ // packages/plugins/plugin-sheet/src/components/SheetContainer/SheetContainer.tsx
324
+ var SheetContainer = ({ space, sheet, role, ignoreAttention }) => {
325
+ var _effect = _useSignals4();
326
+ try {
327
+ const graph = useComputeGraph(space);
328
+ return graph ? /* @__PURE__ */ React3.createElement(SheetProvider, {
329
+ sheet,
330
+ graph,
331
+ ignoreAttention
332
+ }, /* @__PURE__ */ React3.createElement(StackItem.Content, {
333
+ toolbar: true,
334
+ statusbar: true,
335
+ ...role === "section" && {
336
+ classNames: "aspect-video"
337
+ }
338
+ }, /* @__PURE__ */ React3.createElement(SheetToolbar, {
339
+ id: fullyQualifiedId(sheet)
340
+ }), /* @__PURE__ */ React3.createElement(GridSheet, null), /* @__PURE__ */ React3.createElement(FunctionEditor, null))) : null;
341
+ } finally {
342
+ _effect.f();
343
+ }
344
+ };
345
+
346
+ // packages/plugins/plugin-sheet/src/components/SheetContainer/index.ts
347
+ var SheetContainer_default = SheetContainer;
348
+ export {
349
+ SheetContainer_default as default
350
+ };
351
+ //# sourceMappingURL=SheetContainer-GXPG3ZDN.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/SheetContainer/SheetContainer.tsx", "../../../src/components/FunctionEditor/FunctionEditor.tsx", "../../../src/components/SheetToolbar/SheetToolbar.tsx", "../../../src/components/SheetToolbar/align.ts", "../../../src/components/SheetToolbar/style.ts", "../../../src/components/SheetToolbar/useToolbarState.ts", "../../../src/components/SheetContainer/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { fullyQualifiedId, 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 { SheetToolbar } from '../SheetToolbar';\n\nexport type SheetContainerProps = {\n space: Space;\n sheet: SheetType;\n role?: string;\n ignoreAttention?: boolean;\n};\n\nexport const SheetContainer = ({ space, sheet, role, ignoreAttention }: SheetContainerProps) => {\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 <SheetToolbar id={fullyQualifiedId(sheet)} />\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 { addressToA1Notation, isFormula, rangeToA1Notation } from '@dxos/compute';\nimport { Icon } from '@dxos/react-ui';\n\nimport { mapFormulaIndicesToRefs } from '../../types';\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 bg-toolbarSurface border-bs !border-subduedSeparator'>\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 { Rx } from '@effect-rx/rx-react';\nimport React, { type PropsWithChildren, useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-framework';\nimport { type CompleteCellRange } from '@dxos/compute';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport {\n type ActionGraphEdges,\n type ActionGraphNodes,\n type ActionGraphProps,\n createGapSeparator,\n MenuProvider,\n rxFromSignal,\n ToolbarMenu,\n useMenuActions,\n} from '@dxos/react-ui-menu';\n\nimport { createAlign, useAlignState } from './align';\nimport { createStyle, useStyleState } from './style';\nimport { type ToolbarState, useToolbarState } from './useToolbarState';\nimport { type SheetModel } from '../../model';\nimport { useSheetContext } from '../SheetContext';\n\n//\n// Root\n//\n\nexport type SheetToolbarProps = ThemedClassName<PropsWithChildren<{ id: string }>>;\n\nconst createToolbarActions = (\n model: SheetModel,\n state: ToolbarState,\n cursorFallbackRange?: CompleteCellRange,\n customActions?: Rx.Rx<ActionGraphProps>,\n) => {\n return Rx.make((get) => {\n const align = get(rxFromSignal(() => createAlign(model, state, cursorFallbackRange)));\n const style = get(rxFromSignal(() => createStyle(model, state, cursorFallbackRange)));\n const gap = createGapSeparator();\n const nodes: ActionGraphNodes = [...align.nodes, ...style.nodes, ...gap.nodes];\n const edges: ActionGraphEdges = [...align.edges, ...style.edges, ...gap.edges];\n if (customActions) {\n const custom = get(customActions);\n nodes.push(...custom.nodes);\n edges.push(...custom.edges);\n }\n return {\n nodes,\n edges,\n };\n });\n};\n\nexport const SheetToolbar = ({ id, classNames }: SheetToolbarProps) => {\n const { model, cursorFallbackRange } = useSheetContext();\n const state = useToolbarState({});\n useAlignState(state);\n useStyleState(state);\n\n const { graph } = useAppGraph();\n const customActions = useMemo(() => {\n return Rx.make((get) => {\n const actions = get(graph.actions(id));\n const nodes = actions.filter((action) => action.properties.disposition === 'toolbar');\n return { nodes, edges: nodes.map((node) => ({ source: 'root', target: node.id })) };\n });\n }, [graph]);\n\n const actionsCreator = useMemo(\n () => createToolbarActions(model, state, cursorFallbackRange, customActions),\n [model, state, cursorFallbackRange, customActions],\n );\n const menu = useMenuActions(actionsCreator);\n\n return (\n <MenuProvider {...menu} attendableId={id}>\n <ToolbarMenu classNames={classNames} />\n </MenuProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { type CompleteCellRange, inRange } from '@dxos/compute';\nimport { createMenuAction, createMenuItemGroup, type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { type ToolbarState } from './useToolbarState';\nimport { SHEET_PLUGIN } from '../../meta';\nimport { type SheetModel } from '../../model';\nimport { type AlignKey, alignKey, type AlignValue, rangeFromIndex, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type AlignAction = { key: AlignKey; value: AlignValue };\n\nexport type AlignState = { [alignKey]: AlignValue | undefined };\n\nconst aligns: Record<AlignValue, string> = {\n start: 'ph--text-align-left--regular',\n center: 'ph--text-align-center--regular',\n end: 'ph--text-align-right--regular',\n};\n\nexport const useAlignState = (state: Partial<AlignState>) => {\n const { cursor, model } = useSheetContext();\n useEffect(() => {\n // TODO(thure): Can this O(n) call be memoized?\n state[alignKey] = (\n cursor\n ? model.sheet.ranges?.findLast(\n ({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor),\n )?.value\n : undefined\n ) as AlignValue | undefined;\n }, [cursor, model.sheet]);\n};\n\nconst createAlignGroupAction = (value?: AlignValue) =>\n createMenuItemGroup('align', {\n label: ['align label', { ns: SHEET_PLUGIN }],\n variant: 'toggleGroup',\n selectCardinality: 'single',\n value: `${alignKey}--${value}`,\n } as ToolbarMenuActionGroupProperties);\n\nconst createAlignActions = (model: SheetModel, state: ToolbarState, cursorFallbackRange?: CompleteCellRange) =>\n Object.entries(aligns).map(([alignValue, icon]) => {\n return createMenuAction<AlignAction>(\n `${alignKey}--${alignValue}`,\n () => {\n if (!cursorFallbackRange) {\n return;\n }\n const index =\n model.sheet.ranges?.findIndex(\n (range) =>\n range.key === alignKey && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: alignKey,\n value: alignValue as AlignValue,\n };\n if (index < 0) {\n model.sheet.ranges?.push(nextRangeEntity);\n state[alignKey] = nextRangeEntity.value;\n } else if (model.sheet.ranges![index].value === nextRangeEntity.value) {\n model.sheet.ranges?.splice(index, 1);\n state[alignKey] = undefined;\n } else {\n model.sheet.ranges?.splice(index, 1, nextRangeEntity);\n state[alignKey] = nextRangeEntity.value;\n }\n },\n {\n key: alignKey,\n value: alignValue as AlignValue,\n checked: state[alignKey] === alignValue,\n label: [`range value ${alignValue} label`, { ns: SHEET_PLUGIN }],\n icon,\n testId: `grid.toolbar.${alignKey}.${alignValue}`,\n },\n );\n });\n\nexport const createAlign = (model: SheetModel, state: ToolbarState, cursorFallbackRange?: CompleteCellRange) => {\n const alignGroup = createAlignGroupAction(state[alignKey]);\n const alignActions = createAlignActions(model, state, cursorFallbackRange);\n return {\n nodes: [alignGroup, ...alignActions],\n edges: [\n { source: 'root', target: 'align' },\n ...alignActions.map(({ id }) => ({ source: alignGroup.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { type CompleteCellRange, inRange } from '@dxos/compute';\nimport { createMenuAction, createMenuItemGroup, type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { type SheetModel } from '../../model';\nimport { rangeFromIndex, rangeToIndex, type StyleKey, type StyleValue } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type StyleState = Partial<Record<StyleValue, boolean>>;\n\nexport type StyleAction = { key: StyleKey; value: StyleValue };\n\nconst styles: Record<StyleValue, string> = {\n highlight: 'ph--highlighter--regular',\n softwrap: 'ph--paragraph--regular',\n};\n\nexport const useStyleState = (state: StyleState) => {\n const { cursorFallbackRange, model } = useSheetContext();\n\n useEffect(() => {\n state.highlight = false;\n state.softwrap = false;\n if (cursorFallbackRange && model.sheet.ranges) {\n model.sheet.ranges\n .filter(\n ({ range, key }) => key === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .forEach(({ value }) => {\n state[value as StyleValue] = true;\n });\n }\n }, [cursorFallbackRange, model.sheet]);\n};\n\nconst createStyleGroup = (state: StyleState) => {\n return createMenuItemGroup('style', {\n variant: 'toggleGroup',\n selectCardinality: 'multiple',\n value: Object.keys(styles)\n .filter((key) => !!state[key as StyleValue])\n .map((styleValue) => `style--${styleValue}`),\n } as ToolbarMenuActionGroupProperties);\n};\n\nconst createStyleActions = (model: SheetModel, state: StyleState, cursorFallbackRange?: CompleteCellRange) =>\n Object.entries(styles).map(([styleValue, icon]) => {\n return createMenuAction<StyleAction>(\n `style--${styleValue}`,\n () => {\n if (!cursorFallbackRange) {\n return;\n }\n const index =\n model.sheet.ranges?.findIndex(\n (range) =>\n range.key === 'style' && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: 'style',\n value: styleValue as StyleValue,\n };\n if (\n model.sheet.ranges\n .filter(\n ({ range, key: rangeKey }) =>\n rangeKey === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .some(({ value: rangeValue }) => rangeValue === styleValue)\n ) {\n // this value should be unset\n if (index >= 0) {\n model.sheet.ranges?.splice(index, 1);\n }\n state[nextRangeEntity.value] = false;\n } else {\n model.sheet.ranges?.push(nextRangeEntity);\n state[nextRangeEntity.value] = true;\n }\n },\n {\n key: 'style',\n value: styleValue as StyleValue,\n icon,\n label: [`range value ${styleValue} label`, { ns: SHEET_PLUGIN }],\n checked: !!state[styleValue as StyleValue],\n },\n );\n });\n\nexport const createStyle = (model: SheetModel, state: StyleState, cursorFallbackRange?: CompleteCellRange) => {\n const styleGroupAction = createStyleGroup(state);\n const styleActions = createStyleActions(model, state, cursorFallbackRange);\n return {\n nodes: [styleGroupAction, ...styleActions],\n edges: [\n { source: 'root', target: 'style' },\n ...styleActions.map(({ id }) => ({ source: styleGroupAction.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { live } from '@dxos/live-object';\n\nimport { type AlignState } from './align';\nimport { type StyleState } from './style';\n\nexport type ToolbarState = Partial<StyleState & AlignState>;\n\nexport const useToolbarState = (initialState: ToolbarState = {}) => {\n return useMemo(() => live<ToolbarState>(initialState), []);\n};\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", "fullyQualifiedId", "StackItem", "React", "addressToA1Notation", "isFormula", "rangeToA1Notation", "Icon", "FunctionEditor", "model", "cursor", "range", "useSheetContext", "value", "formula", "getCellValue", "isFormula", "graph", "mapFunctionBindingFromId", "mapFormulaIndicesToRefs", "sheet", "String", "div", "className", "rangeToA1Notation", "addressToA1Notation", "Icon", "icon", "classNames", "span", "Rx", "React", "useMemo", "useAppGraph", "createGapSeparator", "MenuProvider", "rxFromSignal", "ToolbarMenu", "useMenuActions", "useEffect", "inRange", "createMenuAction", "createMenuItemGroup", "aligns", "start", "center", "end", "useAlignState", "state", "cursor", "model", "useSheetContext", "useEffect", "alignKey", "sheet", "ranges", "findLast", "range", "key", "inRange", "rangeFromIndex", "value", "undefined", "createAlignGroupAction", "createMenuItemGroup", "label", "ns", "SHEET_PLUGIN", "variant", "selectCardinality", "createAlignActions", "cursorFallbackRange", "Object", "entries", "map", "alignValue", "icon", "createMenuAction", "index", "findIndex", "from", "nextRangeEntity", "rangeToIndex", "push", "splice", "checked", "testId", "createAlign", "alignGroup", "alignActions", "nodes", "edges", "source", "target", "id", "useEffect", "inRange", "createMenuAction", "createMenuItemGroup", "styles", "highlight", "softwrap", "useStyleState", "state", "cursorFallbackRange", "model", "useSheetContext", "useEffect", "sheet", "ranges", "filter", "range", "key", "inRange", "rangeFromIndex", "from", "forEach", "value", "createStyleGroup", "createMenuItemGroup", "variant", "selectCardinality", "Object", "keys", "map", "styleValue", "createStyleActions", "entries", "icon", "createMenuAction", "index", "findIndex", "nextRangeEntity", "rangeToIndex", "rangeKey", "some", "rangeValue", "splice", "push", "label", "ns", "SHEET_PLUGIN", "checked", "createStyle", "styleGroupAction", "styleActions", "nodes", "edges", "source", "target", "id", "useMemo", "live", "useToolbarState", "initialState", "useMemo", "live", "createToolbarActions", "model", "state", "cursorFallbackRange", "customActions", "Rx", "make", "get", "align", "rxFromSignal", "createAlign", "style", "createStyle", "gap", "createGapSeparator", "nodes", "edges", "custom", "push", "SheetToolbar", "id", "classNames", "useSheetContext", "useToolbarState", "useAlignState", "useStyleState", "graph", "useAppGraph", "useMemo", "actions", "filter", "action", "properties", "disposition", "map", "node", "source", "target", "actionsCreator", "menu", "useMenuActions", "React", "MenuProvider", "attendableId", "ToolbarMenu", "SheetContainer", "space", "sheet", "role", "ignoreAttention", "graph", "useComputeGraph", "React", "SheetProvider", "StackItem", "Content", "toolbar", "statusbar", "classNames", "SheetToolbar", "id", "fullyQualifiedId", "GridSheet", "FunctionEditor", "SheetContainer"]
7
+ }
@@ -0,0 +1,24 @@
1
+ import {
2
+ SheetType,
3
+ compareIndexPositions
4
+ } from "./chunk-5FLX3UGU.mjs";
5
+ import "./chunk-D3G4UGEK.mjs";
6
+
7
+ // packages/plugins/plugin-sheet/src/capabilities/anchor-sort.ts
8
+ import { Capabilities, contributes } from "@dxos/app-framework";
9
+ import { getSchemaTypename } from "@dxos/echo-schema";
10
+ import { getTarget } from "@dxos/react-client/echo";
11
+ var anchor_sort_default = () => contributes(Capabilities.AnchorSort, {
12
+ key: getSchemaTypename(SheetType),
13
+ sort: (anchorA, anchorB) => {
14
+ const sheet = getTarget(anchorA);
15
+ if (sheet !== getTarget(anchorB)) {
16
+ return 0;
17
+ }
18
+ return !anchorA.anchor || !anchorB.anchor ? 0 : compareIndexPositions(sheet, anchorA.anchor, anchorB.anchor);
19
+ }
20
+ });
21
+ export {
22
+ anchor_sort_default as default
23
+ };
24
+ //# sourceMappingURL=anchor-sort-CUTFYIT4.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/anchor-sort.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { getSchemaTypename } from '@dxos/echo-schema';\nimport { getTarget } from '@dxos/react-client/echo';\n\nimport { compareIndexPositions, SheetType } from '../types';\n\nexport default () =>\n contributes(Capabilities.AnchorSort, {\n key: getSchemaTypename(SheetType)!,\n sort: (anchorA, anchorB) => {\n const sheet = getTarget(anchorA) as SheetType;\n if (sheet !== getTarget(anchorB)) {\n return 0;\n }\n\n return !anchorA.anchor || !anchorB.anchor ? 0 : compareIndexPositions(sheet, anchorA.anchor, anchorB.anchor);\n },\n });\n"],
5
+ "mappings": ";;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,yBAAyB;AAClC,SAASC,iBAAiB;AAI1B,IAAA,sBAAe,MACbC,YAAYC,aAAaC,YAAY;EACnCC,KAAKC,kBAAkBC,SAAAA;EACvBC,MAAM,CAACC,SAASC,YAAAA;AACd,UAAMC,QAAQC,UAAUH,OAAAA;AACxB,QAAIE,UAAUC,UAAUF,OAAAA,GAAU;AAChC,aAAO;IACT;AAEA,WAAO,CAACD,QAAQI,UAAU,CAACH,QAAQG,SAAS,IAAIC,sBAAsBH,OAAOF,QAAQI,QAAQH,QAAQG,MAAM;EAC7G;AACF,CAAA;",
6
+ "names": ["Capabilities", "contributes", "getSchemaTypename", "getTarget", "contributes", "Capabilities", "AnchorSort", "key", "getSchemaTypename", "SheetType", "sort", "anchorA", "anchorB", "sheet", "getTarget", "anchor", "compareIndexPositions"]
7
+ }
@@ -3,50 +3,48 @@ import {
3
3
  } from "./chunk-D3G4UGEK.mjs";
4
4
 
5
5
  // packages/plugins/plugin-sheet/src/types/schema.ts
6
- import { Ref, S, TypedObject } from "@dxos/echo-schema";
7
- import { ThreadType } from "@dxos/plugin-space/types";
8
- var CellValue = S.Struct({
6
+ import { Schema } from "effect";
7
+ import { TypedObject } from "@dxos/echo-schema";
8
+ var CellValue = Schema.Struct({
9
9
  // TODO(burdon): How to store dates (datetime, date, time), percentages, etc.
10
10
  // Consider import/export; natural access for other plugins. Special handling for currency (precision).
11
11
  // TODO(burdon): Automerge (long string) or short string or number.
12
- value: S.Any
12
+ value: Schema.Any
13
13
  });
14
- var Range = S.Struct({
15
- range: S.String,
16
- key: S.String,
17
- value: S.String
14
+ var Range = Schema.Struct({
15
+ range: Schema.String,
16
+ key: Schema.String,
17
+ value: Schema.String
18
18
  });
19
- var RowColumnMeta = S.Struct({
20
- size: S.optional(S.Number)
19
+ var RowColumnMeta = Schema.Struct({
20
+ size: Schema.optional(Schema.Number)
21
21
  });
22
22
  var SheetType = class extends TypedObject({
23
23
  typename: "dxos.org/type/Sheet",
24
24
  version: "0.1.0"
25
25
  })({
26
- name: S.optional(S.String),
26
+ name: Schema.optional(Schema.String),
27
27
  // Sparse map of cells referenced by index.
28
- cells: S.mutable(S.Record({
29
- key: S.String,
30
- value: S.mutable(CellValue)
28
+ cells: Schema.mutable(Schema.Record({
29
+ key: Schema.String,
30
+ value: Schema.mutable(CellValue)
31
31
  })),
32
32
  // Ordered row indices.
33
- rows: S.mutable(S.Array(S.String)),
33
+ rows: Schema.mutable(Schema.Array(Schema.String)),
34
34
  // Ordered column indices.
35
- columns: S.mutable(S.Array(S.String)),
35
+ columns: Schema.mutable(Schema.Array(Schema.String)),
36
36
  // Row metadata referenced by index.
37
- rowMeta: S.mutable(S.Record({
38
- key: S.String,
39
- value: S.mutable(RowColumnMeta)
37
+ rowMeta: Schema.mutable(Schema.Record({
38
+ key: Schema.String,
39
+ value: Schema.mutable(RowColumnMeta)
40
40
  })),
41
41
  // Column metadata referenced by index.
42
- columnMeta: S.mutable(S.Record({
43
- key: S.String,
44
- value: S.mutable(RowColumnMeta)
42
+ columnMeta: Schema.mutable(Schema.Record({
43
+ key: Schema.String,
44
+ value: Schema.mutable(RowColumnMeta)
45
45
  })),
46
46
  // Cell formatting referenced by indexed range.
47
- ranges: S.mutable(S.Array(Range)),
48
- // Threads associated with the sheet
49
- threads: S.optional(S.mutable(S.Array(Ref(ThreadType))))
47
+ ranges: Schema.mutable(Schema.Array(Range))
50
48
  }) {
51
49
  };
52
50
 
@@ -84,7 +82,7 @@ var cellClassNameForRange = ({ key, value }) => {
84
82
  };
85
83
 
86
84
  // packages/plugins/plugin-sheet/src/types/types.ts
87
- import { S as S2 } from "@dxos/echo-schema";
85
+ import { Schema as Schema2 } from "effect";
88
86
 
89
87
  // packages/plugins/plugin-sheet/src/model/sheet-model.ts
90
88
  import { Event } from "@dxos/async";
@@ -141,12 +139,7 @@ var toModelRange = (sheet, range) => ({
141
139
  });
142
140
  var SheetModel = class extends Resource {
143
141
  constructor(_graph, _sheet, _options = {}) {
144
- super();
145
- this._graph = _graph;
146
- this._sheet = _sheet;
147
- this._options = _options;
148
- this.id = `model-${PublicKey.random().truncate()}`;
149
- this.update = new Event();
142
+ super(), this._graph = _graph, this._sheet = _sheet, this._options = _options, this.id = `model-${PublicKey.random().truncate()}`, this.update = new Event();
150
143
  }
151
144
  get graph() {
152
145
  return this._graph;
@@ -689,58 +682,58 @@ var useSheetModel = (graph, sheet, { readonly } = {}) => {
689
682
  };
690
683
 
691
684
  // packages/plugins/plugin-sheet/src/types/types.ts
692
- var SheetAction;
693
685
  (function(SheetAction2) {
694
686
  const SHEET_ACTION = `${SHEET_PLUGIN}/action`;
695
- class Create extends S2.TaggedClass()(`${SHEET_ACTION}/create`, {
696
- input: S2.Struct({
697
- name: S2.optional(S2.String)
687
+ class Create extends Schema2.TaggedClass()(`${SHEET_ACTION}/create`, {
688
+ input: Schema2.Struct({
689
+ name: Schema2.optional(Schema2.String)
698
690
  }),
699
- output: S2.Struct({
691
+ output: Schema2.Struct({
700
692
  object: SheetType
701
693
  })
702
694
  }) {
703
695
  }
704
696
  SheetAction2.Create = Create;
705
- const Axis = S2.Union(S2.Literal("row"), S2.Literal("col"));
706
- class InsertAxis extends S2.TaggedClass()(`${SHEET_ACTION}/axis-insert`, {
707
- input: S2.Struct({
708
- // TODO(wittjosiah): S.instanceOf(SheetModel) throws when running tests.
709
- model: S2.Any.pipe(S2.filter((model) => model instanceof SheetModel)),
697
+ const Axis = Schema2.Union(Schema2.Literal("row"), Schema2.Literal("col"));
698
+ class InsertAxis extends Schema2.TaggedClass()(`${SHEET_ACTION}/axis-insert`, {
699
+ input: Schema2.Struct({
700
+ // TODO(wittjosiah): Schema.instanceOf(SheetModel) throws when running tests.
701
+ model: Schema2.Any.pipe(Schema2.filter((model) => model instanceof SheetModel)),
710
702
  axis: Axis,
711
- index: S2.Number,
712
- count: S2.optional(S2.Number)
703
+ index: Schema2.Number,
704
+ count: Schema2.optional(Schema2.Number)
713
705
  }),
714
- output: S2.Void
706
+ output: Schema2.Void
715
707
  }) {
716
708
  }
717
709
  SheetAction2.InsertAxis = InsertAxis;
718
- SheetAction2.RestoreAxis = S2.Struct({
710
+ SheetAction2.RestoreAxis = Schema2.Struct({
719
711
  axis: Axis,
720
- axisIndex: S2.String,
721
- index: S2.Number,
712
+ axisIndex: Schema2.String,
713
+ index: Schema2.Number,
722
714
  axisMeta: RowColumnMeta,
723
- values: S2.Array(S2.Any)
715
+ values: Schema2.Array(Schema2.Any)
724
716
  });
725
- class DropAxis extends S2.TaggedClass()(`${SHEET_ACTION}/axis-drop`, {
726
- input: S2.Struct({
727
- // TODO(wittjosiah): S.instanceOf(SheetModel) throws when running tests.
728
- model: S2.Any.pipe(S2.filter((model) => model instanceof SheetModel)),
717
+ class DropAxis extends Schema2.TaggedClass()(`${SHEET_ACTION}/axis-drop`, {
718
+ input: Schema2.Struct({
719
+ // TODO(wittjosiah): Schema.instanceOf(SheetModel) throws when running tests.
720
+ model: Schema2.Any.pipe(Schema2.filter((model) => model instanceof SheetModel)),
729
721
  axis: Axis,
730
- axisIndex: S2.String,
731
- deletionData: S2.optional(SheetAction2.RestoreAxis)
722
+ axisIndex: Schema2.String,
723
+ deletionData: Schema2.optional(SheetAction2.RestoreAxis)
732
724
  }),
733
- output: S2.Void
725
+ output: Schema2.Void
734
726
  }) {
735
727
  }
736
728
  SheetAction2.DropAxis = DropAxis;
737
729
  })(SheetAction || (SheetAction = {}));
730
+ var SheetAction;
738
731
 
739
732
  // packages/plugins/plugin-sheet/src/types/util.ts
740
733
  import { addressFromA1Notation as addressFromA1Notation2, addressToA1Notation as addressToA1Notation2, isFormula as isFormula2 } from "@dxos/compute";
741
734
  import { randomBytes } from "@dxos/crypto";
742
735
  import { invariant as invariant2 } from "@dxos/invariant";
743
- import { create } from "@dxos/live-object";
736
+ import { live } from "@dxos/live-object";
744
737
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/types/util.ts";
745
738
  var MAX_ROWS = 500;
746
739
  var MAX_COLS = 676;
@@ -781,15 +774,14 @@ var initialize = (sheet, { rows = DEFAULT_ROWS, columns = DEFAULT_COLS } = {}) =
781
774
  }
782
775
  };
783
776
  var createSheet = ({ name, cells, ...size } = {}) => {
784
- const sheet = create(SheetType, {
777
+ const sheet = live(SheetType, {
785
778
  name,
786
779
  cells: {},
787
780
  rows: [],
788
781
  columns: [],
789
782
  rowMeta: {},
790
783
  columnMeta: {},
791
- ranges: [],
792
- threads: []
784
+ ranges: []
793
785
  });
794
786
  initialize(sheet, size);
795
787
  if (cells) {
@@ -840,7 +832,7 @@ var compareIndexPositions = (sheet, indexA, indexB) => {
840
832
  var mapFormulaRefsToIndices = (sheet, formula) => {
841
833
  invariant2(isFormula2(formula), void 0, {
842
834
  F: __dxlog_file2,
843
- L: 153,
835
+ L: 152,
844
836
  S: void 0,
845
837
  A: [
846
838
  "isFormula(formula)",
@@ -854,7 +846,7 @@ var mapFormulaRefsToIndices = (sheet, formula) => {
854
846
  var mapFormulaIndicesToRefs = (sheet, formula) => {
855
847
  invariant2(isFormula2(formula), void 0, {
856
848
  F: __dxlog_file2,
857
- L: 163,
849
+ L: 162,
858
850
  S: void 0,
859
851
  A: [
860
852
  "isFormula(formula)",
@@ -897,4 +889,4 @@ export {
897
889
  mapFormulaRefsToIndices,
898
890
  mapFormulaIndicesToRefs
899
891
  };
900
- //# sourceMappingURL=chunk-ZOKEQL2K.mjs.map
892
+ //# sourceMappingURL=chunk-5FLX3UGU.mjs.map