@rowsncolumns/spreadsheet-state 28.0.71 → 28.0.72

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.
@@ -1 +1 @@
1
- {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../../api/range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,eAAO,MAAM,kCAAkC,GAC7C,OAAO,SAAS,EAChB,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,0FAYhD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAc,OAAO,SAAS,wDAOjE,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,QAAQ,cAAc,EACtB,MAAM,cAAc,YAKrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,aAAa,SAAS,GAAG,aAAa,KACrC,WAAW,IAAI,SAEjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,cAAc,EACxB,OAAO,SAAS,GAAG,SAAS,EAC5B,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,KACtB,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,CAkCtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,4BAGpC,cAAc,iBAMd,CAAC;AAGJ,eAAO,MAAM,gBAAgB,GAC3B,GAAG,SAAS,GAAG,SAAS,EACxB,GAAG,SAAS,GAAG,SAAS,YAYzB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,2BAA2B,cAAc,EACzC,GAAG,SAAS,GAAG,SAAS,YAWzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,cAAc,EACpB,MAAM,cAAc,YAOrB,CAAC;AAEF,KAAK,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC;AASvC,eAAO,MAAM,wBAAwB,GACnC,OAAO,UAAU,EACjB,WAAW,cAAc,EACzB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,SAAS,MAAM,KACd,UAAU,GAAG,IAyBf,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,OAAO,UAAU,EACjB,WAAW,cAAc,EACzB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,SAAS,MAAM,KACd,UAAU,GAAG,IA0Cf,CAAC"}
1
+ {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../../api/range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,eAAO,MAAM,kCAAkC,GAC7C,OAAO,SAAS,EAChB,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,0FAYhD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAc,OAAO,SAAS,wDAOjE,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,QAAQ,cAAc,EACtB,MAAM,cAAc,YAOrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,aAAa,SAAS,GAAG,aAAa,KACrC,WAAW,IAAI,SAEjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,cAAc,EACxB,OAAO,SAAS,GAAG,SAAS,EAC5B,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,KACtB,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,CAkCtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,4BAGpC,cAAc,iBAMd,CAAC;AAGJ,eAAO,MAAM,gBAAgB,GAC3B,GAAG,SAAS,GAAG,SAAS,EACxB,GAAG,SAAS,GAAG,SAAS,YAYzB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,2BAA2B,cAAc,EACzC,GAAG,SAAS,GAAG,SAAS,YAWzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,cAAc,EACpB,MAAM,cAAc,YAOrB,CAAC;AAEF,KAAK,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC;AASvC,eAAO,MAAM,wBAAwB,GACnC,OAAO,UAAU,EACjB,WAAW,cAAc,EACzB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,SAAS,MAAM,KACd,UAAU,GAAG,IAyBf,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,OAAO,UAAU,EACjB,WAAW,cAAc,EACzB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,SAAS,MAAM,KACd,UAAU,GAAG,IA0Cf,CAAC"}
@@ -64,7 +64,9 @@ export var iterateCellsInCellRange = function (range) {
64
64
  });
65
65
  };
66
66
  export var isEqualPosition = function (source, cell) {
67
- return (source.rowIndex === cell.rowIndex && source.columnIndex === cell.columnIndex);
67
+ return (source.sheetId === cell.sheetId &&
68
+ source.rowIndex === cell.rowIndex &&
69
+ source.columnIndex === cell.columnIndex);
68
70
  };
69
71
  export var isSelectionRange = function (rangeOrCell) {
70
72
  return !!rangeOrCell.startRowIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"use-calculation-worker.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,8BAA8B,EAQ9B,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAU1C,OAAO,KAAK,EACV,2BAA2B,EAE5B,MAAM,4BAA4B,CAAC;AAkBpC,OAAO,KAAK,EAEV,UAAU,EACV,SAAS,EACV,MAAM,2BAA2B,CAAC;AAWnC,OAAO,KAAK,EAIV,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EACD,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAyEF,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAC5D,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,kBAAkB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAClD,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AA8KF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,yBAAyB,KAC/B,wBAg7DF,CAAC"}
1
+ {"version":3,"file":"use-calculation-worker.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,8BAA8B,EAQ9B,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAU1C,OAAO,KAAK,EACV,2BAA2B,EAE5B,MAAM,4BAA4B,CAAC;AAmBpC,OAAO,KAAK,EAEV,UAAU,EACV,SAAS,EACV,MAAM,2BAA2B,CAAC;AAWnC,OAAO,KAAK,EAIV,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EACD,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAyEF,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAC5D,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,kBAAkB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAClD,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AA8KF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,yBAAyB,KAC/B,wBA+9DF,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { __assign, __awaiter, __generator, __read, __spreadArray, __values } from "tslib";
2
2
  import { CalculationGraph, CalculationWorkerClient, createNamedRangeResolver, createStructuredReferenceResolver, enqueueCalculationOperations, mapOperationToGraphOperation, } from "@rowsncolumns/calculation-worker";
3
3
  import { tokenize as formulaTokenizer } from "@rowsncolumns/calculator";
4
- import { CellNode, CellRangeNode, isCellCoordinate, isCellNode, isCellRangeNode, isStaticNode, makeKey, } from "@rowsncolumns/dag";
4
+ import { CellNode, CellRangeNode, isCellCoordinate, isCellCoordinateWithinCellRange, isCellNode, isCellRangeNode, isStaticNode, makeKey, } from "@rowsncolumns/dag";
5
5
  import { FormulaError } from "@rowsncolumns/fast-formula-parser";
6
6
  import { isAreasEqual } from "@rowsncolumns/grid";
7
7
  import { useCallbackRef } from "@rowsncolumns/spreadsheet";
@@ -520,6 +520,33 @@ export var useCalculationWorker = function (props) {
520
520
  }
521
521
  emitStats();
522
522
  }, [emitStats]);
523
+ // Lazy calculation: release a precedent deferred on an inactive sheet so
524
+ // the plan for the active sheet evaluates it instead of reading it stale.
525
+ var reclaimDeferredPosition = useCallback(function (position) {
526
+ var sheetOperations = deferredOperationsBySheetRef.current.get(position.sheetId);
527
+ var key = makeKey(position);
528
+ var operation = sheetOperations === null || sheetOperations === void 0 ? void 0 : sheetOperations.get(key);
529
+ if (!sheetOperations || !operation) {
530
+ return false;
531
+ }
532
+ sheetOperations.delete(key);
533
+ if (operation.force) {
534
+ workerForceRecalcKeysRef.current.add(key);
535
+ }
536
+ emitStats();
537
+ return true;
538
+ }, [emitStats]);
539
+ var reclaimDeferredPositionsInRange = useCallback(function (range) {
540
+ var sheetOperations = deferredOperationsBySheetRef.current.get(range.sheetId);
541
+ var positions = [];
542
+ sheetOperations === null || sheetOperations === void 0 ? void 0 : sheetOperations.forEach(function (operation) {
543
+ if (isCellCoordinate(operation.position) &&
544
+ isCellCoordinateWithinCellRange(operation.position, range)) {
545
+ positions.push(operation.position);
546
+ }
547
+ });
548
+ return positions;
549
+ }, []);
523
550
  var cancelInflightEvaluation = useCallback(function (target) {
524
551
  if (!target) {
525
552
  return;
@@ -1373,6 +1400,8 @@ export var useCalculationWorker = function (props) {
1373
1400
  ? {
1374
1401
  rootSheetId: activeSheetId,
1375
1402
  onDeferredNodes: deferCalculationNodes,
1403
+ reclaimDeferredPosition: reclaimDeferredPosition,
1404
+ reclaimDeferredPositionsInRange: reclaimDeferredPositionsInRange,
1376
1405
  includePositions: forcedPositions.length
1377
1406
  ? forcedPositions
1378
1407
  : undefined,
@@ -1429,6 +1458,8 @@ export var useCalculationWorker = function (props) {
1429
1458
  handleNodeBegin,
1430
1459
  normalizePropertyOverride,
1431
1460
  deferCalculationNodes,
1461
+ reclaimDeferredPosition,
1462
+ reclaimDeferredPositionsInRange,
1432
1463
  flushVolatileTracking,
1433
1464
  enqueueVolatileCells,
1434
1465
  onAfterCalculation,
@@ -1491,10 +1522,11 @@ export var useCalculationWorker = function (props) {
1491
1522
  workerReadyRef.current = false;
1492
1523
  (function () { return __awaiter(void 0, void 0, void 0, function () {
1493
1524
  var initialization, error_1;
1494
- return __generator(this, function (_a) {
1495
- switch (_a.label) {
1525
+ var _a;
1526
+ return __generator(this, function (_b) {
1527
+ switch (_b.label) {
1496
1528
  case 0:
1497
- _a.trys.push([0, 2, , 3]);
1529
+ _b.trys.push([0, 2, , 3]);
1498
1530
  initialization = workerErrorPromiseRef.current
1499
1531
  ? Promise.race([
1500
1532
  workerClient.initialize(nextSnapshot),
@@ -1503,10 +1535,10 @@ export var useCalculationWorker = function (props) {
1503
1535
  : workerClient.initialize(nextSnapshot);
1504
1536
  return [4 /*yield*/, initialization];
1505
1537
  case 1:
1506
- _a.sent();
1538
+ _b.sent();
1507
1539
  return [3 /*break*/, 3];
1508
1540
  case 2:
1509
- error_1 = _a.sent();
1541
+ error_1 = _b.sent();
1510
1542
  console.error("Failed to initialize calculation worker", error_1);
1511
1543
  return [2 /*return*/];
1512
1544
  case 3:
@@ -1514,7 +1546,13 @@ export var useCalculationWorker = function (props) {
1514
1546
  return [2 /*return*/];
1515
1547
  }
1516
1548
  workerReadyRef.current = true;
1517
- scheduleProcessing();
1549
+ // Read through the ref: listing `scheduleProcessing` as a dependency
1550
+ // re-ran this effect on every active-sheet change (it closes over
1551
+ // `activeSheetId`), and the cleanup cleared `workerReadyRef` while the
1552
+ // snapshot-equal early return never restored it — every operation
1553
+ // enqueued after a sheet switch (including deferred lazy-calc flushes)
1554
+ // then sat in the pending queue forever.
1555
+ (_a = scheduleProcessingRef.current) === null || _a === void 0 ? void 0 : _a.call(scheduleProcessingRef);
1518
1556
  return [2 /*return*/];
1519
1557
  }
1520
1558
  });
@@ -1531,7 +1569,6 @@ export var useCalculationWorker = function (props) {
1531
1569
  locale,
1532
1570
  tables,
1533
1571
  namedRanges,
1534
- scheduleProcessing,
1535
1572
  ]);
1536
1573
  useEffect(function () {
1537
1574
  if (workerClient === workerClientStub) {
@@ -1668,9 +1705,7 @@ export var useCalculationWorker = function (props) {
1668
1705
  return !isAreasEqual(node.position, source);
1669
1706
  }
1670
1707
  if (!includeSource && isCellCoordinate(source) && isCellNode(node)) {
1671
- var cellNode = node;
1672
- return (cellNode.position.rowIndex !== source.rowIndex ||
1673
- cellNode.position.columnIndex !== source.columnIndex);
1708
+ return !isEqualPosition(node.position, source);
1674
1709
  }
1675
1710
  return true;
1676
1711
  });
@@ -1 +1 @@
1
- {"version":3,"file":"use-calculation.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-calculation.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation.ts"],"names":[],"mappings":"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"}
@@ -507,6 +507,7 @@ export var useCalculation = function (_a) {
507
507
  };
508
508
  var filterDirtyCellsForActiveSheet = function (cells, rootSheetId) {
509
509
  var e_9, _a, e_10, _b, e_11, _c, e_12, _d, e_13, _e, e_14, _f, e_15, _g;
510
+ var _h;
510
511
  if (!cells.length) {
511
512
  return { included: cells, deferred: [] };
512
513
  }
@@ -592,6 +593,58 @@ export var useCalculation = function (_a) {
592
593
  }
593
594
  finally { if (e_12) throw e_12.error; }
594
595
  }
596
+ // A precedent that was deferred on an inactive sheet in an earlier
597
+ // pass is no longer dirty, so the dependency walk below cannot see
598
+ // it — an included cell would then evaluate against its stale value
599
+ // (Source → Intermediate → Result chains where Intermediate is never
600
+ // opened). Reclaim such precedents into this pass so they are
601
+ // ordered ahead of their dependents.
602
+ var reclaimed = [];
603
+ var reclaimDeferredNode = function (position) {
604
+ var sheetOperations = deferredOperationsBySheetRef.current.get(position.sheetId);
605
+ var key = makeKey(position);
606
+ var operation = sheetOperations === null || sheetOperations === void 0 ? void 0 : sheetOperations.get(key);
607
+ if (!sheetOperations || !operation) {
608
+ return undefined;
609
+ }
610
+ var graph = getCalculator().graph;
611
+ if (!graph.hasNode(position)) {
612
+ return undefined;
613
+ }
614
+ var node = graph.getNode(position);
615
+ if (!isCellNode(node)) {
616
+ return undefined;
617
+ }
618
+ sheetOperations.delete(key);
619
+ if (operation.force) {
620
+ forceRecalcKeys.current.add(key);
621
+ forceRecalcPositions.current.set(key, position);
622
+ }
623
+ cellNodeByKey.set(key, node);
624
+ var list = dirtyNodesBySheet.get(position.sheetId);
625
+ if (list) {
626
+ list.push(node);
627
+ }
628
+ else {
629
+ dirtyNodesBySheet.set(position.sheetId, [node]);
630
+ }
631
+ reclaimed.push(node);
632
+ return node;
633
+ };
634
+ var reclaimDeferredNodesInRange = function (range) {
635
+ var sheetOperations = deferredOperationsBySheetRef.current.get(range.sheetId);
636
+ if (!(sheetOperations === null || sheetOperations === void 0 ? void 0 : sheetOperations.size)) {
637
+ return;
638
+ }
639
+ var positions = [];
640
+ sheetOperations.forEach(function (operation) {
641
+ if (!cellNodeByKey.has(makeKey(operation.position)) &&
642
+ isCellCoordinateWithinCellRange(operation.position, range)) {
643
+ positions.push(operation.position);
644
+ }
645
+ });
646
+ positions.forEach(reclaimDeferredNode);
647
+ };
595
648
  while (stack.length) {
596
649
  var current = stack.pop();
597
650
  if (!current) {
@@ -614,13 +667,14 @@ export var useCalculation = function (_a) {
614
667
  continue;
615
668
  if (isCellCoordinate(dependency)) {
616
669
  var depKey = makeKey(dependency);
617
- var depNode = cellNodeByKey.get(depKey);
670
+ var depNode = (_h = cellNodeByKey.get(depKey)) !== null && _h !== void 0 ? _h : reclaimDeferredNode(dependency);
618
671
  if (depNode && !includedKeys.has(depKey)) {
619
672
  includedKeys.add(depKey);
620
673
  stack.push(depNode);
621
674
  }
622
675
  continue;
623
676
  }
677
+ reclaimDeferredNodesInRange(dependency);
624
678
  var candidates = dirtyNodesBySheet.get(dependency.sheetId);
625
679
  if (!candidates) {
626
680
  continue;
@@ -676,6 +730,7 @@ export var useCalculation = function (_a) {
676
730
  }
677
731
  finally { if (e_15) throw e_15.error; }
678
732
  }
733
+ included.push.apply(included, __spreadArray([], __read(reclaimed), false));
679
734
  return { included: included, deferred: deferred };
680
735
  };
681
736
  var scheduleStartCalculation = useCallback(function (results, recalculatedPosition) {
@@ -2347,8 +2402,7 @@ export var useCalculation = function (_a) {
2347
2402
  if (!includeSource &&
2348
2403
  isCellCoordinate(source) &&
2349
2404
  isCellNode(node)) {
2350
- return (node.position.rowIndex !== source.rowIndex ||
2351
- node.position.columnIndex !== source.columnIndex);
2405
+ return !isEqualPosition(node.position, source);
2352
2406
  }
2353
2407
  return true;
2354
2408
  });
@@ -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":"range.d.ts","sourceRoot":"","sources":["../../../api/range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,eAAO,MAAM,kCAAkC,GAC7C,OAAO,SAAS,EAChB,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,0FAYhD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAc,OAAO,SAAS,wDAOjE,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,QAAQ,cAAc,EACtB,MAAM,cAAc,YAKrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,aAAa,SAAS,GAAG,aAAa,KACrC,WAAW,IAAI,SAEjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,cAAc,EACxB,OAAO,SAAS,GAAG,SAAS,EAC5B,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,KACtB,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,CAkCtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,4BAGpC,cAAc,iBAMd,CAAC;AAGJ,eAAO,MAAM,gBAAgB,GAC3B,GAAG,SAAS,GAAG,SAAS,EACxB,GAAG,SAAS,GAAG,SAAS,YAYzB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,2BAA2B,cAAc,EACzC,GAAG,SAAS,GAAG,SAAS,YAWzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,cAAc,EACpB,MAAM,cAAc,YAOrB,CAAC;AAEF,KAAK,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC;AASvC,eAAO,MAAM,wBAAwB,GACnC,OAAO,UAAU,EACjB,WAAW,cAAc,EACzB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,SAAS,MAAM,KACd,UAAU,GAAG,IAyBf,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,OAAO,UAAU,EACjB,WAAW,cAAc,EACzB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,SAAS,MAAM,KACd,UAAU,GAAG,IA0Cf,CAAC"}
1
+ {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../../api/range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,eAAO,MAAM,kCAAkC,GAC7C,OAAO,SAAS,EAChB,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,0FAYhD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAc,OAAO,SAAS,wDAOjE,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,QAAQ,cAAc,EACtB,MAAM,cAAc,YAOrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,aAAa,SAAS,GAAG,aAAa,KACrC,WAAW,IAAI,SAEjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,cAAc,EACxB,OAAO,SAAS,GAAG,SAAS,EAC5B,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,KACtB,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,CAkCtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,4BAGpC,cAAc,iBAMd,CAAC;AAGJ,eAAO,MAAM,gBAAgB,GAC3B,GAAG,SAAS,GAAG,SAAS,EACxB,GAAG,SAAS,GAAG,SAAS,YAYzB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,2BAA2B,cAAc,EACzC,GAAG,SAAS,GAAG,SAAS,YAWzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,cAAc,EACpB,MAAM,cAAc,YAOrB,CAAC;AAEF,KAAK,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC;AASvC,eAAO,MAAM,wBAAwB,GACnC,OAAO,UAAU,EACjB,WAAW,cAAc,EACzB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,SAAS,MAAM,KACd,UAAU,GAAG,IAyBf,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,OAAO,UAAU,EACjB,WAAW,cAAc,EACzB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,SAAS,MAAM,KACd,UAAU,GAAG,IA0Cf,CAAC"}
@@ -21,7 +21,9 @@ export const iterateCellsInCellRange = function* (range) {
21
21
  }
22
22
  };
23
23
  export const isEqualPosition = (source, cell) => {
24
- return (source.rowIndex === cell.rowIndex && source.columnIndex === cell.columnIndex);
24
+ return (source.sheetId === cell.sheetId &&
25
+ source.rowIndex === cell.rowIndex &&
26
+ source.columnIndex === cell.columnIndex);
25
27
  };
26
28
  export const isSelectionRange = (rangeOrCell) => {
27
29
  return !!rangeOrCell.startRowIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"use-calculation-worker.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,8BAA8B,EAQ9B,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAU1C,OAAO,KAAK,EACV,2BAA2B,EAE5B,MAAM,4BAA4B,CAAC;AAkBpC,OAAO,KAAK,EAEV,UAAU,EACV,SAAS,EACV,MAAM,2BAA2B,CAAC;AAWnC,OAAO,KAAK,EAIV,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EACD,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAyEF,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAC5D,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,kBAAkB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAClD,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AA8KF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,yBAAyB,KAC/B,wBAg7DF,CAAC"}
1
+ {"version":3,"file":"use-calculation-worker.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,8BAA8B,EAQ9B,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAU1C,OAAO,KAAK,EACV,2BAA2B,EAE5B,MAAM,4BAA4B,CAAC;AAmBpC,OAAO,KAAK,EAEV,UAAU,EACV,SAAS,EACV,MAAM,2BAA2B,CAAC;AAWnC,OAAO,KAAK,EAIV,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EACD,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAyEF,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAC5D,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,kBAAkB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAClD,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AA8KF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,yBAAyB,KAC/B,wBA+9DF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { CalculationGraph, CalculationWorkerClient, createNamedRangeResolver, createStructuredReferenceResolver, enqueueCalculationOperations, mapOperationToGraphOperation, } from "@rowsncolumns/calculation-worker";
2
2
  import { tokenize as formulaTokenizer } from "@rowsncolumns/calculator";
3
- import { CellNode, CellRangeNode, isCellCoordinate, isCellNode, isCellRangeNode, isStaticNode, makeKey, } from "@rowsncolumns/dag";
3
+ import { CellNode, CellRangeNode, isCellCoordinate, isCellCoordinateWithinCellRange, isCellNode, isCellRangeNode, isStaticNode, makeKey, } from "@rowsncolumns/dag";
4
4
  import { FormulaError } from "@rowsncolumns/fast-formula-parser";
5
5
  import { isAreasEqual } from "@rowsncolumns/grid";
6
6
  import { useCallbackRef } from "@rowsncolumns/spreadsheet";
@@ -466,6 +466,33 @@ export const useCalculationWorker = (props) => {
466
466
  }
467
467
  emitStats();
468
468
  }, [emitStats]);
469
+ // Lazy calculation: release a precedent deferred on an inactive sheet so
470
+ // the plan for the active sheet evaluates it instead of reading it stale.
471
+ const reclaimDeferredPosition = useCallback((position) => {
472
+ const sheetOperations = deferredOperationsBySheetRef.current.get(position.sheetId);
473
+ const key = makeKey(position);
474
+ const operation = sheetOperations?.get(key);
475
+ if (!sheetOperations || !operation) {
476
+ return false;
477
+ }
478
+ sheetOperations.delete(key);
479
+ if (operation.force) {
480
+ workerForceRecalcKeysRef.current.add(key);
481
+ }
482
+ emitStats();
483
+ return true;
484
+ }, [emitStats]);
485
+ const reclaimDeferredPositionsInRange = useCallback((range) => {
486
+ const sheetOperations = deferredOperationsBySheetRef.current.get(range.sheetId);
487
+ const positions = [];
488
+ sheetOperations?.forEach((operation) => {
489
+ if (isCellCoordinate(operation.position) &&
490
+ isCellCoordinateWithinCellRange(operation.position, range)) {
491
+ positions.push(operation.position);
492
+ }
493
+ });
494
+ return positions;
495
+ }, []);
469
496
  const cancelInflightEvaluation = useCallback((target) => {
470
497
  if (!target) {
471
498
  return;
@@ -1245,6 +1272,8 @@ export const useCalculationWorker = (props) => {
1245
1272
  ? {
1246
1273
  rootSheetId: activeSheetId,
1247
1274
  onDeferredNodes: deferCalculationNodes,
1275
+ reclaimDeferredPosition,
1276
+ reclaimDeferredPositionsInRange,
1248
1277
  includePositions: forcedPositions.length
1249
1278
  ? forcedPositions
1250
1279
  : undefined,
@@ -1296,6 +1325,8 @@ export const useCalculationWorker = (props) => {
1296
1325
  handleNodeBegin,
1297
1326
  normalizePropertyOverride,
1298
1327
  deferCalculationNodes,
1328
+ reclaimDeferredPosition,
1329
+ reclaimDeferredPositionsInRange,
1299
1330
  flushVolatileTracking,
1300
1331
  enqueueVolatileCells,
1301
1332
  onAfterCalculation,
@@ -1374,7 +1405,13 @@ export const useCalculationWorker = (props) => {
1374
1405
  return;
1375
1406
  }
1376
1407
  workerReadyRef.current = true;
1377
- scheduleProcessing();
1408
+ // Read through the ref: listing `scheduleProcessing` as a dependency
1409
+ // re-ran this effect on every active-sheet change (it closes over
1410
+ // `activeSheetId`), and the cleanup cleared `workerReadyRef` while the
1411
+ // snapshot-equal early return never restored it — every operation
1412
+ // enqueued after a sheet switch (including deferred lazy-calc flushes)
1413
+ // then sat in the pending queue forever.
1414
+ scheduleProcessingRef.current?.();
1378
1415
  })();
1379
1416
  return () => {
1380
1417
  cancelled = true;
@@ -1388,7 +1425,6 @@ export const useCalculationWorker = (props) => {
1388
1425
  locale,
1389
1426
  tables,
1390
1427
  namedRanges,
1391
- scheduleProcessing,
1392
1428
  ]);
1393
1429
  useEffect(() => {
1394
1430
  if (workerClient === workerClientStub) {
@@ -1514,9 +1550,7 @@ export const useCalculationWorker = (props) => {
1514
1550
  return !isAreasEqual(node.position, source);
1515
1551
  }
1516
1552
  if (!includeSource && isCellCoordinate(source) && isCellNode(node)) {
1517
- const cellNode = node;
1518
- return (cellNode.position.rowIndex !== source.rowIndex ||
1519
- cellNode.position.columnIndex !== source.columnIndex);
1553
+ return !isEqualPosition(node.position, source);
1520
1554
  }
1521
1555
  return true;
1522
1556
  });
@@ -1 +1 @@
1
- {"version":3,"file":"use-calculation.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-calculation.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation.ts"],"names":[],"mappings":"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"}
@@ -460,6 +460,58 @@ export const useCalculation = ({ locale, functions, iterativeCalculation, onDema
460
460
  stack.push(node);
461
461
  }
462
462
  }
463
+ // A precedent that was deferred on an inactive sheet in an earlier
464
+ // pass is no longer dirty, so the dependency walk below cannot see
465
+ // it — an included cell would then evaluate against its stale value
466
+ // (Source → Intermediate → Result chains where Intermediate is never
467
+ // opened). Reclaim such precedents into this pass so they are
468
+ // ordered ahead of their dependents.
469
+ const reclaimed = [];
470
+ const reclaimDeferredNode = (position) => {
471
+ const sheetOperations = deferredOperationsBySheetRef.current.get(position.sheetId);
472
+ const key = makeKey(position);
473
+ const operation = sheetOperations?.get(key);
474
+ if (!sheetOperations || !operation) {
475
+ return undefined;
476
+ }
477
+ const graph = getCalculator().graph;
478
+ if (!graph.hasNode(position)) {
479
+ return undefined;
480
+ }
481
+ const node = graph.getNode(position);
482
+ if (!isCellNode(node)) {
483
+ return undefined;
484
+ }
485
+ sheetOperations.delete(key);
486
+ if (operation.force) {
487
+ forceRecalcKeys.current.add(key);
488
+ forceRecalcPositions.current.set(key, position);
489
+ }
490
+ cellNodeByKey.set(key, node);
491
+ const list = dirtyNodesBySheet.get(position.sheetId);
492
+ if (list) {
493
+ list.push(node);
494
+ }
495
+ else {
496
+ dirtyNodesBySheet.set(position.sheetId, [node]);
497
+ }
498
+ reclaimed.push(node);
499
+ return node;
500
+ };
501
+ const reclaimDeferredNodesInRange = (range) => {
502
+ const sheetOperations = deferredOperationsBySheetRef.current.get(range.sheetId);
503
+ if (!sheetOperations?.size) {
504
+ return;
505
+ }
506
+ const positions = [];
507
+ sheetOperations.forEach((operation) => {
508
+ if (!cellNodeByKey.has(makeKey(operation.position)) &&
509
+ isCellCoordinateWithinCellRange(operation.position, range)) {
510
+ positions.push(operation.position);
511
+ }
512
+ });
513
+ positions.forEach(reclaimDeferredNode);
514
+ };
463
515
  while (stack.length) {
464
516
  const current = stack.pop();
465
517
  if (!current) {
@@ -480,13 +532,14 @@ export const useCalculation = ({ locale, functions, iterativeCalculation, onDema
480
532
  continue;
481
533
  if (isCellCoordinate(dependency)) {
482
534
  const depKey = makeKey(dependency);
483
- const depNode = cellNodeByKey.get(depKey);
535
+ const depNode = cellNodeByKey.get(depKey) ?? reclaimDeferredNode(dependency);
484
536
  if (depNode && !includedKeys.has(depKey)) {
485
537
  includedKeys.add(depKey);
486
538
  stack.push(depNode);
487
539
  }
488
540
  continue;
489
541
  }
542
+ reclaimDeferredNodesInRange(dependency);
490
543
  const candidates = dirtyNodesBySheet.get(dependency.sheetId);
491
544
  if (!candidates) {
492
545
  continue;
@@ -514,6 +567,7 @@ export const useCalculation = ({ locale, functions, iterativeCalculation, onDema
514
567
  deferred.push(node);
515
568
  }
516
569
  }
570
+ included.push(...reclaimed);
517
571
  return { included, deferred };
518
572
  };
519
573
  const scheduleStartCalculation = useCallback((results, recalculatedPosition) => {
@@ -1737,8 +1791,7 @@ export const useCalculation = ({ locale, functions, iterativeCalculation, onDema
1737
1791
  if (!includeSource &&
1738
1792
  isCellCoordinate(source) &&
1739
1793
  isCellNode(node)) {
1740
- return (node.position.rowIndex !== source.rowIndex ||
1741
- node.position.columnIndex !== source.columnIndex);
1794
+ return !isEqualPosition(node.position, source);
1742
1795
  }
1743
1796
  return true;
1744
1797
  });
@@ -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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"}
@@ -231,6 +231,17 @@ const matchesCellIcon = (iconFilter, ctx, sheetId, rowIndex, columnIndex, getEff
231
231
  const glyphIndex = Math.min(bucket, Math.max(0, ctx.glyphCount - 1));
232
232
  return glyphIndex === iconFilter.iconId;
233
233
  };
234
+ /**
235
+ * Filter conditions that search the cell's displayed text rather than its
236
+ * value: "9/29/2026" contains "29", the serial 46294 behind it is irrelevant.
237
+ */
238
+ const DISPLAY_TEXT_CONDITION_TYPES = new Set([
239
+ "TEXT_CONTAINS",
240
+ "TEXT_NOT_CONTAINS",
241
+ "TEXT_STARTS_WITH",
242
+ "TEXT_ENDS_WITH",
243
+ ]);
244
+ const isDisplayTextCondition = (type) => type != null && DISPLAY_TEXT_CONDITION_TYPES.has(type);
234
245
  /**
235
246
  * Get hidden rows from a filter
236
247
  * @param filterSpecs
@@ -271,10 +282,14 @@ getCellConditionalFormat) => {
271
282
  if (!columnFilter || !filterApplied) {
272
283
  continue;
273
284
  }
274
- const formulaRule = columnFilter?.filterCriteria.condition
275
- ? {
276
- condition: columnFilter.filterCriteria.condition,
277
- }
285
+ const condition = columnFilter.filterCriteria.condition;
286
+ // Text-search conditions match the cell's DISPLAYED text, as Excel and
287
+ // Google Sheets do. The formula fallback (`=ISNUMBER(SEARCH("29",A2))`)
288
+ // searches the raw value, so "Text contains 29" over a date column hit
289
+ // every serial containing "29" (9/25–9/30/2026) instead of just 9/29.
290
+ const matchesDisplayText = isDisplayTextCondition(condition?.type);
291
+ const formulaRule = condition && !matchesDisplayText
292
+ ? { condition }
278
293
  : undefined;
279
294
  const isFormulaRule = isDataValidationFormulaRule(formulaRule);
280
295
  const baseCellRef = cellToAddress({ rowIndex: startRowIndex, columnIndex }) ?? "A1";
@@ -291,10 +306,12 @@ getCellConditionalFormat) => {
291
306
  const showBlanks = visibleValuesSet?.has(BLANK_LABEL) ?? false;
292
307
  const effectiveValue = getEffectiveValue(sheetId, rowIndex, columnIndex);
293
308
  const formattedValue = getFormattedValue(sheetId, rowIndex, columnIndex);
294
- const validationResult = columnFilter.filterCriteria.condition?.type
295
- ? formulaValue
296
- ? await onRequestCalculate(formulaValue, sheetId, rowIndex, columnIndex)
297
- : checkFilterRule(columnFilter.filterCriteria, effectiveValue)
309
+ const validationResult = condition?.type
310
+ ? matchesDisplayText
311
+ ? checkFilterRule(columnFilter.filterCriteria, formattedValue ?? "")
312
+ : formulaValue
313
+ ? await onRequestCalculate(formulaValue, sheetId, rowIndex, columnIndex)
314
+ : checkFilterRule(columnFilter.filterCriteria, effectiveValue)
298
315
  : true;
299
316
  const isBlanksVisible = showBlanks
300
317
  ? isNil(formattedValue) || formattedValue === ""
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rowsncolumns/spreadsheet-state",
3
- "version": "28.0.71",
3
+ "version": "28.0.72",
4
4
  "main": "./dist/cjs/index.js",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/esm/index.d.ts",
@@ -55,27 +55,27 @@
55
55
  "@rowsncolumns/calculator": ">=7.2.30",
56
56
  "@rowsncolumns/common-types": ">=5.2.30",
57
57
  "@rowsncolumns/dag": ">=7.2.30",
58
- "@rowsncolumns/fast-formula-parser": "6.2.34",
58
+ "@rowsncolumns/fast-formula-parser": "6.2.35",
59
59
  "@rowsncolumns/grid": ">=13.2.33",
60
60
  "@rowsncolumns/icons": ">=7.2.31",
61
- "@rowsncolumns/spreadsheet": ">=10.2.72",
61
+ "@rowsncolumns/spreadsheet": ">=10.2.73",
62
62
  "@rowsncolumns/toolkit": ">=24.4.2",
63
- "@rowsncolumns/ui": ">=15.0.40",
64
- "@rowsncolumns/utils": ">=9.2.38"
63
+ "@rowsncolumns/ui": ">=15.0.41",
64
+ "@rowsncolumns/utils": ">=9.2.39"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@rowsncolumns/calculator": ">=7.2.30",
68
68
  "@rowsncolumns/common-types": ">=5.2.30",
69
69
  "@rowsncolumns/dag": ">=7.2.30",
70
- "@rowsncolumns/fast-formula-parser": ">=6.2.34",
70
+ "@rowsncolumns/fast-formula-parser": ">=6.2.35",
71
71
  "@rowsncolumns/grid": ">=13.2.33",
72
72
  "@rowsncolumns/icons": ">=7.2.31",
73
- "@rowsncolumns/spreadsheet": ">=10.2.72",
74
- "@rowsncolumns/ui": ">=15.0.40",
75
- "@rowsncolumns/utils": ">=9.2.38"
73
+ "@rowsncolumns/spreadsheet": ">=10.2.73",
74
+ "@rowsncolumns/ui": ">=15.0.41",
75
+ "@rowsncolumns/utils": ">=9.2.39"
76
76
  },
77
77
  "dependencies": {
78
- "@rowsncolumns/calculation-worker": ">=9.0.30",
78
+ "@rowsncolumns/calculation-worker": ">=9.0.31",
79
79
  "@rowsncolumns/date-parser": ">=12.0.31",
80
80
  "@rowsncolumns/functions": ">=14.0.30",
81
81
  "@rowsncolumns/toolkit": ">=24.4.2",