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

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 (146) hide show
  1. package/dist/lib/browser/{SheetContainer-UV7RMPXS.mjs → SheetContainer-B3A5443Z.mjs} +88 -90
  2. package/dist/lib/browser/SheetContainer-B3A5443Z.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-TN7LTDHU.mjs → chunk-CHMPICA6.mjs} +75 -86
  4. package/dist/lib/browser/chunk-CHMPICA6.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-N2FOQHUH.mjs → chunk-ZOKEQL2K.mjs} +50 -51
  6. package/dist/lib/browser/chunk-ZOKEQL2K.mjs.map +7 -0
  7. package/dist/lib/browser/{compute-graph-registry-MBJKPAHX.mjs → compute-graph-registry-WEJLJJ6T.mjs} +2 -2
  8. package/dist/lib/browser/compute-graph-registry-WEJLJJ6T.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +8 -8
  10. package/dist/lib/browser/index.mjs.map +3 -3
  11. package/dist/lib/browser/{intent-resolver-DN7JXDAV.mjs → intent-resolver-6OUEM3IG.mjs} +2 -2
  12. package/dist/lib/browser/{markdown-57MKY5WB.mjs → markdown-DR4RDEEY.mjs} +2 -2
  13. package/dist/lib/browser/markdown-DR4RDEEY.mjs.map +7 -0
  14. package/dist/lib/browser/meta.json +1 -1
  15. package/dist/lib/browser/{react-surface-NQU63B63.mjs → react-surface-ECKBP3UZ.mjs} +3 -3
  16. package/dist/lib/browser/{thread-WU64QL2A.mjs → thread-76MK2FMV.mjs} +2 -2
  17. package/dist/lib/browser/types/index.mjs +1 -1
  18. package/dist/lib/node/{SheetContainer-GR2KDOAE.cjs → SheetContainer-LGRD3TTQ.cjs} +102 -106
  19. package/dist/lib/node/SheetContainer-LGRD3TTQ.cjs.map +7 -0
  20. package/dist/lib/node/{chunk-CN7OBGYV.cjs → chunk-AEH3L5QZ.cjs} +84 -95
  21. package/dist/lib/node/chunk-AEH3L5QZ.cjs.map +7 -0
  22. package/dist/lib/node/{chunk-HLSQVT3C.cjs → chunk-D4MOMCEU.cjs} +65 -66
  23. package/dist/lib/node/chunk-D4MOMCEU.cjs.map +7 -0
  24. package/dist/lib/node/{compute-graph-registry-EBBDN6ZX.cjs → compute-graph-registry-VVSRJUGS.cjs} +5 -5
  25. package/dist/lib/node/compute-graph-registry-VVSRJUGS.cjs.map +7 -0
  26. package/dist/lib/node/index.cjs +12 -12
  27. package/dist/lib/node/index.cjs.map +3 -3
  28. package/dist/lib/node/{intent-resolver-OPF56TAL.cjs → intent-resolver-ICHNDL6F.cjs} +9 -9
  29. package/dist/lib/node/{markdown-Q3RXYPHQ.cjs → markdown-E7OUIMZO.cjs} +5 -5
  30. package/dist/lib/node/markdown-E7OUIMZO.cjs.map +7 -0
  31. package/dist/lib/node/meta.json +1 -1
  32. package/dist/lib/node/{react-surface-7SAA5DX3.cjs → react-surface-6PBWE75L.cjs} +11 -11
  33. package/dist/lib/node/{thread-E7YPGR5T.cjs → thread-WP43BC4N.cjs} +7 -7
  34. package/dist/lib/node/types/index.cjs +29 -29
  35. package/dist/lib/node/types/index.cjs.map +1 -1
  36. package/dist/lib/node-esm/{SheetContainer-XW7B2AJI.mjs → SheetContainer-4FNTLG5R.mjs} +88 -90
  37. package/dist/lib/node-esm/SheetContainer-4FNTLG5R.mjs.map +7 -0
  38. package/dist/lib/node-esm/{chunk-LYZV4Q4C.mjs → chunk-6NB67Y6X.mjs} +50 -51
  39. package/dist/lib/node-esm/chunk-6NB67Y6X.mjs.map +7 -0
  40. package/dist/lib/node-esm/{chunk-3JJ7ETTJ.mjs → chunk-WQHYR4WD.mjs} +75 -86
  41. package/dist/lib/node-esm/chunk-WQHYR4WD.mjs.map +7 -0
  42. package/dist/lib/node-esm/{compute-graph-registry-TVG6RN2J.mjs → compute-graph-registry-PBQ52KH6.mjs} +2 -2
  43. package/dist/lib/node-esm/compute-graph-registry-PBQ52KH6.mjs.map +7 -0
  44. package/dist/lib/node-esm/index.mjs +8 -8
  45. package/dist/lib/node-esm/index.mjs.map +3 -3
  46. package/dist/lib/node-esm/{intent-resolver-7AN5CN4R.mjs → intent-resolver-2JNQCFCI.mjs} +2 -2
  47. package/dist/lib/node-esm/{markdown-ACHAWUOE.mjs → markdown-BPKS2TNG.mjs} +2 -2
  48. package/dist/lib/node-esm/markdown-BPKS2TNG.mjs.map +7 -0
  49. package/dist/lib/node-esm/meta.json +1 -1
  50. package/dist/lib/node-esm/{react-surface-BPNN7RSE.mjs → react-surface-UM2Y3ZWZ.mjs} +3 -3
  51. package/dist/lib/node-esm/{thread-ULESW6IX.mjs → thread-4NCPE5FK.mjs} +2 -2
  52. package/dist/lib/node-esm/types/index.mjs +1 -1
  53. package/dist/types/src/capabilities/compute-graph-registry.d.ts +2 -2
  54. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
  55. package/dist/types/src/capabilities/index.d.ts +2 -2
  56. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  57. package/dist/types/src/capabilities/markdown.d.ts +2 -2
  58. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  59. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
  60. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  61. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  62. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
  63. package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -1
  64. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +2 -3
  65. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  66. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
  68. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
  69. package/dist/types/src/components/SheetToolbar/align.d.ts +1 -4
  70. package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -1
  71. package/dist/types/src/components/SheetToolbar/comment.d.ts +1 -3
  72. package/dist/types/src/components/SheetToolbar/comment.d.ts.map +1 -1
  73. package/dist/types/src/components/SheetToolbar/style.d.ts +1 -3
  74. package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -1
  75. package/dist/types/src/components/SheetToolbar/useToolbarAction.d.ts +8 -0
  76. package/dist/types/src/components/SheetToolbar/useToolbarAction.d.ts.map +1 -0
  77. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts +1 -1
  78. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -1
  79. package/dist/types/src/components/index.d.ts +6 -1
  80. package/dist/types/src/components/index.d.ts.map +1 -1
  81. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  82. package/dist/types/src/extensions/editor/extension.d.ts.map +1 -1
  83. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  84. package/dist/types/src/model/testing.d.ts.map +1 -1
  85. package/dist/types/src/model/useSheetModel.d.ts.map +1 -1
  86. package/dist/types/src/testing/data.d.ts.map +1 -1
  87. package/dist/types/src/testing/testing.d.ts.map +1 -1
  88. package/dist/types/src/translations.d.ts +54 -2
  89. package/dist/types/src/translations.d.ts.map +1 -1
  90. package/dist/types/src/types/schema.d.ts +144 -239
  91. package/dist/types/src/types/schema.d.ts.map +1 -1
  92. package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
  93. package/dist/types/src/types/types.d.ts +36 -36
  94. package/dist/types/src/types/types.d.ts.map +1 -1
  95. package/dist/types/src/types/util.d.ts.map +1 -1
  96. package/dist/types/tsconfig.tsbuildinfo +1 -1
  97. package/package.json +47 -53
  98. package/src/capabilities/compute-graph-registry.ts +3 -3
  99. package/src/capabilities/markdown.ts +3 -3
  100. package/src/components/ComputeGraph/compute-graph.stories.tsx +4 -4
  101. package/src/components/FunctionEditor/FunctionEditor.tsx +1 -1
  102. package/src/components/GridSheet/GridSheet.stories.tsx +2 -5
  103. package/src/components/GridSheet/GridSheet.tsx +12 -18
  104. package/src/components/GridSheet/SheetCellEditor.stories.tsx +2 -2
  105. package/src/components/GridSheet/util.ts +2 -7
  106. package/src/components/RangeList/RangeList.tsx +2 -2
  107. package/src/components/SheetContainer/SheetContainer.stories.tsx +5 -1
  108. package/src/components/SheetContainer/SheetContainer.tsx +7 -4
  109. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +1 -1
  110. package/src/components/SheetToolbar/SheetToolbar.tsx +8 -33
  111. package/src/components/SheetToolbar/align.ts +14 -44
  112. package/src/components/SheetToolbar/comment.ts +11 -39
  113. package/src/components/SheetToolbar/style.ts +12 -48
  114. package/src/components/SheetToolbar/useToolbarAction.ts +87 -0
  115. package/src/components/SheetToolbar/useToolbarState.ts +2 -2
  116. package/src/integrations/thread-ranges.ts +3 -2
  117. package/src/model/sheet-model.test.ts +1 -1
  118. package/src/sanity.test.ts +3 -3
  119. package/src/serializer.ts +2 -2
  120. package/src/types/schema.ts +19 -21
  121. package/src/types/types.ts +25 -25
  122. package/src/types/util.ts +2 -2
  123. package/dist/lib/browser/SheetContainer-UV7RMPXS.mjs.map +0 -7
  124. package/dist/lib/browser/chunk-N2FOQHUH.mjs.map +0 -7
  125. package/dist/lib/browser/chunk-TN7LTDHU.mjs.map +0 -7
  126. package/dist/lib/browser/compute-graph-registry-MBJKPAHX.mjs.map +0 -7
  127. package/dist/lib/browser/markdown-57MKY5WB.mjs.map +0 -7
  128. package/dist/lib/node/SheetContainer-GR2KDOAE.cjs.map +0 -7
  129. package/dist/lib/node/chunk-CN7OBGYV.cjs.map +0 -7
  130. package/dist/lib/node/chunk-HLSQVT3C.cjs.map +0 -7
  131. package/dist/lib/node/compute-graph-registry-EBBDN6ZX.cjs.map +0 -7
  132. package/dist/lib/node/markdown-Q3RXYPHQ.cjs.map +0 -7
  133. package/dist/lib/node-esm/SheetContainer-XW7B2AJI.mjs.map +0 -7
  134. package/dist/lib/node-esm/chunk-3JJ7ETTJ.mjs.map +0 -7
  135. package/dist/lib/node-esm/chunk-LYZV4Q4C.mjs.map +0 -7
  136. package/dist/lib/node-esm/compute-graph-registry-TVG6RN2J.mjs.map +0 -7
  137. package/dist/lib/node-esm/markdown-ACHAWUOE.mjs.map +0 -7
  138. /package/dist/lib/browser/{intent-resolver-DN7JXDAV.mjs.map → intent-resolver-6OUEM3IG.mjs.map} +0 -0
  139. /package/dist/lib/browser/{react-surface-NQU63B63.mjs.map → react-surface-ECKBP3UZ.mjs.map} +0 -0
  140. /package/dist/lib/browser/{thread-WU64QL2A.mjs.map → thread-76MK2FMV.mjs.map} +0 -0
  141. /package/dist/lib/node/{intent-resolver-OPF56TAL.cjs.map → intent-resolver-ICHNDL6F.cjs.map} +0 -0
  142. /package/dist/lib/node/{react-surface-7SAA5DX3.cjs.map → react-surface-6PBWE75L.cjs.map} +0 -0
  143. /package/dist/lib/node/{thread-E7YPGR5T.cjs.map → thread-WP43BC4N.cjs.map} +0 -0
  144. /package/dist/lib/node-esm/{intent-resolver-7AN5CN4R.mjs.map → intent-resolver-2JNQCFCI.mjs.map} +0 -0
  145. /package/dist/lib/node-esm/{react-surface-BPNN7RSE.mjs.map → react-surface-UM2Y3ZWZ.mjs.map} +0 -0
  146. /package/dist/lib/node-esm/{thread-ULESW6IX.mjs.map → thread-4NCPE5FK.mjs.map} +0 -0
@@ -5,7 +5,7 @@ import {
5
5
  completeCellRangeToThreadCursor,
6
6
  useComputeGraph,
7
7
  useSheetContext
8
- } from "./chunk-3JJ7ETTJ.mjs";
8
+ } from "./chunk-WQHYR4WD.mjs";
9
9
  import "./chunk-HXBUY5ET.mjs";
10
10
  import {
11
11
  alignKey,
@@ -13,7 +13,7 @@ import {
13
13
  mapFormulaIndicesToRefs,
14
14
  rangeFromIndex,
15
15
  rangeToIndex
16
- } from "./chunk-LYZV4Q4C.mjs";
16
+ } from "./chunk-6NB67Y6X.mjs";
17
17
  import {
18
18
  SHEET_PLUGIN
19
19
  } from "./chunk-Y6ND5HWX.mjs";
@@ -41,7 +41,7 @@ var FunctionEditor = () => {
41
41
  }
42
42
  }
43
43
  return /* @__PURE__ */ React.createElement("div", {
44
- className: "flex shrink-0 justify-between items-center px-4 py-1 text-sm bg-toolbarSurface border-bs !border-separator"
44
+ className: "flex shrink-0 justify-between items-center px-4 py-1 text-sm attention-surface border-bs !border-separator"
45
45
  }, /* @__PURE__ */ React.createElement("div", {
46
46
  className: "flex gap-4 items-center"
47
47
  }, /* @__PURE__ */ React.createElement("div", {
@@ -60,9 +60,7 @@ var FunctionEditor = () => {
60
60
  };
61
61
 
62
62
  // packages/plugins/plugin-sheet/src/components/SheetToolbar/SheetToolbar.tsx
63
- import React2, { useCallback } from "react";
64
- import { createIntent, useIntentDispatcher } from "@dxos/app-framework";
65
- import { ThreadAction } from "@dxos/plugin-thread/types";
63
+ import React2, { useCallback as useCallback2 } from "react";
66
64
  import { createGapSeparator, MenuProvider, ToolbarMenu, useMenuActions } from "@dxos/react-ui-menu";
67
65
 
68
66
  // packages/plugins/plugin-sheet/src/components/SheetToolbar/align.ts
@@ -94,31 +92,11 @@ var createAlignGroupAction = (value) => createMenuItemGroup("align", {
94
92
  selectCardinality: "single",
95
93
  value: `${alignKey}--${value}`
96
94
  });
97
- var createAlignActions = (model, state, cursorFallbackRange) => Object.entries(aligns).map(([alignValue, icon]) => {
98
- return createMenuAction(`${alignKey}--${alignValue}`, () => {
99
- if (!cursorFallbackRange) {
100
- return;
101
- }
102
- const index = model.sheet.ranges?.findIndex((range) => range.key === alignKey && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
103
- const nextRangeEntity = {
104
- range: rangeToIndex(model.sheet, cursorFallbackRange),
105
- key: alignKey,
106
- value: alignValue
107
- };
108
- if (index < 0) {
109
- model.sheet.ranges?.push(nextRangeEntity);
110
- state[alignKey] = nextRangeEntity.value;
111
- } else if (model.sheet.ranges[index].value === nextRangeEntity.value) {
112
- model.sheet.ranges?.splice(index, 1);
113
- state[alignKey] = void 0;
114
- } else {
115
- model.sheet.ranges?.splice(index, 1, nextRangeEntity);
116
- state[alignKey] = nextRangeEntity.value;
117
- }
118
- }, {
95
+ var createAlignActions = (value) => Object.entries(aligns).map(([alignValue, icon]) => {
96
+ return createMenuAction(`${alignKey}--${alignValue}`, {
119
97
  key: alignKey,
120
98
  value: alignValue,
121
- checked: state[alignKey] === alignValue,
99
+ checked: value === alignValue,
122
100
  label: [
123
101
  `range value ${alignValue} label`,
124
102
  {
@@ -129,9 +107,9 @@ var createAlignActions = (model, state, cursorFallbackRange) => Object.entries(a
129
107
  testId: `grid.toolbar.${alignKey}.${alignValue}`
130
108
  });
131
109
  });
132
- var createAlign = (model, state, cursorFallbackRange) => {
133
- const alignGroup = createAlignGroupAction(state[alignKey]);
134
- const alignActions = createAlignActions(model, state, cursorFallbackRange);
110
+ var createAlign = ({ [alignKey]: alignValue }) => {
111
+ const alignGroup = createAlignGroupAction(alignValue);
112
+ const alignActions = createAlignActions(alignValue);
135
113
  return {
136
114
  nodes: [
137
115
  alignGroup,
@@ -172,16 +150,7 @@ var useCommentState = (state) => {
172
150
  cursorFallbackRange
173
151
  ]);
174
152
  };
175
- var createCommentAction = (model, state, onComment, cursorFallbackRange) => createMenuAction2("comment", () => {
176
- if (!cursorFallbackRange) {
177
- return;
178
- }
179
- const cellContent = model.getCellText(cursorFallbackRange.from);
180
- if (!cellContent) {
181
- return;
182
- }
183
- onComment(cellContent, completeCellRangeToThreadCursor(cursorFallbackRange));
184
- }, {
153
+ var createCommentAction = (state) => createMenuAction2("comment", {
185
154
  key: commentKey,
186
155
  testId: "editor.toolbar.comment",
187
156
  icon: "ph--chat-text--regular",
@@ -193,9 +162,9 @@ var createCommentAction = (model, state, onComment, cursorFallbackRange) => crea
193
162
  ],
194
163
  disabled: state.commentEnabled !== "comment"
195
164
  });
196
- var createComment = (model, state, onComment, cursorFallbackRange) => ({
165
+ var createComment = (state) => ({
197
166
  nodes: [
198
- createCommentAction(model, state, onComment, cursorFallbackRange)
167
+ createCommentAction(state)
199
168
  ],
200
169
  edges: [
201
170
  {
@@ -235,27 +204,8 @@ var createStyleGroup = (state) => {
235
204
  value: Object.keys(styles).filter((key) => !!state[key]).map((styleValue) => `style--${styleValue}`)
236
205
  });
237
206
  };
238
- var createStyleActions = (model, state, cursorFallbackRange) => Object.entries(styles).map(([styleValue, icon]) => {
239
- return createMenuAction3(`style--${styleValue}`, () => {
240
- if (!cursorFallbackRange) {
241
- return;
242
- }
243
- const index = model.sheet.ranges?.findIndex((range) => range.key === "style" && inRange2(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
244
- const nextRangeEntity = {
245
- range: rangeToIndex(model.sheet, cursorFallbackRange),
246
- key: "style",
247
- value: styleValue
248
- };
249
- if (model.sheet.ranges.filter(({ range, key: rangeKey }) => rangeKey === "style" && inRange2(rangeFromIndex(model.sheet, range), cursorFallbackRange.from)).some(({ value: rangeValue }) => rangeValue === styleValue)) {
250
- if (index >= 0) {
251
- model.sheet.ranges?.splice(index, 1);
252
- }
253
- state[nextRangeEntity.value] = false;
254
- } else {
255
- model.sheet.ranges?.push(nextRangeEntity);
256
- state[nextRangeEntity.value] = true;
257
- }
258
- }, {
207
+ var createStyleActions = (state) => Object.entries(styles).map(([styleValue, icon]) => {
208
+ return createMenuAction3(`style--${styleValue}`, {
259
209
  key: "style",
260
210
  value: styleValue,
261
211
  icon,
@@ -268,9 +218,9 @@ var createStyleActions = (model, state, cursorFallbackRange) => Object.entries(s
268
218
  checked: !!state[styleValue]
269
219
  });
270
220
  });
271
- var createStyle = (model, state, cursorFallbackRange) => {
221
+ var createStyle = (state) => {
272
222
  const styleGroupAction = createStyleGroup(state);
273
- const styleActions = createStyleActions(model, state, cursorFallbackRange);
223
+ const styleActions = createStyleActions(state);
274
224
  return {
275
225
  nodes: [
276
226
  styleGroupAction,
@@ -289,19 +239,78 @@ var createStyle = (model, state, cursorFallbackRange) => {
289
239
  };
290
240
  };
291
241
 
242
+ // packages/plugins/plugin-sheet/src/components/SheetToolbar/useToolbarAction.ts
243
+ import { useCallback } from "react";
244
+ import { createIntent, useIntentDispatcher } from "@dxos/app-framework";
245
+ import { inRange as inRange3 } from "@dxos/compute";
246
+ import { ThreadAction } from "@dxos/plugin-thread/types";
247
+ var useToolbarAction = (state) => {
248
+ const { model, cursorFallbackRange, cursor } = useSheetContext();
249
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
250
+ return useCallback((action) => {
251
+ const { key, value } = action.properties;
252
+ if (cursorFallbackRange) {
253
+ const index = model.sheet.ranges?.findIndex((range) => range.key === key && inRange3(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
254
+ const nextRangeEntity = {
255
+ range: rangeToIndex(model.sheet, cursorFallbackRange),
256
+ key,
257
+ value
258
+ };
259
+ switch (key) {
260
+ case "alignment":
261
+ if (index < 0) {
262
+ model.sheet.ranges?.push(nextRangeEntity);
263
+ state[alignKey] = value;
264
+ } else if (model.sheet.ranges[index].value === value) {
265
+ model.sheet.ranges?.splice(index, 1);
266
+ state[alignKey] = void 0;
267
+ } else {
268
+ model.sheet.ranges?.splice(index, 1, nextRangeEntity);
269
+ state[alignKey] = value;
270
+ }
271
+ break;
272
+ case "style":
273
+ if (model.sheet.ranges.filter(({ range, key: rangeKey }) => rangeKey === "style" && inRange3(rangeFromIndex(model.sheet, range), cursorFallbackRange.from)).some(({ value: rangeValue }) => rangeValue === value)) {
274
+ if (index >= 0) {
275
+ model.sheet.ranges?.splice(index, 1);
276
+ }
277
+ state[value] = false;
278
+ } else {
279
+ model.sheet.ranges?.push(nextRangeEntity);
280
+ state[value] = true;
281
+ }
282
+ break;
283
+ case "comment": {
284
+ const cellContent = model.getCellText(cursorFallbackRange.from);
285
+ void dispatch(createIntent(ThreadAction.Create, {
286
+ cursor: completeCellRangeToThreadCursor(cursorFallbackRange),
287
+ name: cellContent,
288
+ subject: model.sheet
289
+ }));
290
+ }
291
+ }
292
+ }
293
+ }, [
294
+ model.sheet,
295
+ cursorFallbackRange,
296
+ cursor,
297
+ dispatch
298
+ ]);
299
+ };
300
+
292
301
  // packages/plugins/plugin-sheet/src/components/SheetToolbar/useToolbarState.ts
293
302
  import { useMemo as useMemo2 } from "react";
294
- import { live } from "@dxos/live-object";
303
+ import { create } from "@dxos/live-object";
295
304
  var useToolbarState = (initialState = {}) => {
296
- return useMemo2(() => live(initialState), []);
305
+ return useMemo2(() => create(initialState), []);
297
306
  };
298
307
 
299
308
  // packages/plugins/plugin-sheet/src/components/SheetToolbar/SheetToolbar.tsx
300
- var createToolbarActions = (model, state, onComment, cursorFallbackRange) => {
301
- const align = createAlign(model, state, cursorFallbackRange);
302
- const style = createStyle(model, state, cursorFallbackRange);
309
+ var createToolbarActions = (state) => {
310
+ const align = createAlign(state);
311
+ const style = createStyle(state);
303
312
  const gap = createGapSeparator();
304
- const comment = createComment(model, state, onComment, cursorFallbackRange);
313
+ const comment = createComment(state);
305
314
  return {
306
315
  nodes: [
307
316
  ...align.nodes,
@@ -318,30 +327,19 @@ var createToolbarActions = (model, state, onComment, cursorFallbackRange) => {
318
327
  };
319
328
  };
320
329
  var SheetToolbar = ({ attendableId, classNames }) => {
321
- const { dispatchPromise: dispatch } = useIntentDispatcher();
322
- const { model, cursorFallbackRange } = useSheetContext();
323
330
  const state = useToolbarState({});
324
331
  useAlignState(state);
325
332
  useStyleState(state);
326
333
  useCommentState(state);
327
- const handleComment = useCallback((name, cursor) => dispatch(createIntent(ThreadAction.Create, {
328
- cursor,
329
- name,
330
- subject: model.sheet
331
- })), [
332
- model.sheet,
333
- dispatch
334
- ]);
335
- const actionsCreator = useCallback(() => createToolbarActions(model, state, handleComment, cursorFallbackRange), [
336
- model,
337
- state,
338
- handleComment,
339
- cursorFallbackRange
334
+ const actionsCreator = useCallback2(() => createToolbarActions(state), [
335
+ state
340
336
  ]);
341
337
  const menu = useMenuActions(actionsCreator);
338
+ const handleAction = useToolbarAction(state);
342
339
  return /* @__PURE__ */ React2.createElement(MenuProvider, {
343
340
  ...menu,
344
- attendableId
341
+ attendableId,
342
+ onAction: handleAction
345
343
  }, /* @__PURE__ */ React2.createElement(ToolbarMenu, {
346
344
  classNames
347
345
  }));
@@ -370,4 +368,4 @@ var SheetContainer_default = SheetContainer;
370
368
  export {
371
369
  SheetContainer_default as default
372
370
  };
373
- //# sourceMappingURL=SheetContainer-XW7B2AJI.mjs.map
371
+ //# sourceMappingURL=SheetContainer-4FNTLG5R.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/comment.ts", "../../../src/components/SheetToolbar/style.ts", "../../../src/components/SheetToolbar/useToolbarAction.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 const SheetContainer = ({\n space,\n sheet,\n role,\n ignoreAttention,\n}: {\n space: Space;\n sheet: SheetType;\n role?: string;\n ignoreAttention?: boolean;\n}) => {\n const graph = useComputeGraph(space);\n\n return graph ? (\n <SheetProvider sheet={sheet} graph={graph} ignoreAttention={ignoreAttention}>\n <StackItem.Content toolbar statusbar {...(role === 'section' && { classNames: 'aspect-video' })}>\n <SheetToolbar attendableId={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 attention-surface border-bs !border-separator'>\n <div className='flex gap-4 items-center'>\n <div className='flex w-16 items-center font-mono'>\n {(range && rangeToA1Notation(range)) || (cursor && addressToA1Notation(cursor))}\n </div>\n <div className='flex gap-2 items-center'>\n <Icon icon='ph--function--regular' classNames={['text-greenText', formula ? 'visible' : 'invisible']} />\n <span className='font-mono'>{value}</span>\n </div>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren, useCallback } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { createGapSeparator, MenuProvider, ToolbarMenu, useMenuActions } from '@dxos/react-ui-menu';\n\nimport { createAlign, useAlignState } from './align';\nimport { createComment, useCommentState } from './comment';\nimport { createStyle, useStyleState } from './style';\nimport { useToolbarAction } from './useToolbarAction';\nimport { type ToolbarState, useToolbarState } from './useToolbarState';\n\n//\n// Root\n//\n\nexport type SheetToolbarProps = ThemedClassName<PropsWithChildren<{ attendableId?: string }>>;\n\nconst createToolbarActions = (state: ToolbarState) => {\n const align = createAlign(state);\n const style = createStyle(state);\n const gap = createGapSeparator();\n const comment = createComment(state);\n return {\n nodes: [...align.nodes, ...style.nodes, ...gap.nodes, ...comment.nodes],\n edges: [...align.edges, ...style.edges, ...gap.edges, ...comment.edges],\n };\n};\n\nexport const SheetToolbar = ({ attendableId, classNames }: SheetToolbarProps) => {\n const state = useToolbarState({});\n useAlignState(state);\n useStyleState(state);\n useCommentState(state);\n\n const actionsCreator = useCallback(() => createToolbarActions(state), [state]);\n const menu = useMenuActions(actionsCreator);\n const handleAction = useToolbarAction(state);\n\n return (\n <MenuProvider {...menu} attendableId={attendableId} onAction={handleAction}>\n <ToolbarMenu classNames={classNames} />\n </MenuProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { inRange } from '@dxos/compute';\nimport { createMenuAction, createMenuItemGroup, type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { type AlignKey, alignKey, type AlignValue, rangeFromIndex } 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 = (value?: AlignValue) =>\n Object.entries(aligns).map(([alignValue, icon]) => {\n return createMenuAction<AlignAction>(`${alignKey}--${alignValue}`, {\n key: alignKey,\n value: alignValue as AlignValue,\n checked: value === alignValue,\n label: [`range value ${alignValue} label`, { ns: SHEET_PLUGIN }],\n icon,\n testId: `grid.toolbar.${alignKey}.${alignValue}`,\n });\n });\n\nexport const createAlign = ({ [alignKey]: alignValue }: Partial<AlignState>) => {\n const alignGroup = createAlignGroupAction(alignValue);\n const alignActions = createAlignActions(alignValue);\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, useMemo } from 'react';\n\nimport { RefArray } from '@dxos/live-object';\nimport { createMenuAction } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { commentKey, type CommentKey, type CommentValue, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type CommentAction = { key: CommentKey; value: CommentValue; cellContent?: string };\n\nexport type CommentState = { commentEnabled: 'comment' | 'no cursor' | 'selection overlaps existing comment' };\n\nexport const useCommentState = (state: Partial<CommentState>) => {\n const { cursorFallbackRange, model } = useSheetContext();\n\n // TODO(thure): Can this O(n) call be memoized?\n const overlapsCommentAnchor = useMemo(\n () =>\n RefArray.targets(model.sheet.threads ?? [])\n .filter((thread) => thread.status !== 'resolved')\n .some((thread) => {\n if (!cursorFallbackRange) {\n return false;\n }\n return rangeToIndex(model.sheet, cursorFallbackRange) === thread.anchor;\n }),\n [cursorFallbackRange, model.sheet],\n );\n\n useEffect(() => {\n state.commentEnabled = !cursorFallbackRange\n ? 'no cursor'\n : overlapsCommentAnchor\n ? 'selection overlaps existing comment'\n : 'comment';\n }, [overlapsCommentAnchor, cursorFallbackRange]);\n};\n\nconst createCommentAction = (state: Partial<CommentState>) =>\n createMenuAction<Pick<CommentAction, 'key'>>('comment', {\n key: commentKey,\n testId: 'editor.toolbar.comment',\n icon: 'ph--chat-text--regular',\n label: [`${state.commentEnabled} label`, { ns: SHEET_PLUGIN }],\n disabled: state.commentEnabled !== 'comment',\n });\n\nexport const createComment = (state: Partial<CommentState>) => ({\n nodes: [createCommentAction(state)],\n edges: [{ source: 'root', target: 'comment' }],\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { inRange } from '@dxos/compute';\nimport { createMenuAction, createMenuItemGroup, type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { rangeFromIndex, 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 = (state: StyleState) =>\n Object.entries(styles).map(([styleValue, icon]) => {\n return createMenuAction<StyleAction>(`style--${styleValue}`, {\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\nexport const createStyle = (state: StyleState) => {\n const styleGroupAction = createStyleGroup(state);\n const styleActions = createStyleActions(state);\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 { useCallback } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { inRange } from '@dxos/compute';\nimport { ThreadAction } from '@dxos/plugin-thread/types';\nimport type { MenuAction, MenuActionHandler } from '@dxos/react-ui-menu';\n\nimport { type AlignAction } from './align';\nimport { type CommentAction } from './comment';\nimport { type StyleAction } from './style';\nimport { type ToolbarState } from './useToolbarState';\nimport { completeCellRangeToThreadCursor } from '../../integrations';\nimport { alignKey, rangeFromIndex, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type ToolbarAction = StyleAction | AlignAction | CommentAction;\n\nexport const useToolbarAction = (state: ToolbarState) => {\n const { model, cursorFallbackRange, cursor } = useSheetContext();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n // TODO(Zan): Externalize the toolbar action handler. E.g., Toolbar/keys should both fire events.\n return useCallback(\n (action: MenuAction<ToolbarAction>) => {\n const { key, value } = action.properties;\n if (cursorFallbackRange) {\n const index =\n model.sheet.ranges?.findIndex(\n (range) => range.key === key && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key,\n value,\n };\n switch (key) {\n case 'alignment':\n if (index < 0) {\n model.sheet.ranges?.push(nextRangeEntity);\n state[alignKey] = value;\n } else if (model.sheet.ranges![index].value === 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] = value;\n }\n break;\n case 'style':\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 === value)\n ) {\n // this value should be unset\n if (index >= 0) {\n model.sheet.ranges?.splice(index, 1);\n }\n state[value] = false;\n } else {\n model.sheet.ranges?.push(nextRangeEntity);\n state[value] = true;\n }\n break;\n case 'comment': {\n const cellContent = model.getCellText(cursorFallbackRange.from);\n void dispatch(\n createIntent(ThreadAction.Create, {\n cursor: completeCellRangeToThreadCursor(cursorFallbackRange),\n name: cellContent,\n subject: model.sheet,\n }),\n );\n }\n }\n }\n },\n [model.sheet, cursorFallbackRange, cursor, dispatch],\n ) as MenuActionHandler;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { create } from '@dxos/live-object';\n\nimport { type AlignState } from './align';\nimport { type CommentState } from './comment';\nimport { type StyleState } from './style';\n\nexport type ToolbarState = Partial<StyleState & AlignState & CommentState>;\n\nexport const useToolbarState = (initialState: ToolbarState = {}) => {\n return useMemo(() => create<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", "React", "useCallback", "createGapSeparator", "MenuProvider", "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", "Object", "entries", "map", "alignValue", "icon", "createMenuAction", "checked", "testId", "createAlign", "alignGroup", "alignActions", "nodes", "edges", "source", "target", "id", "useEffect", "useMemo", "RefArray", "createMenuAction", "useCommentState", "state", "cursorFallbackRange", "model", "useSheetContext", "overlapsCommentAnchor", "useMemo", "RefArray", "targets", "sheet", "threads", "filter", "thread", "status", "some", "rangeToIndex", "anchor", "useEffect", "commentEnabled", "createCommentAction", "createMenuAction", "key", "commentKey", "testId", "icon", "label", "ns", "SHEET_PLUGIN", "disabled", "createComment", "nodes", "edges", "source", "target", "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", "label", "ns", "SHEET_PLUGIN", "checked", "createStyle", "styleGroupAction", "styleActions", "nodes", "edges", "source", "target", "id", "useCallback", "createIntent", "useIntentDispatcher", "inRange", "ThreadAction", "useToolbarAction", "state", "model", "cursorFallbackRange", "cursor", "useSheetContext", "dispatchPromise", "dispatch", "useIntentDispatcher", "useCallback", "action", "key", "value", "properties", "index", "sheet", "ranges", "findIndex", "range", "inRange", "rangeFromIndex", "from", "nextRangeEntity", "rangeToIndex", "push", "alignKey", "splice", "undefined", "filter", "rangeKey", "some", "rangeValue", "cellContent", "getCellText", "createIntent", "ThreadAction", "Create", "completeCellRangeToThreadCursor", "name", "subject", "useMemo", "create", "useToolbarState", "initialState", "useMemo", "create", "createToolbarActions", "state", "align", "createAlign", "style", "createStyle", "gap", "createGapSeparator", "comment", "createComment", "nodes", "edges", "SheetToolbar", "attendableId", "classNames", "useToolbarState", "useAlignState", "useStyleState", "useCommentState", "actionsCreator", "useCallback", "menu", "useMenuActions", "handleAction", "useToolbarAction", "React", "MenuProvider", "onAction", "ToolbarMenu", "SheetContainer", "space", "sheet", "role", "ignoreAttention", "graph", "useComputeGraph", "React", "SheetProvider", "StackItem", "Content", "toolbar", "statusbar", "classNames", "SheetToolbar", "attendableId", "fullyQualifiedId", "GridSheet", "FunctionEditor", "SheetContainer"]
7
+ }
@@ -4,51 +4,50 @@ import {
4
4
  } from "./chunk-Y6ND5HWX.mjs";
5
5
 
6
6
  // packages/plugins/plugin-sheet/src/types/schema.ts
7
- import { Schema } from "effect";
8
- import { Ref, TypedObject } from "@dxos/echo-schema";
7
+ import { Ref, S, TypedObject } from "@dxos/echo-schema";
9
8
  import { ThreadType } from "@dxos/plugin-space/types";
10
- var CellValue = Schema.Struct({
9
+ var CellValue = S.Struct({
11
10
  // TODO(burdon): How to store dates (datetime, date, time), percentages, etc.
12
11
  // Consider import/export; natural access for other plugins. Special handling for currency (precision).
13
12
  // TODO(burdon): Automerge (long string) or short string or number.
14
- value: Schema.Any
13
+ value: S.Any
15
14
  });
16
- var Range = Schema.Struct({
17
- range: Schema.String,
18
- key: Schema.String,
19
- value: Schema.String
15
+ var Range = S.Struct({
16
+ range: S.String,
17
+ key: S.String,
18
+ value: S.String
20
19
  });
21
- var RowColumnMeta = Schema.Struct({
22
- size: Schema.optional(Schema.Number)
20
+ var RowColumnMeta = S.Struct({
21
+ size: S.optional(S.Number)
23
22
  });
24
23
  var SheetType = class extends TypedObject({
25
24
  typename: "dxos.org/type/Sheet",
26
25
  version: "0.1.0"
27
26
  })({
28
- name: Schema.optional(Schema.String),
27
+ name: S.optional(S.String),
29
28
  // Sparse map of cells referenced by index.
30
- cells: Schema.mutable(Schema.Record({
31
- key: Schema.String,
32
- value: Schema.mutable(CellValue)
29
+ cells: S.mutable(S.Record({
30
+ key: S.String,
31
+ value: S.mutable(CellValue)
33
32
  })),
34
33
  // Ordered row indices.
35
- rows: Schema.mutable(Schema.Array(Schema.String)),
34
+ rows: S.mutable(S.Array(S.String)),
36
35
  // Ordered column indices.
37
- columns: Schema.mutable(Schema.Array(Schema.String)),
36
+ columns: S.mutable(S.Array(S.String)),
38
37
  // Row metadata referenced by index.
39
- rowMeta: Schema.mutable(Schema.Record({
40
- key: Schema.String,
41
- value: Schema.mutable(RowColumnMeta)
38
+ rowMeta: S.mutable(S.Record({
39
+ key: S.String,
40
+ value: S.mutable(RowColumnMeta)
42
41
  })),
43
42
  // Column metadata referenced by index.
44
- columnMeta: Schema.mutable(Schema.Record({
45
- key: Schema.String,
46
- value: Schema.mutable(RowColumnMeta)
43
+ columnMeta: S.mutable(S.Record({
44
+ key: S.String,
45
+ value: S.mutable(RowColumnMeta)
47
46
  })),
48
47
  // Cell formatting referenced by indexed range.
49
- ranges: Schema.mutable(Schema.Array(Range)),
48
+ ranges: S.mutable(S.Array(Range)),
50
49
  // Threads associated with the sheet
51
- threads: Schema.optional(Schema.mutable(Schema.Array(Ref(ThreadType))))
50
+ threads: S.optional(S.mutable(S.Array(Ref(ThreadType))))
52
51
  }) {
53
52
  };
54
53
 
@@ -86,7 +85,7 @@ var cellClassNameForRange = ({ key, value }) => {
86
85
  };
87
86
 
88
87
  // packages/plugins/plugin-sheet/src/types/types.ts
89
- import { Schema as Schema2 } from "effect";
88
+ import { S as S2 } from "@dxos/echo-schema";
90
89
 
91
90
  // packages/plugins/plugin-sheet/src/model/sheet-model.ts
92
91
  import { Event } from "@dxos/async";
@@ -694,45 +693,45 @@ var useSheetModel = (graph, sheet, { readonly } = {}) => {
694
693
  var SheetAction;
695
694
  (function(SheetAction2) {
696
695
  const SHEET_ACTION = `${SHEET_PLUGIN}/action`;
697
- class Create extends Schema2.TaggedClass()(`${SHEET_ACTION}/create`, {
698
- input: Schema2.Struct({
699
- name: Schema2.optional(Schema2.String)
696
+ class Create extends S2.TaggedClass()(`${SHEET_ACTION}/create`, {
697
+ input: S2.Struct({
698
+ name: S2.optional(S2.String)
700
699
  }),
701
- output: Schema2.Struct({
700
+ output: S2.Struct({
702
701
  object: SheetType
703
702
  })
704
703
  }) {
705
704
  }
706
705
  SheetAction2.Create = Create;
707
- const Axis = Schema2.Union(Schema2.Literal("row"), Schema2.Literal("col"));
708
- class InsertAxis extends Schema2.TaggedClass()(`${SHEET_ACTION}/axis-insert`, {
709
- input: Schema2.Struct({
710
- // TODO(wittjosiah): Schema.instanceOf(SheetModel) throws when running tests.
711
- model: Schema2.Any.pipe(Schema2.filter((model) => model instanceof SheetModel)),
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)),
712
711
  axis: Axis,
713
- index: Schema2.Number,
714
- count: Schema2.optional(Schema2.Number)
712
+ index: S2.Number,
713
+ count: S2.optional(S2.Number)
715
714
  }),
716
- output: Schema2.Void
715
+ output: S2.Void
717
716
  }) {
718
717
  }
719
718
  SheetAction2.InsertAxis = InsertAxis;
720
- SheetAction2.RestoreAxis = Schema2.Struct({
719
+ SheetAction2.RestoreAxis = S2.Struct({
721
720
  axis: Axis,
722
- axisIndex: Schema2.String,
723
- index: Schema2.Number,
721
+ axisIndex: S2.String,
722
+ index: S2.Number,
724
723
  axisMeta: RowColumnMeta,
725
- values: Schema2.Array(Schema2.Any)
724
+ values: S2.Array(S2.Any)
726
725
  });
727
- class DropAxis extends Schema2.TaggedClass()(`${SHEET_ACTION}/axis-drop`, {
728
- input: Schema2.Struct({
729
- // TODO(wittjosiah): Schema.instanceOf(SheetModel) throws when running tests.
730
- model: Schema2.Any.pipe(Schema2.filter((model) => model instanceof SheetModel)),
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)),
731
730
  axis: Axis,
732
- axisIndex: Schema2.String,
733
- deletionData: Schema2.optional(SheetAction2.RestoreAxis)
731
+ axisIndex: S2.String,
732
+ deletionData: S2.optional(SheetAction2.RestoreAxis)
734
733
  }),
735
- output: Schema2.Void
734
+ output: S2.Void
736
735
  }) {
737
736
  }
738
737
  SheetAction2.DropAxis = DropAxis;
@@ -742,7 +741,7 @@ var SheetAction;
742
741
  import { addressFromA1Notation as addressFromA1Notation2, addressToA1Notation as addressToA1Notation2, isFormula as isFormula2 } from "@dxos/compute";
743
742
  import { randomBytes } from "@dxos/crypto";
744
743
  import { invariant as invariant2 } from "@dxos/invariant";
745
- import { live } from "@dxos/live-object";
744
+ import { create } from "@dxos/live-object";
746
745
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/types/util.ts";
747
746
  var MAX_ROWS = 500;
748
747
  var MAX_COLS = 676;
@@ -783,7 +782,7 @@ var initialize = (sheet, { rows = DEFAULT_ROWS, columns = DEFAULT_COLS } = {}) =
783
782
  }
784
783
  };
785
784
  var createSheet = ({ name, cells, ...size } = {}) => {
786
- const sheet = live(SheetType, {
785
+ const sheet = create(SheetType, {
787
786
  name,
788
787
  cells: {},
789
788
  rows: [],
@@ -899,4 +898,4 @@ export {
899
898
  mapFormulaRefsToIndices,
900
899
  mapFormulaIndicesToRefs
901
900
  };
902
- //# sourceMappingURL=chunk-LYZV4Q4C.mjs.map
901
+ //# sourceMappingURL=chunk-6NB67Y6X.mjs.map