@dxos/plugin-sheet 0.8.4-main.2e9d522 → 0.8.4-main.548089c

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 (209) hide show
  1. package/dist/lib/browser/{SheetContainer-KDGD4AVG.mjs → SheetContainer-BDLFSILO.mjs} +38 -40
  2. package/dist/lib/browser/SheetContainer-BDLFSILO.mjs.map +7 -0
  3. package/dist/lib/browser/anchor-sort-FCQ5OZZK.mjs +23 -0
  4. package/dist/lib/browser/anchor-sort-FCQ5OZZK.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-KJWZUQVA.mjs → chunk-73AV3NH6.mjs} +4 -4
  6. package/dist/lib/browser/chunk-73AV3NH6.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-JUOVL3LE.mjs → chunk-7KRJ2IT5.mjs} +218 -213
  8. package/dist/lib/browser/chunk-7KRJ2IT5.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-7HQX4NQP.mjs → chunk-7VEWYJJN.mjs} +2 -2
  10. package/dist/lib/browser/chunk-7VEWYJJN.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-SI4X5GUR.mjs → chunk-DVJ3QW3F.mjs} +220 -205
  12. package/dist/lib/browser/chunk-DVJ3QW3F.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-FWFAAGXL.mjs +28 -0
  14. package/dist/lib/browser/chunk-FWFAAGXL.mjs.map +7 -0
  15. package/dist/lib/browser/compute-graph-registry-AP5RA7W3.mjs +21 -0
  16. package/dist/lib/browser/compute-graph-registry-AP5RA7W3.mjs.map +7 -0
  17. package/dist/lib/browser/index.mjs +20 -21
  18. package/dist/lib/browser/index.mjs.map +3 -3
  19. package/dist/lib/browser/{intent-resolver-WOJGZMSV.mjs → intent-resolver-66OAYVQF.mjs} +10 -10
  20. package/dist/lib/browser/intent-resolver-66OAYVQF.mjs.map +7 -0
  21. package/dist/lib/browser/{markdown-VXMIPUQC.mjs → markdown-B6VKYY2S.mjs} +6 -6
  22. package/dist/lib/browser/markdown-B6VKYY2S.mjs.map +7 -0
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/{react-surface-SE4HGAEH.mjs → react-surface-GXHVZHKU.mjs} +16 -15
  25. package/dist/lib/browser/react-surface-GXHVZHKU.mjs.map +7 -0
  26. package/dist/lib/browser/types/index.mjs +4 -12
  27. package/dist/lib/node-esm/{SheetContainer-RMG24NZC.mjs → SheetContainer-CK5HSJPL.mjs} +38 -40
  28. package/dist/lib/node-esm/SheetContainer-CK5HSJPL.mjs.map +7 -0
  29. package/dist/lib/node-esm/{anchor-sort-CTJGOPET.mjs → anchor-sort-ZE7IS7SH.mjs} +10 -11
  30. package/dist/lib/node-esm/anchor-sort-ZE7IS7SH.mjs.map +7 -0
  31. package/dist/lib/node-esm/{chunk-6SK5LJ5S.mjs → chunk-44YTKTMP.mjs} +4 -4
  32. package/dist/lib/node-esm/chunk-44YTKTMP.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-CADTJFAS.mjs → chunk-4H2EHVWE.mjs} +220 -205
  34. package/dist/lib/node-esm/chunk-4H2EHVWE.mjs.map +7 -0
  35. package/dist/lib/node-esm/{chunk-Q6UYC4G5.mjs → chunk-4QV4AGWK.mjs} +2 -2
  36. package/dist/lib/node-esm/chunk-4QV4AGWK.mjs.map +7 -0
  37. package/dist/lib/node-esm/chunk-HILDMVPL.mjs +29 -0
  38. package/dist/lib/node-esm/chunk-HILDMVPL.mjs.map +7 -0
  39. package/dist/lib/node-esm/{chunk-IFMIRCZH.mjs → chunk-SMYD6H7Q.mjs} +218 -213
  40. package/dist/lib/node-esm/chunk-SMYD6H7Q.mjs.map +7 -0
  41. package/dist/lib/node-esm/compute-graph-registry-UMQ5UYCL.mjs +22 -0
  42. package/dist/lib/node-esm/compute-graph-registry-UMQ5UYCL.mjs.map +7 -0
  43. package/dist/lib/node-esm/index.mjs +20 -21
  44. package/dist/lib/node-esm/index.mjs.map +3 -3
  45. package/dist/lib/node-esm/{intent-resolver-PZRXBNIJ.mjs → intent-resolver-VNKIMQQT.mjs} +10 -10
  46. package/dist/lib/node-esm/intent-resolver-VNKIMQQT.mjs.map +7 -0
  47. package/dist/lib/node-esm/{markdown-4VPQJZNZ.mjs → markdown-VKY7HXU2.mjs} +6 -6
  48. package/dist/lib/node-esm/markdown-VKY7HXU2.mjs.map +7 -0
  49. package/dist/lib/node-esm/meta.json +1 -1
  50. package/dist/lib/node-esm/{react-surface-LAU23XBH.mjs → react-surface-45L45WN6.mjs} +16 -15
  51. package/dist/lib/node-esm/react-surface-45L45WN6.mjs.map +7 -0
  52. package/dist/lib/node-esm/types/index.mjs +4 -12
  53. package/dist/types/src/SheetPlugin.d.ts +1 -1
  54. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  55. package/dist/types/src/capabilities/anchor-sort.d.ts +2 -4
  56. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  57. package/dist/types/src/capabilities/compute-graph-registry.d.ts +1 -1
  58. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
  59. package/dist/types/src/capabilities/index.d.ts +5 -10
  60. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  61. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  62. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/markdown.d.ts +1 -3
  64. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  65. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  66. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  67. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
  68. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts +9 -4
  69. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts.map +1 -1
  70. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  71. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +50 -3
  72. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  73. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts +11 -20
  74. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts.map +1 -1
  75. package/dist/types/src/components/GridSheet/util.d.ts +1 -1
  76. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
  77. package/dist/types/src/components/RangeList/RangeList.d.ts +2 -2
  78. package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -1
  79. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +2 -2
  80. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  81. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +52 -5
  82. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  83. package/dist/types/src/components/SheetContext/SheetContext.d.ts +3 -3
  84. package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
  85. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +3 -4
  86. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
  87. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +86 -4
  88. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -1
  89. package/dist/types/src/components/SheetToolbar/align.d.ts +2 -2
  90. package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -1
  91. package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -1
  92. package/dist/types/src/extensions/compute.d.ts +1 -1
  93. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  94. package/dist/types/src/extensions/compute.stories.d.ts +10 -13
  95. package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
  96. package/dist/types/src/extensions/editor/index.d.ts +1 -1
  97. package/dist/types/src/extensions/editor/index.d.ts.map +1 -1
  98. package/dist/types/src/extensions/editor/{extension.d.ts → sheet-extension.d.ts} +1 -1
  99. package/dist/types/src/extensions/editor/sheet-extension.d.ts.map +1 -0
  100. package/dist/types/src/extensions/editor/sheet-extension.test.d.ts +2 -0
  101. package/dist/types/src/extensions/editor/sheet-extension.test.d.ts.map +1 -0
  102. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  103. package/dist/types/src/meta.d.ts +0 -1
  104. package/dist/types/src/meta.d.ts.map +1 -1
  105. package/dist/types/src/model/sheet-model.d.ts +5 -5
  106. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  107. package/dist/types/src/model/testing.d.ts +2 -2
  108. package/dist/types/src/model/testing.d.ts.map +1 -1
  109. package/dist/types/src/model/useSheetModel.d.ts +2 -2
  110. package/dist/types/src/model/useSheetModel.d.ts.map +1 -1
  111. package/dist/types/src/playwright/sheet-manager.d.ts +1 -1
  112. package/dist/types/src/playwright/sheet-manager.d.ts.map +1 -1
  113. package/dist/types/src/serializer.d.ts +2 -2
  114. package/dist/types/src/serializer.d.ts.map +1 -1
  115. package/dist/types/src/testing/data.d.ts +2 -2
  116. package/dist/types/src/testing/data.d.ts.map +1 -1
  117. package/dist/types/src/testing/testing.d.ts +27 -3
  118. package/dist/types/src/testing/testing.d.ts.map +1 -1
  119. package/dist/types/src/translations.d.ts +2 -2
  120. package/dist/types/src/translations.d.ts.map +1 -1
  121. package/dist/types/src/types/{schema.d.ts → Sheet.d.ts} +37 -4
  122. package/dist/types/src/types/Sheet.d.ts.map +1 -0
  123. package/dist/types/src/types/index.d.ts +1 -1
  124. package/dist/types/src/types/index.d.ts.map +1 -1
  125. package/dist/types/src/types/sheet-range-types.d.ts +2 -2
  126. package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
  127. package/dist/types/src/types/types.d.ts +7 -16
  128. package/dist/types/src/types/types.d.ts.map +1 -1
  129. package/dist/types/src/types/util.d.ts +9 -10
  130. package/dist/types/src/types/util.d.ts.map +1 -1
  131. package/dist/types/tsconfig.tsbuildinfo +1 -1
  132. package/package.json +67 -64
  133. package/src/SheetPlugin.tsx +71 -62
  134. package/src/capabilities/anchor-sort.ts +7 -8
  135. package/src/capabilities/capabilities.ts +2 -2
  136. package/src/capabilities/compute-graph-registry.ts +9 -14
  137. package/src/capabilities/intent-resolver.ts +5 -5
  138. package/src/capabilities/markdown.ts +3 -2
  139. package/src/capabilities/react-surface.tsx +11 -9
  140. package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +1 -1
  141. package/src/components/ComputeGraph/compute-graph.stories.tsx +21 -20
  142. package/src/components/FunctionEditor/FunctionEditor.tsx +1 -1
  143. package/src/components/GridSheet/GridSheet.stories.tsx +19 -13
  144. package/src/components/GridSheet/GridSheet.tsx +39 -26
  145. package/src/components/GridSheet/SheetCellEditor.stories.tsx +40 -42
  146. package/src/components/GridSheet/util.ts +15 -9
  147. package/src/components/RangeList/RangeList.tsx +8 -8
  148. package/src/components/SheetContainer/SheetContainer.stories.tsx +48 -44
  149. package/src/components/SheetContainer/SheetContainer.tsx +10 -5
  150. package/src/components/SheetContext/SheetContext.tsx +5 -5
  151. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +19 -13
  152. package/src/components/SheetToolbar/SheetToolbar.tsx +29 -30
  153. package/src/components/SheetToolbar/align.ts +7 -6
  154. package/src/components/SheetToolbar/style.ts +4 -4
  155. package/src/extensions/compute.stories.tsx +29 -25
  156. package/src/extensions/compute.ts +2 -3
  157. package/src/extensions/editor/index.ts +1 -1
  158. package/src/extensions/editor/{extension.test.ts → sheet-extension.test.ts} +1 -1
  159. package/src/integrations/thread-ranges.ts +15 -20
  160. package/src/meta.ts +7 -5
  161. package/src/model/sheet-model.test.ts +5 -4
  162. package/src/model/sheet-model.ts +9 -9
  163. package/src/model/testing.ts +4 -4
  164. package/src/model/useSheetModel.ts +2 -2
  165. package/src/playwright/sheet-manager.ts +1 -1
  166. package/src/playwright/sheet.spec.ts +1 -1
  167. package/src/sanity.test.ts +4 -5
  168. package/src/serializer.ts +3 -3
  169. package/src/testing/data.ts +2 -2
  170. package/src/testing/testing.tsx +11 -5
  171. package/src/translations.ts +2 -2
  172. package/src/types/Sheet.ts +103 -0
  173. package/src/types/index.ts +1 -1
  174. package/src/types/sheet-range-types.ts +2 -2
  175. package/src/types/types.ts +6 -15
  176. package/src/types/util.ts +13 -41
  177. package/dist/lib/browser/SheetContainer-KDGD4AVG.mjs.map +0 -7
  178. package/dist/lib/browser/anchor-sort-VHURGBOY.mjs +0 -24
  179. package/dist/lib/browser/anchor-sort-VHURGBOY.mjs.map +0 -7
  180. package/dist/lib/browser/chunk-6AKBCBL4.mjs +0 -18
  181. package/dist/lib/browser/chunk-6AKBCBL4.mjs.map +0 -7
  182. package/dist/lib/browser/chunk-7HQX4NQP.mjs.map +0 -7
  183. package/dist/lib/browser/chunk-JUOVL3LE.mjs.map +0 -7
  184. package/dist/lib/browser/chunk-KJWZUQVA.mjs.map +0 -7
  185. package/dist/lib/browser/chunk-SI4X5GUR.mjs.map +0 -7
  186. package/dist/lib/browser/compute-graph-registry-VG7VP7IV.mjs +0 -30
  187. package/dist/lib/browser/compute-graph-registry-VG7VP7IV.mjs.map +0 -7
  188. package/dist/lib/browser/intent-resolver-WOJGZMSV.mjs.map +0 -7
  189. package/dist/lib/browser/markdown-VXMIPUQC.mjs.map +0 -7
  190. package/dist/lib/browser/react-surface-SE4HGAEH.mjs.map +0 -7
  191. package/dist/lib/node-esm/SheetContainer-RMG24NZC.mjs.map +0 -7
  192. package/dist/lib/node-esm/anchor-sort-CTJGOPET.mjs.map +0 -7
  193. package/dist/lib/node-esm/chunk-3K5VNYOF.mjs +0 -20
  194. package/dist/lib/node-esm/chunk-3K5VNYOF.mjs.map +0 -7
  195. package/dist/lib/node-esm/chunk-6SK5LJ5S.mjs.map +0 -7
  196. package/dist/lib/node-esm/chunk-CADTJFAS.mjs.map +0 -7
  197. package/dist/lib/node-esm/chunk-IFMIRCZH.mjs.map +0 -7
  198. package/dist/lib/node-esm/chunk-Q6UYC4G5.mjs.map +0 -7
  199. package/dist/lib/node-esm/compute-graph-registry-3K3Q2A5T.mjs +0 -31
  200. package/dist/lib/node-esm/compute-graph-registry-3K3Q2A5T.mjs.map +0 -7
  201. package/dist/lib/node-esm/intent-resolver-PZRXBNIJ.mjs.map +0 -7
  202. package/dist/lib/node-esm/markdown-4VPQJZNZ.mjs.map +0 -7
  203. package/dist/lib/node-esm/react-surface-LAU23XBH.mjs.map +0 -7
  204. package/dist/types/src/extensions/editor/extension.d.ts.map +0 -1
  205. package/dist/types/src/extensions/editor/extension.test.d.ts +0 -2
  206. package/dist/types/src/extensions/editor/extension.test.d.ts.map +0 -1
  207. package/dist/types/src/types/schema.d.ts.map +0 -1
  208. package/src/types/schema.ts +0 -61
  209. /package/src/extensions/editor/{extension.ts → sheet-extension.ts} +0 -0
@@ -1,10 +1,127 @@
1
1
  import {
2
- SHEET_PLUGIN
3
- } from "./chunk-6AKBCBL4.mjs";
2
+ __export,
3
+ meta
4
+ } from "./chunk-FWFAAGXL.mjs";
4
5
 
5
- // src/types/schema.ts
6
- import { Schema } from "effect";
7
- import { Type } from "@dxos/echo";
6
+ // src/types/Sheet.ts
7
+ var Sheet_exports = {};
8
+ __export(Sheet_exports, {
9
+ CellValue: () => CellValue,
10
+ Range: () => Range,
11
+ RowColumnMeta: () => RowColumnMeta,
12
+ Sheet: () => Sheet,
13
+ make: () => make
14
+ });
15
+ import * as Schema from "effect/Schema";
16
+ import { addressFromA1Notation as addressFromA1Notation2, isFormula as isFormula2 } from "@dxos/compute";
17
+ import { Obj, Type } from "@dxos/echo";
18
+ import { FormAnnotation } from "@dxos/echo/internal";
19
+
20
+ // src/types/util.ts
21
+ import { addressFromA1Notation, addressToA1Notation, isFormula } from "@dxos/compute";
22
+ import { randomBytes } from "@dxos/crypto";
23
+ import { invariant } from "@dxos/invariant";
24
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-sheet/src/types/util.ts";
25
+ var MAX_ROWS = 500;
26
+ var MAX_COLS = 676;
27
+ var DEFAULT_ROWS = 50;
28
+ var DEFAULT_COLS = 26;
29
+ var ApiError = class extends Error {
30
+ };
31
+ var ReadonlyException = class extends ApiError {
32
+ };
33
+ var RangeException = class extends ApiError {
34
+ constructor(n) {
35
+ super();
36
+ }
37
+ };
38
+ var createIndex = (length = 8) => {
39
+ const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
40
+ const charactersLength = characters.length;
41
+ const randomBuffer = randomBytes(length);
42
+ return Array.from(randomBuffer, (byte) => characters[byte % charactersLength]).join("");
43
+ };
44
+ var createIndices = (length) => Array.from({
45
+ length
46
+ }).map(() => createIndex());
47
+ var insertIndices = (indices, i, n, max) => {
48
+ if (i + n > max) {
49
+ throw new RangeException(i + n);
50
+ }
51
+ const idx = createIndices(n);
52
+ indices.splice(i, 0, ...idx);
53
+ return idx;
54
+ };
55
+ var initialize = (sheet, { rows = DEFAULT_ROWS, columns = DEFAULT_COLS } = {}) => {
56
+ if (!sheet.rows.length) {
57
+ insertIndices(sheet.rows, 0, rows, MAX_ROWS);
58
+ }
59
+ if (!sheet.columns.length) {
60
+ insertIndices(sheet.columns, 0, columns, MAX_COLS);
61
+ }
62
+ };
63
+ var addressToIndex = (sheet, cell) => {
64
+ return `${sheet.columns[cell.col]}@${sheet.rows[cell.row]}`;
65
+ };
66
+ var addressFromIndex = (sheet, idx) => {
67
+ const [column, row] = idx.split("@");
68
+ return {
69
+ col: sheet.columns.indexOf(column),
70
+ row: sheet.rows.indexOf(row)
71
+ };
72
+ };
73
+ var rangeToIndex = (sheet, range) => {
74
+ return [
75
+ range.from,
76
+ range.to ?? range.from
77
+ ].map((cell) => addressToIndex(sheet, cell)).join(":");
78
+ };
79
+ var rangeFromIndex = (sheet, idx) => {
80
+ const [from, to] = idx.split(":").map((index) => addressFromIndex(sheet, index));
81
+ return {
82
+ from,
83
+ to
84
+ };
85
+ };
86
+ var compareIndexPositions = (sheet, indexA, indexB) => {
87
+ const { row: rowA, col: columnA } = addressFromIndex(sheet, indexA);
88
+ const { row: rowB, col: columnB } = addressFromIndex(sheet, indexB);
89
+ if (rowA !== rowB) {
90
+ return rowA - rowB;
91
+ } else {
92
+ return columnA - columnB;
93
+ }
94
+ };
95
+ var mapFormulaRefsToIndices = (sheet, formula) => {
96
+ invariant(isFormula(formula), void 0, {
97
+ F: __dxlog_file,
98
+ L: 124,
99
+ S: void 0,
100
+ A: [
101
+ "isFormula(formula)",
102
+ ""
103
+ ]
104
+ });
105
+ return formula.replace(/([a-zA-Z]+)([0-9]+)/g, (match) => {
106
+ return addressToIndex(sheet, addressFromA1Notation(match));
107
+ });
108
+ };
109
+ var mapFormulaIndicesToRefs = (sheet, formula) => {
110
+ invariant(isFormula(formula), void 0, {
111
+ F: __dxlog_file,
112
+ L: 134,
113
+ S: void 0,
114
+ A: [
115
+ "isFormula(formula)",
116
+ ""
117
+ ]
118
+ });
119
+ return formula.replace(/([a-zA-Z0-9]+)@([a-zA-Z0-9]+)/g, (idx) => {
120
+ return addressToA1Notation(addressFromIndex(sheet, idx));
121
+ });
122
+ };
123
+
124
+ // src/types/Sheet.ts
8
125
  var CellValue = Schema.Struct({
9
126
  // TODO(burdon): How to store dates (datetime, date, time), percentages, etc.
10
127
  // Consider import/export; natural access for other plugins. Special handling for currency (precision).
@@ -19,33 +136,57 @@ var Range = Schema.Struct({
19
136
  var RowColumnMeta = Schema.Struct({
20
137
  size: Schema.optional(Schema.Number)
21
138
  });
22
- var SheetType = Schema.Struct({
139
+ var Sheet = Schema.Struct({
23
140
  name: Schema.optional(Schema.String),
24
141
  // Sparse map of cells referenced by index.
25
- cells: Schema.mutable(Schema.Record({
142
+ cells: Schema.Record({
26
143
  key: Schema.String,
27
144
  value: Schema.mutable(CellValue)
28
- })),
145
+ }).pipe(Schema.mutable, FormAnnotation.set(false)),
29
146
  // Ordered row indices.
30
- rows: Schema.mutable(Schema.Array(Schema.String)),
147
+ rows: Schema.Array(Schema.String).pipe(Schema.mutable, FormAnnotation.set(false)),
31
148
  // Ordered column indices.
32
- columns: Schema.mutable(Schema.Array(Schema.String)),
149
+ columns: Schema.Array(Schema.String).pipe(Schema.mutable, FormAnnotation.set(false)),
33
150
  // Row metadata referenced by index.
34
- rowMeta: Schema.mutable(Schema.Record({
151
+ rowMeta: Schema.Record({
35
152
  key: Schema.String,
36
153
  value: Schema.mutable(RowColumnMeta)
37
- })),
154
+ }).pipe(Schema.mutable, FormAnnotation.set(false)),
38
155
  // Column metadata referenced by index.
39
- columnMeta: Schema.mutable(Schema.Record({
156
+ columnMeta: Schema.Record({
40
157
  key: Schema.String,
41
158
  value: Schema.mutable(RowColumnMeta)
42
- })),
159
+ }).pipe(Schema.mutable, FormAnnotation.set(false)),
43
160
  // Cell formatting referenced by indexed range.
44
- ranges: Schema.mutable(Schema.Array(Range))
161
+ ranges: Schema.Array(Range).pipe(Schema.mutable, FormAnnotation.set(false))
45
162
  }).pipe(Type.Obj({
46
163
  typename: "dxos.org/type/Sheet",
47
164
  version: "0.1.0"
48
165
  }));
166
+ var make = ({ name, cells = {}, ...size } = {}) => {
167
+ const sheet = Obj.make(Sheet, {
168
+ name,
169
+ cells: {},
170
+ rows: [],
171
+ columns: [],
172
+ rowMeta: {},
173
+ columnMeta: {},
174
+ ranges: []
175
+ });
176
+ initialize(sheet, size);
177
+ if (cells) {
178
+ Object.entries(cells).forEach(([key, { value }]) => {
179
+ const idx = addressToIndex(sheet, addressFromA1Notation2(key));
180
+ if (isFormula2(value)) {
181
+ value = mapFormulaRefsToIndices(sheet, value);
182
+ }
183
+ sheet.cells[idx] = {
184
+ value
185
+ };
186
+ });
187
+ }
188
+ return sheet;
189
+ };
49
190
 
50
191
  // src/types/sheet-range-types.ts
51
192
  var alignKey = "alignment";
@@ -81,18 +222,18 @@ var cellClassNameForRange = ({ key, value }) => {
81
222
  };
82
223
 
83
224
  // src/types/types.ts
84
- import { Schema as Schema2 } from "effect";
225
+ import * as Schema2 from "effect/Schema";
85
226
 
86
227
  // src/model/sheet-model.ts
87
228
  import { Event } from "@dxos/async";
88
- import { addressFromA1Notation, addressToA1Notation, createSheetName, isFormula, DetailedCellError, ExportedCellChange } from "@dxos/compute";
229
+ import { DetailedCellError, ExportedCellChange, addressFromA1Notation as addressFromA1Notation3, addressToA1Notation as addressToA1Notation2, createSheetName, isFormula as isFormula3 } from "@dxos/compute";
89
230
  import { Resource } from "@dxos/context";
90
- import { Obj } from "@dxos/echo";
91
- import { FormatEnum, TypeEnum } from "@dxos/echo-schema";
92
- import { invariant } from "@dxos/invariant";
231
+ import { Obj as Obj2 } from "@dxos/echo";
232
+ import { FormatEnum, TypeEnum } from "@dxos/echo/internal";
233
+ import { invariant as invariant2 } from "@dxos/invariant";
93
234
  import { PublicKey } from "@dxos/keys";
94
235
  import { log } from "@dxos/log";
95
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-sheet/src/model/sheet-model.ts";
236
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-sheet/src/model/sheet-model.ts";
96
237
  var typeMap = {
97
238
  BOOLEAN: {
98
239
  type: TypeEnum.Boolean
@@ -138,8 +279,15 @@ var toModelRange = (sheet, range) => ({
138
279
  end: toSimpleCellAddress(sheet, range.to ?? range.from)
139
280
  });
140
281
  var SheetModel = class extends Resource {
282
+ _graph;
283
+ _sheet;
284
+ _options;
285
+ id = `model-${PublicKey.random().truncate()}`;
286
+ // Wraps compute node.
287
+ update = new Event();
288
+ _node;
141
289
  constructor(_graph, _sheet, _options = {}) {
142
- super(), this._graph = _graph, this._sheet = _sheet, this._options = _options, this.id = `model-${PublicKey.random().truncate()}`, this.update = new Event();
290
+ super(), this._graph = _graph, this._sheet = _sheet, this._options = _options;
143
291
  }
144
292
  get graph() {
145
293
  return this._graph;
@@ -163,7 +311,7 @@ var SheetModel = class extends Resource {
163
311
  log("initialize", {
164
312
  id: this.id
165
313
  }, {
166
- F: __dxlog_file,
314
+ F: __dxlog_file2,
167
315
  L: 124,
168
316
  S: this,
169
317
  C: (f, a) => f(...a)
@@ -175,7 +323,7 @@ var SheetModel = class extends Resource {
175
323
  }
176
324
  });
177
325
  this._node = this._graph.getOrCreateNode(createSheetName({
178
- type: Obj.getTypename(this._sheet),
326
+ type: Obj2.getTypename(this._sheet),
179
327
  id: this._sheet.id
180
328
  }));
181
329
  await this._node.open();
@@ -189,8 +337,8 @@ var SheetModel = class extends Resource {
189
337
  * @deprecated
190
338
  */
191
339
  reset() {
192
- invariant(this._node, void 0, {
193
- F: __dxlog_file,
340
+ invariant2(this._node, void 0, {
341
+ F: __dxlog_file2,
194
342
  L: 152,
195
343
  S: this,
196
344
  A: [
@@ -200,8 +348,8 @@ var SheetModel = class extends Resource {
200
348
  });
201
349
  this._node.graph.hf.clearSheet(this._node.sheetId);
202
350
  Object.entries(this._sheet.cells).forEach(([key, { value }]) => {
203
- invariant(this._node, void 0, {
204
- F: __dxlog_file,
351
+ invariant2(this._node, void 0, {
352
+ F: __dxlog_file2,
205
353
  L: 155,
206
354
  S: this,
207
355
  A: [
@@ -210,7 +358,7 @@ var SheetModel = class extends Resource {
210
358
  ]
211
359
  });
212
360
  const { col, row } = addressFromIndex(this._sheet, key);
213
- if (isFormula(value)) {
361
+ if (isFormula3(value)) {
214
362
  const binding = this._graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(this._sheet, value));
215
363
  if (binding) {
216
364
  value = this._graph.mapFormulaToNative(binding);
@@ -319,8 +467,8 @@ var SheetModel = class extends Resource {
319
467
  * Clear range of values.
320
468
  */
321
469
  clear(range) {
322
- invariant(this._node, void 0, {
323
- F: __dxlog_file,
470
+ invariant2(this._node, void 0, {
471
+ F: __dxlog_file2,
324
472
  L: 258,
325
473
  S: this,
326
474
  A: [
@@ -337,8 +485,8 @@ var SheetModel = class extends Resource {
337
485
  });
338
486
  }
339
487
  cut(range) {
340
- invariant(this._node, void 0, {
341
- F: __dxlog_file,
488
+ invariant2(this._node, void 0, {
489
+ F: __dxlog_file2,
342
490
  L: 269,
343
491
  S: this,
344
492
  A: [
@@ -353,8 +501,8 @@ var SheetModel = class extends Resource {
353
501
  });
354
502
  }
355
503
  copy(range) {
356
- invariant(this._node, void 0, {
357
- F: __dxlog_file,
504
+ invariant2(this._node, void 0, {
505
+ F: __dxlog_file2,
358
506
  L: 278,
359
507
  S: this,
360
508
  A: [
@@ -365,8 +513,8 @@ var SheetModel = class extends Resource {
365
513
  this._node.graph.hf.copy(toModelRange(this._node.sheetId, range));
366
514
  }
367
515
  paste(cell) {
368
- invariant(this._node, void 0, {
369
- F: __dxlog_file,
516
+ invariant2(this._node, void 0, {
517
+ F: __dxlog_file2,
370
518
  L: 283,
371
519
  S: this,
372
520
  A: [
@@ -392,8 +540,8 @@ var SheetModel = class extends Resource {
392
540
  }
393
541
  // TODO(burdon): Display undo/redo state.
394
542
  undo() {
395
- invariant(this._node, void 0, {
396
- F: __dxlog_file,
543
+ invariant2(this._node, void 0, {
544
+ F: __dxlog_file2,
397
545
  L: 298,
398
546
  S: this,
399
547
  A: [
@@ -406,8 +554,8 @@ var SheetModel = class extends Resource {
406
554
  }
407
555
  }
408
556
  redo() {
409
- invariant(this._node, void 0, {
410
- F: __dxlog_file,
557
+ invariant2(this._node, void 0, {
558
+ F: __dxlog_file2,
411
559
  L: 306,
412
560
  S: this,
413
561
  A: [
@@ -434,7 +582,7 @@ var SheetModel = class extends Resource {
434
582
  if (value == null) {
435
583
  return void 0;
436
584
  }
437
- if (isFormula(value)) {
585
+ if (isFormula3(value)) {
438
586
  return this._graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(this._sheet, value));
439
587
  } else {
440
588
  return String(value);
@@ -450,8 +598,8 @@ var SheetModel = class extends Resource {
450
598
  * Gets the regular or computed value from the engine.
451
599
  */
452
600
  getValue(cell) {
453
- invariant(this._node, void 0, {
454
- F: __dxlog_file,
601
+ invariant2(this._node, void 0, {
602
+ F: __dxlog_file2,
455
603
  L: 349,
456
604
  S: this,
457
605
  A: [
@@ -466,7 +614,7 @@ var SheetModel = class extends Resource {
466
614
  cell,
467
615
  error: value
468
616
  }, {
469
- F: __dxlog_file,
617
+ F: __dxlog_file2,
470
618
  L: 354,
471
619
  S: this,
472
620
  C: (f, a) => f(...a)
@@ -479,8 +627,8 @@ var SheetModel = class extends Resource {
479
627
  * Get value type.
480
628
  */
481
629
  getValueDescription(cell) {
482
- invariant(this._node, void 0, {
483
- F: __dxlog_file,
630
+ invariant2(this._node, void 0, {
631
+ F: __dxlog_file2,
484
632
  L: 365,
485
633
  S: this,
486
634
  A: [
@@ -496,8 +644,8 @@ var SheetModel = class extends Resource {
496
644
  * Sets the value, updating the sheet and engine.
497
645
  */
498
646
  setValue(cell, value) {
499
- invariant(this._node, void 0, {
500
- F: __dxlog_file,
647
+ invariant2(this._node, void 0, {
648
+ F: __dxlog_file2,
501
649
  L: 375,
502
650
  S: this,
503
651
  A: [
@@ -526,14 +674,14 @@ var SheetModel = class extends Resource {
526
674
  col: cell.col
527
675
  }, [
528
676
  [
529
- isFormula(value) ? this._graph.mapFormulaToNative(value) : value
677
+ isFormula3(value) ? this._graph.mapFormulaToNative(value) : value
530
678
  ]
531
679
  ]);
532
680
  const idx = addressToIndex(this._sheet, cell);
533
681
  if (value === void 0 || value === null) {
534
682
  delete this._sheet.cells[idx];
535
683
  } else {
536
- if (isFormula(value)) {
684
+ if (isFormula3(value)) {
537
685
  value = this._graph.mapFunctionBindingToId(mapFormulaRefsToIndices(this._sheet, value));
538
686
  }
539
687
  this._sheet.cells[idx] = {
@@ -546,7 +694,7 @@ var SheetModel = class extends Resource {
546
694
  */
547
695
  setValues(values) {
548
696
  Object.entries(values).forEach(([key, { value }]) => {
549
- this.setValue(addressFromA1Notation(key), value);
697
+ this.setValue(addressFromA1Notation3(key), value);
550
698
  });
551
699
  }
552
700
  /**
@@ -590,8 +738,8 @@ var SheetModel = class extends Resource {
590
738
  * Map from indices to A1 notation.
591
739
  */
592
740
  mapFormulaIndicesToRefs(formula) {
593
- invariant(isFormula(formula), void 0, {
594
- F: __dxlog_file,
741
+ invariant2(isFormula3(formula), void 0, {
742
+ F: __dxlog_file2,
595
743
  L: 460,
596
744
  S: this,
597
745
  A: [
@@ -600,7 +748,7 @@ var SheetModel = class extends Resource {
600
748
  ]
601
749
  });
602
750
  return formula.replace(/([a-zA-Z0-9]+)@([a-zA-Z0-9]+)/g, (idx) => {
603
- return addressToA1Notation(addressFromIndex(this._sheet, idx));
751
+ return addressToA1Notation2(addressFromIndex(this._sheet, idx));
604
752
  });
605
753
  }
606
754
  //
@@ -616,8 +764,8 @@ var SheetModel = class extends Resource {
616
764
  return new Date(year, month - 1, day, hours, minutes, seconds);
617
765
  }
618
766
  toDateTime(num) {
619
- invariant(this._node, void 0, {
620
- F: __dxlog_file,
767
+ invariant2(this._node, void 0, {
768
+ F: __dxlog_file2,
621
769
  L: 481,
622
770
  S: this,
623
771
  A: [
@@ -628,8 +776,8 @@ var SheetModel = class extends Resource {
628
776
  return this._node.graph.hf.numberToDateTime(num);
629
777
  }
630
778
  toDate(num) {
631
- invariant(this._node, void 0, {
632
- F: __dxlog_file,
779
+ invariant2(this._node, void 0, {
780
+ F: __dxlog_file2,
633
781
  L: 486,
634
782
  S: this,
635
783
  A: [
@@ -640,8 +788,8 @@ var SheetModel = class extends Resource {
640
788
  return this._node.graph.hf.numberToDate(num);
641
789
  }
642
790
  toTime(num) {
643
- invariant(this._node, void 0, {
644
- F: __dxlog_file,
791
+ invariant2(this._node, void 0, {
792
+ F: __dxlog_file2,
645
793
  L: 491,
646
794
  S: this,
647
795
  A: [
@@ -683,13 +831,13 @@ var useSheetModel = (graph, sheet, { readonly } = {}) => {
683
831
 
684
832
  // src/types/types.ts
685
833
  (function(SheetAction2) {
686
- const SHEET_ACTION = `${SHEET_PLUGIN}/action`;
834
+ const SHEET_ACTION = `${meta.id}/action`;
687
835
  class Create extends Schema2.TaggedClass()(`${SHEET_ACTION}/create`, {
688
836
  input: Schema2.Struct({
689
837
  name: Schema2.optional(Schema2.String)
690
838
  }),
691
839
  output: Schema2.Struct({
692
- object: SheetType
840
+ object: Sheet
693
841
  })
694
842
  }) {
695
843
  }
@@ -729,146 +877,7 @@ var useSheetModel = (graph, sheet, { readonly } = {}) => {
729
877
  })(SheetAction || (SheetAction = {}));
730
878
  var SheetAction;
731
879
 
732
- // src/types/util.ts
733
- import { addressFromA1Notation as addressFromA1Notation2, addressToA1Notation as addressToA1Notation2, isFormula as isFormula2 } from "@dxos/compute";
734
- import { randomBytes } from "@dxos/crypto";
735
- import { Obj as Obj2 } from "@dxos/echo";
736
- import { invariant as invariant2 } from "@dxos/invariant";
737
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-sheet/src/types/util.ts";
738
- var MAX_ROWS = 500;
739
- var MAX_COLS = 676;
740
- var DEFAULT_ROWS = 50;
741
- var DEFAULT_COLS = 26;
742
- var ApiError = class extends Error {
743
- };
744
- var ReadonlyException = class extends ApiError {
745
- };
746
- var RangeException = class extends ApiError {
747
- constructor(n) {
748
- super();
749
- }
750
- };
751
- var createIndex = (length = 8) => {
752
- const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
753
- const charactersLength = characters.length;
754
- const randomBuffer = randomBytes(length);
755
- return Array.from(randomBuffer, (byte) => characters[byte % charactersLength]).join("");
756
- };
757
- var createIndices = (length) => Array.from({
758
- length
759
- }).map(() => createIndex());
760
- var insertIndices = (indices, i, n, max) => {
761
- if (i + n > max) {
762
- throw new RangeException(i + n);
763
- }
764
- const idx = createIndices(n);
765
- indices.splice(i, 0, ...idx);
766
- return idx;
767
- };
768
- var initialize = (sheet, { rows = DEFAULT_ROWS, columns = DEFAULT_COLS } = {}) => {
769
- if (!sheet.rows.length) {
770
- insertIndices(sheet.rows, 0, rows, MAX_ROWS);
771
- }
772
- if (!sheet.columns.length) {
773
- insertIndices(sheet.columns, 0, columns, MAX_COLS);
774
- }
775
- };
776
- var createSheet = ({ name, cells, ...size } = {}) => {
777
- const sheet = Obj2.make(SheetType, {
778
- name,
779
- cells: {},
780
- rows: [],
781
- columns: [],
782
- rowMeta: {},
783
- columnMeta: {},
784
- ranges: []
785
- });
786
- initialize(sheet, size);
787
- if (cells) {
788
- Object.entries(cells).forEach(([key, { value }]) => {
789
- const idx = addressToIndex(sheet, addressFromA1Notation2(key));
790
- if (isFormula2(value)) {
791
- value = mapFormulaRefsToIndices(sheet, value);
792
- }
793
- sheet.cells[idx] = {
794
- value
795
- };
796
- });
797
- }
798
- return sheet;
799
- };
800
- var addressToIndex = (sheet, cell) => {
801
- return `${sheet.columns[cell.col]}@${sheet.rows[cell.row]}`;
802
- };
803
- var addressFromIndex = (sheet, idx) => {
804
- const [column, row] = idx.split("@");
805
- return {
806
- col: sheet.columns.indexOf(column),
807
- row: sheet.rows.indexOf(row)
808
- };
809
- };
810
- var rangeToIndex = (sheet, range) => {
811
- return [
812
- range.from,
813
- range.to ?? range.from
814
- ].map((cell) => addressToIndex(sheet, cell)).join(":");
815
- };
816
- var rangeFromIndex = (sheet, idx) => {
817
- const [from, to] = idx.split(":").map((index) => addressFromIndex(sheet, index));
818
- return {
819
- from,
820
- to
821
- };
822
- };
823
- var compareIndexPositions = (sheet, indexA, indexB) => {
824
- const { row: rowA, col: columnA } = addressFromIndex(sheet, indexA);
825
- const { row: rowB, col: columnB } = addressFromIndex(sheet, indexB);
826
- if (rowA !== rowB) {
827
- return rowA - rowB;
828
- } else {
829
- return columnA - columnB;
830
- }
831
- };
832
- var mapFormulaRefsToIndices = (sheet, formula) => {
833
- invariant2(isFormula2(formula), void 0, {
834
- F: __dxlog_file2,
835
- L: 152,
836
- S: void 0,
837
- A: [
838
- "isFormula(formula)",
839
- ""
840
- ]
841
- });
842
- return formula.replace(/([a-zA-Z]+)([0-9]+)/g, (match) => {
843
- return addressToIndex(sheet, addressFromA1Notation2(match));
844
- });
845
- };
846
- var mapFormulaIndicesToRefs = (sheet, formula) => {
847
- invariant2(isFormula2(formula), void 0, {
848
- F: __dxlog_file2,
849
- L: 162,
850
- S: void 0,
851
- A: [
852
- "isFormula(formula)",
853
- ""
854
- ]
855
- });
856
- return formula.replace(/([a-zA-Z0-9]+)@([a-zA-Z0-9]+)/g, (idx) => {
857
- return addressToA1Notation2(addressFromIndex(sheet, idx));
858
- });
859
- };
860
-
861
880
  export {
862
- CellValue,
863
- Range,
864
- RowColumnMeta,
865
- SheetType,
866
- alignKey,
867
- commentKey,
868
- styleKey,
869
- cellClassNameForRange,
870
- useSheetModel,
871
- SheetAction,
872
881
  MAX_ROWS,
873
882
  MAX_COLS,
874
883
  DEFAULT_ROWS,
@@ -880,13 +889,19 @@ export {
880
889
  createIndices,
881
890
  insertIndices,
882
891
  initialize,
883
- createSheet,
884
892
  addressToIndex,
885
893
  addressFromIndex,
886
894
  rangeToIndex,
887
895
  rangeFromIndex,
888
896
  compareIndexPositions,
889
897
  mapFormulaRefsToIndices,
890
- mapFormulaIndicesToRefs
898
+ mapFormulaIndicesToRefs,
899
+ Sheet_exports,
900
+ alignKey,
901
+ commentKey,
902
+ styleKey,
903
+ cellClassNameForRange,
904
+ useSheetModel,
905
+ SheetAction
891
906
  };
892
- //# sourceMappingURL=chunk-SI4X5GUR.mjs.map
907
+ //# sourceMappingURL=chunk-DVJ3QW3F.mjs.map