@dxos/plugin-sheet 0.7.2 → 0.7.3-staging.0905f03

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 (128) hide show
  1. package/dist/lib/browser/{SheetContainer-YAMIOFC6.mjs → SheetContainer-KCLT6PEO.mjs} +8 -6
  2. package/dist/lib/browser/SheetContainer-KCLT6PEO.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-QHQFM7LV.mjs → chunk-E5WQ7U7G.mjs} +77 -78
  4. package/dist/lib/browser/chunk-E5WQ7U7G.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-VMSX6Z4X.mjs → chunk-F3HE6D3J.mjs} +76 -26
  6. package/dist/lib/browser/chunk-F3HE6D3J.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-BVUN7SHF.mjs → chunk-JXFPOYNA.mjs} +1 -1
  8. package/dist/lib/browser/chunk-JXFPOYNA.mjs.map +7 -0
  9. package/dist/lib/browser/{compute-graph-GGWUX644.mjs → compute-graph-SNUS7HOH.mjs} +3 -3
  10. package/dist/lib/browser/index.mjs +84 -32
  11. package/dist/lib/browser/index.mjs.map +3 -3
  12. package/dist/lib/browser/meta.json +1 -1
  13. package/dist/lib/browser/types.mjs +1 -1
  14. package/dist/lib/node/{SheetContainer-BSDHHYXE.cjs → SheetContainer-VVVRYTQG.cjs} +32 -31
  15. package/dist/lib/node/SheetContainer-VVVRYTQG.cjs.map +7 -0
  16. package/dist/lib/node/{chunk-J5ZFWMOD.cjs → chunk-45YW2DX2.cjs} +96 -101
  17. package/dist/lib/node/chunk-45YW2DX2.cjs.map +7 -0
  18. package/dist/lib/node/{chunk-O7XR4R7Y.cjs → chunk-KSEEI5VC.cjs} +87 -27
  19. package/dist/lib/node/chunk-KSEEI5VC.cjs.map +7 -0
  20. package/dist/lib/node/{chunk-AWKOWDMI.cjs → chunk-OWH2EUHZ.cjs} +4 -4
  21. package/dist/lib/node/chunk-OWH2EUHZ.cjs.map +7 -0
  22. package/dist/lib/node/{compute-graph-KGWA2QLE.cjs → compute-graph-WILPHO4A.cjs} +20 -20
  23. package/dist/lib/node/{compute-graph-KGWA2QLE.cjs.map → compute-graph-WILPHO4A.cjs.map} +2 -2
  24. package/dist/lib/node/index.cjs +101 -47
  25. package/dist/lib/node/index.cjs.map +3 -3
  26. package/dist/lib/node/meta.json +1 -1
  27. package/dist/lib/node/types.cjs +6 -6
  28. package/dist/lib/node/types.cjs.map +1 -1
  29. package/dist/lib/node-esm/{SheetContainer-T47T2NYJ.mjs → SheetContainer-LSBE6Q4X.mjs} +8 -6
  30. package/dist/lib/node-esm/SheetContainer-LSBE6Q4X.mjs.map +7 -0
  31. package/dist/lib/node-esm/{chunk-CR4K75EL.mjs → chunk-6JF2AHKO.mjs} +76 -26
  32. package/dist/lib/node-esm/chunk-6JF2AHKO.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-UIBWRHW7.mjs → chunk-BVS2IQRO.mjs} +1 -1
  34. package/dist/lib/node-esm/chunk-BVS2IQRO.mjs.map +7 -0
  35. package/dist/lib/node-esm/{chunk-6GSTEN7N.mjs → chunk-NYDNXI7L.mjs} +77 -78
  36. package/dist/lib/node-esm/chunk-NYDNXI7L.mjs.map +7 -0
  37. package/dist/lib/node-esm/{compute-graph-2SCZT7N5.mjs → compute-graph-S6CVN7RS.mjs} +3 -3
  38. package/dist/lib/node-esm/index.mjs +84 -32
  39. package/dist/lib/node-esm/index.mjs.map +3 -3
  40. package/dist/lib/node-esm/meta.json +1 -1
  41. package/dist/lib/node-esm/types.mjs +1 -1
  42. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  43. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  44. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +1 -0
  45. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  46. package/dist/types/src/components/GridSheet/util.d.ts +0 -2
  47. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
  48. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +2 -0
  49. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  50. package/dist/types/src/components/SheetObjectSettings.d.ts +7 -0
  51. package/dist/types/src/components/SheetObjectSettings.d.ts.map +1 -0
  52. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  53. package/dist/types/src/components/index.d.ts +1 -0
  54. package/dist/types/src/components/index.d.ts.map +1 -1
  55. package/dist/types/src/defs/sheet-range-types.d.ts.map +1 -1
  56. package/dist/types/src/defs/types.d.ts +2 -4
  57. package/dist/types/src/defs/types.d.ts.map +1 -1
  58. package/dist/types/src/defs/util.d.ts +8 -0
  59. package/dist/types/src/defs/util.d.ts.map +1 -1
  60. package/dist/types/src/extensions/editor/extension.d.ts +2 -1
  61. package/dist/types/src/extensions/editor/extension.d.ts.map +1 -1
  62. package/dist/types/src/index.d.ts +1 -0
  63. package/dist/types/src/index.d.ts.map +1 -1
  64. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  65. package/dist/types/src/model/sheet-model.d.ts +0 -4
  66. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  67. package/dist/types/src/model/testing.d.ts +6 -0
  68. package/dist/types/src/model/testing.d.ts.map +1 -0
  69. package/dist/types/src/testing/data.d.ts +3 -0
  70. package/dist/types/src/testing/data.d.ts.map +1 -0
  71. package/dist/types/src/testing/index.d.ts +1 -0
  72. package/dist/types/src/testing/index.d.ts.map +1 -1
  73. package/dist/types/src/testing/playwright/playwright.config.d.ts +3 -0
  74. package/dist/types/src/testing/playwright/playwright.config.d.ts.map +1 -0
  75. package/dist/types/src/testing/playwright/sheet-manager.d.ts +24 -0
  76. package/dist/types/src/testing/playwright/sheet-manager.d.ts.map +1 -0
  77. package/dist/types/src/testing/playwright/sheet.spec.d.ts +2 -0
  78. package/dist/types/src/testing/playwright/sheet.spec.d.ts.map +1 -0
  79. package/dist/types/src/testing/testing.d.ts +1 -2
  80. package/dist/types/src/testing/testing.d.ts.map +1 -1
  81. package/dist/types/src/translations.d.ts +61 -0
  82. package/dist/types/src/translations.d.ts.map +1 -1
  83. package/dist/types/src/types.d.ts +2 -3
  84. package/dist/types/src/types.d.ts.map +1 -1
  85. package/package.json +40 -37
  86. package/src/SheetPlugin.tsx +9 -21
  87. package/src/components/FunctionEditor/FunctionEditor.tsx +2 -2
  88. package/src/components/GridSheet/GridSheet.stories.tsx +2 -0
  89. package/src/components/GridSheet/GridSheet.tsx +18 -8
  90. package/src/components/GridSheet/util.ts +1 -9
  91. package/src/components/SheetContainer/SheetContainer.stories.tsx +44 -2
  92. package/src/components/SheetObjectSettings.tsx +38 -0
  93. package/src/components/Toolbar/Toolbar.tsx +7 -1
  94. package/src/components/index.ts +1 -0
  95. package/src/compute-graph/compute-graph.stories.tsx +1 -1
  96. package/src/compute-graph/compute-graph.test.ts +1 -1
  97. package/src/defs/sheet-range-types.ts +3 -0
  98. package/src/defs/types.ts +3 -1
  99. package/src/defs/util.ts +32 -1
  100. package/src/extensions/editor/extension.ts +3 -3
  101. package/src/index.ts +3 -0
  102. package/src/integrations/thread-ranges.ts +2 -0
  103. package/src/model/sheet-model.test.ts +35 -1
  104. package/src/model/sheet-model.ts +5 -17
  105. package/src/model/testing.ts +35 -0
  106. package/src/sanity.test.ts +1 -1
  107. package/src/testing/data.ts +33 -0
  108. package/src/testing/index.ts +1 -0
  109. package/src/testing/playwright/playwright.config.ts +18 -0
  110. package/src/testing/playwright/sheet-manager.ts +91 -0
  111. package/src/testing/playwright/sheet.spec.ts +78 -0
  112. package/src/testing/testing.tsx +1 -31
  113. package/src/translations.ts +4 -0
  114. package/src/types.ts +1 -3
  115. package/dist/lib/browser/SheetContainer-YAMIOFC6.mjs.map +0 -7
  116. package/dist/lib/browser/chunk-BVUN7SHF.mjs.map +0 -7
  117. package/dist/lib/browser/chunk-QHQFM7LV.mjs.map +0 -7
  118. package/dist/lib/browser/chunk-VMSX6Z4X.mjs.map +0 -7
  119. package/dist/lib/node/SheetContainer-BSDHHYXE.cjs.map +0 -7
  120. package/dist/lib/node/chunk-AWKOWDMI.cjs.map +0 -7
  121. package/dist/lib/node/chunk-J5ZFWMOD.cjs.map +0 -7
  122. package/dist/lib/node/chunk-O7XR4R7Y.cjs.map +0 -7
  123. package/dist/lib/node-esm/SheetContainer-T47T2NYJ.mjs.map +0 -7
  124. package/dist/lib/node-esm/chunk-6GSTEN7N.mjs.map +0 -7
  125. package/dist/lib/node-esm/chunk-CR4K75EL.mjs.map +0 -7
  126. package/dist/lib/node-esm/chunk-UIBWRHW7.mjs.map +0 -7
  127. /package/dist/lib/browser/{compute-graph-GGWUX644.mjs.map → compute-graph-SNUS7HOH.mjs.map} +0 -0
  128. /package/dist/lib/node-esm/{compute-graph-2SCZT7N5.mjs.map → compute-graph-S6CVN7RS.mjs.map} +0 -0
@@ -28,13 +28,45 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var node_exports = {};
30
30
  __export(node_exports, {
31
+ ApiError: () => import_chunk_KSEEI5VC.ApiError,
32
+ DEFAULT_COLUMNS: () => import_chunk_KSEEI5VC.DEFAULT_COLUMNS,
33
+ DEFAULT_ROWS: () => import_chunk_KSEEI5VC.DEFAULT_ROWS,
34
+ MAX_COLUMNS: () => import_chunk_KSEEI5VC.MAX_COLUMNS,
35
+ MAX_ROWS: () => import_chunk_KSEEI5VC.MAX_ROWS,
36
+ RANGE_NOTATION: () => import_chunk_KSEEI5VC.RANGE_NOTATION,
37
+ RangeException: () => import_chunk_KSEEI5VC.RangeException,
38
+ ReadonlyException: () => import_chunk_KSEEI5VC.ReadonlyException,
31
39
  SheetPlugin: () => SheetPlugin,
32
- default: () => src_default
40
+ addressFromA1Notation: () => import_chunk_KSEEI5VC.addressFromA1Notation,
41
+ addressFromIndex: () => import_chunk_KSEEI5VC.addressFromIndex,
42
+ addressToA1Notation: () => import_chunk_KSEEI5VC.addressToA1Notation,
43
+ addressToIndex: () => import_chunk_KSEEI5VC.addressToIndex,
44
+ alignKey: () => import_chunk_KSEEI5VC.alignKey,
45
+ cellClassNameForRange: () => import_chunk_KSEEI5VC.cellClassNameForRange,
46
+ columnLetter: () => import_chunk_KSEEI5VC.columnLetter,
47
+ commentKey: () => import_chunk_KSEEI5VC.commentKey,
48
+ compareIndexPositions: () => import_chunk_KSEEI5VC.compareIndexPositions,
49
+ createIndex: () => import_chunk_KSEEI5VC.createIndex,
50
+ createIndices: () => import_chunk_KSEEI5VC.createIndices,
51
+ createSheet: () => import_chunk_KSEEI5VC.createSheet,
52
+ default: () => src_default,
53
+ inRange: () => import_chunk_KSEEI5VC.inRange,
54
+ initialize: () => import_chunk_KSEEI5VC.initialize,
55
+ insertIndices: () => import_chunk_KSEEI5VC.insertIndices,
56
+ isFormula: () => import_chunk_KSEEI5VC.isFormula,
57
+ mapFormulaIndicesToRefs: () => import_chunk_KSEEI5VC.mapFormulaIndicesToRefs,
58
+ mapFormulaRefsToIndices: () => import_chunk_KSEEI5VC.mapFormulaRefsToIndices,
59
+ posEquals: () => import_chunk_KSEEI5VC.posEquals,
60
+ rangeFromA1Notation: () => import_chunk_KSEEI5VC.rangeFromA1Notation,
61
+ rangeFromIndex: () => import_chunk_KSEEI5VC.rangeFromIndex,
62
+ rangeToA1Notation: () => import_chunk_KSEEI5VC.rangeToA1Notation,
63
+ rangeToIndex: () => import_chunk_KSEEI5VC.rangeToIndex,
64
+ styleKey: () => import_chunk_KSEEI5VC.styleKey
33
65
  });
34
66
  module.exports = __toCommonJS(node_exports);
35
- var import_chunk_J5ZFWMOD = require("./chunk-J5ZFWMOD.cjs");
36
- var import_chunk_O7XR4R7Y = require("./chunk-O7XR4R7Y.cjs");
37
- var import_chunk_AWKOWDMI = require("./chunk-AWKOWDMI.cjs");
67
+ var import_chunk_45YW2DX2 = require("./chunk-45YW2DX2.cjs");
68
+ var import_chunk_KSEEI5VC = require("./chunk-KSEEI5VC.cjs");
69
+ var import_chunk_OWH2EUHZ = require("./chunk-OWH2EUHZ.cjs");
38
70
  var import_chunk_2ZVZI2KJ = require("./chunk-2ZVZI2KJ.cjs");
39
71
  var import_react = __toESM(require("react"));
40
72
  var import_app_framework = require("@dxos/app-framework");
@@ -53,7 +85,7 @@ var serializer = {
53
85
  },
54
86
  deserialize: async ({ content, newId }) => {
55
87
  const { id, ...parsed } = JSON.parse(content);
56
- const sheet = (0, import_echo2.create)(import_chunk_AWKOWDMI.SheetType, parsed);
88
+ const sheet = (0, import_echo2.create)(import_chunk_OWH2EUHZ.SheetType, parsed);
57
89
  if (!newId) {
58
90
  const core = (0, import_echo2.getObjectCore)(sheet);
59
91
  core.id = id;
@@ -64,6 +96,9 @@ var serializer = {
64
96
  var translations_default = [
65
97
  {
66
98
  "en-US": {
99
+ [import_chunk_OWH2EUHZ.SheetType.typename]: {
100
+ "typename label": "Sheet"
101
+ },
67
102
  [import_chunk_2ZVZI2KJ.SHEET_PLUGIN]: {
68
103
  "plugin name": "Sheets",
69
104
  "sheet title placeholder": "New sheet",
@@ -119,7 +154,7 @@ var SheetPlugin = () => {
119
154
  url.protocol = "https";
120
155
  remoteFunctionUrl = url.toString();
121
156
  }
122
- const { defaultPlugins, ComputeGraphRegistry } = await import("./compute-graph-KGWA2QLE.cjs");
157
+ const { defaultPlugins, ComputeGraphRegistry } = await import("./compute-graph-WILPHO4A.cjs");
123
158
  computeGraphRegistry = new ComputeGraphRegistry({
124
159
  plugins: defaultPlugins,
125
160
  remoteFunctionUrl
@@ -136,14 +171,15 @@ var SheetPlugin = () => {
136
171
  ""
137
172
  ]
138
173
  });
139
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_J5ZFWMOD.ComputeGraphContextProvider, {
174
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_45YW2DX2.ComputeGraphContextProvider, {
140
175
  registry: computeGraphRegistry
141
176
  }, children);
142
177
  },
143
178
  metadata: {
144
179
  records: {
145
- [import_chunk_AWKOWDMI.SheetType.typename]: {
146
- label: (object) => object instanceof import_chunk_AWKOWDMI.SheetType ? object.name : void 0,
180
+ [import_chunk_OWH2EUHZ.SheetType.typename]: {
181
+ createObject: import_chunk_OWH2EUHZ.SheetAction.CREATE,
182
+ label: (object) => object instanceof import_chunk_OWH2EUHZ.SheetType ? object.name : void 0,
147
183
  placeholder: [
148
184
  "sheet title placeholder",
149
185
  {
@@ -157,24 +193,15 @@ var SheetPlugin = () => {
157
193
  },
158
194
  translations: translations_default,
159
195
  echo: {
196
+ schema: [
197
+ import_chunk_OWH2EUHZ.SheetType
198
+ ],
160
199
  // TODO(wittjosiah): Factor out to common package/plugin.
161
200
  // FunctionType is currently registered here in case script plugin isn't enabled.
162
- schema: [
163
- import_chunk_AWKOWDMI.SheetType,
201
+ system: [
164
202
  import_types.FunctionType
165
203
  ]
166
204
  },
167
- space: {
168
- onSpaceCreate: {
169
- label: [
170
- "create sheet label",
171
- {
172
- ns: import_chunk_2ZVZI2KJ.SHEET_PLUGIN
173
- }
174
- ],
175
- action: import_chunk_AWKOWDMI.SheetAction.CREATE
176
- }
177
- },
178
205
  graph: {
179
206
  builder: (plugins) => {
180
207
  const client = (0, import_app_framework.resolvePlugin)(plugins, import_plugin_client.parseClientPlugin)?.provides.client;
@@ -183,7 +210,7 @@ var SheetPlugin = () => {
183
210
  return [];
184
211
  }
185
212
  return (0, import_plugin_graph.createExtension)({
186
- id: import_chunk_AWKOWDMI.SheetAction.CREATE,
213
+ id: import_chunk_OWH2EUHZ.SheetAction.CREATE,
187
214
  filter: (node) => (0, import_plugin_graph.isActionGroup)(node) && node.id.startsWith(import_plugin_space.SpaceAction.ADD_OBJECT),
188
215
  actions: ({ node }) => {
189
216
  const id = node.id.split("/").at(-1);
@@ -201,7 +228,7 @@ var SheetPlugin = () => {
201
228
  await dispatch([
202
229
  {
203
230
  plugin: import_chunk_2ZVZI2KJ.SHEET_PLUGIN,
204
- action: import_chunk_AWKOWDMI.SheetAction.CREATE,
231
+ action: import_chunk_OWH2EUHZ.SheetAction.CREATE,
205
232
  data: {
206
233
  space
207
234
  }
@@ -237,7 +264,7 @@ var SheetPlugin = () => {
237
264
  extensions: ({ document: doc }) => {
238
265
  (0, import_invariant.invariant)(computeGraphRegistry, void 0, {
239
266
  F: __dxlog_file,
240
- L: 115,
267
+ L: 111,
241
268
  S: void 0,
242
269
  A: [
243
270
  "computeGraphRegistry",
@@ -247,7 +274,7 @@ var SheetPlugin = () => {
247
274
  const space = (0, import_echo.getSpace)(doc);
248
275
  if (space) {
249
276
  const computeGraph = computeGraphRegistry.getOrCreateGraph(space);
250
- return import_chunk_J5ZFWMOD.computeGraphFacet.of(computeGraph);
277
+ return import_chunk_45YW2DX2.computeGraphFacet.of(computeGraph);
251
278
  }
252
279
  }
253
280
  },
@@ -275,41 +302,36 @@ var SheetPlugin = () => {
275
302
  }),
276
303
  intent: {
277
304
  plugin: import_chunk_2ZVZI2KJ.SHEET_PLUGIN,
278
- action: import_chunk_AWKOWDMI.SheetAction.CREATE
305
+ action: import_chunk_OWH2EUHZ.SheetAction.CREATE
279
306
  }
280
307
  }
281
308
  ]
282
309
  },
283
310
  thread: {
284
- predicate: (data) => data instanceof import_chunk_AWKOWDMI.SheetType,
285
- createSort: (sheet) => (indexA, indexB) => !indexA || !indexB ? 0 : (0, import_chunk_O7XR4R7Y.compareIndexPositions)(sheet, indexA, indexB)
311
+ predicate: (data) => data instanceof import_chunk_OWH2EUHZ.SheetType,
312
+ createSort: (sheet) => (indexA, indexB) => !indexA || !indexB ? 0 : (0, import_chunk_KSEEI5VC.compareIndexPositions)(sheet, indexA, indexB)
286
313
  },
287
314
  surface: {
288
315
  component: ({ data, role }) => {
289
316
  const space = (0, import_echo.isEchoObject)(data.object) ? (0, import_echo.getSpace)(data.object) : void 0;
290
- if (!space) {
291
- return null;
292
- }
293
317
  switch (role) {
294
318
  case "article":
295
319
  case "section":
296
- if (data.object instanceof import_chunk_AWKOWDMI.SheetType) {
297
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_J5ZFWMOD.SheetContainer, {
320
+ if (space && data.object instanceof import_chunk_OWH2EUHZ.SheetType) {
321
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_45YW2DX2.SheetContainer, {
298
322
  space,
299
323
  sheet: data.object,
300
324
  role
301
325
  });
302
326
  }
303
- return null;
327
+ break;
304
328
  case "complementary--settings":
305
- if (data.subject instanceof import_chunk_AWKOWDMI.SheetType) {
306
- return {
307
- node: /* @__PURE__ */ import_react.default.createElement(import_chunk_J5ZFWMOD.RangeList, {
308
- sheet: data.subject
309
- })
310
- };
329
+ if (data.subject instanceof import_chunk_OWH2EUHZ.SheetType) {
330
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_45YW2DX2.SheetObjectSettings, {
331
+ sheet: data.subject
332
+ });
311
333
  }
312
- return null;
334
+ break;
313
335
  }
314
336
  return null;
315
337
  }
@@ -317,17 +339,17 @@ var SheetPlugin = () => {
317
339
  intent: {
318
340
  resolver: async (intent) => {
319
341
  switch (intent.action) {
320
- case import_chunk_AWKOWDMI.SheetAction.CREATE: {
342
+ case import_chunk_OWH2EUHZ.SheetAction.CREATE: {
321
343
  return {
322
- data: (0, import_chunk_O7XR4R7Y.createSheet)()
344
+ data: (0, import_chunk_KSEEI5VC.createSheet)()
323
345
  };
324
346
  }
325
- case import_chunk_AWKOWDMI.SheetAction.INSERT_AXIS: {
347
+ case import_chunk_OWH2EUHZ.SheetAction.INSERT_AXIS: {
326
348
  const { model, axis, index, count } = intent.data;
327
349
  const _indices = model[axis === "col" ? "insertColumns" : "insertRows"](index, count);
328
350
  return;
329
351
  }
330
- case import_chunk_AWKOWDMI.SheetAction.DROP_AXIS: {
352
+ case import_chunk_OWH2EUHZ.SheetAction.DROP_AXIS: {
331
353
  if (!intent.undo) {
332
354
  const { model, axis, axisIndex } = intent.data;
333
355
  const undoData = model[axis === "col" ? "dropColumn" : "dropRow"](axisIndex);
@@ -354,6 +376,38 @@ var SheetPlugin = () => {
354
376
  var src_default = SheetPlugin;
355
377
  // Annotate the CommonJS export names for ESM import in node:
356
378
  0 && (module.exports = {
357
- SheetPlugin
379
+ ApiError,
380
+ DEFAULT_COLUMNS,
381
+ DEFAULT_ROWS,
382
+ MAX_COLUMNS,
383
+ MAX_ROWS,
384
+ RANGE_NOTATION,
385
+ RangeException,
386
+ ReadonlyException,
387
+ SheetPlugin,
388
+ addressFromA1Notation,
389
+ addressFromIndex,
390
+ addressToA1Notation,
391
+ addressToIndex,
392
+ alignKey,
393
+ cellClassNameForRange,
394
+ columnLetter,
395
+ commentKey,
396
+ compareIndexPositions,
397
+ createIndex,
398
+ createIndices,
399
+ createSheet,
400
+ inRange,
401
+ initialize,
402
+ insertIndices,
403
+ isFormula,
404
+ mapFormulaIndicesToRefs,
405
+ mapFormulaRefsToIndices,
406
+ posEquals,
407
+ rangeFromA1Notation,
408
+ rangeFromIndex,
409
+ rangeToA1Notation,
410
+ rangeToIndex,
411
+ styleKey
358
412
  });
359
413
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/SheetPlugin.tsx", "../../../src/serializer.ts", "../../../src/translations.ts", "../../../src/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { NavigationAction, parseIntentPlugin, resolvePlugin, type PluginDefinition } from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { parseClientPlugin } from '@dxos/plugin-client';\nimport { createExtension, isActionGroup, type ActionGroup } from '@dxos/plugin-graph';\nimport { FunctionType } from '@dxos/plugin-script/types';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { getSpace, isEchoObject } from '@dxos/react-client/echo';\nimport { Icon } from '@dxos/react-ui';\n\nimport { ComputeGraphContextProvider, RangeList, SheetContainer } from './components';\nimport { type ComputeGraphRegistry } from './compute-graph';\nimport { compareIndexPositions, createSheet } from './defs';\nimport { computeGraphFacet } from './extensions';\nimport meta, { SHEET_PLUGIN } from './meta';\nimport { serializer } from './serializer';\nimport translations from './translations';\nimport { SheetAction, SheetType, type SheetPluginProvides } from './types';\n\nexport const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {\n let computeGraphRegistry: ComputeGraphRegistry | undefined;\n\n return {\n meta,\n ready: async (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n invariant(client);\n let remoteFunctionUrl: string | undefined;\n if (client.config.values.runtime?.services?.edge?.url) {\n const url = new URL('/functions', client.config.values.runtime?.services?.edge?.url);\n url.protocol = 'https';\n remoteFunctionUrl = url.toString();\n }\n\n // Async import removes direct dependency on hyperformula.\n const { defaultPlugins, ComputeGraphRegistry } = await import('./compute-graph');\n computeGraphRegistry = new ComputeGraphRegistry({ plugins: defaultPlugins, remoteFunctionUrl });\n },\n provides: {\n context: ({ children }) => {\n invariant(computeGraphRegistry);\n return <ComputeGraphContextProvider registry={computeGraphRegistry}>{children}</ComputeGraphContextProvider>;\n },\n metadata: {\n records: {\n [SheetType.typename]: {\n label: (object: any) => (object instanceof SheetType ? object.name : undefined),\n placeholder: ['sheet title placeholder', { ns: SHEET_PLUGIN }],\n icon: 'ph--grid-nine--regular',\n serializer,\n },\n },\n },\n translations,\n echo: {\n // TODO(wittjosiah): Factor out to common package/plugin.\n // FunctionType is currently registered here in case script plugin isn't enabled.\n schema: [SheetType, FunctionType],\n },\n space: {\n onSpaceCreate: {\n label: ['create sheet label', { ns: SHEET_PLUGIN }],\n action: SheetAction.CREATE,\n },\n },\n graph: {\n builder: (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n if (!client || !dispatch) {\n return [];\n }\n\n return createExtension({\n id: SheetAction.CREATE,\n filter: (node): node is ActionGroup => isActionGroup(node) && node.id.startsWith(SpaceAction.ADD_OBJECT),\n actions: ({ node }) => {\n const id = node.id.split('/').at(-1);\n const [spaceId, objectId] = id?.split(':') ?? [];\n const space = client.spaces.get().find((space) => space.id === spaceId);\n const object = objectId && space?.db.getObjectById(objectId);\n const target = objectId ? object : space;\n if (!target) {\n return;\n }\n\n return [\n {\n id: `${SHEET_PLUGIN}/create/${node.id}`,\n data: async () => {\n await dispatch([\n { plugin: SHEET_PLUGIN, action: SheetAction.CREATE, data: { space } },\n { action: SpaceAction.ADD_OBJECT, data: { target } },\n { action: NavigationAction.OPEN },\n ]);\n },\n properties: {\n label: ['create sheet label', { ns: SHEET_PLUGIN }],\n icon: 'ph--grid-nine--regular',\n testId: 'sheetPlugin.createObject',\n },\n },\n ];\n },\n });\n },\n },\n markdown: {\n extensions: ({ document: doc }) => {\n invariant(computeGraphRegistry);\n const space = getSpace(doc);\n if (space) {\n const computeGraph = computeGraphRegistry.getOrCreateGraph(space);\n return computeGraphFacet.of(computeGraph);\n }\n },\n },\n stack: {\n creators: [\n {\n id: 'create-stack-section-sheet',\n testId: 'sheetPlugin.createSection',\n type: ['plugin name', { ns: SHEET_PLUGIN }],\n label: ['create sheet section label', { ns: SHEET_PLUGIN }],\n // TODO(thure): Refactor to use strings\n icon: (props: any) => <Icon icon='ph--grid-nine--regular' {...props} />,\n intent: {\n plugin: SHEET_PLUGIN,\n action: SheetAction.CREATE,\n },\n },\n ],\n },\n thread: {\n predicate: (data) => data instanceof SheetType,\n createSort: (sheet) => (indexA, indexB) =>\n !indexA || !indexB ? 0 : compareIndexPositions(sheet, indexA, indexB),\n },\n surface: {\n component: ({ data, role }) => {\n const space = isEchoObject(data.object) ? getSpace(data.object) : undefined;\n if (!space) {\n return null;\n }\n\n switch (role) {\n case 'article':\n case 'section':\n if (data.object instanceof SheetType) {\n return <SheetContainer space={space} sheet={data.object} role={role} />;\n }\n\n return null;\n case 'complementary--settings':\n if (data.subject instanceof SheetType) {\n return {\n node: <RangeList sheet={data.subject} />,\n };\n }\n\n return null;\n }\n\n return null;\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case SheetAction.CREATE: {\n return { data: createSheet() };\n }\n case SheetAction.INSERT_AXIS: {\n const { model, axis, index, count } = intent.data as SheetAction.InsertAxis;\n const _indices = model[axis === 'col' ? 'insertColumns' : 'insertRows'](index, count);\n return;\n }\n case SheetAction.DROP_AXIS: {\n if (!intent.undo) {\n const { model, axis, axisIndex } = intent.data as SheetAction.DropAxis;\n const undoData = model[axis === 'col' ? 'dropColumn' : 'dropRow'](axisIndex);\n return {\n undoable: {\n message: translations[0]['en-US'][SHEET_PLUGIN][`${axis} dropped label`],\n data: { ...undoData, model },\n },\n };\n } else {\n const { model, ...undoData } = intent.data as SheetAction.DropAxisRestore;\n model[undoData.axis === 'col' ? 'restoreColumn' : 'restoreRow'](undoData);\n }\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type TypedObjectSerializer } from '@dxos/plugin-space/types';\nimport { create, getObjectCore } from '@dxos/react-client/echo';\n\nimport { SheetType } from './types';\n\nexport const serializer: TypedObjectSerializer<SheetType> = {\n serialize: async ({ object }): Promise<string> => {\n const { threads: _threads, ...sheet } = object;\n return JSON.stringify(sheet, null, 2);\n },\n\n deserialize: async ({ content, newId }) => {\n const { id, ...parsed } = JSON.parse(content);\n const sheet = create(SheetType, parsed);\n\n if (!newId) {\n const core = getObjectCore(sheet);\n core.id = id;\n }\n\n return sheet;\n },\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SHEET_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [SHEET_PLUGIN]: {\n 'plugin name': 'Sheets',\n 'sheet title placeholder': 'New sheet',\n 'create sheet label': 'Create sheet',\n 'create sheet section label': 'Create sheet',\n 'cell placeholder': 'Cell value...',\n 'range key alignment label': 'Align',\n 'range key style label': 'Style',\n 'range value start label': 'Align left',\n 'range value center label': 'Align center',\n 'range value end label': 'Align right',\n 'range value softwrap label': 'Wrap text',\n 'range value highlight label': 'Highlight',\n 'toolbar action label': '{{value}}',\n 'selection overlaps existing comment label': 'Selected cell already has a comment',\n 'comment label': 'Add comment',\n 'comment ranges not supported label': 'Commenting on ranges is not yet supported',\n 'no cursor label': 'Select a cell to comment',\n 'open comment for sheet cell': 'View comments for cell',\n 'add col before label': 'Add column before',\n 'add col after label': 'Add column after',\n 'delete col label': 'Delete column',\n 'add row before label': 'Add row before',\n 'add row after label': 'Add row after',\n 'delete row label': 'Delete row',\n 'range list heading': 'Ranges',\n 'range title': '{{position}} — {{value}}',\n 'col dropped label': 'Deleted a column',\n 'row dropped label': 'Deleted a row',\n },\n },\n },\n] as const;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SheetPlugin } from './SheetPlugin';\n\nexport * from './SheetPlugin';\n\nexport default SheetPlugin;\n"],
5
- "mappings": "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",
6
- "names": ["import_echo", "serializer", "serialize", "object", "threads", "_threads", "sheet", "JSON", "stringify", "deserialize", "content", "newId", "id", "parsed", "parse", "create", "SheetType", "core", "getObjectCore", "SHEET_PLUGIN", "SheetPlugin", "computeGraphRegistry", "meta", "ready", "plugins", "client", "resolvePlugin", "parseClientPlugin", "provides", "invariant", "remoteFunctionUrl", "config", "values", "runtime", "services", "edge", "url", "URL", "protocol", "toString", "defaultPlugins", "ComputeGraphRegistry", "context", "children", "React", "ComputeGraphContextProvider", "registry", "metadata", "records", "typename", "label", "name", "undefined", "placeholder", "ns", "icon", "translations", "echo", "schema", "FunctionType", "space", "onSpaceCreate", "action", "SheetAction", "CREATE", "graph", "builder", "dispatch", "parseIntentPlugin", "intent", "createExtension", "filter", "node", "isActionGroup", "startsWith", "SpaceAction", "ADD_OBJECT", "actions", "split", "at", "spaceId", "objectId", "spaces", "get", "find", "db", "getObjectById", "target", "data", "plugin", "NavigationAction", "OPEN", "properties", "testId", "markdown", "extensions", "document", "doc", "getSpace", "computeGraph", "getOrCreateGraph", "computeGraphFacet", "of", "stack", "creators", "type", "props", "Icon", "thread", "predicate", "createSort", "indexA", "indexB", "compareIndexPositions", "surface", "component", "role", "isEchoObject", "SheetContainer", "subject", "RangeList", "resolver", "createSheet", "INSERT_AXIS", "model", "axis", "index", "count", "_indices", "DROP_AXIS", "undo", "axisIndex", "undoData", "undoable", "message"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { NavigationAction, parseIntentPlugin, resolvePlugin, type PluginDefinition } from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { parseClientPlugin } from '@dxos/plugin-client';\nimport { createExtension, isActionGroup, type ActionGroup } from '@dxos/plugin-graph';\nimport { FunctionType } from '@dxos/plugin-script/types';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { getSpace, isEchoObject } from '@dxos/react-client/echo';\nimport { Icon } from '@dxos/react-ui';\n\nimport { ComputeGraphContextProvider, SheetContainer, SheetObjectSettings } from './components';\nimport { type ComputeGraphRegistry } from './compute-graph';\nimport { compareIndexPositions, createSheet } from './defs';\nimport { computeGraphFacet } from './extensions';\nimport meta, { SHEET_PLUGIN } from './meta';\nimport { serializer } from './serializer';\nimport translations from './translations';\nimport { SheetAction, SheetType, type SheetPluginProvides } from './types';\n\nexport const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {\n let computeGraphRegistry: ComputeGraphRegistry | undefined;\n\n return {\n meta,\n ready: async (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n invariant(client);\n let remoteFunctionUrl: string | undefined;\n if (client.config.values.runtime?.services?.edge?.url) {\n const url = new URL('/functions', client.config.values.runtime?.services?.edge?.url);\n url.protocol = 'https';\n remoteFunctionUrl = url.toString();\n }\n\n // Async import removes direct dependency on hyperformula.\n const { defaultPlugins, ComputeGraphRegistry } = await import('./compute-graph');\n computeGraphRegistry = new ComputeGraphRegistry({ plugins: defaultPlugins, remoteFunctionUrl });\n },\n provides: {\n context: ({ children }) => {\n invariant(computeGraphRegistry);\n return <ComputeGraphContextProvider registry={computeGraphRegistry}>{children}</ComputeGraphContextProvider>;\n },\n metadata: {\n records: {\n [SheetType.typename]: {\n createObject: SheetAction.CREATE,\n label: (object: any) => (object instanceof SheetType ? object.name : undefined),\n placeholder: ['sheet title placeholder', { ns: SHEET_PLUGIN }],\n icon: 'ph--grid-nine--regular',\n serializer,\n },\n },\n },\n translations,\n echo: {\n schema: [SheetType],\n // TODO(wittjosiah): Factor out to common package/plugin.\n // FunctionType is currently registered here in case script plugin isn't enabled.\n system: [FunctionType],\n },\n graph: {\n builder: (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n if (!client || !dispatch) {\n return [];\n }\n\n return createExtension({\n id: SheetAction.CREATE,\n filter: (node): node is ActionGroup => isActionGroup(node) && node.id.startsWith(SpaceAction.ADD_OBJECT),\n actions: ({ node }) => {\n const id = node.id.split('/').at(-1);\n const [spaceId, objectId] = id?.split(':') ?? [];\n const space = client.spaces.get().find((space) => space.id === spaceId);\n const object = objectId && space?.db.getObjectById(objectId);\n const target = objectId ? object : space;\n if (!target) {\n return;\n }\n\n return [\n {\n id: `${SHEET_PLUGIN}/create/${node.id}`,\n data: async () => {\n await dispatch([\n { plugin: SHEET_PLUGIN, action: SheetAction.CREATE, data: { space } },\n { action: SpaceAction.ADD_OBJECT, data: { target } },\n { action: NavigationAction.OPEN },\n ]);\n },\n properties: {\n label: ['create sheet label', { ns: SHEET_PLUGIN }],\n icon: 'ph--grid-nine--regular',\n testId: 'sheetPlugin.createObject',\n },\n },\n ];\n },\n });\n },\n },\n markdown: {\n extensions: ({ document: doc }) => {\n invariant(computeGraphRegistry);\n const space = getSpace(doc);\n if (space) {\n const computeGraph = computeGraphRegistry.getOrCreateGraph(space);\n return computeGraphFacet.of(computeGraph);\n }\n },\n },\n stack: {\n creators: [\n {\n id: 'create-stack-section-sheet',\n testId: 'sheetPlugin.createSection',\n type: ['plugin name', { ns: SHEET_PLUGIN }],\n label: ['create sheet section label', { ns: SHEET_PLUGIN }],\n // TODO(thure): Refactor to use strings\n icon: (props: any) => <Icon icon='ph--grid-nine--regular' {...props} />,\n intent: {\n plugin: SHEET_PLUGIN,\n action: SheetAction.CREATE,\n },\n },\n ],\n },\n thread: {\n predicate: (data) => data instanceof SheetType,\n createSort: (sheet) => (indexA, indexB) =>\n !indexA || !indexB ? 0 : compareIndexPositions(sheet, indexA, indexB),\n },\n surface: {\n component: ({ data, role }) => {\n const space = isEchoObject(data.object) ? getSpace(data.object) : undefined;\n switch (role) {\n case 'article':\n case 'section':\n if (space && data.object instanceof SheetType) {\n return <SheetContainer space={space} sheet={data.object} role={role} />;\n }\n break;\n case 'complementary--settings':\n if (data.subject instanceof SheetType) {\n return <SheetObjectSettings sheet={data.subject} />;\n }\n break;\n }\n\n return null;\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case SheetAction.CREATE: {\n return { data: createSheet() };\n }\n case SheetAction.INSERT_AXIS: {\n const { model, axis, index, count } = intent.data as SheetAction.InsertAxis;\n const _indices = model[axis === 'col' ? 'insertColumns' : 'insertRows'](index, count);\n return;\n }\n case SheetAction.DROP_AXIS: {\n if (!intent.undo) {\n const { model, axis, axisIndex } = intent.data as SheetAction.DropAxis;\n const undoData = model[axis === 'col' ? 'dropColumn' : 'dropRow'](axisIndex);\n return {\n undoable: {\n message: (translations[0]['en-US'][SHEET_PLUGIN] as any)[`${axis} dropped label`],\n data: { ...undoData, model },\n },\n };\n } else {\n const { model, ...undoData } = intent.data as SheetAction.DropAxisRestore;\n model[undoData.axis === 'col' ? 'restoreColumn' : 'restoreRow'](undoData);\n }\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type TypedObjectSerializer } from '@dxos/plugin-space/types';\nimport { create, getObjectCore } from '@dxos/react-client/echo';\n\nimport { SheetType } from './types';\n\nexport const serializer: TypedObjectSerializer<SheetType> = {\n serialize: async ({ object }): Promise<string> => {\n const { threads: _threads, ...sheet } = object;\n return JSON.stringify(sheet, null, 2);\n },\n\n deserialize: async ({ content, newId }) => {\n const { id, ...parsed } = JSON.parse(content);\n const sheet = create(SheetType, parsed);\n\n if (!newId) {\n const core = getObjectCore(sheet);\n core.id = id;\n }\n\n return sheet;\n },\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SHEET_PLUGIN } from './meta';\nimport { SheetType } from './types';\n\nexport default [\n {\n 'en-US': {\n [SheetType.typename]: {\n 'typename label': 'Sheet',\n },\n [SHEET_PLUGIN]: {\n 'plugin name': 'Sheets',\n 'sheet title placeholder': 'New sheet',\n 'create sheet label': 'Create sheet',\n 'create sheet section label': 'Create sheet',\n 'cell placeholder': 'Cell value...',\n 'range key alignment label': 'Align',\n 'range key style label': 'Style',\n 'range value start label': 'Align left',\n 'range value center label': 'Align center',\n 'range value end label': 'Align right',\n 'range value softwrap label': 'Wrap text',\n 'range value highlight label': 'Highlight',\n 'toolbar action label': '{{value}}',\n 'selection overlaps existing comment label': 'Selected cell already has a comment',\n 'comment label': 'Add comment',\n 'comment ranges not supported label': 'Commenting on ranges is not yet supported',\n 'no cursor label': 'Select a cell to comment',\n 'open comment for sheet cell': 'View comments for cell',\n 'add col before label': 'Add column before',\n 'add col after label': 'Add column after',\n 'delete col label': 'Delete column',\n 'add row before label': 'Add row before',\n 'add row after label': 'Add row after',\n 'delete row label': 'Delete row',\n 'range list heading': 'Ranges',\n 'range title': '{{position}} — {{value}}',\n 'col dropped label': 'Deleted a column',\n 'row dropped label': 'Deleted a row',\n },\n },\n },\n] as const;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SheetPlugin } from './SheetPlugin';\n\nexport * from './SheetPlugin';\n\n// TODO(burdon): Move to types entrypoint or create a new one.\nexport * from './defs';\n\nexport default SheetPlugin;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,2BAA0F;AAC1F,uBAA0B;AAC1B,2BAAkC;AAClC,0BAAiE;AACjE,mBAA6B;AAC7B,0BAA4B;AAC5B,kBAAuC;AACvC,sBAAqB;ACRrB,IAAAA,eAAsC;AAI/B,IAAMC,aAA+C;EAC1DC,WAAW,OAAO,EAAEC,OAAM,MAAE;AAC1B,UAAM,EAAEC,SAASC,UAAU,GAAGC,MAAAA,IAAUH;AACxC,WAAOI,KAAKC,UAAUF,OAAO,MAAM,CAAA;EACrC;EAEAG,aAAa,OAAO,EAAEC,SAASC,MAAK,MAAE;AACpC,UAAM,EAAEC,IAAI,GAAGC,OAAAA,IAAWN,KAAKO,MAAMJ,OAAAA;AACrC,UAAMJ,YAAQS,qBAAOC,iCAAWH,MAAAA;AAEhC,QAAI,CAACF,OAAO;AACV,YAAMM,WAAOC,4BAAcZ,KAAAA;AAC3BW,WAAKL,KAAKA;IACZ;AAEA,WAAON;EACT;AACF;ACnBA,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACU,gCAAUG,QAAQ,GAAG;QACpB,kBAAkB;MACpB;MACA,CAACC,kCAAAA,GAAe;QACd,eAAe;QACf,2BAA2B;QAC3B,sBAAsB;QACtB,8BAA8B;QAC9B,oBAAoB;QACpB,6BAA6B;QAC7B,yBAAyB;QACzB,2BAA2B;QAC3B,4BAA4B;QAC5B,yBAAyB;QACzB,8BAA8B;QAC9B,+BAA+B;QAC/B,wBAAwB;QACxB,6CAA6C;QAC7C,iBAAiB;QACjB,sCAAsC;QACtC,mBAAmB;QACnB,+BAA+B;QAC/B,wBAAwB;QACxB,uBAAuB;QACvB,oBAAoB;QACpB,wBAAwB;QACxB,uBAAuB;QACvB,oBAAoB;QACpB,sBAAsB;QACtB,eAAe;QACf,qBAAqB;QACrB,qBAAqB;MACvB;IACF;EACF;;;AFpBK,IAAMC,cAAc,MAAA;AACzB,MAAIC;AAEJ,SAAO;IACLC,MAAAA;IACAC,OAAO,OAAOC,YAAAA;AACZ,YAAMC,aAASC,oCAAcF,SAASG,sCAAAA,GAAoBC,SAASH;AACnEI,sCAAUJ,QAAAA,QAAAA;;;;;;;;;AACV,UAAIK;AACJ,UAAIL,OAAOM,OAAOC,OAAOC,SAASC,UAAUC,MAAMC,KAAK;AACrD,cAAMA,MAAM,IAAIC,IAAI,cAAcZ,OAAOM,OAAOC,OAAOC,SAASC,UAAUC,MAAMC,GAAAA;AAChFA,YAAIE,WAAW;AACfR,4BAAoBM,IAAIG,SAAQ;MAClC;AAGA,YAAM,EAAEC,gBAAgBC,qBAAoB,IAAK,MAAM,OAAO,8BAAA;AAC9DpB,6BAAuB,IAAIoB,qBAAqB;QAAEjB,SAASgB;QAAgBV;MAAkB,CAAA;IAC/F;IACAF,UAAU;MACRc,SAAS,CAAC,EAAEC,SAAQ,MAAE;AACpBd,wCAAUR,sBAAAA,QAAAA;;;;;;;;;AACV,eAAO,6BAAAuB,QAAA,cAACC,mDAAAA;UAA4BC,UAAUzB;WAAuBsB,QAAAA;MACvE;MACAI,UAAU;QACRC,SAAS;UACP,CAACjC,gCAAUG,QAAQ,GAAG;YACpB+B,cAAcC,kCAAYC;YAC1BC,OAAO,CAAClD,WAAiBA,kBAAkBa,kCAAYb,OAAOmD,OAAOC;YACrEC,aAAa;cAAC;cAA2B;gBAAEC,IAAIrC;cAAa;;YAC5DsC,MAAM;YACNzD;UACF;QACF;MACF;MACA0D,cAAAA;MACAC,MAAM;QACJC,QAAQ;UAAC7C;;;;QAGT8C,QAAQ;UAACC;;MACX;MACAC,OAAO;QACLC,SAAS,CAACxC,YAAAA;AACR,gBAAMC,aAASC,oCAAcF,SAASG,sCAAAA,GAAoBC,SAASH;AACnE,gBAAMwC,eAAWvC,oCAAcF,SAAS0C,sCAAAA,GAAoBtC,SAASuC,OAAOF;AAC5E,cAAI,CAACxC,UAAU,CAACwC,UAAU;AACxB,mBAAO,CAAA;UACT;AAEA,qBAAOG,qCAAgB;YACrBzD,IAAIuC,kCAAYC;YAChBkB,QAAQ,CAACC,aAA8BC,mCAAcD,IAAAA,KAASA,KAAK3D,GAAG6D,WAAWC,gCAAYC,UAAU;YACvGC,SAAS,CAAC,EAAEL,KAAI,MAAE;AAChB,oBAAM3D,KAAK2D,KAAK3D,GAAGiE,MAAM,GAAA,EAAKC,GAAG,EAAC;AAClC,oBAAM,CAACC,SAASC,QAAAA,IAAYpE,IAAIiE,MAAM,GAAA,KAAQ,CAAA;AAC9C,oBAAMI,QAAQvD,OAAOwD,OAAOC,IAAG,EAAGC,KAAK,CAACH,WAAUA,OAAMrE,OAAOmE,OAAAA;AAC/D,oBAAM5E,SAAS6E,YAAYC,OAAOI,GAAGC,cAAcN,QAAAA;AACnD,oBAAMO,SAASP,WAAW7E,SAAS8E;AACnC,kBAAI,CAACM,QAAQ;AACX;cACF;AAEA,qBAAO;gBACL;kBACE3E,IAAI,GAAGQ,kCAAAA,WAAuBmD,KAAK3D,EAAE;kBACrC4E,MAAM,YAAA;AACJ,0BAAMtB,SAAS;sBACb;wBAAEuB,QAAQrE;wBAAcsE,QAAQvC,kCAAYC;wBAAQoC,MAAM;0BAAEP;wBAAM;sBAAE;sBACpE;wBAAES,QAAQhB,gCAAYC;wBAAYa,MAAM;0BAAED;wBAAO;sBAAE;sBACnD;wBAAEG,QAAQC,sCAAiBC;sBAAK;qBACjC;kBACH;kBACAC,YAAY;oBACVxC,OAAO;sBAAC;sBAAsB;wBAAEI,IAAIrC;sBAAa;;oBACjDsC,MAAM;oBACNoC,QAAQ;kBACV;gBACF;;YAEJ;UACF,CAAA;QACF;MACF;MACAC,UAAU;QACRC,YAAY,CAAC,EAAEC,UAAUC,IAAG,MAAE;AAC5BpE,0CAAUR,sBAAAA,QAAAA;;;;;;;;;AACV,gBAAM2D,YAAQkB,sBAASD,GAAAA;AACvB,cAAIjB,OAAO;AACT,kBAAMmB,eAAe9E,qBAAqB+E,iBAAiBpB,KAAAA;AAC3D,mBAAOqB,wCAAkBC,GAAGH,YAAAA;UAC9B;QACF;MACF;MACAI,OAAO;QACLC,UAAU;UACR;YACE7F,IAAI;YACJkF,QAAQ;YACRY,MAAM;cAAC;cAAe;gBAAEjD,IAAIrC;cAAa;;YACzCiC,OAAO;cAAC;cAA8B;gBAAEI,IAAIrC;cAAa;;;YAEzDsC,MAAM,CAACiD,UAAe,6BAAA9D,QAAA,cAAC+D,sBAAAA;cAAKlD,MAAK;cAA0B,GAAGiD;;YAC9DvC,QAAQ;cACNqB,QAAQrE;cACRsE,QAAQvC,kCAAYC;YACtB;UACF;;MAEJ;MACAyD,QAAQ;QACNC,WAAW,CAACtB,SAASA,gBAAgBxE;QACrC+F,YAAY,CAACzG,UAAU,CAAC0G,QAAQC,WAC9B,CAACD,UAAU,CAACC,SAAS,QAAIC,6CAAsB5G,OAAO0G,QAAQC,MAAAA;MAClE;MACAE,SAAS;QACPC,WAAW,CAAC,EAAE5B,MAAM6B,KAAI,MAAE;AACxB,gBAAMpC,YAAQqC,0BAAa9B,KAAKrF,MAAM,QAAIgG,sBAASX,KAAKrF,MAAM,IAAIoD;AAClE,kBAAQ8D,MAAAA;YACN,KAAK;YACL,KAAK;AACH,kBAAIpC,SAASO,KAAKrF,kBAAkBa,iCAAW;AAC7C,uBAAO,6BAAA6B,QAAA,cAAC0E,sCAAAA;kBAAetC;kBAAc3E,OAAOkF,KAAKrF;kBAAQkH;;cAC3D;AACA;YACF,KAAK;AACH,kBAAI7B,KAAKgC,mBAAmBxG,iCAAW;AACrC,uBAAO,6BAAA6B,QAAA,cAAC4E,2CAAAA;kBAAoBnH,OAAOkF,KAAKgC;;cAC1C;AACA;UACJ;AAEA,iBAAO;QACT;MACF;MACApD,QAAQ;QACNsD,UAAU,OAAOtD,WAAAA;AACf,kBAAQA,OAAOsB,QAAM;YACnB,KAAKvC,kCAAYC,QAAQ;AACvB,qBAAO;gBAAEoC,UAAMmC,mCAAAA;cAAc;YAC/B;YACA,KAAKxE,kCAAYyE,aAAa;AAC5B,oBAAM,EAAEC,OAAOC,MAAMC,OAAOC,MAAK,IAAK5D,OAAOoB;AAC7C,oBAAMyC,WAAWJ,MAAMC,SAAS,QAAQ,kBAAkB,YAAA,EAAcC,OAAOC,KAAAA;AAC/E;YACF;YACA,KAAK7E,kCAAY+E,WAAW;AAC1B,kBAAI,CAAC9D,OAAO+D,MAAM;AAChB,sBAAM,EAAEN,OAAOC,MAAMM,UAAS,IAAKhE,OAAOoB;AAC1C,sBAAM6C,WAAWR,MAAMC,SAAS,QAAQ,eAAe,SAAA,EAAWM,SAAAA;AAClE,uBAAO;kBACLE,UAAU;oBACRC,SAAU5E,qBAAa,CAAA,EAAG,OAAA,EAASvC,kCAAAA,EAAsB,GAAG0G,IAAAA,gBAAoB;oBAChFtC,MAAM;sBAAE,GAAG6C;sBAAUR;oBAAM;kBAC7B;gBACF;cACF,OAAO;AACL,sBAAM,EAAEA,OAAO,GAAGQ,SAAAA,IAAajE,OAAOoB;AACtCqC,sBAAMQ,SAASP,SAAS,QAAQ,kBAAkB,YAAA,EAAcO,QAAAA;cAClE;YACF;UACF;QACF;MACF;IACF;EACF;AACF;AGnLA,IAAA,cAAehH;",
6
+ "names": ["import_echo", "serializer", "serialize", "object", "threads", "_threads", "sheet", "JSON", "stringify", "deserialize", "content", "newId", "id", "parsed", "parse", "create", "SheetType", "core", "getObjectCore", "typename", "SHEET_PLUGIN", "SheetPlugin", "computeGraphRegistry", "meta", "ready", "plugins", "client", "resolvePlugin", "parseClientPlugin", "provides", "invariant", "remoteFunctionUrl", "config", "values", "runtime", "services", "edge", "url", "URL", "protocol", "toString", "defaultPlugins", "ComputeGraphRegistry", "context", "children", "React", "ComputeGraphContextProvider", "registry", "metadata", "records", "createObject", "SheetAction", "CREATE", "label", "name", "undefined", "placeholder", "ns", "icon", "translations", "echo", "schema", "system", "FunctionType", "graph", "builder", "dispatch", "parseIntentPlugin", "intent", "createExtension", "filter", "node", "isActionGroup", "startsWith", "SpaceAction", "ADD_OBJECT", "actions", "split", "at", "spaceId", "objectId", "space", "spaces", "get", "find", "db", "getObjectById", "target", "data", "plugin", "action", "NavigationAction", "OPEN", "properties", "testId", "markdown", "extensions", "document", "doc", "getSpace", "computeGraph", "getOrCreateGraph", "computeGraphFacet", "of", "stack", "creators", "type", "props", "Icon", "thread", "predicate", "createSort", "indexA", "indexB", "compareIndexPositions", "surface", "component", "role", "isEchoObject", "SheetContainer", "subject", "SheetObjectSettings", "resolver", "createSheet", "INSERT_AXIS", "model", "axis", "index", "count", "_indices", "DROP_AXIS", "undo", "axisIndex", "undoData", "undoable", "message"]
7
7
  }