@dxos/plugin-sheet 0.6.11 → 0.6.12-main.5cc132e

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 (106) hide show
  1. package/dist/lib/browser/{SheetContainer-U4H5D34A.mjs → SheetContainer-Y7ZMFBAP.mjs} +568 -109
  2. package/dist/lib/browser/SheetContainer-Y7ZMFBAP.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-D5AGLXJP.mjs → chunk-GNNVBNCX.mjs} +55 -47
  4. package/dist/lib/browser/chunk-GNNVBNCX.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-APHOLYUB.mjs → chunk-PGKZPKUD.mjs} +2 -2
  6. package/dist/lib/browser/chunk-VBF7YENS.mjs +8 -0
  7. package/dist/lib/browser/{chunk-FUAGSXA4.mjs → chunk-WUPTZUTX.mjs} +6 -3
  8. package/dist/lib/browser/chunk-WUPTZUTX.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +15 -6
  10. package/dist/lib/browser/index.mjs.map +3 -3
  11. package/dist/lib/browser/meta.json +1 -1
  12. package/dist/lib/browser/testing.mjs +3 -3
  13. package/dist/lib/browser/types.mjs +1 -1
  14. package/dist/lib/node/{SheetContainer-AXQV3ZT5.cjs → SheetContainer-KEOKUKAQ.cjs} +509 -62
  15. package/dist/lib/node/SheetContainer-KEOKUKAQ.cjs.map +7 -0
  16. package/dist/lib/node/{chunk-PYXHNAAK.cjs → chunk-57PB2HPY.cjs} +5 -5
  17. package/dist/lib/node/{chunk-CN3RPESU.cjs → chunk-6LWBQAQZ.cjs} +9 -9
  18. package/dist/lib/node/{chunk-DSYKOI4E.cjs → chunk-VJU3NPUJ.cjs} +8 -5
  19. package/dist/lib/node/chunk-VJU3NPUJ.cjs.map +7 -0
  20. package/dist/lib/node/{chunk-5KKJ4NPP.cjs → chunk-ZRQZFV5T.cjs} +70 -57
  21. package/dist/lib/node/chunk-ZRQZFV5T.cjs.map +7 -0
  22. package/dist/lib/node/index.cjs +31 -23
  23. package/dist/lib/node/index.cjs.map +3 -3
  24. package/dist/lib/node/meta.json +1 -1
  25. package/dist/lib/node/testing.cjs +6 -6
  26. package/dist/lib/node/types.cjs +9 -9
  27. package/dist/lib/node/types.cjs.map +1 -1
  28. package/dist/lib/node-esm/SheetContainer-Y7ZMFBAP.mjs +2231 -0
  29. package/dist/lib/node-esm/SheetContainer-Y7ZMFBAP.mjs.map +7 -0
  30. package/dist/lib/node-esm/chunk-GNNVBNCX.mjs +3243 -0
  31. package/dist/lib/node-esm/chunk-GNNVBNCX.mjs.map +7 -0
  32. package/dist/lib/node-esm/chunk-JRL5LGCE.mjs +18 -0
  33. package/dist/lib/node-esm/chunk-JRL5LGCE.mjs.map +7 -0
  34. package/dist/lib/node-esm/chunk-PGKZPKUD.mjs +175 -0
  35. package/dist/lib/node-esm/chunk-PGKZPKUD.mjs.map +7 -0
  36. package/dist/lib/node-esm/chunk-VBF7YENS.mjs +8 -0
  37. package/dist/lib/node-esm/chunk-VBF7YENS.mjs.map +7 -0
  38. package/dist/lib/node-esm/chunk-WUPTZUTX.mjs +85 -0
  39. package/dist/lib/node-esm/chunk-WUPTZUTX.mjs.map +7 -0
  40. package/dist/lib/node-esm/index.mjs +257 -0
  41. package/dist/lib/node-esm/index.mjs.map +7 -0
  42. package/dist/lib/node-esm/meta.json +1 -0
  43. package/dist/lib/node-esm/meta.mjs +9 -0
  44. package/dist/lib/node-esm/meta.mjs.map +7 -0
  45. package/dist/lib/node-esm/testing.mjs +92 -0
  46. package/dist/lib/node-esm/testing.mjs.map +7 -0
  47. package/dist/lib/node-esm/types.mjs +22 -0
  48. package/dist/lib/node-esm/types.mjs.map +7 -0
  49. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  50. package/dist/types/src/components/Sheet/Sheet.d.ts.map +1 -1
  51. package/dist/types/src/components/Sheet/Sheet.stories.d.ts.map +1 -1
  52. package/dist/types/src/components/Sheet/decorations.d.ts +24 -0
  53. package/dist/types/src/components/Sheet/decorations.d.ts.map +1 -0
  54. package/dist/types/src/components/Sheet/formatting.d.ts.map +1 -1
  55. package/dist/types/src/components/Sheet/sheet-context.d.ts +2 -0
  56. package/dist/types/src/components/Sheet/sheet-context.d.ts.map +1 -1
  57. package/dist/types/src/components/Sheet/threads.d.ts +2 -0
  58. package/dist/types/src/components/Sheet/threads.d.ts.map +1 -0
  59. package/dist/types/src/components/SheetContainer.d.ts +2 -3
  60. package/dist/types/src/components/SheetContainer.d.ts.map +1 -1
  61. package/dist/types/src/components/Toolbar/Toolbar.d.ts +19 -3
  62. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  63. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +17 -12
  64. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  65. package/dist/types/src/components/index.d.ts +1 -2
  66. package/dist/types/src/components/index.d.ts.map +1 -1
  67. package/dist/types/src/model/index.d.ts +1 -0
  68. package/dist/types/src/model/index.d.ts.map +1 -1
  69. package/dist/types/src/model/model.d.ts +0 -16
  70. package/dist/types/src/model/model.d.ts.map +1 -1
  71. package/dist/types/src/model/util.d.ts +24 -0
  72. package/dist/types/src/model/util.d.ts.map +1 -1
  73. package/dist/types/src/translations.d.ts +17 -12
  74. package/dist/types/src/translations.d.ts.map +1 -1
  75. package/dist/types/src/types.d.ts +72 -2
  76. package/dist/types/src/types.d.ts.map +1 -1
  77. package/package.json +36 -32
  78. package/src/SheetPlugin.tsx +8 -15
  79. package/src/components/CellEditor/extension.test.ts +1 -2
  80. package/src/components/ComputeGraph/graph.browser.test.ts +1 -2
  81. package/src/components/Sheet/Sheet.stories.tsx +5 -1
  82. package/src/components/Sheet/Sheet.tsx +45 -8
  83. package/src/components/Sheet/decorations.ts +62 -0
  84. package/src/components/Sheet/formatting.ts +3 -3
  85. package/src/components/Sheet/sheet-context.tsx +9 -1
  86. package/src/components/Sheet/threads.tsx +201 -0
  87. package/src/components/SheetContainer.tsx +72 -18
  88. package/src/components/Toolbar/Toolbar.tsx +54 -12
  89. package/src/model/index.ts +1 -0
  90. package/src/model/model.browser.test.ts +1 -2
  91. package/src/model/model.ts +9 -43
  92. package/src/model/types.test.ts +1 -2
  93. package/src/model/util.ts +67 -0
  94. package/src/translations.ts +6 -1
  95. package/src/types.ts +26 -3
  96. package/dist/lib/browser/SheetContainer-U4H5D34A.mjs.map +0 -7
  97. package/dist/lib/browser/chunk-D5AGLXJP.mjs.map +0 -7
  98. package/dist/lib/browser/chunk-FUAGSXA4.mjs.map +0 -7
  99. package/dist/lib/browser/chunk-NU4PBN33.mjs +0 -8
  100. package/dist/lib/node/SheetContainer-AXQV3ZT5.cjs.map +0 -7
  101. package/dist/lib/node/chunk-5KKJ4NPP.cjs.map +0 -7
  102. package/dist/lib/node/chunk-DSYKOI4E.cjs.map +0 -7
  103. /package/dist/lib/browser/{chunk-APHOLYUB.mjs.map → chunk-PGKZPKUD.mjs.map} +0 -0
  104. /package/dist/lib/browser/{chunk-NU4PBN33.mjs.map → chunk-VBF7YENS.mjs.map} +0 -0
  105. /package/dist/lib/node/{chunk-PYXHNAAK.cjs.map → chunk-57PB2HPY.cjs.map} +0 -0
  106. /package/dist/lib/node/{chunk-CN3RPESU.cjs.map → chunk-6LWBQAQZ.cjs.map} +0 -0
@@ -26,23 +26,28 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_5KKJ4NPP_exports = {};
30
- __export(chunk_5KKJ4NPP_exports, {
29
+ var chunk_ZRQZFV5T_exports = {};
30
+ __export(chunk_ZRQZFV5T_exports, {
31
31
  CustomPlugin: () => CustomPlugin,
32
32
  CustomPluginTranslations: () => CustomPluginTranslations,
33
33
  FunctionPluginAsync: () => FunctionPluginAsync,
34
34
  SheetModel: () => SheetModel,
35
35
  addressFromA1Notation: () => addressFromA1Notation,
36
+ addressFromIndex: () => addressFromIndex,
36
37
  addressToA1Notation: () => addressToA1Notation,
38
+ addressToIndex: () => addressToIndex,
39
+ closest: () => closest,
37
40
  columnLetter: () => columnLetter,
41
+ compareIndexPositions: () => compareIndexPositions,
38
42
  createComputeGraph: () => createComputeGraph,
39
43
  defaultFunctions: () => defaultFunctions,
40
44
  inRange: () => inRange,
41
45
  posEquals: () => posEquals,
46
+ rangeFromIndex: () => rangeFromIndex,
42
47
  rangeToA1Notation: () => rangeToA1Notation
43
48
  });
44
- module.exports = __toCommonJS(chunk_5KKJ4NPP_exports);
45
- var import_chunk_DSYKOI4E = require("./chunk-DSYKOI4E.cjs");
49
+ module.exports = __toCommonJS(chunk_ZRQZFV5T_exports);
50
+ var import_chunk_VJU3NPUJ = require("./chunk-VJU3NPUJ.cjs");
46
51
  var import_hyperformula = require("hyperformula");
47
52
  var import_async = require("@dxos/async");
48
53
  var import_keys = require("@dxos/keys");
@@ -2674,17 +2679,55 @@ var createIndex = (length = 8) => {
2674
2679
  var createIndices = (length) => Array.from({
2675
2680
  length
2676
2681
  }).map(() => createIndex());
2682
+ var addressToIndex = (sheet, cell) => {
2683
+ return `${sheet.columns[cell.column]}@${sheet.rows[cell.row]}`;
2684
+ };
2685
+ var addressFromIndex = (sheet, idx) => {
2686
+ const [column, row] = idx.split("@");
2687
+ return {
2688
+ column: sheet.columns.indexOf(column),
2689
+ row: sheet.rows.indexOf(row)
2690
+ };
2691
+ };
2692
+ var rangeFromIndex = (sheet, idx) => {
2693
+ const [from, to] = idx.split(":").map((index) => addressFromIndex(sheet, index));
2694
+ return {
2695
+ from,
2696
+ to
2697
+ };
2698
+ };
2699
+ var closest = (cursor, cells) => {
2700
+ let closestCell;
2701
+ let closestDistance = Number.MAX_SAFE_INTEGER;
2702
+ for (const cell of cells) {
2703
+ const distance = Math.abs(cell.row - cursor.row) + Math.abs(cell.column - cursor.column);
2704
+ if (distance < closestDistance) {
2705
+ closestCell = cell;
2706
+ closestDistance = distance;
2707
+ }
2708
+ }
2709
+ return closestCell;
2710
+ };
2711
+ var compareIndexPositions = (sheet, indexA, indexB) => {
2712
+ const { row: rowA, column: columnA } = addressFromIndex(sheet, indexA);
2713
+ const { row: rowB, column: columnB } = addressFromIndex(sheet, indexB);
2714
+ if (rowA !== rowB) {
2715
+ return rowA - rowB;
2716
+ } else {
2717
+ return columnA - columnB;
2718
+ }
2719
+ };
2677
2720
  var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/model/model.ts";
2678
2721
  var DEFAULT_ROWS = 100;
2679
2722
  var DEFAULT_COLUMNS = 26;
2680
2723
  var typeMap = {
2681
- BOOLEAN: import_chunk_DSYKOI4E.ValueTypeEnum.Boolean,
2682
- NUMBER_RAW: import_chunk_DSYKOI4E.ValueTypeEnum.Number,
2683
- NUMBER_PERCENT: import_chunk_DSYKOI4E.ValueTypeEnum.Percent,
2684
- NUMBER_CURRENCY: import_chunk_DSYKOI4E.ValueTypeEnum.Currency,
2685
- NUMBER_DATETIME: import_chunk_DSYKOI4E.ValueTypeEnum.DateTime,
2686
- NUMBER_DATE: import_chunk_DSYKOI4E.ValueTypeEnum.Date,
2687
- NUMBER_TIME: import_chunk_DSYKOI4E.ValueTypeEnum.Time
2724
+ BOOLEAN: import_chunk_VJU3NPUJ.ValueTypeEnum.Boolean,
2725
+ NUMBER_RAW: import_chunk_VJU3NPUJ.ValueTypeEnum.Number,
2726
+ NUMBER_PERCENT: import_chunk_VJU3NPUJ.ValueTypeEnum.Percent,
2727
+ NUMBER_CURRENCY: import_chunk_VJU3NPUJ.ValueTypeEnum.Currency,
2728
+ NUMBER_DATETIME: import_chunk_VJU3NPUJ.ValueTypeEnum.DateTime,
2729
+ NUMBER_DATE: import_chunk_VJU3NPUJ.ValueTypeEnum.Date,
2730
+ NUMBER_TIME: import_chunk_VJU3NPUJ.ValueTypeEnum.Time
2688
2731
  };
2689
2732
  var defaultOptions = {
2690
2733
  rows: 50,
@@ -2826,7 +2869,7 @@ var SheetModel = class {
2826
2869
  reset() {
2827
2870
  this._graph.hf.clearSheet(this._sheetId);
2828
2871
  Object.entries(this._sheet.cells).forEach(([key, { value }]) => {
2829
- const { column, row } = this.addressFromIndex(key);
2872
+ const { column, row } = addressFromIndex(this._sheet, key);
2830
2873
  if (typeof value === "string" && value.charAt(0) === "=") {
2831
2874
  value = this.mapFormulaBindingToFormula(this.mapFormulaBindingFromId(this.mapFormulaIndicesToRefs(value)));
2832
2875
  }
@@ -2867,14 +2910,14 @@ var SheetModel = class {
2867
2910
  const values = this._iterRange(range, () => null);
2868
2911
  this._graph.hf.setCellContents(toSimpleCellAddress(this._sheetId, topLeft), values);
2869
2912
  this._iterRange(range, (cell) => {
2870
- const idx = this.addressToIndex(cell);
2913
+ const idx = addressToIndex(this._sheet, cell);
2871
2914
  delete this._sheet.cells[idx];
2872
2915
  });
2873
2916
  }
2874
2917
  cut(range) {
2875
2918
  this._graph.hf.cut(toModelRange(this._sheetId, range));
2876
2919
  this._iterRange(range, (cell) => {
2877
- const idx = this.addressToIndex(cell);
2920
+ const idx = addressToIndex(this._sheet, cell);
2878
2921
  delete this._sheet.cells[idx];
2879
2922
  });
2880
2923
  }
@@ -2887,7 +2930,7 @@ var SheetModel = class {
2887
2930
  for (const change of changes) {
2888
2931
  if (change instanceof import_hyperformula3.ExportedCellChange) {
2889
2932
  const { address, newValue } = change;
2890
- const idx = this.addressToIndex({
2933
+ const idx = addressToIndex(this._sheet, {
2891
2934
  row: address.row,
2892
2935
  column: address.col
2893
2936
  });
@@ -2915,7 +2958,7 @@ var SheetModel = class {
2915
2958
  * Get value from sheet.
2916
2959
  */
2917
2960
  getCellValue(cell) {
2918
- const idx = this.addressToIndex(cell);
2961
+ const idx = addressToIndex(this._sheet, cell);
2919
2962
  return this._sheet.cells[idx]?.value ?? null;
2920
2963
  }
2921
2964
  /**
@@ -2984,7 +3027,7 @@ var SheetModel = class {
2984
3027
  typeof value === "string" && value.charAt(0) === "=" ? this.mapFormulaBindingToFormula(value) : value
2985
3028
  ]
2986
3029
  ]);
2987
- const idx = this.addressToIndex(cell);
3030
+ const idx = addressToIndex(this._sheet, cell);
2988
3031
  if (value === void 0 || value === null) {
2989
3032
  delete this._sheet.cells[idx];
2990
3033
  } else {
@@ -3056,41 +3099,6 @@ var SheetModel = class {
3056
3099
  // Indices.
3057
3100
  //
3058
3101
  /**
3059
- * E.g., "A1" => "x1@y1".
3060
- */
3061
- addressToIndex(cell) {
3062
- return `${this._sheet.columns[cell.column]}@${this._sheet.rows[cell.row]}`;
3063
- }
3064
- /**
3065
- * E.g., "x1@y1" => "A1".
3066
- */
3067
- addressFromIndex(idx) {
3068
- const [column, row] = idx.split("@");
3069
- return {
3070
- column: this._sheet.columns.indexOf(column),
3071
- row: this._sheet.rows.indexOf(row)
3072
- };
3073
- }
3074
- /**
3075
- * E.g., "A1:B2" => "x1@y1:x2@y2".
3076
- */
3077
- rangeToIndex(range) {
3078
- return [
3079
- range.from,
3080
- range.to ?? range.from
3081
- ].map((cell) => this.addressToIndex(cell)).join(":");
3082
- }
3083
- /**
3084
- * E.g., "x1@y1:x2@y2" => "A1:B2".
3085
- */
3086
- rangeFromIndex(idx) {
3087
- const [from, to] = idx.split(":").map((idx2) => this.addressFromIndex(idx2));
3088
- return {
3089
- from,
3090
- to
3091
- };
3092
- }
3093
- /**
3094
3102
  * E.g., "HELLO()" => "EDGE("HELLO")".
3095
3103
  */
3096
3104
  mapFormulaBindingToFormula(formula) {
@@ -3134,7 +3142,7 @@ var SheetModel = class {
3134
3142
  mapFormulaRefsToIndices(formula) {
3135
3143
  (0, import_invariant.invariant)(formula.charAt(0) === "=", void 0, {
3136
3144
  F: __dxlog_file4,
3137
- L: 509,
3145
+ L: 475,
3138
3146
  S: this,
3139
3147
  A: [
3140
3148
  "formula.charAt(0) === '='",
@@ -3142,7 +3150,7 @@ var SheetModel = class {
3142
3150
  ]
3143
3151
  });
3144
3152
  return formula.replace(/([a-zA-Z]+)([0-9]+)/g, (match) => {
3145
- return this.addressToIndex(addressFromA1Notation(match));
3153
+ return addressToIndex(this._sheet, addressFromA1Notation(match));
3146
3154
  });
3147
3155
  }
3148
3156
  /**
@@ -3151,7 +3159,7 @@ var SheetModel = class {
3151
3159
  mapFormulaIndicesToRefs(formula) {
3152
3160
  (0, import_invariant.invariant)(formula.charAt(0) === "=", void 0, {
3153
3161
  F: __dxlog_file4,
3154
- L: 519,
3162
+ L: 485,
3155
3163
  S: this,
3156
3164
  A: [
3157
3165
  "formula.charAt(0) === '='",
@@ -3159,7 +3167,7 @@ var SheetModel = class {
3159
3167
  ]
3160
3168
  });
3161
3169
  return formula.replace(/([a-zA-Z0-9]+)@([a-zA-Z0-9]+)/g, (idx) => {
3162
- return addressToA1Notation(this.addressFromIndex(idx));
3170
+ return addressToA1Notation(addressFromIndex(this._sheet, idx));
3163
3171
  });
3164
3172
  }
3165
3173
  //
@@ -3248,12 +3256,17 @@ var CustomPluginTranslations = {
3248
3256
  FunctionPluginAsync,
3249
3257
  SheetModel,
3250
3258
  addressFromA1Notation,
3259
+ addressFromIndex,
3251
3260
  addressToA1Notation,
3261
+ addressToIndex,
3262
+ closest,
3252
3263
  columnLetter,
3264
+ compareIndexPositions,
3253
3265
  createComputeGraph,
3254
3266
  defaultFunctions,
3255
3267
  inRange,
3256
3268
  posEquals,
3269
+ rangeFromIndex,
3257
3270
  rangeToA1Notation
3258
3271
  });
3259
- //# sourceMappingURL=chunk-5KKJ4NPP.cjs.map
3272
+ //# sourceMappingURL=chunk-ZRQZFV5T.cjs.map