@dxos/plugin-sheet 0.8.1 → 0.8.2-main.10c050d

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