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

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