@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.
- package/dist/cjs/api/range.d.ts.map +1 -1
- package/dist/cjs/api/range.js +3 -1
- package/dist/cjs/hooks/use-calculation-worker.d.ts.map +1 -1
- package/dist/cjs/hooks/use-calculation-worker.js +46 -11
- package/dist/cjs/hooks/use-calculation.d.ts.map +1 -1
- package/dist/cjs/hooks/use-calculation.js +57 -3
- package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-filter-table.js +48 -28
- package/dist/esm/api/range.d.ts.map +1 -1
- package/dist/esm/api/range.js +3 -1
- package/dist/esm/hooks/use-calculation-worker.d.ts.map +1 -1
- package/dist/esm/hooks/use-calculation-worker.js +40 -6
- package/dist/esm/hooks/use-calculation.d.ts.map +1 -1
- package/dist/esm/hooks/use-calculation.js +56 -3
- package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-filter-table.js +25 -8
- package/package.json +10 -10
|
@@ -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,
|
|
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"}
|
package/dist/cjs/api/range.js
CHANGED
|
@@ -64,7 +64,9 @@ export var iterateCellsInCellRange = function (range) {
|
|
|
64
64
|
});
|
|
65
65
|
};
|
|
66
66
|
export var isEqualPosition = function (source, cell) {
|
|
67
|
-
return (source.
|
|
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;
|
|
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
|
-
|
|
1495
|
-
|
|
1525
|
+
var _a;
|
|
1526
|
+
return __generator(this, function (_b) {
|
|
1527
|
+
switch (_b.label) {
|
|
1496
1528
|
case 0:
|
|
1497
|
-
|
|
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
|
-
|
|
1538
|
+
_b.sent();
|
|
1507
1539
|
return [3 /*break*/, 3];
|
|
1508
1540
|
case 2:
|
|
1509
|
-
error_1 =
|
|
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
|
-
|
|
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
|
|
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":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,cAAc,EAEd,UAAU,EACV,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,SAAS,EACV,MAAM,2BAA2B,CAAC;AAkBnC,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,UAAU,GAAG,SAAS,CAAC;AAE5B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG;IACxD,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACrD,CAAC;AAEF,KAAK,qBAAqB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAChE,KAAK,EAAE,gBAAgB,CAAC;IACxB,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,aAAa,EAAE,MAAM,aAAa,CAAC;IACnC,iBAAiB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E,iBAAiB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,UAAU,CAC7B,OAAO,kBAAkB,CAC1B,CAAC,oBAAoB,CAAC,CAAC;IACxB;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC7C,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;CACpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,oOAenE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,yBAMf,MAAM,UACP,SAAS,GAAG,UAAU,eAGjB,MAAM,iBACJ,aAAa,GAAG,SAAS,kBACxB,cAAc,EAAE,GAAG,SAAS,iBAC7B,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,WAClC,iBAAiB,8BA8IhB,MAAM,UACP,SAAS,GAAG,UAAU,eACjB,MAAM,mBAwBxB,CAAC;
|
|
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
|
|
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 = (
|
|
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*/,
|
|
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*/,
|
|
352
|
+
if (!(columnIndex <= range.endColumnIndex)) return [3 /*break*/, 11];
|
|
340
353
|
dimensionIndex = columnIndex - range.startColumnIndex;
|
|
341
354
|
columnFilter = filterSpecByColumnIndex[dimensionIndex];
|
|
342
|
-
filterApplied = Boolean(((
|
|
343
|
-
((
|
|
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*/,
|
|
360
|
+
return [3 /*break*/, 10];
|
|
348
361
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
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 = (
|
|
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 = (
|
|
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 (!(
|
|
370
|
-
if (!
|
|
371
|
-
|
|
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
|
-
|
|
374
|
-
return [
|
|
387
|
+
if (!formulaValue) return [3 /*break*/, 5];
|
|
388
|
+
return [4 /*yield*/, onRequestCalculate(formulaValue, sheetId, rowIndex, columnIndex)];
|
|
375
389
|
case 4:
|
|
376
|
-
|
|
377
|
-
|
|
390
|
+
_c = _j.sent();
|
|
391
|
+
return [3 /*break*/, 6];
|
|
378
392
|
case 5:
|
|
379
|
-
|
|
380
|
-
|
|
393
|
+
_c = checkFilterRule(columnFilter.filterCriteria, effectiveValue);
|
|
394
|
+
_j.label = 6;
|
|
381
395
|
case 6:
|
|
382
|
-
|
|
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 =
|
|
420
|
-
case
|
|
439
|
+
_j.label = 10;
|
|
440
|
+
case 10:
|
|
421
441
|
columnIndex++;
|
|
422
442
|
return [3 /*break*/, 2];
|
|
423
|
-
case
|
|
443
|
+
case 11:
|
|
424
444
|
rowIndex++;
|
|
425
445
|
return [3 /*break*/, 1];
|
|
426
|
-
case
|
|
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,
|
|
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"}
|
package/dist/esm/api/range.js
CHANGED
|
@@ -21,7 +21,9 @@ export const iterateCellsInCellRange = function* (range) {
|
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
23
|
export const isEqualPosition = (source, cell) => {
|
|
24
|
-
return (source.
|
|
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;
|
|
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
|
-
|
|
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":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EACL,UAAU,EAEV,UAAU,EACX,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,2BAA2B,EAC3B,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EAEnB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAmC,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EACL,aAAa,EAOd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAIV,kBAAkB,EACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAqBtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAuIjE,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACjC,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAGpC,gBAAgB,CAAC,EAAE,cAAc,CAAC;IAElC,KAAK,CAAC,EAAE,OAAO,CAAC;IAGhB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAItC,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IACE,IAAI,EAAE,eAAe,GAAG,eAAe,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IACE,IAAI,EAAE,uBAAuB,GAAG,yBAAyB,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD;IACE,IAAI,EAAE,yBAAyB,GAAG,0BAA0B,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IACE,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,GACD;IACE,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEN,MAAM,MAAM,yBAAyB,GAAG,EAIvC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,IAAI,GACJ,MAAM,GACN,UAAU,GACV,YAAY,GACZ,gBAAgB,CAAC;AAErB,MAAM,MAAM,oBAAoB,GAAG,GAAG,CACpC,MAAM,EACN,iBAAiB,GAAG,SAAS,GAAG,IAAI,CACrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CACP,OAAO,EACH,CAAC,cAAc,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,GAC9D,gBAAgB,CACd;QAAC,cAAc;QAAE,iBAAiB;QAAE,UAAU,CAAC,EAAE,UAAU;KAAC,CAC7D,EACL,YAAY,CAAC,EAAE,OAAO,EACtB,OAAO,CAAC,EAAE,yBAAyB,GAClC,IAAI,CAAC;IACR,kBAAkB,CAAC,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IACxD,gBAAgB,IAAI,MAAM,CAAC;IAC3B,kBAAkB,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;IAC3D,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,aAAa,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAClD,aAAa,IAAI,MAAM,CAAC;IACxB,iBAAiB,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IAC9C,mBAAmB,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAAC;IACtB,2BAA2B,CACzB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,GAAG,MAAM,GAClB,MAAM,GAAG,SAAS,CAAC;IACtB,wBAAwB,CACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,GAAG,MAAM,GAClB,MAAM,GAAG,SAAS,CAAC;IACtB,WAAW,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,aAAa,CAAC,CAAC;IAClE,qBAAqB,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;IACjE,YAAY,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC7C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,2BAA2B,EAAE,UAAU,EAAE,CAAC;IAC/D,uBAAuB,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IACpD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,2BAA2B,CAAC,CAC1B,eAAe,EAAE,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAC3E,QAAQ,CAAC,EAAE,MAAM,OAAO,eAAe,GACtC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACzC;;;;OAIG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9C,mBAAmB,CAAC,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;CAC/D,CAAC;AAKF,eAAO,MAAM,mBAAmB,aAU9B,CAAC;AAsKH,eAAO,MAAM,cAAc,GAAI,igBA6B5B,mBAAmB;
|
|
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
|
|
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":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,cAAc,EAEd,UAAU,EACV,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,SAAS,EACV,MAAM,2BAA2B,CAAC;AAkBnC,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,UAAU,GAAG,SAAS,CAAC;AAE5B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG;IACxD,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACrD,CAAC;AAEF,KAAK,qBAAqB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAChE,KAAK,EAAE,gBAAgB,CAAC;IACxB,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,aAAa,EAAE,MAAM,aAAa,CAAC;IACnC,iBAAiB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E,iBAAiB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,UAAU,CAC7B,OAAO,kBAAkB,CAC1B,CAAC,oBAAoB,CAAC,CAAC;IACxB;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC7C,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;CACpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,oOAenE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,yBAMf,MAAM,UACP,SAAS,GAAG,UAAU,eAGjB,MAAM,iBACJ,aAAa,GAAG,SAAS,kBACxB,cAAc,EAAE,GAAG,SAAS,iBAC7B,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,WAClC,iBAAiB,8BA8IhB,MAAM,UACP,SAAS,GAAG,UAAU,eACjB,MAAM,mBAwBxB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-on-filter-table.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-filter-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,cAAc,EAEd,UAAU,EACV,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,SAAS,EACV,MAAM,2BAA2B,CAAC;AAkBnC,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,UAAU,GAAG,SAAS,CAAC;AAE5B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG;IACxD,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACrD,CAAC;AAEF,KAAK,qBAAqB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAChE,KAAK,EAAE,gBAAgB,CAAC;IACxB,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,aAAa,EAAE,MAAM,aAAa,CAAC;IACnC,iBAAiB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E,iBAAiB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,UAAU,CAC7B,OAAO,kBAAkB,CAC1B,CAAC,oBAAoB,CAAC,CAAC;IACxB;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC7C,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;CACpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,oOAenE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,yBAMf,MAAM,UACP,SAAS,GAAG,UAAU,eAGjB,MAAM,iBACJ,aAAa,GAAG,SAAS,kBACxB,cAAc,EAAE,GAAG,SAAS,iBAC7B,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,WAClC,iBAAiB,8BA8IhB,MAAM,UACP,SAAS,GAAG,UAAU,eACjB,MAAM,mBAwBxB,CAAC;AAyJF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GACvC,SAAS,MAAM,EACf,YAAY,UAAU,GAAG,SAAS,EAClC,aAAa,UAAU,EAAE,EACzB,oBAAoB,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,EAC3E,mBAAmB,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,EAC7E,mBAAmB,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,EAC7E,cAAc,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EACzC,OAAO,gBAAgB,EACvB,SAAS,MAAM,EAGf,qBAAqB,UAAU,CAC7B,OAAO,kBAAkB,CAC1B,CAAC,oBAAoB,CAAC,EAGvB,qBAAqB,qBAAqB,EAAE,EAI5C,2BAA2B,wBAAwB,yBAyJpD,CAAC"}
|
|
@@ -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
|
|
275
|
-
|
|
276
|
-
|
|
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 =
|
|
295
|
-
?
|
|
296
|
-
?
|
|
297
|
-
:
|
|
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.
|
|
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.
|
|
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.
|
|
61
|
+
"@rowsncolumns/spreadsheet": ">=10.2.73",
|
|
62
62
|
"@rowsncolumns/toolkit": ">=24.4.2",
|
|
63
|
-
"@rowsncolumns/ui": ">=15.0.
|
|
64
|
-
"@rowsncolumns/utils": ">=9.2.
|
|
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.
|
|
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.
|
|
74
|
-
"@rowsncolumns/ui": ">=15.0.
|
|
75
|
-
"@rowsncolumns/utils": ">=9.2.
|
|
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.
|
|
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",
|