@dxos/plugin-sheet 0.8.4-main.5ea62a8 → 0.8.4-main.ae835ea

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 (168) hide show
  1. package/dist/lib/browser/{SheetContainer-CWSO5WTN.mjs → SheetContainer-GTINUSNB.mjs} +15 -16
  2. package/dist/lib/browser/SheetContainer-GTINUSNB.mjs.map +7 -0
  3. package/dist/lib/browser/{anchor-sort-7WD2VGXW.mjs → anchor-sort-R5CB37J7.mjs} +7 -7
  4. package/dist/lib/browser/anchor-sort-R5CB37J7.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-CL3MDNKQ.mjs → chunk-7VEWYJJN.mjs} +5 -5
  8. package/dist/lib/browser/chunk-7VEWYJJN.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-XSXUU6FO.mjs → chunk-DVJ3QW3F.mjs} +222 -221
  10. package/dist/lib/browser/chunk-DVJ3QW3F.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-FWFAAGXL.mjs +28 -0
  12. package/dist/lib/browser/chunk-FWFAAGXL.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-Q3VBLCSM.mjs → chunk-LS6D4GG7.mjs} +23 -24
  14. package/dist/lib/browser/chunk-LS6D4GG7.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-ROEY4LHM.mjs → intent-resolver-66OAYVQF.mjs} +9 -9
  20. package/dist/lib/browser/intent-resolver-66OAYVQF.mjs.map +7 -0
  21. package/dist/lib/browser/{markdown-VMNYPXTQ.mjs → markdown-B6VKYY2S.mjs} +6 -6
  22. package/dist/lib/browser/{markdown-VMNYPXTQ.mjs.map → markdown-B6VKYY2S.mjs.map} +1 -1
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/{react-surface-2ES3D7MJ.mjs → react-surface-F3VQPGDV.mjs} +14 -14
  25. package/dist/lib/browser/react-surface-F3VQPGDV.mjs.map +7 -0
  26. package/dist/lib/browser/types/index.mjs +4 -12
  27. package/dist/lib/node-esm/{SheetContainer-3RSDBWDG.mjs → SheetContainer-PW4KNZME.mjs} +15 -16
  28. package/dist/lib/node-esm/SheetContainer-PW4KNZME.mjs.map +7 -0
  29. package/dist/lib/node-esm/{anchor-sort-ACQDUIPU.mjs → anchor-sort-HEND452H.mjs} +7 -7
  30. package/dist/lib/node-esm/anchor-sort-HEND452H.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-ODP4L4OV.mjs → chunk-4H2EHVWE.mjs} +222 -221
  34. package/dist/lib/node-esm/chunk-4H2EHVWE.mjs.map +7 -0
  35. package/dist/lib/node-esm/{chunk-ZIQZU4CH.mjs → chunk-4QV4AGWK.mjs} +5 -5
  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-LUCRXSK6.mjs → chunk-LYUIM3QG.mjs} +23 -24
  40. package/dist/lib/node-esm/chunk-LYUIM3QG.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-HESRI2ML.mjs → intent-resolver-VNKIMQQT.mjs} +9 -9
  46. package/dist/lib/node-esm/intent-resolver-VNKIMQQT.mjs.map +7 -0
  47. package/dist/lib/node-esm/{markdown-SCOTGSWB.mjs → markdown-VKY7HXU2.mjs} +6 -6
  48. package/dist/lib/node-esm/{markdown-SCOTGSWB.mjs.map → markdown-VKY7HXU2.mjs.map} +1 -1
  49. package/dist/lib/node-esm/meta.json +1 -1
  50. package/dist/lib/node-esm/{react-surface-66VS5MY2.mjs → react-surface-GGX76V2Y.mjs} +14 -14
  51. package/dist/lib/node-esm/react-surface-GGX76V2Y.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/compute-graph-registry.d.ts.map +1 -1
  56. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts +0 -1
  57. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts.map +1 -1
  58. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +3 -3
  59. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  60. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts +2 -4
  61. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts.map +1 -1
  62. package/dist/types/src/components/RangeList/RangeList.d.ts +2 -2
  63. package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -1
  64. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +2 -2
  65. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  66. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +5 -5
  67. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  68. package/dist/types/src/components/SheetContext/SheetContext.d.ts +2 -2
  69. package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
  70. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +3 -4
  71. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
  72. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +1 -2
  73. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -1
  74. package/dist/types/src/extensions/compute.d.ts +1 -1
  75. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  76. package/dist/types/src/extensions/compute.stories.d.ts +2 -3
  77. package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
  78. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  79. package/dist/types/src/meta.d.ts +0 -1
  80. package/dist/types/src/meta.d.ts.map +1 -1
  81. package/dist/types/src/model/sheet-model.d.ts +5 -5
  82. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  83. package/dist/types/src/model/testing.d.ts +2 -2
  84. package/dist/types/src/model/testing.d.ts.map +1 -1
  85. package/dist/types/src/model/useSheetModel.d.ts +2 -2
  86. package/dist/types/src/model/useSheetModel.d.ts.map +1 -1
  87. package/dist/types/src/serializer.d.ts +2 -2
  88. package/dist/types/src/serializer.d.ts.map +1 -1
  89. package/dist/types/src/testing/data.d.ts +2 -2
  90. package/dist/types/src/testing/data.d.ts.map +1 -1
  91. package/dist/types/src/testing/testing.d.ts +27 -3
  92. package/dist/types/src/testing/testing.d.ts.map +1 -1
  93. package/dist/types/src/translations.d.ts +2 -2
  94. package/dist/types/src/translations.d.ts.map +1 -1
  95. package/dist/types/src/types/{schema.d.ts → Sheet.d.ts} +37 -4
  96. package/dist/types/src/types/Sheet.d.ts.map +1 -0
  97. package/dist/types/src/types/index.d.ts +1 -1
  98. package/dist/types/src/types/index.d.ts.map +1 -1
  99. package/dist/types/src/types/sheet-range-types.d.ts +2 -2
  100. package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
  101. package/dist/types/src/types/types.d.ts +7 -16
  102. package/dist/types/src/types/types.d.ts.map +1 -1
  103. package/dist/types/src/types/util.d.ts +9 -10
  104. package/dist/types/src/types/util.d.ts.map +1 -1
  105. package/dist/types/tsconfig.tsbuildinfo +1 -1
  106. package/package.json +63 -63
  107. package/src/SheetPlugin.tsx +70 -61
  108. package/src/capabilities/anchor-sort.ts +3 -3
  109. package/src/capabilities/capabilities.ts +2 -2
  110. package/src/capabilities/compute-graph-registry.ts +8 -13
  111. package/src/capabilities/intent-resolver.ts +4 -4
  112. package/src/capabilities/react-surface.tsx +7 -7
  113. package/src/components/ComputeGraph/compute-graph.stories.tsx +10 -12
  114. package/src/components/GridSheet/GridSheet.stories.tsx +12 -9
  115. package/src/components/GridSheet/GridSheet.tsx +6 -6
  116. package/src/components/GridSheet/SheetCellEditor.stories.tsx +14 -17
  117. package/src/components/RangeList/RangeList.tsx +8 -8
  118. package/src/components/SheetContainer/SheetContainer.stories.tsx +39 -41
  119. package/src/components/SheetContainer/SheetContainer.tsx +7 -3
  120. package/src/components/SheetContext/SheetContext.tsx +2 -2
  121. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +9 -6
  122. package/src/components/SheetToolbar/SheetToolbar.tsx +4 -9
  123. package/src/components/SheetToolbar/align.ts +3 -3
  124. package/src/components/SheetToolbar/style.ts +2 -2
  125. package/src/extensions/compute.stories.tsx +16 -13
  126. package/src/extensions/compute.ts +1 -2
  127. package/src/integrations/thread-ranges.ts +7 -6
  128. package/src/meta.ts +7 -5
  129. package/src/model/sheet-model.test.ts +4 -4
  130. package/src/model/sheet-model.ts +4 -4
  131. package/src/model/testing.ts +4 -4
  132. package/src/model/useSheetModel.ts +2 -2
  133. package/src/sanity.test.ts +3 -4
  134. package/src/serializer.ts +3 -3
  135. package/src/testing/data.ts +2 -2
  136. package/src/testing/testing.tsx +11 -5
  137. package/src/translations.ts +2 -2
  138. package/src/types/Sheet.ts +103 -0
  139. package/src/types/index.ts +1 -1
  140. package/src/types/sheet-range-types.ts +2 -2
  141. package/src/types/types.ts +6 -16
  142. package/src/types/util.ts +10 -38
  143. package/dist/lib/browser/SheetContainer-CWSO5WTN.mjs.map +0 -7
  144. package/dist/lib/browser/anchor-sort-7WD2VGXW.mjs.map +0 -7
  145. package/dist/lib/browser/chunk-6AKBCBL4.mjs +0 -18
  146. package/dist/lib/browser/chunk-6AKBCBL4.mjs.map +0 -7
  147. package/dist/lib/browser/chunk-CL3MDNKQ.mjs.map +0 -7
  148. package/dist/lib/browser/chunk-KJWZUQVA.mjs.map +0 -7
  149. package/dist/lib/browser/chunk-Q3VBLCSM.mjs.map +0 -7
  150. package/dist/lib/browser/chunk-XSXUU6FO.mjs.map +0 -7
  151. package/dist/lib/browser/compute-graph-registry-6YJHXORG.mjs +0 -30
  152. package/dist/lib/browser/compute-graph-registry-6YJHXORG.mjs.map +0 -7
  153. package/dist/lib/browser/intent-resolver-ROEY4LHM.mjs.map +0 -7
  154. package/dist/lib/browser/react-surface-2ES3D7MJ.mjs.map +0 -7
  155. package/dist/lib/node-esm/SheetContainer-3RSDBWDG.mjs.map +0 -7
  156. package/dist/lib/node-esm/anchor-sort-ACQDUIPU.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-3K5VNYOF.mjs +0 -20
  158. package/dist/lib/node-esm/chunk-3K5VNYOF.mjs.map +0 -7
  159. package/dist/lib/node-esm/chunk-6SK5LJ5S.mjs.map +0 -7
  160. package/dist/lib/node-esm/chunk-LUCRXSK6.mjs.map +0 -7
  161. package/dist/lib/node-esm/chunk-ODP4L4OV.mjs.map +0 -7
  162. package/dist/lib/node-esm/chunk-ZIQZU4CH.mjs.map +0 -7
  163. package/dist/lib/node-esm/compute-graph-registry-ET5KJNLV.mjs +0 -31
  164. package/dist/lib/node-esm/compute-graph-registry-ET5KJNLV.mjs.map +0 -7
  165. package/dist/lib/node-esm/intent-resolver-HESRI2ML.mjs.map +0 -7
  166. package/dist/lib/node-esm/react-surface-66VS5MY2.mjs.map +0 -7
  167. package/dist/types/src/types/schema.d.ts.map +0 -1
  168. package/src/types/schema.ts +0 -61
@@ -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,31 +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 { DetailedCellError, ExportedCellChange, addressFromA1Notation, addressToA1Notation, createSheetName, isFormula } 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
- function _define_property(obj, key, value) {
96
- if (key in obj) {
97
- Object.defineProperty(obj, key, {
98
- value,
99
- enumerable: true,
100
- configurable: true,
101
- writable: true
102
- });
103
- } else {
104
- obj[key] = value;
105
- }
106
- return obj;
107
- }
108
- 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";
109
237
  var typeMap = {
110
238
  BOOLEAN: {
111
239
  type: TypeEnum.Boolean
@@ -151,6 +279,16 @@ var toModelRange = (sheet, range) => ({
151
279
  end: toSimpleCellAddress(sheet, range.to ?? range.from)
152
280
  });
153
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;
289
+ constructor(_graph, _sheet, _options = {}) {
290
+ super(), this._graph = _graph, this._sheet = _sheet, this._options = _options;
291
+ }
154
292
  get graph() {
155
293
  return this._graph;
156
294
  }
@@ -173,7 +311,7 @@ var SheetModel = class extends Resource {
173
311
  log("initialize", {
174
312
  id: this.id
175
313
  }, {
176
- F: __dxlog_file,
314
+ F: __dxlog_file2,
177
315
  L: 124,
178
316
  S: this,
179
317
  C: (f, a) => f(...a)
@@ -185,7 +323,7 @@ var SheetModel = class extends Resource {
185
323
  }
186
324
  });
187
325
  this._node = this._graph.getOrCreateNode(createSheetName({
188
- type: Obj.getTypename(this._sheet),
326
+ type: Obj2.getTypename(this._sheet),
189
327
  id: this._sheet.id
190
328
  }));
191
329
  await this._node.open();
@@ -199,8 +337,8 @@ var SheetModel = class extends Resource {
199
337
  * @deprecated
200
338
  */
201
339
  reset() {
202
- invariant(this._node, void 0, {
203
- F: __dxlog_file,
340
+ invariant2(this._node, void 0, {
341
+ F: __dxlog_file2,
204
342
  L: 152,
205
343
  S: this,
206
344
  A: [
@@ -210,8 +348,8 @@ var SheetModel = class extends Resource {
210
348
  });
211
349
  this._node.graph.hf.clearSheet(this._node.sheetId);
212
350
  Object.entries(this._sheet.cells).forEach(([key, { value }]) => {
213
- invariant(this._node, void 0, {
214
- F: __dxlog_file,
351
+ invariant2(this._node, void 0, {
352
+ F: __dxlog_file2,
215
353
  L: 155,
216
354
  S: this,
217
355
  A: [
@@ -220,7 +358,7 @@ var SheetModel = class extends Resource {
220
358
  ]
221
359
  });
222
360
  const { col, row } = addressFromIndex(this._sheet, key);
223
- if (isFormula(value)) {
361
+ if (isFormula3(value)) {
224
362
  const binding = this._graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(this._sheet, value));
225
363
  if (binding) {
226
364
  value = this._graph.mapFormulaToNative(binding);
@@ -329,8 +467,8 @@ var SheetModel = class extends Resource {
329
467
  * Clear range of values.
330
468
  */
331
469
  clear(range) {
332
- invariant(this._node, void 0, {
333
- F: __dxlog_file,
470
+ invariant2(this._node, void 0, {
471
+ F: __dxlog_file2,
334
472
  L: 258,
335
473
  S: this,
336
474
  A: [
@@ -347,8 +485,8 @@ var SheetModel = class extends Resource {
347
485
  });
348
486
  }
349
487
  cut(range) {
350
- invariant(this._node, void 0, {
351
- F: __dxlog_file,
488
+ invariant2(this._node, void 0, {
489
+ F: __dxlog_file2,
352
490
  L: 269,
353
491
  S: this,
354
492
  A: [
@@ -363,8 +501,8 @@ var SheetModel = class extends Resource {
363
501
  });
364
502
  }
365
503
  copy(range) {
366
- invariant(this._node, void 0, {
367
- F: __dxlog_file,
504
+ invariant2(this._node, void 0, {
505
+ F: __dxlog_file2,
368
506
  L: 278,
369
507
  S: this,
370
508
  A: [
@@ -375,8 +513,8 @@ var SheetModel = class extends Resource {
375
513
  this._node.graph.hf.copy(toModelRange(this._node.sheetId, range));
376
514
  }
377
515
  paste(cell) {
378
- invariant(this._node, void 0, {
379
- F: __dxlog_file,
516
+ invariant2(this._node, void 0, {
517
+ F: __dxlog_file2,
380
518
  L: 283,
381
519
  S: this,
382
520
  A: [
@@ -402,8 +540,8 @@ var SheetModel = class extends Resource {
402
540
  }
403
541
  // TODO(burdon): Display undo/redo state.
404
542
  undo() {
405
- invariant(this._node, void 0, {
406
- F: __dxlog_file,
543
+ invariant2(this._node, void 0, {
544
+ F: __dxlog_file2,
407
545
  L: 298,
408
546
  S: this,
409
547
  A: [
@@ -416,8 +554,8 @@ var SheetModel = class extends Resource {
416
554
  }
417
555
  }
418
556
  redo() {
419
- invariant(this._node, void 0, {
420
- F: __dxlog_file,
557
+ invariant2(this._node, void 0, {
558
+ F: __dxlog_file2,
421
559
  L: 306,
422
560
  S: this,
423
561
  A: [
@@ -444,7 +582,7 @@ var SheetModel = class extends Resource {
444
582
  if (value == null) {
445
583
  return void 0;
446
584
  }
447
- if (isFormula(value)) {
585
+ if (isFormula3(value)) {
448
586
  return this._graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(this._sheet, value));
449
587
  } else {
450
588
  return String(value);
@@ -460,8 +598,8 @@ var SheetModel = class extends Resource {
460
598
  * Gets the regular or computed value from the engine.
461
599
  */
462
600
  getValue(cell) {
463
- invariant(this._node, void 0, {
464
- F: __dxlog_file,
601
+ invariant2(this._node, void 0, {
602
+ F: __dxlog_file2,
465
603
  L: 349,
466
604
  S: this,
467
605
  A: [
@@ -476,7 +614,7 @@ var SheetModel = class extends Resource {
476
614
  cell,
477
615
  error: value
478
616
  }, {
479
- F: __dxlog_file,
617
+ F: __dxlog_file2,
480
618
  L: 354,
481
619
  S: this,
482
620
  C: (f, a) => f(...a)
@@ -489,8 +627,8 @@ var SheetModel = class extends Resource {
489
627
  * Get value type.
490
628
  */
491
629
  getValueDescription(cell) {
492
- invariant(this._node, void 0, {
493
- F: __dxlog_file,
630
+ invariant2(this._node, void 0, {
631
+ F: __dxlog_file2,
494
632
  L: 365,
495
633
  S: this,
496
634
  A: [
@@ -506,8 +644,8 @@ var SheetModel = class extends Resource {
506
644
  * Sets the value, updating the sheet and engine.
507
645
  */
508
646
  setValue(cell, value) {
509
- invariant(this._node, void 0, {
510
- F: __dxlog_file,
647
+ invariant2(this._node, void 0, {
648
+ F: __dxlog_file2,
511
649
  L: 375,
512
650
  S: this,
513
651
  A: [
@@ -536,14 +674,14 @@ var SheetModel = class extends Resource {
536
674
  col: cell.col
537
675
  }, [
538
676
  [
539
- isFormula(value) ? this._graph.mapFormulaToNative(value) : value
677
+ isFormula3(value) ? this._graph.mapFormulaToNative(value) : value
540
678
  ]
541
679
  ]);
542
680
  const idx = addressToIndex(this._sheet, cell);
543
681
  if (value === void 0 || value === null) {
544
682
  delete this._sheet.cells[idx];
545
683
  } else {
546
- if (isFormula(value)) {
684
+ if (isFormula3(value)) {
547
685
  value = this._graph.mapFunctionBindingToId(mapFormulaRefsToIndices(this._sheet, value));
548
686
  }
549
687
  this._sheet.cells[idx] = {
@@ -556,7 +694,7 @@ var SheetModel = class extends Resource {
556
694
  */
557
695
  setValues(values) {
558
696
  Object.entries(values).forEach(([key, { value }]) => {
559
- this.setValue(addressFromA1Notation(key), value);
697
+ this.setValue(addressFromA1Notation3(key), value);
560
698
  });
561
699
  }
562
700
  /**
@@ -600,8 +738,8 @@ var SheetModel = class extends Resource {
600
738
  * Map from indices to A1 notation.
601
739
  */
602
740
  mapFormulaIndicesToRefs(formula) {
603
- invariant(isFormula(formula), void 0, {
604
- F: __dxlog_file,
741
+ invariant2(isFormula3(formula), void 0, {
742
+ F: __dxlog_file2,
605
743
  L: 460,
606
744
  S: this,
607
745
  A: [
@@ -610,7 +748,7 @@ var SheetModel = class extends Resource {
610
748
  ]
611
749
  });
612
750
  return formula.replace(/([a-zA-Z0-9]+)@([a-zA-Z0-9]+)/g, (idx) => {
613
- return addressToA1Notation(addressFromIndex(this._sheet, idx));
751
+ return addressToA1Notation2(addressFromIndex(this._sheet, idx));
614
752
  });
615
753
  }
616
754
  //
@@ -626,8 +764,8 @@ var SheetModel = class extends Resource {
626
764
  return new Date(year, month - 1, day, hours, minutes, seconds);
627
765
  }
628
766
  toDateTime(num) {
629
- invariant(this._node, void 0, {
630
- F: __dxlog_file,
767
+ invariant2(this._node, void 0, {
768
+ F: __dxlog_file2,
631
769
  L: 481,
632
770
  S: this,
633
771
  A: [
@@ -638,8 +776,8 @@ var SheetModel = class extends Resource {
638
776
  return this._node.graph.hf.numberToDateTime(num);
639
777
  }
640
778
  toDate(num) {
641
- invariant(this._node, void 0, {
642
- F: __dxlog_file,
779
+ invariant2(this._node, void 0, {
780
+ F: __dxlog_file2,
643
781
  L: 486,
644
782
  S: this,
645
783
  A: [
@@ -650,8 +788,8 @@ var SheetModel = class extends Resource {
650
788
  return this._node.graph.hf.numberToDate(num);
651
789
  }
652
790
  toTime(num) {
653
- invariant(this._node, void 0, {
654
- F: __dxlog_file,
791
+ invariant2(this._node, void 0, {
792
+ F: __dxlog_file2,
655
793
  L: 491,
656
794
  S: this,
657
795
  A: [
@@ -661,10 +799,6 @@ var SheetModel = class extends Resource {
661
799
  });
662
800
  return this._node.graph.hf.numberToTime(num);
663
801
  }
664
- constructor(_graph, _sheet, _options = {}) {
665
- super(), _define_property(this, "_graph", void 0), _define_property(this, "_sheet", void 0), _define_property(this, "_options", void 0), _define_property(this, "id", void 0), // Wraps compute node.
666
- _define_property(this, "update", void 0), _define_property(this, "_node", void 0), this._graph = _graph, this._sheet = _sheet, this._options = _options, this.id = `model-${PublicKey.random().truncate()}`, this.update = new Event();
667
- }
668
802
  };
669
803
 
670
804
  // src/model/useSheetModel.ts
@@ -697,13 +831,13 @@ var useSheetModel = (graph, sheet, { readonly } = {}) => {
697
831
 
698
832
  // src/types/types.ts
699
833
  (function(SheetAction2) {
700
- const SHEET_ACTION = `${SHEET_PLUGIN}/action`;
834
+ const SHEET_ACTION = `${meta.id}/action`;
701
835
  class Create extends Schema2.TaggedClass()(`${SHEET_ACTION}/create`, {
702
836
  input: Schema2.Struct({
703
837
  name: Schema2.optional(Schema2.String)
704
838
  }),
705
839
  output: Schema2.Struct({
706
- object: SheetType
840
+ object: Sheet
707
841
  })
708
842
  }) {
709
843
  }
@@ -743,146 +877,7 @@ var useSheetModel = (graph, sheet, { readonly } = {}) => {
743
877
  })(SheetAction || (SheetAction = {}));
744
878
  var SheetAction;
745
879
 
746
- // src/types/util.ts
747
- import { addressFromA1Notation as addressFromA1Notation2, addressToA1Notation as addressToA1Notation2, isFormula as isFormula2 } from "@dxos/compute";
748
- import { randomBytes } from "@dxos/crypto";
749
- import { Obj as Obj2 } from "@dxos/echo";
750
- import { invariant as invariant2 } from "@dxos/invariant";
751
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-sheet/src/types/util.ts";
752
- var MAX_ROWS = 500;
753
- var MAX_COLS = 676;
754
- var DEFAULT_ROWS = 50;
755
- var DEFAULT_COLS = 26;
756
- var ApiError = class extends Error {
757
- };
758
- var ReadonlyException = class extends ApiError {
759
- };
760
- var RangeException = class extends ApiError {
761
- constructor(n) {
762
- super();
763
- }
764
- };
765
- var createIndex = (length = 8) => {
766
- const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
767
- const charactersLength = characters.length;
768
- const randomBuffer = randomBytes(length);
769
- return Array.from(randomBuffer, (byte) => characters[byte % charactersLength]).join("");
770
- };
771
- var createIndices = (length) => Array.from({
772
- length
773
- }).map(() => createIndex());
774
- var insertIndices = (indices, i, n, max) => {
775
- if (i + n > max) {
776
- throw new RangeException(i + n);
777
- }
778
- const idx = createIndices(n);
779
- indices.splice(i, 0, ...idx);
780
- return idx;
781
- };
782
- var initialize = (sheet, { rows = DEFAULT_ROWS, columns = DEFAULT_COLS } = {}) => {
783
- if (!sheet.rows.length) {
784
- insertIndices(sheet.rows, 0, rows, MAX_ROWS);
785
- }
786
- if (!sheet.columns.length) {
787
- insertIndices(sheet.columns, 0, columns, MAX_COLS);
788
- }
789
- };
790
- var createSheet = ({ name, cells, ...size } = {}) => {
791
- const sheet = Obj2.make(SheetType, {
792
- name,
793
- cells: {},
794
- rows: [],
795
- columns: [],
796
- rowMeta: {},
797
- columnMeta: {},
798
- ranges: []
799
- });
800
- initialize(sheet, size);
801
- if (cells) {
802
- Object.entries(cells).forEach(([key, { value }]) => {
803
- const idx = addressToIndex(sheet, addressFromA1Notation2(key));
804
- if (isFormula2(value)) {
805
- value = mapFormulaRefsToIndices(sheet, value);
806
- }
807
- sheet.cells[idx] = {
808
- value
809
- };
810
- });
811
- }
812
- return sheet;
813
- };
814
- var addressToIndex = (sheet, cell) => {
815
- return `${sheet.columns[cell.col]}@${sheet.rows[cell.row]}`;
816
- };
817
- var addressFromIndex = (sheet, idx) => {
818
- const [column, row] = idx.split("@");
819
- return {
820
- col: sheet.columns.indexOf(column),
821
- row: sheet.rows.indexOf(row)
822
- };
823
- };
824
- var rangeToIndex = (sheet, range) => {
825
- return [
826
- range.from,
827
- range.to ?? range.from
828
- ].map((cell) => addressToIndex(sheet, cell)).join(":");
829
- };
830
- var rangeFromIndex = (sheet, idx) => {
831
- const [from, to] = idx.split(":").map((index) => addressFromIndex(sheet, index));
832
- return {
833
- from,
834
- to
835
- };
836
- };
837
- var compareIndexPositions = (sheet, indexA, indexB) => {
838
- const { row: rowA, col: columnA } = addressFromIndex(sheet, indexA);
839
- const { row: rowB, col: columnB } = addressFromIndex(sheet, indexB);
840
- if (rowA !== rowB) {
841
- return rowA - rowB;
842
- } else {
843
- return columnA - columnB;
844
- }
845
- };
846
- var mapFormulaRefsToIndices = (sheet, formula) => {
847
- invariant2(isFormula2(formula), void 0, {
848
- F: __dxlog_file2,
849
- L: 152,
850
- S: void 0,
851
- A: [
852
- "isFormula(formula)",
853
- ""
854
- ]
855
- });
856
- return formula.replace(/([a-zA-Z]+)([0-9]+)/g, (match) => {
857
- return addressToIndex(sheet, addressFromA1Notation2(match));
858
- });
859
- };
860
- var mapFormulaIndicesToRefs = (sheet, formula) => {
861
- invariant2(isFormula2(formula), void 0, {
862
- F: __dxlog_file2,
863
- L: 162,
864
- S: void 0,
865
- A: [
866
- "isFormula(formula)",
867
- ""
868
- ]
869
- });
870
- return formula.replace(/([a-zA-Z0-9]+)@([a-zA-Z0-9]+)/g, (idx) => {
871
- return addressToA1Notation2(addressFromIndex(sheet, idx));
872
- });
873
- };
874
-
875
880
  export {
876
- CellValue,
877
- Range,
878
- RowColumnMeta,
879
- SheetType,
880
- alignKey,
881
- commentKey,
882
- styleKey,
883
- cellClassNameForRange,
884
- useSheetModel,
885
- SheetAction,
886
881
  MAX_ROWS,
887
882
  MAX_COLS,
888
883
  DEFAULT_ROWS,
@@ -894,13 +889,19 @@ export {
894
889
  createIndices,
895
890
  insertIndices,
896
891
  initialize,
897
- createSheet,
898
892
  addressToIndex,
899
893
  addressFromIndex,
900
894
  rangeToIndex,
901
895
  rangeFromIndex,
902
896
  compareIndexPositions,
903
897
  mapFormulaRefsToIndices,
904
- mapFormulaIndicesToRefs
898
+ mapFormulaIndicesToRefs,
899
+ Sheet_exports,
900
+ alignKey,
901
+ commentKey,
902
+ styleKey,
903
+ cellClassNameForRange,
904
+ useSheetModel,
905
+ SheetAction
905
906
  };
906
- //# sourceMappingURL=chunk-XSXUU6FO.mjs.map
907
+ //# sourceMappingURL=chunk-DVJ3QW3F.mjs.map