@rowsncolumns/spreadsheet-state 28.0.71 → 28.0.73

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 (99) hide show
  1. package/dist/cjs/api/immer-utils.d.ts.map +1 -1
  2. package/dist/cjs/api/immer-utils.js +1 -0
  3. package/dist/cjs/api/paste-special.d.ts +48 -0
  4. package/dist/cjs/api/paste-special.d.ts.map +1 -0
  5. package/dist/cjs/api/paste-special.js +229 -0
  6. package/dist/cjs/api/range.d.ts.map +1 -1
  7. package/dist/cjs/api/range.js +3 -1
  8. package/dist/cjs/commands.d.ts +5 -0
  9. package/dist/cjs/commands.d.ts.map +1 -1
  10. package/dist/cjs/components/editors/table-editor.js +7 -2
  11. package/dist/cjs/hooks/use-calculation-worker.d.ts.map +1 -1
  12. package/dist/cjs/hooks/use-calculation-worker.js +84 -19
  13. package/dist/cjs/hooks/use-calculation.d.ts +12 -2
  14. package/dist/cjs/hooks/use-calculation.d.ts.map +1 -1
  15. package/dist/cjs/hooks/use-calculation.js +128 -38
  16. package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
  17. package/dist/cjs/hooks/use-on-filter-table.js +48 -28
  18. package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
  19. package/dist/cjs/hooks/use-on-paste.js +82 -52
  20. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts +2 -1
  21. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  22. package/dist/cjs/hooks/use-on-remove-duplicates.js +5 -3
  23. package/dist/cjs/hooks/use-on-show-column.d.ts.map +1 -1
  24. package/dist/cjs/hooks/use-on-show-column.js +2 -0
  25. package/dist/cjs/hooks/use-on-show-row.d.ts.map +1 -1
  26. package/dist/cjs/hooks/use-on-show-row.js +2 -0
  27. package/dist/cjs/hooks/use-sheet-properties.d.ts +1 -0
  28. package/dist/cjs/hooks/use-sheet-properties.d.ts.map +1 -1
  29. package/dist/cjs/hooks/use-sheet-properties.js +4 -0
  30. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +1 -1
  31. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  32. package/dist/cjs/hooks/use-spreadsheet-state.js +2 -1
  33. package/dist/cjs/index.d.ts +1 -0
  34. package/dist/cjs/index.d.ts.map +1 -1
  35. package/dist/cjs/index.js +1 -0
  36. package/dist/cjs/interface/calculation-interface.d.ts.map +1 -1
  37. package/dist/cjs/interface/calculation-interface.js +5 -0
  38. package/dist/cjs/interface/hide-column.d.ts.map +1 -1
  39. package/dist/cjs/interface/hide-column.js +4 -0
  40. package/dist/cjs/interface/hide-row.d.ts.map +1 -1
  41. package/dist/cjs/interface/hide-row.js +4 -0
  42. package/dist/cjs/interface/remove-duplicates.d.ts +3 -2
  43. package/dist/cjs/interface/remove-duplicates.d.ts.map +1 -1
  44. package/dist/cjs/interface/remove-duplicates.js +41 -7
  45. package/dist/cjs/interface/spreadsheet-interface.d.ts +2 -1
  46. package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
  47. package/dist/cjs/interface/spreadsheet-interface.js +3 -3
  48. package/dist/cjs/sheet-cell.d.ts.map +1 -1
  49. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  50. package/dist/esm/api/immer-utils.d.ts.map +1 -1
  51. package/dist/esm/api/immer-utils.js +1 -0
  52. package/dist/esm/api/paste-special.d.ts +48 -0
  53. package/dist/esm/api/paste-special.d.ts.map +1 -0
  54. package/dist/esm/api/paste-special.js +220 -0
  55. package/dist/esm/api/range.d.ts.map +1 -1
  56. package/dist/esm/api/range.js +3 -1
  57. package/dist/esm/commands.d.ts +5 -0
  58. package/dist/esm/commands.d.ts.map +1 -1
  59. package/dist/esm/components/editors/table-editor.js +7 -4
  60. package/dist/esm/hooks/use-calculation-worker.d.ts.map +1 -1
  61. package/dist/esm/hooks/use-calculation-worker.js +59 -8
  62. package/dist/esm/hooks/use-calculation.d.ts +12 -2
  63. package/dist/esm/hooks/use-calculation.d.ts.map +1 -1
  64. package/dist/esm/hooks/use-calculation.js +94 -10
  65. package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
  66. package/dist/esm/hooks/use-on-filter-table.js +25 -8
  67. package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
  68. package/dist/esm/hooks/use-on-paste.js +49 -14
  69. package/dist/esm/hooks/use-on-remove-duplicates.d.ts +2 -1
  70. package/dist/esm/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  71. package/dist/esm/hooks/use-on-remove-duplicates.js +5 -3
  72. package/dist/esm/hooks/use-on-show-column.d.ts.map +1 -1
  73. package/dist/esm/hooks/use-on-show-column.js +2 -0
  74. package/dist/esm/hooks/use-on-show-row.d.ts.map +1 -1
  75. package/dist/esm/hooks/use-on-show-row.js +2 -0
  76. package/dist/esm/hooks/use-sheet-properties.d.ts +1 -0
  77. package/dist/esm/hooks/use-sheet-properties.d.ts.map +1 -1
  78. package/dist/esm/hooks/use-sheet-properties.js +4 -0
  79. package/dist/esm/hooks/use-spreadsheet-state.d.ts +1 -1
  80. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  81. package/dist/esm/hooks/use-spreadsheet-state.js +2 -1
  82. package/dist/esm/index.d.ts +1 -0
  83. package/dist/esm/index.d.ts.map +1 -1
  84. package/dist/esm/index.js +1 -0
  85. package/dist/esm/interface/calculation-interface.d.ts.map +1 -1
  86. package/dist/esm/interface/calculation-interface.js +3 -0
  87. package/dist/esm/interface/hide-column.d.ts.map +1 -1
  88. package/dist/esm/interface/hide-column.js +4 -0
  89. package/dist/esm/interface/hide-row.d.ts.map +1 -1
  90. package/dist/esm/interface/hide-row.js +4 -0
  91. package/dist/esm/interface/remove-duplicates.d.ts +3 -2
  92. package/dist/esm/interface/remove-duplicates.d.ts.map +1 -1
  93. package/dist/esm/interface/remove-duplicates.js +37 -6
  94. package/dist/esm/interface/spreadsheet-interface.d.ts +2 -1
  95. package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
  96. package/dist/esm/interface/spreadsheet-interface.js +3 -3
  97. package/dist/esm/sheet-cell.d.ts.map +1 -1
  98. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  99. package/package.json +17 -17
@@ -366,7 +366,7 @@ var isHeavyArrayFormula = function (formula) {
366
366
  };
367
367
  var cellPromises = new Map();
368
368
  export var useCalculation = function (_a) {
369
- var locale = _a.locale, functions = _a.functions, iterativeCalculation = _a.iterativeCalculation, onDemandFormulaPattern = _a.onDemandFormulaPattern, activeSheetId = _a.activeSheetId, onSuccess = _a.onSuccess, onChangeDependencyGraph = _a.onChangeDependencyGraph, getSheetId = _a.getSheetId, getSheetName = _a.getSheetName, getSheetIndex = _a.getSheetIndex, getSheetCount = _a.getSheetCount, getActiveSheetId = _a.getActiveSheetId, getEffectiveValue = _a.getEffectiveValue, getUserEnteredValue = _a.getUserEnteredValue, getConditionalFormatFormula = _a.getConditionalFormatFormula, getDataValidationFormula = _a.getDataValidationFormula, getSheetProperties = _a.getSheetProperties, getCellData = _a.getCellData, onStructuredReference = _a.onStructuredReference, onNamedRange = _a.onNamedRange, namedRanges = _a.namedRanges, onChangeStaticReference = _a.onChangeStaticReference, onBeginCalculation = _a.onBeginCalculation, getEffectiveStructuredValue = _a.getEffectiveStructuredValue, isRowHidden = _a.isRowHidden, isRowHiddenByFilter = _a.isRowHiddenByFilter, _b = _a.enableLazyCalculation, enableLazyCalculation = _b === void 0 ? true : _b, _c = _a.enabled, enabled = _c === void 0 ? true : _c;
369
+ var locale = _a.locale, functions = _a.functions, iterativeCalculation = _a.iterativeCalculation, onDemandFormulaPattern = _a.onDemandFormulaPattern, activeSheetId = _a.activeSheetId, onSuccess = _a.onSuccess, onChangeDependencyGraph = _a.onChangeDependencyGraph, getSheetId = _a.getSheetId, getSheetName = _a.getSheetName, getSheetIndex = _a.getSheetIndex, getSheetNames = _a.getSheetNames, getSheetCount = _a.getSheetCount, getActiveSheetId = _a.getActiveSheetId, getEffectiveValue = _a.getEffectiveValue, getUserEnteredValue = _a.getUserEnteredValue, getConditionalFormatFormula = _a.getConditionalFormatFormula, getDataValidationFormula = _a.getDataValidationFormula, getSheetProperties = _a.getSheetProperties, getCellData = _a.getCellData, onStructuredReference = _a.onStructuredReference, onNamedRange = _a.onNamedRange, namedRanges = _a.namedRanges, onChangeStaticReference = _a.onChangeStaticReference, onBeginCalculation = _a.onBeginCalculation, getEffectiveStructuredValue = _a.getEffectiveStructuredValue, isRowHidden = _a.isRowHidden, isRowHiddenByFilter = _a.isRowHiddenByFilter, _b = _a.enableLazyCalculation, enableLazyCalculation = _b === void 0 ? true : _b, _c = _a.enabled, enabled = _c === void 0 ? true : _c;
370
370
  // Convert string pattern to RegExp if provided
371
371
  var onDemandPattern = useMemo(function () {
372
372
  if (!onDemandFormulaPattern)
@@ -381,6 +381,9 @@ export var useCalculation = function (_a) {
381
381
  var graphOperationQueue = useRef([]);
382
382
  // Results queue
383
383
  var resultsQueueRef = useRef(new Map());
384
+ // Circular-reference members awaiting the next `onSuccess` flush (see
385
+ // `CalculationSuccessContext.circularReferences`).
386
+ var circularReferencesQueueRef = useRef(new Map());
384
387
  var resultsFlushPendingRef = useRef(false);
385
388
  var isFullRecalcRef = useRef(false);
386
389
  var staticNodeArrayRef = useRef([]);
@@ -388,6 +391,7 @@ export var useCalculation = function (_a) {
388
391
  var getSheetNameStable = useCallbackRef(getSheetName);
389
392
  var getSheetIdStable = useCallbackRef(getSheetId);
390
393
  var getSheetIndexStable = useCallbackRef(getSheetIndex);
394
+ var getSheetNamesStable = useCallbackRef(getSheetNames);
391
395
  var getSheetCountStable = useCallbackRef(getSheetCount);
392
396
  var getCellDataStable = useCallbackRef(getCellData);
393
397
  var onStructuredReferenceStable = useCallbackRef(onStructuredReference);
@@ -507,6 +511,7 @@ export var useCalculation = function (_a) {
507
511
  };
508
512
  var filterDirtyCellsForActiveSheet = function (cells, rootSheetId) {
509
513
  var e_9, _a, e_10, _b, e_11, _c, e_12, _d, e_13, _e, e_14, _f, e_15, _g;
514
+ var _h;
510
515
  if (!cells.length) {
511
516
  return { included: cells, deferred: [] };
512
517
  }
@@ -592,6 +597,58 @@ export var useCalculation = function (_a) {
592
597
  }
593
598
  finally { if (e_12) throw e_12.error; }
594
599
  }
600
+ // A precedent that was deferred on an inactive sheet in an earlier
601
+ // pass is no longer dirty, so the dependency walk below cannot see
602
+ // it — an included cell would then evaluate against its stale value
603
+ // (Source → Intermediate → Result chains where Intermediate is never
604
+ // opened). Reclaim such precedents into this pass so they are
605
+ // ordered ahead of their dependents.
606
+ var reclaimed = [];
607
+ var reclaimDeferredNode = function (position) {
608
+ var sheetOperations = deferredOperationsBySheetRef.current.get(position.sheetId);
609
+ var key = makeKey(position);
610
+ var operation = sheetOperations === null || sheetOperations === void 0 ? void 0 : sheetOperations.get(key);
611
+ if (!sheetOperations || !operation) {
612
+ return undefined;
613
+ }
614
+ var graph = getCalculator().graph;
615
+ if (!graph.hasNode(position)) {
616
+ return undefined;
617
+ }
618
+ var node = graph.getNode(position);
619
+ if (!isCellNode(node)) {
620
+ return undefined;
621
+ }
622
+ sheetOperations.delete(key);
623
+ if (operation.force) {
624
+ forceRecalcKeys.current.add(key);
625
+ forceRecalcPositions.current.set(key, position);
626
+ }
627
+ cellNodeByKey.set(key, node);
628
+ var list = dirtyNodesBySheet.get(position.sheetId);
629
+ if (list) {
630
+ list.push(node);
631
+ }
632
+ else {
633
+ dirtyNodesBySheet.set(position.sheetId, [node]);
634
+ }
635
+ reclaimed.push(node);
636
+ return node;
637
+ };
638
+ var reclaimDeferredNodesInRange = function (range) {
639
+ var sheetOperations = deferredOperationsBySheetRef.current.get(range.sheetId);
640
+ if (!(sheetOperations === null || sheetOperations === void 0 ? void 0 : sheetOperations.size)) {
641
+ return;
642
+ }
643
+ var positions = [];
644
+ sheetOperations.forEach(function (operation) {
645
+ if (!cellNodeByKey.has(makeKey(operation.position)) &&
646
+ isCellCoordinateWithinCellRange(operation.position, range)) {
647
+ positions.push(operation.position);
648
+ }
649
+ });
650
+ positions.forEach(reclaimDeferredNode);
651
+ };
595
652
  while (stack.length) {
596
653
  var current = stack.pop();
597
654
  if (!current) {
@@ -614,13 +671,14 @@ export var useCalculation = function (_a) {
614
671
  continue;
615
672
  if (isCellCoordinate(dependency)) {
616
673
  var depKey = makeKey(dependency);
617
- var depNode = cellNodeByKey.get(depKey);
674
+ var depNode = (_h = cellNodeByKey.get(depKey)) !== null && _h !== void 0 ? _h : reclaimDeferredNode(dependency);
618
675
  if (depNode && !includedKeys.has(depKey)) {
619
676
  includedKeys.add(depKey);
620
677
  stack.push(depNode);
621
678
  }
622
679
  continue;
623
680
  }
681
+ reclaimDeferredNodesInRange(dependency);
624
682
  var candidates = dirtyNodesBySheet.get(dependency.sheetId);
625
683
  if (!candidates) {
626
684
  continue;
@@ -676,6 +734,7 @@ export var useCalculation = function (_a) {
676
734
  }
677
735
  finally { if (e_15) throw e_15.error; }
678
736
  }
737
+ included.push.apply(included, __spreadArray([], __read(reclaimed), false));
679
738
  return { included: included, deferred: deferred };
680
739
  };
681
740
  var scheduleStartCalculation = useCallback(function (results, recalculatedPosition) {
@@ -715,6 +774,7 @@ export var useCalculation = function (_a) {
715
774
  locale: locale,
716
775
  getSheetId: getSheetIdStable,
717
776
  getSheetIndex: getSheetIndexStable,
777
+ getSheetNames: getSheetNames ? getSheetNamesStable : undefined,
718
778
  getSheetCount: getSheetCountStable,
719
779
  getSheetProperties: function (sheetId) {
720
780
  if (sheetId === void 0) { sheetId = getActiveSheetId(); }
@@ -725,6 +785,17 @@ export var useCalculation = function (_a) {
725
785
  isRowHiddenByFilter: isRowHiddenByFilter
726
786
  ? isRowHiddenByFilterStable
727
787
  : undefined,
788
+ getCellFormula: function (sheetId, rowIndex, columnIndex) {
789
+ var userEnteredValue = getFinalUserEnteredValue({
790
+ sheetId: sheetId,
791
+ rowIndex: rowIndex,
792
+ columnIndex: columnIndex,
793
+ });
794
+ return typeof userEnteredValue === "string" &&
795
+ isAFormula(userEnteredValue)
796
+ ? userEnteredValue
797
+ : undefined;
798
+ },
728
799
  getCellValue: function (sheetId, rowIndex, columnIndex, property) {
729
800
  var _a;
730
801
  var key = makeKey({
@@ -1024,7 +1095,7 @@ export var useCalculation = function (_a) {
1024
1095
  publishResults(initialResults.values());
1025
1096
  }
1026
1097
  runCellBatch_1 = function (input) { return __awaiter(void 0, void 0, void 0, function () {
1027
- var cellNodes, rootSheetId, _a, included, deferred, circularKeys_1, results, cellNodes_1, cellNodes_1_1, node, error_1;
1098
+ var cellNodes, rootSheetId, _a, included, deferred, circularKeys_1, results, circularPositions, cellNodes_1, cellNodes_1_1, node;
1028
1099
  var e_20, _b;
1029
1100
  var _c;
1030
1101
  return __generator(this, function (_d) {
@@ -1047,15 +1118,16 @@ export var useCalculation = function (_a) {
1047
1118
  circularKeys_1 = findCircularKeys(cellNodes);
1048
1119
  if (circularKeys_1.size) {
1049
1120
  results = new Map();
1121
+ circularPositions = [];
1050
1122
  try {
1051
1123
  for (cellNodes_1 = __values(cellNodes), cellNodes_1_1 = cellNodes_1.next(); !cellNodes_1_1.done; cellNodes_1_1 = cellNodes_1.next()) {
1052
1124
  node = cellNodes_1_1.value;
1053
1125
  if (!circularKeys_1.has(node.key)) {
1054
1126
  continue;
1055
1127
  }
1056
- error_1 = new FormulaError("#REF!", "Circular dependency detected.");
1057
- getComputationCache().set(node.key, error_1);
1058
- results.set(node.key, [node.position, error_1]);
1128
+ getComputationCache().set(node.key, 0);
1129
+ results.set(node.key, [node.position, 0]);
1130
+ circularPositions.push(node.position);
1059
1131
  }
1060
1132
  }
1061
1133
  catch (e_20_1) { e_20 = { error: e_20_1 }; }
@@ -1065,7 +1137,7 @@ export var useCalculation = function (_a) {
1065
1137
  }
1066
1138
  finally { if (e_20) throw e_20.error; }
1067
1139
  }
1068
- publishResults(results.values());
1140
+ publishResults(results.values(), circularPositions);
1069
1141
  cellNodes = cellNodes.filter(function (node) { return !circularKeys_1.has(node.key); });
1070
1142
  }
1071
1143
  }
@@ -1202,7 +1274,7 @@ export var useCalculation = function (_a) {
1202
1274
  // Process async
1203
1275
  function processCells(cells, recalculatedPosition) {
1204
1276
  return __awaiter(this, void 0, void 0, function () {
1205
- var cellMap, cells_5, cells_5_1, cell, adjacency, getDependencies, hasSelfReference, indices, lowlinks, stack, onStack, iterativeGroups, index, strongConnect, cells_6, cells_6_1, cell, key, cells_7, cells_7_1, cell, key, iterativeKeys, iterativeGroups_1, iterativeGroups_1_1, group, group_1, group_1_1, cell, nonIterativeCells, maxIterations, maxChange, iterativeGroups_2, iterativeGroups_2_1, group, group_2, group_2_1, cell, effectiveValue, previousValues, converged, iteration, currentValues, group_3, group_3_1, cell, userEnteredValue, result, key, err_2, error_2, e_22_1, maxDelta, currentValues_1, currentValues_1_1, _a, key, value, delta, finalValues, results, group_4, group_4_1, cell, key, value, _b, arrayErrors, recomputeOperations, arrayErrors_1, arrayErrors_1_1, _c, errorKey, errorValue, _d, collides, recomputeOperations, e_23_1, followUpCells, iterativeGroups_3, iterativeGroups_3_1, group, group_5, group_5_1, cell, dependents, dependents_1, dependents_1_1, dependent, cellDep, depKey;
1277
+ var cellMap, cells_5, cells_5_1, cell, adjacency, getDependencies, hasSelfReference, indices, lowlinks, stack, onStack, iterativeGroups, index, strongConnect, cells_6, cells_6_1, cell, key, cells_7, cells_7_1, cell, key, iterativeKeys, iterativeGroups_1, iterativeGroups_1_1, group, group_1, group_1_1, cell, nonIterativeCells, maxIterations, maxChange, iterativeGroups_2, iterativeGroups_2_1, group, group_2, group_2_1, cell, effectiveValue, previousValues, converged, iteration, currentValues, group_3, group_3_1, cell, userEnteredValue, result, key, err_2, error_1, e_22_1, maxDelta, currentValues_1, currentValues_1_1, _a, key, value, delta, finalValues, results, group_4, group_4_1, cell, key, value, _b, arrayErrors, recomputeOperations, arrayErrors_1, arrayErrors_1_1, _c, errorKey, errorValue, _d, collides, recomputeOperations, e_23_1, followUpCells, iterativeGroups_3, iterativeGroups_3_1, group, group_5, group_5_1, cell, dependents, dependents_1, dependents_1_1, dependent, cellDep, depKey;
1206
1278
  var e_24, _e, e_25, _f, e_26, _g, e_27, _h, e_28, _j, e_23, _k, e_29, _l, e_22, _m, e_30, _o, e_31, _p, e_32, _q, e_33, _r, e_34, _s, e_35, _t;
1207
1279
  var _u, _v, _w, _x, _y, _z, _0;
1208
1280
  return __generator(this, function (_1) {
@@ -1491,11 +1563,11 @@ export var useCalculation = function (_a) {
1491
1563
  return [3 /*break*/, 13];
1492
1564
  case 12:
1493
1565
  err_2 = _1.sent();
1494
- error_2 = err_2 instanceof FormulaError
1566
+ error_1 = err_2 instanceof FormulaError
1495
1567
  ? err_2
1496
1568
  : new FormulaError((_z = err_2 === null || err_2 === void 0 ? void 0 : err_2.name) !== null && _z !== void 0 ? _z : "#ERROR!", (_0 = err_2 === null || err_2 === void 0 ? void 0 : err_2.message) !== null && _0 !== void 0 ? _0 : String(err_2), err_2 === null || err_2 === void 0 ? void 0 : err_2.stack);
1497
- currentValues.set(makeKey(cell.position), error_2);
1498
- getComputationCache().set(makeKey(cell.position), error_2);
1569
+ currentValues.set(makeKey(cell.position), error_1);
1570
+ getComputationCache().set(makeKey(cell.position), error_1);
1499
1571
  return [3 /*break*/, 13];
1500
1572
  case 13:
1501
1573
  group_3_1 = group_3.next();
@@ -1852,7 +1924,7 @@ export var useCalculation = function (_a) {
1852
1924
  }
1853
1925
  // Process a single dirty cell
1854
1926
  var processCell = function (dirtyCell, recalculatedPosition) { return __awaiter(void 0, void 0, void 0, function () {
1855
- var results, position, key, userEnteredValue, isFormula, onDemandMap, rafTimer, isCellNode_1, result, _a, collides, recomputeOperations, err_3, error_3, _b, arrayErrors, recomputeOperations, arrayErrors_2, arrayErrors_2_1, _c, key_1, value;
1927
+ var results, position, key, userEnteredValue, isFormula, onDemandMap, rafTimer, isCellNode_1, result, _a, collides, recomputeOperations, err_3, error_2, _b, arrayErrors, recomputeOperations, arrayErrors_2, arrayErrors_2_1, _c, key_1, value;
1856
1928
  var e_42, _d;
1857
1929
  return __generator(this, function (_e) {
1858
1930
  switch (_e.label) {
@@ -1947,23 +2019,23 @@ export var useCalculation = function (_a) {
1947
2019
  }
1948
2020
  // Calculation error
1949
2021
  if (err_3 instanceof FormulaError || err_3 instanceof Error) {
1950
- error_3 = err_3 instanceof FormulaError
2022
+ error_2 = err_3 instanceof FormulaError
1951
2023
  ? err_3
1952
2024
  : new FormulaError(err_3.name, err_3.message, err_3.stack);
1953
2025
  // We have to check if this error is caused in a cell
1954
2026
  // containing array formula
1955
2027
  // If so we have to reset all values references by this
1956
2028
  // array
1957
- debug("Computation Error", error_3, position, key, userEnteredValue);
2029
+ debug("Computation Error", error_2, position, key, userEnteredValue);
1958
2030
  _b = __read(getErrorResultsFromArrayPosition(position), 2), arrayErrors = _b[0], recomputeOperations = _b[1];
1959
2031
  // Add it to computation cache
1960
- getComputationCache().set(key, error_3);
2032
+ getComputationCache().set(key, error_2);
1961
2033
  // Invalidate any cached ranges containing this cell
1962
2034
  getCalculator().invalidateCacheForCell(position.sheetId, position.rowIndex, position.columnIndex);
1963
2035
  // New compuete
1964
2036
  enqueueCalculations(recomputeOperations);
1965
2037
  // Add to results
1966
- results.set(key, [position, error_3]);
2038
+ results.set(key, [position, error_2]);
1967
2039
  try {
1968
2040
  for (arrayErrors_2 = __values(arrayErrors), arrayErrors_2_1 = arrayErrors_2.next(); !arrayErrors_2_1.done; arrayErrors_2_1 = arrayErrors_2.next()) {
1969
2041
  _c = __read(arrayErrors_2_1.value, 2), key_1 = _c[0], value = _c[1];
@@ -2033,12 +2105,12 @@ export var useCalculation = function (_a) {
2033
2105
  /**
2034
2106
  * Publish results back to the
2035
2107
  */
2036
- var publishResults = useCallback(function (item) {
2037
- var e_43, _a;
2108
+ var publishResults = useCallback(function (item, circularReferences) {
2109
+ var e_43, _a, e_44, _b;
2038
2110
  try {
2039
2111
  for (var item_1 = __values(item), item_1_1 = item_1.next(); !item_1_1.done; item_1_1 = item_1.next()) {
2040
2112
  var entry = item_1_1.value;
2041
- var _b = __read(entry, 1), key = _b[0];
2113
+ var _c = __read(entry, 1), key = _c[0];
2042
2114
  resultsQueueRef.current.set(makeKey(key), entry);
2043
2115
  }
2044
2116
  }
@@ -2049,6 +2121,19 @@ export var useCalculation = function (_a) {
2049
2121
  }
2050
2122
  finally { if (e_43) throw e_43.error; }
2051
2123
  }
2124
+ try {
2125
+ for (var _d = __values(circularReferences !== null && circularReferences !== void 0 ? circularReferences : []), _e = _d.next(); !_e.done; _e = _d.next()) {
2126
+ var position = _e.value;
2127
+ circularReferencesQueueRef.current.set(makeKey(position), position);
2128
+ }
2129
+ }
2130
+ catch (e_44_1) { e_44 = { error: e_44_1 }; }
2131
+ finally {
2132
+ try {
2133
+ if (_e && !_e.done && (_b = _d.return)) _b.call(_d);
2134
+ }
2135
+ finally { if (e_44) throw e_44.error; }
2136
+ }
2052
2137
  if (resultsQueueRef.current.size === 0) {
2053
2138
  return;
2054
2139
  }
@@ -2066,14 +2151,20 @@ export var useCalculation = function (_a) {
2066
2151
  if (!resultsQueueRef.current.size) {
2067
2152
  return;
2068
2153
  }
2154
+ var context = circularReferencesQueueRef.current.size > 0
2155
+ ? {
2156
+ circularReferences: Array.from(circularReferencesQueueRef.current.values()),
2157
+ }
2158
+ : {};
2069
2159
  try {
2070
- onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(resultsQueueRef.current.values(), isFullRecalc, {});
2160
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(resultsQueueRef.current.values(), isFullRecalc, context);
2071
2161
  }
2072
2162
  catch (err) {
2073
2163
  console.error("[spreadsheet-state] recalculation pass aborted:", err);
2074
2164
  }
2075
2165
  finally {
2076
2166
  resultsQueueRef.current.clear();
2167
+ circularReferencesQueueRef.current.clear();
2077
2168
  isFullRecalcRef.current = false;
2078
2169
  }
2079
2170
  });
@@ -2291,7 +2382,7 @@ export var useCalculation = function (_a) {
2291
2382
  // Get precedents from formula string
2292
2383
  // Does not check with DAG
2293
2384
  var getPrecedentsFromFormulaString = useCallback(function (value, source) {
2294
- var e_44, _a;
2385
+ var e_45, _a;
2295
2386
  var dependencies = getCalculator().dependencies(value, source);
2296
2387
  var nodes = [];
2297
2388
  try {
@@ -2310,12 +2401,12 @@ export var useCalculation = function (_a) {
2310
2401
  }
2311
2402
  }
2312
2403
  }
2313
- catch (e_44_1) { e_44 = { error: e_44_1 }; }
2404
+ catch (e_45_1) { e_45 = { error: e_45_1 }; }
2314
2405
  finally {
2315
2406
  try {
2316
2407
  if (dependencies_2_1 && !dependencies_2_1.done && (_a = dependencies_2.return)) _a.call(dependencies_2);
2317
2408
  }
2318
- finally { if (e_44) throw e_44.error; }
2409
+ finally { if (e_45) throw e_45.error; }
2319
2410
  }
2320
2411
  return nodes;
2321
2412
  }, []);
@@ -2347,8 +2438,7 @@ export var useCalculation = function (_a) {
2347
2438
  if (!includeSource &&
2348
2439
  isCellCoordinate(source) &&
2349
2440
  isCellNode(node)) {
2350
- return (node.position.rowIndex !== source.rowIndex ||
2351
- node.position.columnIndex !== source.columnIndex);
2441
+ return !isEqualPosition(node.position, source);
2352
2442
  }
2353
2443
  return true;
2354
2444
  });
@@ -2365,7 +2455,7 @@ export var useCalculation = function (_a) {
2365
2455
  * via the enqueue logic.
2366
2456
  */
2367
2457
  var processOperationQueue = useCallback(function () {
2368
- var e_45, _a, e_46, _b, e_47, _c, e_48, _d;
2458
+ var e_46, _a, e_47, _b, e_48, _c, e_49, _d;
2369
2459
  // Swap queue with empty array - O(1) operation
2370
2460
  var operations = operationQueue.current;
2371
2461
  if (operations.length === 0)
@@ -2393,7 +2483,7 @@ export var useCalculation = function (_a) {
2393
2483
  if (operation.type !== "dirty" && isArrayFormula(operation.position)) {
2394
2484
  var parentCandidates = new Map();
2395
2485
  try {
2396
- for (var _e = (e_45 = void 0, __values(createArraySideEffectsAndGetResults({
2486
+ for (var _e = (e_46 = void 0, __values(createArraySideEffectsAndGetResults({
2397
2487
  position: operation.position,
2398
2488
  getDependents: getDependents,
2399
2489
  }))), _f = _e.next(); !_f.done; _f = _e.next()) {
@@ -2408,29 +2498,29 @@ export var useCalculation = function (_a) {
2408
2498
  }
2409
2499
  }
2410
2500
  }
2411
- catch (e_45_1) { e_45 = { error: e_45_1 }; }
2501
+ catch (e_46_1) { e_46 = { error: e_46_1 }; }
2412
2502
  finally {
2413
2503
  try {
2414
2504
  if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
2415
2505
  }
2416
- finally { if (e_45) throw e_45.error; }
2506
+ finally { if (e_46) throw e_46.error; }
2417
2507
  }
2418
2508
  try {
2419
- for (var _j = (e_46 = void 0, __values(parentCandidates.values())), _k = _j.next(); !_k.done; _k = _j.next()) {
2509
+ for (var _j = (e_47 = void 0, __values(parentCandidates.values())), _k = _j.next(); !_k.done; _k = _j.next()) {
2420
2510
  var parent_2 = _k.value;
2421
2511
  getCalculator().markAsDirty(parent_2);
2422
2512
  }
2423
2513
  }
2424
- catch (e_46_1) { e_46 = { error: e_46_1 }; }
2514
+ catch (e_47_1) { e_47 = { error: e_47_1 }; }
2425
2515
  finally {
2426
2516
  try {
2427
2517
  if (_k && !_k.done && (_b = _j.return)) _b.call(_j);
2428
2518
  }
2429
- finally { if (e_46) throw e_46.error; }
2519
+ finally { if (e_47) throw e_47.error; }
2430
2520
  }
2431
2521
  if (clearedArrayRange) {
2432
2522
  try {
2433
- for (var _l = (e_47 = void 0, __values(getCalculator().arrayRangeMap)), _m = _l.next(); !_m.done; _m = _l.next()) {
2523
+ for (var _l = (e_48 = void 0, __values(getCalculator().arrayRangeMap)), _m = _l.next(); !_m.done; _m = _l.next()) {
2434
2524
  var _o = __read(_m.value, 2), key = _o[0], range = _o[1];
2435
2525
  if (!rangesOverlap(range, clearedArrayRange)) {
2436
2526
  continue;
@@ -2441,19 +2531,19 @@ export var useCalculation = function (_a) {
2441
2531
  }
2442
2532
  }
2443
2533
  }
2444
- catch (e_47_1) { e_47 = { error: e_47_1 }; }
2534
+ catch (e_48_1) { e_48 = { error: e_48_1 }; }
2445
2535
  finally {
2446
2536
  try {
2447
2537
  if (_m && !_m.done && (_c = _l.return)) _c.call(_l);
2448
2538
  }
2449
- finally { if (e_47) throw e_47.error; }
2539
+ finally { if (e_48) throw e_48.error; }
2450
2540
  }
2451
2541
  }
2452
2542
  }
2453
2543
  var arrayParent = getCalculator().getClosestArrayParentCell(operation.position);
2454
2544
  if (arrayParent && !isEqualPosition(arrayParent, operation.position)) {
2455
2545
  try {
2456
- for (var _p = (e_48 = void 0, __values(createArraySideEffectsAndGetResults({
2546
+ for (var _p = (e_49 = void 0, __values(createArraySideEffectsAndGetResults({
2457
2547
  position: arrayParent,
2458
2548
  shouldRemoveArrayReference: false,
2459
2549
  getDependents: getDependents,
@@ -2462,12 +2552,12 @@ export var useCalculation = function (_a) {
2462
2552
  initialArrayResults.current.set(key, value);
2463
2553
  }
2464
2554
  }
2465
- catch (e_48_1) { e_48 = { error: e_48_1 }; }
2555
+ catch (e_49_1) { e_49 = { error: e_49_1 }; }
2466
2556
  finally {
2467
2557
  try {
2468
2558
  if (_q && !_q.done && (_d = _p.return)) _d.call(_p);
2469
2559
  }
2470
- finally { if (e_48) throw e_48.error; }
2560
+ finally { if (e_49) throw e_49.error; }
2471
2561
  }
2472
2562
  }
2473
2563
  // Backend driven
@@ -1 +1 @@
1
- {"version":3,"file":"use-on-filter-table.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-filter-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-on-filter-table.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-filter-table.ts"],"names":[],"mappings":"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"}
@@ -300,6 +300,19 @@ var matchesCellIcon = function (iconFilter, ctx, sheetId, rowIndex, columnIndex,
300
300
  var glyphIndex = Math.min(bucket, Math.max(0, ctx.glyphCount - 1));
301
301
  return glyphIndex === iconFilter.iconId;
302
302
  };
303
+ /**
304
+ * Filter conditions that search the cell's displayed text rather than its
305
+ * value: "9/29/2026" contains "29", the serial 46294 behind it is irrelevant.
306
+ */
307
+ var DISPLAY_TEXT_CONDITION_TYPES = new Set([
308
+ "TEXT_CONTAINS",
309
+ "TEXT_NOT_CONTAINS",
310
+ "TEXT_STARTS_WITH",
311
+ "TEXT_ENDS_WITH",
312
+ ]);
313
+ var isDisplayTextCondition = function (type) {
314
+ return type != null && DISPLAY_TEXT_CONDITION_TYPES.has(type);
315
+ };
303
316
  /**
304
317
  * Get hidden rows from a filter
305
318
  * @param filterSpecs
@@ -315,8 +328,8 @@ conditionalFormats,
315
328
  // `FilterTableExtras`). Lets `colorFilter` match CF-painted fills/font
316
329
  // colors, which the effective format doesn't carry.
317
330
  getCellConditionalFormat) { return __awaiter(void 0, void 0, void 0, function () {
318
- var activeSheetName, hiddenRows, filterSpecByColumnIndex, range, iconEvalByColumn, headerRow, totalRow, startRowIndex, endRowIndex, rowIndex, columnIndex, dimensionIndex, columnFilter, filterApplied, formulaRule, isFormulaRule, baseCellRef, baseFormula, formulaValue, currentVisibleValues, visibleValuesSet, showBlanks, effectiveValue, formattedValue, validationResult, _a, _b, isBlanksVisible, isRowVisible, colorFilter, iconFilter, effectiveFormat, cellConditionalFormat, matchesColorFilter, iconCtx, matchesIconFilter, isHidden;
319
- var _c, _d, _e, _f, _g, _h;
331
+ var activeSheetName, hiddenRows, filterSpecByColumnIndex, range, iconEvalByColumn, headerRow, totalRow, startRowIndex, endRowIndex, rowIndex, columnIndex, dimensionIndex, columnFilter, filterApplied, condition, matchesDisplayText, formulaRule, isFormulaRule, baseCellRef, baseFormula, formulaValue, currentVisibleValues, visibleValuesSet, showBlanks, effectiveValue, formattedValue, validationResult, _a, _b, _c, isBlanksVisible, isRowVisible, colorFilter, iconFilter, effectiveFormat, cellConditionalFormat, matchesColorFilter, iconCtx, matchesIconFilter, isHidden;
332
+ var _d, _e, _f, _g, _h;
320
333
  return __generator(this, function (_j) {
321
334
  switch (_j.label) {
322
335
  case 0:
@@ -325,34 +338,34 @@ getCellConditionalFormat) { return __awaiter(void 0, void 0, void 0, function ()
325
338
  filterSpecByColumnIndex = createFilterSpecsByColumnIndex(filterSpecs);
326
339
  range = filterView.range;
327
340
  iconEvalByColumn = buildIconEvalByColumn(sheetId, range, filterSpecs, conditionalFormats, getEffectiveValue);
328
- headerRow = (_c = filterView.headerRow) !== null && _c !== void 0 ? _c : true;
341
+ headerRow = (_d = filterView.headerRow) !== null && _d !== void 0 ? _d : true;
329
342
  totalRow = filterView.totalRow;
330
343
  startRowIndex = range.startRowIndex + (headerRow ? 1 : 0);
331
344
  endRowIndex = range.endRowIndex - (totalRow ? 1 : 0);
332
345
  rowIndex = startRowIndex;
333
346
  _j.label = 1;
334
347
  case 1:
335
- if (!(rowIndex <= endRowIndex)) return [3 /*break*/, 10];
348
+ if (!(rowIndex <= endRowIndex)) return [3 /*break*/, 12];
336
349
  columnIndex = range.startColumnIndex;
337
350
  _j.label = 2;
338
351
  case 2:
339
- if (!(columnIndex <= range.endColumnIndex)) return [3 /*break*/, 9];
352
+ if (!(columnIndex <= range.endColumnIndex)) return [3 /*break*/, 11];
340
353
  dimensionIndex = columnIndex - range.startColumnIndex;
341
354
  columnFilter = filterSpecByColumnIndex[dimensionIndex];
342
- filterApplied = Boolean(((_d = columnFilter === null || columnFilter === void 0 ? void 0 : columnFilter.filterCriteria.condition) === null || _d === void 0 ? void 0 : _d.type) ||
343
- ((_e = columnFilter === null || columnFilter === void 0 ? void 0 : columnFilter.filterCriteria.visibleValues) === null || _e === void 0 ? void 0 : _e.length) ||
355
+ filterApplied = Boolean(((_e = columnFilter === null || columnFilter === void 0 ? void 0 : columnFilter.filterCriteria.condition) === null || _e === void 0 ? void 0 : _e.type) ||
356
+ ((_f = columnFilter === null || columnFilter === void 0 ? void 0 : columnFilter.filterCriteria.visibleValues) === null || _f === void 0 ? void 0 : _f.length) ||
344
357
  (columnFilter === null || columnFilter === void 0 ? void 0 : columnFilter.filterCriteria.colorFilter) ||
345
358
  (columnFilter === null || columnFilter === void 0 ? void 0 : columnFilter.filterCriteria.iconFilter));
346
359
  if (!columnFilter || !filterApplied) {
347
- return [3 /*break*/, 8];
360
+ return [3 /*break*/, 10];
348
361
  }
349
- formulaRule = (columnFilter === null || columnFilter === void 0 ? void 0 : columnFilter.filterCriteria.condition)
350
- ? {
351
- condition: columnFilter.filterCriteria.condition,
352
- }
362
+ condition = columnFilter.filterCriteria.condition;
363
+ matchesDisplayText = isDisplayTextCondition(condition === null || condition === void 0 ? void 0 : condition.type);
364
+ formulaRule = condition && !matchesDisplayText
365
+ ? { condition: condition }
353
366
  : undefined;
354
367
  isFormulaRule = isDataValidationFormulaRule(formulaRule);
355
- baseCellRef = (_f = cellToAddress({ rowIndex: startRowIndex, columnIndex: columnIndex })) !== null && _f !== void 0 ? _f : "A1";
368
+ baseCellRef = (_g = cellToAddress({ rowIndex: startRowIndex, columnIndex: columnIndex })) !== null && _g !== void 0 ? _g : "A1";
356
369
  baseFormula = isFormulaRule
357
370
  ? buildDataValidationExpression(formulaRule, baseCellRef, locale)
358
371
  : undefined;
@@ -363,25 +376,32 @@ getCellConditionalFormat) { return __awaiter(void 0, void 0, void 0, function ()
363
376
  visibleValuesSet = currentVisibleValues
364
377
  ? new Set(currentVisibleValues)
365
378
  : undefined;
366
- showBlanks = (_g = visibleValuesSet === null || visibleValuesSet === void 0 ? void 0 : visibleValuesSet.has(BLANK_LABEL)) !== null && _g !== void 0 ? _g : false;
379
+ showBlanks = (_h = visibleValuesSet === null || visibleValuesSet === void 0 ? void 0 : visibleValuesSet.has(BLANK_LABEL)) !== null && _h !== void 0 ? _h : false;
367
380
  effectiveValue = getEffectiveValue(sheetId, rowIndex, columnIndex);
368
381
  formattedValue = getFormattedValue(sheetId, rowIndex, columnIndex);
369
- if (!((_h = columnFilter.filterCriteria.condition) === null || _h === void 0 ? void 0 : _h.type)) return [3 /*break*/, 6];
370
- if (!formulaValue) return [3 /*break*/, 4];
371
- return [4 /*yield*/, onRequestCalculate(formulaValue, sheetId, rowIndex, columnIndex)];
382
+ if (!(condition === null || condition === void 0 ? void 0 : condition.type)) return [3 /*break*/, 8];
383
+ if (!matchesDisplayText) return [3 /*break*/, 3];
384
+ _b = checkFilterRule(columnFilter.filterCriteria, formattedValue !== null && formattedValue !== void 0 ? formattedValue : "");
385
+ return [3 /*break*/, 7];
372
386
  case 3:
373
- _b = _j.sent();
374
- return [3 /*break*/, 5];
387
+ if (!formulaValue) return [3 /*break*/, 5];
388
+ return [4 /*yield*/, onRequestCalculate(formulaValue, sheetId, rowIndex, columnIndex)];
375
389
  case 4:
376
- _b = checkFilterRule(columnFilter.filterCriteria, effectiveValue);
377
- _j.label = 5;
390
+ _c = _j.sent();
391
+ return [3 /*break*/, 6];
378
392
  case 5:
379
- _a = _b;
380
- return [3 /*break*/, 7];
393
+ _c = checkFilterRule(columnFilter.filterCriteria, effectiveValue);
394
+ _j.label = 6;
381
395
  case 6:
382
- _a = true;
396
+ _b = _c;
383
397
  _j.label = 7;
384
398
  case 7:
399
+ _a = _b;
400
+ return [3 /*break*/, 9];
401
+ case 8:
402
+ _a = true;
403
+ _j.label = 9;
404
+ case 9:
385
405
  validationResult = _a;
386
406
  isBlanksVisible = showBlanks
387
407
  ? isNil(formattedValue) || formattedValue === ""
@@ -416,14 +436,14 @@ getCellConditionalFormat) { return __awaiter(void 0, void 0, void 0, function ()
416
436
  if (isHidden) {
417
437
  hiddenRows.add(rowIndex);
418
438
  }
419
- _j.label = 8;
420
- case 8:
439
+ _j.label = 10;
440
+ case 10:
421
441
  columnIndex++;
422
442
  return [3 /*break*/, 2];
423
- case 9:
443
+ case 11:
424
444
  rowIndex++;
425
445
  return [3 /*break*/, 1];
426
- case 10: return [2 /*return*/, hiddenRows];
446
+ case 12: return [2 /*return*/, hiddenRows];
427
447
  }
428
448
  });
429
449
  }); };
@@ -1 +1 @@
1
- {"version":3,"file":"use-on-paste.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-paste.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-on-paste.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-paste.ts"],"names":[],"mappings":"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"}