@univerjs/sheets-filter 1.0.0-alpha.8 → 1.0.0-beta.0
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/lib/cjs/index.js +15 -27
- package/lib/es/index.js +15 -27
- package/lib/index.js +15 -27
- package/lib/umd/index.js +1 -1
- package/package.json +7 -7
package/lib/cjs/index.js
CHANGED
|
@@ -337,8 +337,7 @@ var FilterModel = class FilterModel extends _univerjs_core.Disposable {
|
|
|
337
337
|
return this._getAllFilterColumns(true);
|
|
338
338
|
}
|
|
339
339
|
getFilterColumn(index) {
|
|
340
|
-
|
|
341
|
-
return (_this$_filterColumnBy = this._filterColumnByIndex.get(index)) !== null && _this$_filterColumnBy !== void 0 ? _this$_filterColumnBy : null;
|
|
340
|
+
return this._filterColumnByIndex.get(index) ?? null;
|
|
342
341
|
}
|
|
343
342
|
reCalc() {
|
|
344
343
|
this._reCalcAllColumns();
|
|
@@ -652,8 +651,8 @@ let SheetsFilterService = class SheetsFilterService extends _univerjs_core.Dispo
|
|
|
652
651
|
return filterModel;
|
|
653
652
|
}
|
|
654
653
|
getFilterModel(unitId, subUnitId) {
|
|
655
|
-
var _this$_filterModels$g
|
|
656
|
-
return (_this$_filterModels$g =
|
|
654
|
+
var _this$_filterModels$g;
|
|
655
|
+
return ((_this$_filterModels$g = this._filterModels.get(unitId)) === null || _this$_filterModels$g === void 0 ? void 0 : _this$_filterModels$g.get(subUnitId)) ?? null;
|
|
657
656
|
}
|
|
658
657
|
removeFilterModel(unitId, subUnitId) {
|
|
659
658
|
const already = this.getFilterModel(unitId, subUnitId);
|
|
@@ -690,10 +689,7 @@ let SheetsFilterService = class SheetsFilterService extends _univerjs_core.Dispo
|
|
|
690
689
|
this._activeFilterModel$.next(filterModel);
|
|
691
690
|
}
|
|
692
691
|
_initActiveFilterModel() {
|
|
693
|
-
this.disposeWithMe((0, rxjs.merge)((0, _univerjs_core.fromCallback)(this._commandService.onCommandExecuted.bind(this._commandService)).pipe((0, rxjs.filter)(([command]) => command.type === _univerjs_core.CommandType.MUTATION && FILTER_MUTATIONS.has(command.id))), this._univerInstanceService.getCurrentTypeOfUnit$(_univerjs_core.UniverInstanceType.UNIVER_SHEET).pipe((0, rxjs.switchMap)((workbook) =>
|
|
694
|
-
var _workbook$activeSheet;
|
|
695
|
-
return (_workbook$activeSheet = workbook === null || workbook === void 0 ? void 0 : workbook.activeSheet$) !== null && _workbook$activeSheet !== void 0 ? _workbook$activeSheet : (0, rxjs.of)(null);
|
|
696
|
-
}))).subscribe(() => this._updateActiveFilterModel()));
|
|
692
|
+
this.disposeWithMe((0, rxjs.merge)((0, _univerjs_core.fromCallback)(this._commandService.onCommandExecuted.bind(this._commandService)).pipe((0, rxjs.filter)(([command]) => command.type === _univerjs_core.CommandType.MUTATION && FILTER_MUTATIONS.has(command.id))), this._univerInstanceService.getCurrentTypeOfUnit$(_univerjs_core.UniverInstanceType.UNIVER_SHEET).pipe((0, rxjs.switchMap)((workbook) => (workbook === null || workbook === void 0 ? void 0 : workbook.activeSheet$) ?? (0, rxjs.of)(null)))).subscribe(() => this._updateActiveFilterModel()));
|
|
697
693
|
}
|
|
698
694
|
_serializeAutoFiltersForUnit(unitId) {
|
|
699
695
|
const allFilterModels = this._filterModels.get(unitId);
|
|
@@ -1319,9 +1315,8 @@ let SheetsFilterController = class SheetsFilterController extends _univerjs_core
|
|
|
1319
1315
|
};
|
|
1320
1316
|
}
|
|
1321
1317
|
handleInsertColCommand(range, unitId, subUnitId) {
|
|
1322
|
-
var _filterModel$getRange;
|
|
1323
1318
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1324
|
-
const filterRange = (
|
|
1319
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1325
1320
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1326
1321
|
const { startColumn, endColumn } = filterRange;
|
|
1327
1322
|
const { startColumn: insertStartColumn, endColumn: insertEndColumn } = range;
|
|
@@ -1364,9 +1359,8 @@ let SheetsFilterController = class SheetsFilterController extends _univerjs_core
|
|
|
1364
1359
|
};
|
|
1365
1360
|
}
|
|
1366
1361
|
_handleInsertRowCommand(config, unitId, subUnitId) {
|
|
1367
|
-
var _filterModel$getRange2;
|
|
1368
1362
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1369
|
-
const filterRange = (
|
|
1363
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1370
1364
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1371
1365
|
const { startRow, endRow } = filterRange;
|
|
1372
1366
|
const { startRow: insertStartRow, endRow: insertEndRow } = config.range;
|
|
@@ -1402,9 +1396,8 @@ let SheetsFilterController = class SheetsFilterController extends _univerjs_core
|
|
|
1402
1396
|
};
|
|
1403
1397
|
}
|
|
1404
1398
|
handleRemoveColCommand(range, unitId, subUnitId) {
|
|
1405
|
-
var _filterModel$getRange3;
|
|
1406
1399
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1407
|
-
const filterRange = (
|
|
1400
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1408
1401
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1409
1402
|
const { startColumn, endColumn } = filterRange;
|
|
1410
1403
|
const { startColumn: removeStartColumn, endColumn: removeEndColumn } = range;
|
|
@@ -1602,9 +1595,8 @@ let SheetsFilterController = class SheetsFilterController extends _univerjs_core
|
|
|
1602
1595
|
return count;
|
|
1603
1596
|
}
|
|
1604
1597
|
handleMoveColsCommand({ fromRange, toRange }, unitId, subUnitId) {
|
|
1605
|
-
var _filterModel$getRange4;
|
|
1606
1598
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1607
|
-
const filterRange = (
|
|
1599
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1608
1600
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1609
1601
|
const { startColumn, endColumn } = filterRange;
|
|
1610
1602
|
if (fromRange.endColumn < startColumn && toRange.startColumn <= startColumn || fromRange.startColumn > endColumn && toRange.endColumn > endColumn) return this._handleNull();
|
|
@@ -1712,9 +1704,8 @@ let SheetsFilterController = class SheetsFilterController extends _univerjs_core
|
|
|
1712
1704
|
};
|
|
1713
1705
|
}
|
|
1714
1706
|
_handleMoveRowsCommand(config, unitId, subUnitId) {
|
|
1715
|
-
var _filterModel$getRange5;
|
|
1716
1707
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1717
|
-
const filterRange = (
|
|
1708
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1718
1709
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1719
1710
|
const { startRow, endRow } = filterRange;
|
|
1720
1711
|
const { fromRange, toRange } = config;
|
|
@@ -1975,9 +1966,9 @@ let SheetsFilterController = class SheetsFilterController extends _univerjs_core
|
|
|
1975
1966
|
}
|
|
1976
1967
|
_initRowFilteredInterceptor() {
|
|
1977
1968
|
this.disposeWithMe(this._sheetInterceptorService.intercept(_univerjs_sheets.INTERCEPTOR_POINT.ROW_FILTERED, { handler: (filtered, rowLocation) => {
|
|
1978
|
-
var _this$_sheetsFilterSe2
|
|
1969
|
+
var _this$_sheetsFilterSe2;
|
|
1979
1970
|
if (filtered) return true;
|
|
1980
|
-
return (_this$_sheetsFilterSe2 =
|
|
1971
|
+
return ((_this$_sheetsFilterSe2 = this._sheetsFilterService.getFilterModel(rowLocation.unitId, rowLocation.subUnitId)) === null || _this$_sheetsFilterSe2 === void 0 ? void 0 : _this$_sheetsFilterSe2.isRowFiltered(rowLocation.row)) ?? false;
|
|
1981
1972
|
} }));
|
|
1982
1973
|
}
|
|
1983
1974
|
_moveCriteria(unitId, subUnitId, target, step) {
|
|
@@ -2180,10 +2171,7 @@ let SheetsFilterSyncController = class SheetsFilterSyncController extends _unive
|
|
|
2180
2171
|
const config = this._configService.getConfig(SHEETS_FILTER_PLUGIN_CONFIG_KEY);
|
|
2181
2172
|
if (config === null || config === void 0 ? void 0 : config.enableSyncSwitch) {
|
|
2182
2173
|
this._visible$.next(true);
|
|
2183
|
-
if (typeof config.enableSyncSwitch === "object")
|
|
2184
|
-
var _config$enableSyncSwi;
|
|
2185
|
-
this.setEnabled((_config$enableSyncSwi = config.enableSyncSwitch.defaultValue) !== null && _config$enableSyncSwi !== void 0 ? _config$enableSyncSwi : true);
|
|
2186
|
-
}
|
|
2174
|
+
if (typeof config.enableSyncSwitch === "object") this.setEnabled(config.enableSyncSwitch.defaultValue ?? true);
|
|
2187
2175
|
}
|
|
2188
2176
|
}
|
|
2189
2177
|
setEnabled(enabled) {
|
|
@@ -2229,7 +2217,7 @@ SheetsFilterSyncController = __decorate([
|
|
|
2229
2217
|
//#endregion
|
|
2230
2218
|
//#region package.json
|
|
2231
2219
|
var name = "@univerjs/sheets-filter";
|
|
2232
|
-
var version = "1.0.0-
|
|
2220
|
+
var version = "1.0.0-beta.0";
|
|
2233
2221
|
|
|
2234
2222
|
//#endregion
|
|
2235
2223
|
//#region src/services/sheet-filter-formula.service.ts
|
|
@@ -2276,8 +2264,8 @@ let SheetsFilterFormulaService = class SheetsFilterFormulaService extends _unive
|
|
|
2276
2264
|
}
|
|
2277
2265
|
_registerSheetRowFiltered() {
|
|
2278
2266
|
this._sheetRowFilteredService.register((unitId, subUnitId, row) => {
|
|
2279
|
-
var _this$_sheetsFilterSe2
|
|
2280
|
-
return (_this$_sheetsFilterSe2 =
|
|
2267
|
+
var _this$_sheetsFilterSe2;
|
|
2268
|
+
return ((_this$_sheetsFilterSe2 = this._sheetsFilterService.getFilterModel(unitId, subUnitId)) === null || _this$_sheetsFilterSe2 === void 0 ? void 0 : _this$_sheetsFilterSe2.isRowFiltered(row)) ?? false;
|
|
2281
2269
|
});
|
|
2282
2270
|
}
|
|
2283
2271
|
};
|
package/lib/es/index.js
CHANGED
|
@@ -336,8 +336,7 @@ var FilterModel = class FilterModel extends Disposable {
|
|
|
336
336
|
return this._getAllFilterColumns(true);
|
|
337
337
|
}
|
|
338
338
|
getFilterColumn(index) {
|
|
339
|
-
|
|
340
|
-
return (_this$_filterColumnBy = this._filterColumnByIndex.get(index)) !== null && _this$_filterColumnBy !== void 0 ? _this$_filterColumnBy : null;
|
|
339
|
+
return this._filterColumnByIndex.get(index) ?? null;
|
|
341
340
|
}
|
|
342
341
|
reCalc() {
|
|
343
342
|
this._reCalcAllColumns();
|
|
@@ -651,8 +650,8 @@ let SheetsFilterService = class SheetsFilterService extends Disposable {
|
|
|
651
650
|
return filterModel;
|
|
652
651
|
}
|
|
653
652
|
getFilterModel(unitId, subUnitId) {
|
|
654
|
-
var _this$_filterModels$g
|
|
655
|
-
return (_this$_filterModels$g =
|
|
653
|
+
var _this$_filterModels$g;
|
|
654
|
+
return ((_this$_filterModels$g = this._filterModels.get(unitId)) === null || _this$_filterModels$g === void 0 ? void 0 : _this$_filterModels$g.get(subUnitId)) ?? null;
|
|
656
655
|
}
|
|
657
656
|
removeFilterModel(unitId, subUnitId) {
|
|
658
657
|
const already = this.getFilterModel(unitId, subUnitId);
|
|
@@ -689,10 +688,7 @@ let SheetsFilterService = class SheetsFilterService extends Disposable {
|
|
|
689
688
|
this._activeFilterModel$.next(filterModel);
|
|
690
689
|
}
|
|
691
690
|
_initActiveFilterModel() {
|
|
692
|
-
this.disposeWithMe(merge$1(fromCallback(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(filter(([command]) => command.type === CommandType.MUTATION && FILTER_MUTATIONS.has(command.id))), this._univerInstanceService.getCurrentTypeOfUnit$(UniverInstanceType.UNIVER_SHEET).pipe(switchMap((workbook) =>
|
|
693
|
-
var _workbook$activeSheet;
|
|
694
|
-
return (_workbook$activeSheet = workbook === null || workbook === void 0 ? void 0 : workbook.activeSheet$) !== null && _workbook$activeSheet !== void 0 ? _workbook$activeSheet : of(null);
|
|
695
|
-
}))).subscribe(() => this._updateActiveFilterModel()));
|
|
691
|
+
this.disposeWithMe(merge$1(fromCallback(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(filter(([command]) => command.type === CommandType.MUTATION && FILTER_MUTATIONS.has(command.id))), this._univerInstanceService.getCurrentTypeOfUnit$(UniverInstanceType.UNIVER_SHEET).pipe(switchMap((workbook) => (workbook === null || workbook === void 0 ? void 0 : workbook.activeSheet$) ?? of(null)))).subscribe(() => this._updateActiveFilterModel()));
|
|
696
692
|
}
|
|
697
693
|
_serializeAutoFiltersForUnit(unitId) {
|
|
698
694
|
const allFilterModels = this._filterModels.get(unitId);
|
|
@@ -1318,9 +1314,8 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
|
|
|
1318
1314
|
};
|
|
1319
1315
|
}
|
|
1320
1316
|
handleInsertColCommand(range, unitId, subUnitId) {
|
|
1321
|
-
var _filterModel$getRange;
|
|
1322
1317
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1323
|
-
const filterRange = (
|
|
1318
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1324
1319
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1325
1320
|
const { startColumn, endColumn } = filterRange;
|
|
1326
1321
|
const { startColumn: insertStartColumn, endColumn: insertEndColumn } = range;
|
|
@@ -1363,9 +1358,8 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
|
|
|
1363
1358
|
};
|
|
1364
1359
|
}
|
|
1365
1360
|
_handleInsertRowCommand(config, unitId, subUnitId) {
|
|
1366
|
-
var _filterModel$getRange2;
|
|
1367
1361
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1368
|
-
const filterRange = (
|
|
1362
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1369
1363
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1370
1364
|
const { startRow, endRow } = filterRange;
|
|
1371
1365
|
const { startRow: insertStartRow, endRow: insertEndRow } = config.range;
|
|
@@ -1401,9 +1395,8 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
|
|
|
1401
1395
|
};
|
|
1402
1396
|
}
|
|
1403
1397
|
handleRemoveColCommand(range, unitId, subUnitId) {
|
|
1404
|
-
var _filterModel$getRange3;
|
|
1405
1398
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1406
|
-
const filterRange = (
|
|
1399
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1407
1400
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1408
1401
|
const { startColumn, endColumn } = filterRange;
|
|
1409
1402
|
const { startColumn: removeStartColumn, endColumn: removeEndColumn } = range;
|
|
@@ -1601,9 +1594,8 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
|
|
|
1601
1594
|
return count;
|
|
1602
1595
|
}
|
|
1603
1596
|
handleMoveColsCommand({ fromRange, toRange }, unitId, subUnitId) {
|
|
1604
|
-
var _filterModel$getRange4;
|
|
1605
1597
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1606
|
-
const filterRange = (
|
|
1598
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1607
1599
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1608
1600
|
const { startColumn, endColumn } = filterRange;
|
|
1609
1601
|
if (fromRange.endColumn < startColumn && toRange.startColumn <= startColumn || fromRange.startColumn > endColumn && toRange.endColumn > endColumn) return this._handleNull();
|
|
@@ -1711,9 +1703,8 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
|
|
|
1711
1703
|
};
|
|
1712
1704
|
}
|
|
1713
1705
|
_handleMoveRowsCommand(config, unitId, subUnitId) {
|
|
1714
|
-
var _filterModel$getRange5;
|
|
1715
1706
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1716
|
-
const filterRange = (
|
|
1707
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1717
1708
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1718
1709
|
const { startRow, endRow } = filterRange;
|
|
1719
1710
|
const { fromRange, toRange } = config;
|
|
@@ -1974,9 +1965,9 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
|
|
|
1974
1965
|
}
|
|
1975
1966
|
_initRowFilteredInterceptor() {
|
|
1976
1967
|
this.disposeWithMe(this._sheetInterceptorService.intercept(INTERCEPTOR_POINT.ROW_FILTERED, { handler: (filtered, rowLocation) => {
|
|
1977
|
-
var _this$_sheetsFilterSe2
|
|
1968
|
+
var _this$_sheetsFilterSe2;
|
|
1978
1969
|
if (filtered) return true;
|
|
1979
|
-
return (_this$_sheetsFilterSe2 =
|
|
1970
|
+
return ((_this$_sheetsFilterSe2 = this._sheetsFilterService.getFilterModel(rowLocation.unitId, rowLocation.subUnitId)) === null || _this$_sheetsFilterSe2 === void 0 ? void 0 : _this$_sheetsFilterSe2.isRowFiltered(rowLocation.row)) ?? false;
|
|
1980
1971
|
} }));
|
|
1981
1972
|
}
|
|
1982
1973
|
_moveCriteria(unitId, subUnitId, target, step) {
|
|
@@ -2179,10 +2170,7 @@ let SheetsFilterSyncController = class SheetsFilterSyncController extends Dispos
|
|
|
2179
2170
|
const config = this._configService.getConfig(SHEETS_FILTER_PLUGIN_CONFIG_KEY);
|
|
2180
2171
|
if (config === null || config === void 0 ? void 0 : config.enableSyncSwitch) {
|
|
2181
2172
|
this._visible$.next(true);
|
|
2182
|
-
if (typeof config.enableSyncSwitch === "object")
|
|
2183
|
-
var _config$enableSyncSwi;
|
|
2184
|
-
this.setEnabled((_config$enableSyncSwi = config.enableSyncSwitch.defaultValue) !== null && _config$enableSyncSwi !== void 0 ? _config$enableSyncSwi : true);
|
|
2185
|
-
}
|
|
2173
|
+
if (typeof config.enableSyncSwitch === "object") this.setEnabled(config.enableSyncSwitch.defaultValue ?? true);
|
|
2186
2174
|
}
|
|
2187
2175
|
}
|
|
2188
2176
|
setEnabled(enabled) {
|
|
@@ -2228,7 +2216,7 @@ SheetsFilterSyncController = __decorate([
|
|
|
2228
2216
|
//#endregion
|
|
2229
2217
|
//#region package.json
|
|
2230
2218
|
var name = "@univerjs/sheets-filter";
|
|
2231
|
-
var version = "1.0.0-
|
|
2219
|
+
var version = "1.0.0-beta.0";
|
|
2232
2220
|
|
|
2233
2221
|
//#endregion
|
|
2234
2222
|
//#region src/services/sheet-filter-formula.service.ts
|
|
@@ -2275,8 +2263,8 @@ let SheetsFilterFormulaService = class SheetsFilterFormulaService extends Dispos
|
|
|
2275
2263
|
}
|
|
2276
2264
|
_registerSheetRowFiltered() {
|
|
2277
2265
|
this._sheetRowFilteredService.register((unitId, subUnitId, row) => {
|
|
2278
|
-
var _this$_sheetsFilterSe2
|
|
2279
|
-
return (_this$_sheetsFilterSe2 =
|
|
2266
|
+
var _this$_sheetsFilterSe2;
|
|
2267
|
+
return ((_this$_sheetsFilterSe2 = this._sheetsFilterService.getFilterModel(unitId, subUnitId)) === null || _this$_sheetsFilterSe2 === void 0 ? void 0 : _this$_sheetsFilterSe2.isRowFiltered(row)) ?? false;
|
|
2280
2268
|
});
|
|
2281
2269
|
}
|
|
2282
2270
|
};
|
package/lib/index.js
CHANGED
|
@@ -336,8 +336,7 @@ var FilterModel = class FilterModel extends Disposable {
|
|
|
336
336
|
return this._getAllFilterColumns(true);
|
|
337
337
|
}
|
|
338
338
|
getFilterColumn(index) {
|
|
339
|
-
|
|
340
|
-
return (_this$_filterColumnBy = this._filterColumnByIndex.get(index)) !== null && _this$_filterColumnBy !== void 0 ? _this$_filterColumnBy : null;
|
|
339
|
+
return this._filterColumnByIndex.get(index) ?? null;
|
|
341
340
|
}
|
|
342
341
|
reCalc() {
|
|
343
342
|
this._reCalcAllColumns();
|
|
@@ -651,8 +650,8 @@ let SheetsFilterService = class SheetsFilterService extends Disposable {
|
|
|
651
650
|
return filterModel;
|
|
652
651
|
}
|
|
653
652
|
getFilterModel(unitId, subUnitId) {
|
|
654
|
-
var _this$_filterModels$g
|
|
655
|
-
return (_this$_filterModels$g =
|
|
653
|
+
var _this$_filterModels$g;
|
|
654
|
+
return ((_this$_filterModels$g = this._filterModels.get(unitId)) === null || _this$_filterModels$g === void 0 ? void 0 : _this$_filterModels$g.get(subUnitId)) ?? null;
|
|
656
655
|
}
|
|
657
656
|
removeFilterModel(unitId, subUnitId) {
|
|
658
657
|
const already = this.getFilterModel(unitId, subUnitId);
|
|
@@ -689,10 +688,7 @@ let SheetsFilterService = class SheetsFilterService extends Disposable {
|
|
|
689
688
|
this._activeFilterModel$.next(filterModel);
|
|
690
689
|
}
|
|
691
690
|
_initActiveFilterModel() {
|
|
692
|
-
this.disposeWithMe(merge$1(fromCallback(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(filter(([command]) => command.type === CommandType.MUTATION && FILTER_MUTATIONS.has(command.id))), this._univerInstanceService.getCurrentTypeOfUnit$(UniverInstanceType.UNIVER_SHEET).pipe(switchMap((workbook) =>
|
|
693
|
-
var _workbook$activeSheet;
|
|
694
|
-
return (_workbook$activeSheet = workbook === null || workbook === void 0 ? void 0 : workbook.activeSheet$) !== null && _workbook$activeSheet !== void 0 ? _workbook$activeSheet : of(null);
|
|
695
|
-
}))).subscribe(() => this._updateActiveFilterModel()));
|
|
691
|
+
this.disposeWithMe(merge$1(fromCallback(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(filter(([command]) => command.type === CommandType.MUTATION && FILTER_MUTATIONS.has(command.id))), this._univerInstanceService.getCurrentTypeOfUnit$(UniverInstanceType.UNIVER_SHEET).pipe(switchMap((workbook) => (workbook === null || workbook === void 0 ? void 0 : workbook.activeSheet$) ?? of(null)))).subscribe(() => this._updateActiveFilterModel()));
|
|
696
692
|
}
|
|
697
693
|
_serializeAutoFiltersForUnit(unitId) {
|
|
698
694
|
const allFilterModels = this._filterModels.get(unitId);
|
|
@@ -1318,9 +1314,8 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
|
|
|
1318
1314
|
};
|
|
1319
1315
|
}
|
|
1320
1316
|
handleInsertColCommand(range, unitId, subUnitId) {
|
|
1321
|
-
var _filterModel$getRange;
|
|
1322
1317
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1323
|
-
const filterRange = (
|
|
1318
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1324
1319
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1325
1320
|
const { startColumn, endColumn } = filterRange;
|
|
1326
1321
|
const { startColumn: insertStartColumn, endColumn: insertEndColumn } = range;
|
|
@@ -1363,9 +1358,8 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
|
|
|
1363
1358
|
};
|
|
1364
1359
|
}
|
|
1365
1360
|
_handleInsertRowCommand(config, unitId, subUnitId) {
|
|
1366
|
-
var _filterModel$getRange2;
|
|
1367
1361
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1368
|
-
const filterRange = (
|
|
1362
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1369
1363
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1370
1364
|
const { startRow, endRow } = filterRange;
|
|
1371
1365
|
const { startRow: insertStartRow, endRow: insertEndRow } = config.range;
|
|
@@ -1401,9 +1395,8 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
|
|
|
1401
1395
|
};
|
|
1402
1396
|
}
|
|
1403
1397
|
handleRemoveColCommand(range, unitId, subUnitId) {
|
|
1404
|
-
var _filterModel$getRange3;
|
|
1405
1398
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1406
|
-
const filterRange = (
|
|
1399
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1407
1400
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1408
1401
|
const { startColumn, endColumn } = filterRange;
|
|
1409
1402
|
const { startColumn: removeStartColumn, endColumn: removeEndColumn } = range;
|
|
@@ -1601,9 +1594,8 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
|
|
|
1601
1594
|
return count;
|
|
1602
1595
|
}
|
|
1603
1596
|
handleMoveColsCommand({ fromRange, toRange }, unitId, subUnitId) {
|
|
1604
|
-
var _filterModel$getRange4;
|
|
1605
1597
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1606
|
-
const filterRange = (
|
|
1598
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1607
1599
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1608
1600
|
const { startColumn, endColumn } = filterRange;
|
|
1609
1601
|
if (fromRange.endColumn < startColumn && toRange.startColumn <= startColumn || fromRange.startColumn > endColumn && toRange.endColumn > endColumn) return this._handleNull();
|
|
@@ -1711,9 +1703,8 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
|
|
|
1711
1703
|
};
|
|
1712
1704
|
}
|
|
1713
1705
|
_handleMoveRowsCommand(config, unitId, subUnitId) {
|
|
1714
|
-
var _filterModel$getRange5;
|
|
1715
1706
|
const filterModel = this._sheetsFilterService.getFilterModel(unitId, subUnitId);
|
|
1716
|
-
const filterRange = (
|
|
1707
|
+
const filterRange = (filterModel === null || filterModel === void 0 ? void 0 : filterModel.getRange()) ?? null;
|
|
1717
1708
|
if (!filterModel || !filterRange) return this._handleNull();
|
|
1718
1709
|
const { startRow, endRow } = filterRange;
|
|
1719
1710
|
const { fromRange, toRange } = config;
|
|
@@ -1974,9 +1965,9 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
|
|
|
1974
1965
|
}
|
|
1975
1966
|
_initRowFilteredInterceptor() {
|
|
1976
1967
|
this.disposeWithMe(this._sheetInterceptorService.intercept(INTERCEPTOR_POINT.ROW_FILTERED, { handler: (filtered, rowLocation) => {
|
|
1977
|
-
var _this$_sheetsFilterSe2
|
|
1968
|
+
var _this$_sheetsFilterSe2;
|
|
1978
1969
|
if (filtered) return true;
|
|
1979
|
-
return (_this$_sheetsFilterSe2 =
|
|
1970
|
+
return ((_this$_sheetsFilterSe2 = this._sheetsFilterService.getFilterModel(rowLocation.unitId, rowLocation.subUnitId)) === null || _this$_sheetsFilterSe2 === void 0 ? void 0 : _this$_sheetsFilterSe2.isRowFiltered(rowLocation.row)) ?? false;
|
|
1980
1971
|
} }));
|
|
1981
1972
|
}
|
|
1982
1973
|
_moveCriteria(unitId, subUnitId, target, step) {
|
|
@@ -2179,10 +2170,7 @@ let SheetsFilterSyncController = class SheetsFilterSyncController extends Dispos
|
|
|
2179
2170
|
const config = this._configService.getConfig(SHEETS_FILTER_PLUGIN_CONFIG_KEY);
|
|
2180
2171
|
if (config === null || config === void 0 ? void 0 : config.enableSyncSwitch) {
|
|
2181
2172
|
this._visible$.next(true);
|
|
2182
|
-
if (typeof config.enableSyncSwitch === "object")
|
|
2183
|
-
var _config$enableSyncSwi;
|
|
2184
|
-
this.setEnabled((_config$enableSyncSwi = config.enableSyncSwitch.defaultValue) !== null && _config$enableSyncSwi !== void 0 ? _config$enableSyncSwi : true);
|
|
2185
|
-
}
|
|
2173
|
+
if (typeof config.enableSyncSwitch === "object") this.setEnabled(config.enableSyncSwitch.defaultValue ?? true);
|
|
2186
2174
|
}
|
|
2187
2175
|
}
|
|
2188
2176
|
setEnabled(enabled) {
|
|
@@ -2228,7 +2216,7 @@ SheetsFilterSyncController = __decorate([
|
|
|
2228
2216
|
//#endregion
|
|
2229
2217
|
//#region package.json
|
|
2230
2218
|
var name = "@univerjs/sheets-filter";
|
|
2231
|
-
var version = "1.0.0-
|
|
2219
|
+
var version = "1.0.0-beta.0";
|
|
2232
2220
|
|
|
2233
2221
|
//#endregion
|
|
2234
2222
|
//#region src/services/sheet-filter-formula.service.ts
|
|
@@ -2275,8 +2263,8 @@ let SheetsFilterFormulaService = class SheetsFilterFormulaService extends Dispos
|
|
|
2275
2263
|
}
|
|
2276
2264
|
_registerSheetRowFiltered() {
|
|
2277
2265
|
this._sheetRowFilteredService.register((unitId, subUnitId, row) => {
|
|
2278
|
-
var _this$_sheetsFilterSe2
|
|
2279
|
-
return (_this$_sheetsFilterSe2 =
|
|
2266
|
+
var _this$_sheetsFilterSe2;
|
|
2267
|
+
return ((_this$_sheetsFilterSe2 = this._sheetsFilterService.getFilterModel(unitId, subUnitId)) === null || _this$_sheetsFilterSe2 === void 0 ? void 0 : _this$_sheetsFilterSe2.isRowFiltered(row)) ?? false;
|
|
2280
2268
|
});
|
|
2281
2269
|
}
|
|
2282
2270
|
};
|
package/lib/umd/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("rxjs"),require("@univerjs/engine-render"),require("@univerjs/rpc"),require("@univerjs/engine-formula")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/sheets`,`rxjs`,`@univerjs/engine-render`,`@univerjs/rpc`,`@univerjs/engine-formula`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsFilter={},e.UniverCore,e.UniverSheets,e.rxjs,e.UniverEngineRender,e.UniverRpc,e.UniverEngineFormula))})(this,function(e,t,n,r,i,a,o){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let s=`sheet.mutation.set-filter-range`,c=`sheet.mutation.set-filter-criteria`,l=`sheet.mutation.remove-filter`,u=`sheet.mutation.re-calc-filter`,d=new Set([s,c,l,u]),f=function(e){return e[e.VALUES=0]=`VALUES`,e[e.COLORS=1]=`COLORS`,e[e.CONDITIONS=2]=`CONDITIONS`,e}({}),p=function(e){return e.EQUAL=`equal`,e.GREATER_THAN=`greaterThan`,e.GREATER_THAN_OR_EQUAL=`greaterThanOrEqual`,e.LESS_THAN=`lessThan`,e.LESS_THAN_OR_EQUAL=`lessThanOrEqual`,e.NOT_EQUALS=`notEqual`,e}({}),m={operator:`greaterThan`,fn:(e,t)=>C(e)?e>t:!1},h={operator:`greaterThanOrEqual`,fn:(e,t)=>C(e)?e>=t:!1},g={operator:`lessThan`,fn:(e,t)=>C(e)?e<t:!1},_={operator:`lessThanOrEqual`,fn:(e,t)=>C(e)?e<=t:!1},v={operator:`equal`,fn:(e,t)=>C(e)?e===t:!1},y={operator:`notEqual`,fn:(e,n)=>{if(typeof n==`string`){if(n===` `)return e!=null;let r=T(e);return r&&te(n)?!t.regexp.createFromWildcard(n).test(r):r!==n}return!C(e)||e!==n}},b=new Map([]);[m,h,g,_,v,y].forEach(e=>{b.set(e.operator,e)});function ee(e){return!!e}let x={fn:(e,n)=>{let r=T(e);return r===null?n===``:t.regexp.createFromWildcard(n).test(r)}};function S(e){return e?b.get(e):x}function C(e){return typeof e==`number`}function w(e){return!!(typeof e==`number`||typeof e==`string`&&(0,t.isNumeric)(e))}function T(e){return typeof e==`boolean`||e==null?null:typeof e==`string`?e:e.toString()}function te(e){return typeof e==`number`?!1:e.indexOf(`*`)!==-1||e.indexOf(`?`)!==-1}function E(e){"@babel/helpers - typeof";return E=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},E(e)}function ne(e,t){if(E(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(E(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function D(e){var t=ne(e,`string`);return E(t)==`symbol`?t:t+``}function O(e,t,n){return(t=D(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let k=()=>new Set;var A=class e extends t.Disposable{get filteredOutRows(){return this._filteredOutRows$.getValue()}set filteredOutRows(e){this._alreadyFilteredOutRows=e,this._filteredOutRows$.next(e)}constructor(e,t,n){super(),this.unitId=e,this.subUnitId=t,this._worksheet=n,O(this,`_filteredOutRows$`,new r.BehaviorSubject(k())),O(this,`filteredOutRows$`,this._filteredOutRows$.asObservable()),O(this,`_hasCriteria$`,new r.BehaviorSubject(!1)),O(this,`hasCriteria$`,this._hasCriteria$.asObservable()),O(this,`_filterColumnByIndex`,new Map),O(this,`_alreadyFilteredOutRows`,k()),O(this,`_range`,void 0)}dispose(){super.dispose(),this._filteredOutRows$.complete(),this._hasCriteria$.complete(),this._worksheet=null}serialize(){let e={ref:t.Rectangle.clone(this._range),filterColumns:this._getAllFilterColumns(!0).sort(([e],[t])=>e-t).map(([e,t])=>t.serialize())};return this._alreadyFilteredOutRows&&(e.cachedFilteredOut=Array.from(this._alreadyFilteredOutRows).sort()),e}static deserialize(t,n,r,i){let a=new e(t,n,r);return a._dump(i),a}_dump(e){var t;this.setRange(e.ref),(t=e.filterColumns)==null||t.filter(e=>!(!e.filters&&!e.colorFilters&&!e.customFilters)).forEach(e=>this._setCriteriaWithoutReCalc(e.colId,e)),e.cachedFilteredOut?(this._alreadyFilteredOutRows=new Set(e.cachedFilteredOut),this._emit()):e.filterColumns&&e.filterColumns.length>0&&(this._reCalcAllColumns(),this._emit()),this._emitHasCriteria()}isRowFiltered(e){return this._alreadyFilteredOutRows.has(e)}getRange(){if(!this._range)throw Error(`[FilterModel] could not get range before a range is set!`);return this._range}getFilteredOutRowsExceptCol(e){return this._getAllFilterColumns(!0).filter(([t])=>t!==e).reduce((e,[,n])=>{let r=n.calc({getAlreadyFilteredOutRows:()=>e});return r?(0,t.mergeSets)(e,r):e},new Set)}setRange(e){this._range=e,this._getAllFilterColumns(!0).forEach(([t,n])=>{n.setRangeAndColumn({startRow:e.startRow,endRow:e.endRow,startColumn:t,endColumn:t},t)})}setCriteria(e,t,n=!1){if(!this._range)throw Error(`[FilterModel] could not set criteria before a range is set!`);if(!t){this._removeCriteria(e),this._rebuildAlreadyFilteredOutRowsWithCache(),n&&this._reCalcAllColumns(),this._emit(),this._emitHasCriteria();return}this._setCriteriaWithoutReCalc(e,t),n&&(this._rebuildAlreadyFilteredOutRowsWithCache(),this._getAllFilterColumns().forEach(e=>e.__clearCache()),this._reCalcWithNoCacheColumns(),this._emit(),this._emitHasCriteria())}getAllFilterColumns(){return this._getAllFilterColumns(!0)}getFilterColumn(e){var t;return(t=this._filterColumnByIndex.get(e))==null?null:t}reCalc(){this._reCalcAllColumns(),this._emit()}_getAllFilterColumns(e=!1){let t=Array.from(this._filterColumnByIndex.entries());return e?t:t.map(([e,t])=>t)}_reCalcAllColumns(){this._alreadyFilteredOutRows=k(),this._getAllFilterColumns().forEach(e=>e.__clearCache()),this._reCalcWithNoCacheColumns()}_setCriteriaWithoutReCalc(e,t){let n=this._range;if(!n)throw Error(`[FilterModel] could not set criteria before a range is set!`);let{startColumn:r,endColumn:i}=n;if(e>i||e<r)throw Error(`[FilterModel] could not set criteria on column ${e} which is out of range!`);let a;this._filterColumnByIndex.has(e)?a=this._filterColumnByIndex.get(e):(a=new j(this.unitId,this.subUnitId,this._worksheet,t,{getAlreadyFilteredOutRows:()=>this._alreadyFilteredOutRows}),a.setRangeAndColumn(n,e),this._filterColumnByIndex.set(e,a)),a.setCriteria(t)}_removeCriteria(e){let t=this._filterColumnByIndex.get(e);t&&(t.dispose(),this._filterColumnByIndex.delete(e))}_emit(){this._filteredOutRows$.next(this._alreadyFilteredOutRows)}_emitHasCriteria(){this._hasCriteria$.next(this._filterColumnByIndex.size>0)}_rebuildAlreadyFilteredOutRowsWithCache(){let e=this._getAllFilterColumns().filter(e=>e.hasCache()).reduce((e,n)=>(0,t.mergeSets)(e,n.filteredOutRows),new Set);this._alreadyFilteredOutRows=e}_reCalcWithNoCacheColumns(){let e=this._getAllFilterColumns().filter(e=>!e.hasCache());for(let n of e){let e=n.reCalc();e&&(this._alreadyFilteredOutRows=(0,t.mergeSets)(this._alreadyFilteredOutRows,e))}}},j=class extends t.Disposable{get filteredOutRows(){return this._filteredOutRows}get filterBy(){return this._filterBy}constructor(e,t,n,r,i){super(),this.unitId=e,this.subUnitId=t,this._worksheet=n,this._criteria=r,this._filterColumnContext=i,O(this,`_filteredOutRows`,null),O(this,`_filterFn`,null),O(this,`_range`,null),O(this,`_column`,0),O(this,`_filterBy`,0)}dispose(){super.dispose(),this._filteredOutRows=null}__clearCache(){this._filteredOutRows=null}serialize(){if(!this._criteria)throw Error(`[FilterColumn]: could not serialize without a filter column!`);return t.Tools.deepClone({...this._criteria,colId:this._column})}hasCache(){return this._filteredOutRows!==null}setRangeAndColumn(e,t){this._range=e,this._column=t}setCriteria(e){this._criteria=e,this._generateFilterFn(),this._filteredOutRows=null}getColumnData(){return t.Tools.deepClone(this._criteria)}reCalc(){return this._filteredOutRows=this.calc(this._filterColumnContext),this._filteredOutRows}calc(e){if(!this._filterFn)throw Error(`[FilterColumn] cannot calculate without a filter fn!`);if(!this._range)throw Error(`[FilterColumn] cannot calculate without a range!`);if(typeof this._column!=`number`)throw TypeError(`[FilterColumn] cannot calculate without a column offset!`);let n=this._column,r={startColumn:n,endColumn:n,startRow:this._range.startRow+1,endRow:this._range.endRow},i=new Set,a=e.getAlreadyFilteredOutRows();for(let e of this._worksheet.iterateByColumn(r,!1,!1)){let{row:n,rowSpan:r,col:o}=e;if(!(a.has(n)&&(!r||r===1))&&!(this._filterBy===0?this._filterFn((0,t.extractPureTextFromCell)(this._worksheet.getCell(n,o))):this._filterBy===1?this._filterFn(this._worksheet.getComposedCellStyle(n,o)):this._filterFn(de(this._worksheet,n,o)))&&(i.add(n),r))for(let e=1;e<r;e++)i.add(n+e)}return i}_generateFilterFn(){this._criteria&&(this._filterFn=re(this._criteria),this._filterBy=this._criteria.filters?0:this._criteria.colorFilters?1:2)}};function re(e){if(e.filters)return ie(e.filters);if(e.colorFilters)return ae(e.colorFilters);if(e.customFilters)return oe(e.customFilters);throw Error(`[FilterModel]: other types of filters are not supported yet.`)}function ie(e){let t=!!e.blank,n=new Set(e.filters);return e=>e===void 0||e===``?t:n.has(typeof e==`string`?e:`${e}`)}function ae(e){if(e.cellFillColors){let n=new Set(e.cellFillColors);return e=>{var r;if(!e||!((r=e.bg)!=null&&r.rgb))return!!n.has(null);let i=new t.ColorKit(e.bg.rgb).toRgbString();return n.has(i)}}if(e.cellTextColors){let n=new Set(e.cellTextColors);return e=>{var r;if(!e||!((r=e.cl)!=null&&r.rgb))return!!n.has(i.COLOR_BLACK_RGB);let a=new t.ColorKit(e.cl.rgb).toRgbString();return n.has(a)}}throw Error(`[FilterModel]: color filters are not supported yet.`)}function oe(e){let t=e.customFilters.map(e=>ue(e));return le(t)?e.and?se(t):ce(t):t[0]}function se(e){let[t,n]=e;return e=>t(e)&&n(e)}function ce(e){let[t,n]=e;return e=>t(e)||n(e)}function le(e){return e.length===2}function ue(e){let t=e.val;if(e.operator===`notEqual`&&!w(t))return e=>y.fn(e,t);if(ee(e.operator)){if(!w(t))return()=>!1;let n=S(e.operator),r=Number(t);return e=>n.fn(e,r)}let n=S(e.operator);return e=>n.fn(e,t)}function de(e,n,r){let i=e.getCell(n,r);if(!i)return null;let a=e.getCellRaw(n,r);return i&&!a?M(i):a?i.t===t.CellValueType.NUMBER&&typeof i.v==`string`?a.v:i.t===t.CellValueType.NUMBER?Number(a.v):M(a):null}function M(e){var n;let r=(n=e.p)==null||(n=n.body)==null?void 0:n.dataStream;if(r)return r.trimEnd();let i=e.v;return typeof i==`string`?e.t===t.CellValueType.BOOLEAN?i.toUpperCase():i:typeof i==`number`?e.t===t.CellValueType.BOOLEAN?i?`TRUE`:`FALSE`:i:typeof i==`boolean`?i?`TRUE`:`FALSE`:``}function N(e,t){return function(n,r){t(n,r,e)}}function P(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let F=`SHEET_FILTER_PLUGIN`,I=class extends t.Disposable{get activeFilterModel(){return this._activeFilterModel$.getValue()}constructor(e,t,n){super(),this._resourcesManagerService=e,this._univerInstanceService=t,this._commandService=n,O(this,`_filterModels`,new Map),O(this,`_loadedUnitId$`,new r.BehaviorSubject(null)),O(this,`loadedUnitId$`,this._loadedUnitId$.asObservable()),O(this,`_errorMsg$`,new r.BehaviorSubject(null)),O(this,`errorMsg$`,this._errorMsg$.asObservable()),O(this,`_activeFilterModel$`,new r.BehaviorSubject(null)),O(this,`activeFilterModel$`,this._activeFilterModel$.asObservable()),this._initModel(),this._initActiveFilterModel()}ensureFilterModel(e,n){let r=this.getFilterModel(e,n);if(r)return r;let i=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET);if(!i)throw Error(`[SheetsFilterService]: could not create "FilterModel" on a non-existing workbook ${e}!`);let a=i.getSheetBySheetId(n);if(!a)throw Error(`[SheetsFilterService]: could not create "FilterModel" on a non-existing worksheet ${n}!`);let o=new A(e,n,a);return this._cacheFilterModel(e,n,o),o}getFilterModel(e,t){var n,r;return(n=(r=this._filterModels.get(e))==null?void 0:r.get(t))==null?null:n}removeFilterModel(e,t){let n=this.getFilterModel(e,t);return n?(n.dispose(),this._filterModels.get(e).delete(t),!0):!1}setFilterErrorMsg(e){this._errorMsg$.next(e)}_updateActiveFilterModel(){let e;try{if(e=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET),!e){this._activeFilterModel$.next(null);return}}catch(e){console.error(`[SheetsFilterService]: could not get active workbook!`,e);return}let n=e.getActiveSheet(!0);if(!n){this._activeFilterModel$.next(null);return}let r=n.getUnitId(),i=n.getSheetId(),a=this.getFilterModel(r,i);this._activeFilterModel$.next(a)}_initActiveFilterModel(){this.disposeWithMe((0,r.merge)((0,t.fromCallback)(this._commandService.onCommandExecuted.bind(this._commandService)).pipe((0,r.filter)(([e])=>e.type===t.CommandType.MUTATION&&d.has(e.id))),this._univerInstanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_SHEET).pipe((0,r.switchMap)(e=>{var t;return(t=e==null?void 0:e.activeSheet$)==null?(0,r.of)(null):t}))).subscribe(()=>this._updateActiveFilterModel()))}_serializeAutoFiltersForUnit(e){let t=this._filterModels.get(e);if(!t)return`{}`;let n={};return t.forEach((e,t)=>{n[t]=e.serialize()}),JSON.stringify(n)}_deserializeAutoFiltersForUnit(e,n){let r=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET);Object.keys(n).forEach(t=>{let i=n[t],a=A.deserialize(e,t,r.getSheetBySheetId(t),i);this._cacheFilterModel(e,t,a)})}dispose(){super.dispose(),this._loadedUnitId$.complete(),this._errorMsg$.complete(),this._activeFilterModel$.complete(),this._filterModels.forEach(e=>{e.forEach(e=>e.dispose()),e.clear()}),this._filterModels.clear()}_initModel(){this._resourcesManagerService.registerPluginResource({pluginName:F,businesses:[t.UniverInstanceType.UNIVER_SHEET],toJson:e=>this._serializeAutoFiltersForUnit(e),parseJson:e=>JSON.parse(e),onLoad:(e,t)=>{this._deserializeAutoFiltersForUnit(e,t),this._loadedUnitId$.next(e),this._updateActiveFilterModel()},onUnLoad:e=>{let t=this._filterModels.get(e);t&&(t.forEach(e=>e.dispose()),this._filterModels.delete(e))}})}_cacheFilterModel(e,t,n){this._filterModels.has(e)||this._filterModels.set(e,new Map),this._filterModels.get(e).set(t,n)}};I=P([N(0,t.IResourceManagerService),N(1,t.IUniverInstanceService),N(2,t.ICommandService)],I);let L={id:s,type:t.CommandType.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,range:i}=t;return e.get(I).ensureFilterModel(r,n).setRange(i),!0}},R={id:c,type:t.CommandType.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,criteria:i,col:a,reCalc:o=!0}=t,s=e.get(I).getFilterModel(r,n);return s?(s.setCriteria(a,i,o),!0):!1}},z={id:l,type:t.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t;return e.get(I).removeFilterModel(n,r)}},B={id:u,type:t.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t,i=e.get(I).getFilterModel(n,r);return i?(i.reCalc(),!0):!1}},V={id:`sheet.command.set-filter-range`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(I),a=e.get(t.ICommandService),o=e.get(t.IUndoRedoService),s=e.get(t.IUniverInstanceService),{unitId:c,subUnitId:l,range:u}=r;if(!(0,n.getSheetCommandTarget)(s,r)||i.getFilterModel(c,l))return!1;if(u.endRow===u.startRow){let n=e.get(t.ErrorService),r=e.get(t.LocaleService);return n.emit(r.t(`sheets-filter.command.not-valid-filter-range`)),!1}let d={id:L.id,params:{unitId:c,subUnitId:l,range:u}},f=a.syncExecuteCommand(d.id,d.params);return f&&o.pushUndoRedo({unitID:c,undoMutations:[{id:z.id,params:{unitId:c,subUnitId:l}}],redoMutations:[d]}),f}},H={id:`sheet.command.remove-sheet-filter`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService),r);if(!i)return!1;let a=e.get(I),{unitId:o,subUnitId:s}=i,c=a.getFilterModel(o,s);if(!c)return!1;let l=c.getRange();if(!l)return!1;let u=e.get(t.ICommandService),d=e.get(t.IUndoRedoService),f=pe(o,s,c.serialize()),p=u.syncExecuteCommand(z.id,{unitId:o,subUnitId:s});return p&&(d.pushUndoRedo({unitID:o,undoMutations:f,redoMutations:[{id:z.id,params:{unitId:o,subUnitId:s}}]}),u.executeCommand(n.MarkDirtyFilterChangeMutation.id,{unitId:o,subUnitId:s,filterRange:l})),p}},fe={id:`sheet.command.smart-toggle-filter`,type:t.CommandType.COMMAND,handler:async e=>{let r=e.get(t.IUniverInstanceService),i=e.get(I),a=e.get(t.ICommandService),o=r.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET),s=o==null?void 0:o.getActiveSheet();if(!s||!o)return!1;let c=o.getUnitId(),l=s.getSheetId();if(i.getFilterModel(c,l))return a.executeCommand(H.id,{unitId:c,subUnitId:l});let u=e.get(n.SheetsSelectionsService).getCurrentLastSelection();if(!u)return!1;let d=u.range,f=(0,n.isSingleCellSelection)(u)?(0,n.expandToContinuousRange)(d,{left:!0,right:!0,up:!0,down:!0},s):d.startRow===d.endRow?(0,n.expandToContinuousRange)(d,{down:!0},s):d;return a.executeCommand(V.id,{unitId:c,subUnitId:l,range:f})}},U={id:`sheet.command.set-filter-criteria`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService),r);if(!i)return!1;let a=e.get(I),{unitId:o,subUnitId:s}=i,c=a.getFilterModel(o,s);if(!c)return!1;let{col:l,criteria:u}=r,d=c.getRange();if(!d||l<d.startColumn||l>d.endColumn)return!1;let f=e.get(t.ICommandService),p=e.get(t.IUndoRedoService),m=he(o,s,l,c.getFilterColumn(l)),h={id:R.id,params:{unitId:o,subUnitId:s,col:l,criteria:u}},g=f.syncExecuteCommand(h.id,h.params);return g&&(p.pushUndoRedo({unitID:o,undoMutations:[m],redoMutations:[h]}),f.executeCommand(n.MarkDirtyFilterChangeMutation.id,{unitId:o,subUnitId:s,filterRange:d})),g}},W={id:`sheet.command.clear-filter-criteria`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService),r);if(!i)return!1;let a=e.get(I),{unitId:o,subUnitId:s}=i,c=a.getFilterModel(o,s);if(!c)return!1;let l=c.getRange();if(!l)return!1;let u=e.get(t.IUndoRedoService),d=e.get(t.ICommandService),f=c.serialize(),p=K(o,s,f),m=me(o,s,f);return(0,t.sequenceExecute)(m,d).result?(u.pushUndoRedo({unitID:o,undoMutations:p,redoMutations:m}),d.executeCommand(n.MarkDirtyFilterChangeMutation.id,{unitId:o,subUnitId:s,filterRange:l}),!0):!1}},G={id:`sheet.command.re-calc-filter`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(I),a=e.get(t.ICommandService),o=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService),r);if(!o)return!1;let{unitId:s,subUnitId:c}=o;return i.getFilterModel(o.unitId,o.subUnitId)?a.executeCommand(B.id,{unitId:s,subUnitId:c}):!1}};function pe(e,t,n){let r=[],i={id:L.id,params:{unitId:e,subUnitId:t,range:n.ref}};return r.push(i),K(e,t,n).forEach(e=>r.push(e)),r}function K(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:R.id,params:{unitId:e,subUnitId:t,col:n.colId,criteria:n}};i.push(r)}),i}function me(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:R.id,params:{unitId:e,subUnitId:t,col:n.colId,criteria:null}};i.push(r)}),i}function he(e,t,n,r){if(!r)return{id:R.id,params:{unitId:e,subUnitId:t,col:n,criteria:null}};let i=r.serialize();return{id:R.id,params:{unitId:e,subUnitId:t,col:n,criteria:i}}}let q=`sheets-filter.config`,J={};function ge(e,t){for(let n=0;n<e.length;n++){let r=n;if(e[n])for(let i=n+1;i<e.length;i++)e[r]&&e[i]&&t(e[r],e[i])&&(e[r]=null,r=i)}return e.filter(e=>e!==null)}function Y(e){return ge(e,(e,t)=>e.id===R.id&&t.id===R.id&&e.params.unitId===t.params.unitId&&e.params.subUnitId===t.params.subUnitId&&e.params.col===t.params.col)}let X=class extends t.Disposable{constructor(e,n,r,i,a,o,s){super(),this._commandService=e,this._sheetInterceptorService=n,this._sheetsFilterService=r,this._univerInstanceService=i,this._refRangeService=a,this._dataSyncPrimaryController=o,this._zebraCrossingCacheController=s,O(this,`_disposableCollection`,new t.DisposableCollection),this._initCommands(),this._initRowFilteredInterceptor(),this._initInterceptors(),this._commandExecutedListener(),this._initErrorHandling(),this._initZebraCrossingCacheListener()}_initZebraCrossingCacheListener(){this.disposeWithMe(this._sheetsFilterService.activeFilterModel$.subscribe(e=>{e&&this.disposeWithMe(e.filteredOutRows$.subscribe(()=>{this._zebraCrossingCacheController.updateZebraCrossingCache(e.unitId,e.subUnitId)}))}))}_initCommands(){[V,H,U,W,G].forEach(e=>{this.disposeWithMe(this._commandService.registerCommand(e))}),[R,L,B,z].forEach(e=>{var t;this.disposeWithMe(this._commandService.registerCommand(e)),(t=this._dataSyncPrimaryController)==null||t.registerSyncingMutations(e)})}_initInterceptors(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>this._getUpdateFilter(e)})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===n.SetWorksheetActiveOperation.id){let t=e.params,n=t.subUnitId,r=t.unitId;if(!n||!r)return;this._registerRefRange(r,n)}if(e.id===L.id){let t=e.params,n=t.subUnitId,r=t.unitId;if(!n||!r)return;this._registerRefRange(t.unitId,t.subUnitId)}})),this.disposeWithMe(this._sheetsFilterService.loadedUnitId$.subscribe(e=>{if(e){let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET),r=n==null?void 0:n.getActiveSheet();r&&this._registerRefRange(e,r.getSheetId())}}))}_registerRefRange(e,r){var i;this._disposableCollection.dispose();let a=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET),o=a==null?void 0:a.getSheetBySheetId(r);if(!a||!o)return;let s=(i=this._sheetsFilterService.getFilterModel(e,r))==null?void 0:i.getRange();s&&this._disposableCollection.add(this._refRangeService.registerRefRange(s,t=>{switch(t.id){case n.InsertRowCommand.id:{let n=t.params,i=n.unitId||e,a=n.subUnitId||r;return this._handleInsertRowCommand(n,i,a)}case n.InsertColCommand.id:{let n=t.params,i=n.unitId||e,a=n.subUnitId||r;return this.handleInsertColCommand(n.range,i,a)}case n.RemoveColCommand.id:{let n=t.params;return this.handleRemoveColCommand(n.range,e,r)}case n.RemoveRowCommand.id:{let n=t.params;return this._handleRemoveRowCommand(n,e,r)}case n.EffectRefRangId.MoveColsCommandId:{let n=t.params;return this.handleMoveColsCommand({fromRange:n.fromRange,toRange:n.toRange},e,r)}case n.EffectRefRangId.MoveRowsCommandId:{let n=t.params;return this._handleMoveRowsCommand(n,e,r)}case n.MoveRangeCommand.id:{let n=t.params;return this._handleMoveRangeCommand(n,e,r)}}return{redos:[],undos:[]}},e,r))}_getUpdateFilter(e){let{id:t}=e;switch(t){case n.RemoveSheetCommand.id:{let t=e.params;return this._handleRemoveSheetCommand(t,t.unitId,t.subUnitId)}case n.CopySheetCommand.id:{let{targetSubUnitId:t,unitId:n,subUnitId:r}=e.params;return!n||!r||!t?this._handleNull():this._handleCopySheetCommand(n,r,t)}}return{redos:[],undos:[]}}handleInsertColCommand(e,t,n){var r;let i=this._sheetsFilterService.getFilterModel(t,n),a=(r=i==null?void 0:i.getRange())==null?null:r;if(!i||!a)return this._handleNull();let{startColumn:o,endColumn:s}=a,{startColumn:c,endColumn:l}=e,u=l-c+1;if(l>s)return this._handleNull();let d=[],f=[],p=c,m={unitId:t,subUnitId:n,range:{...a,startColumn:c<=o?o+u:o,endColumn:s+u}},h={unitId:t,subUnitId:n,range:a};d.push({id:L.id,params:m}),f.push({id:L.id,params:h});let g=i.getAllFilterColumns().filter(e=>e[0]>=p);if(g.length!==0){let{newRange:e,oldRange:r}=this._moveCriteria(t,n,g,u);d.push(...r.redos,...e.redos),f.push(...e.undos,...r.undos)}return{redos:Y(d),undos:Y(f)}}_handleInsertRowCommand(e,t,n){var r;let i=this._sheetsFilterService.getFilterModel(t,n),a=(r=i==null?void 0:i.getRange())==null?null:r;if(!i||!a)return this._handleNull();let{startRow:o,endRow:s}=a,{startRow:c,endRow:l}=e.range,u=l-c+1;if(l>s)return this._handleNull();let d=[],f=[],p={unitId:t,subUnitId:n,range:{...a,startRow:c<=o?o+u:o,endRow:s+u}},m={unitId:t,subUnitId:n,range:a};return d.push({id:L.id,params:p}),f.push({id:L.id,params:m}),{redos:Y(d),undos:Y(f)}}handleRemoveColCommand(e,t,n){var r;let i=this._sheetsFilterService.getFilterModel(t,n),a=(r=i==null?void 0:i.getRange())==null?null:r;if(!i||!a)return this._handleNull();let{startColumn:o,endColumn:s}=a,{startColumn:c,endColumn:l}=e;if(c>s)return this._handleNull();let u=[],d=[],f=l<o?0:Math.min(l,s)-Math.max(c,o)+1,p=l-c+1,m=i.getAllFilterColumns();m.forEach(e=>{let[r,i]=e;r<=l&&r>=c&&(u.push({id:R.id,params:{unitId:t,subUnitId:n,col:r,criteria:null}}),d.push({id:R.id,params:{unitId:t,subUnitId:n,col:r,criteria:{...i.serialize(),colId:r}}}))});let h=m.filter(e=>{let[t,n]=e;return t>l}),g={undos:[],redos:[]};if(h.length>0){let{oldRange:e,newRange:r}=this._moveCriteria(t,n,h,-p);g=r,u.push(...e.redos),d.unshift(...e.undos)}if(f===s-o+1){let e={unitId:t,subUnitId:n};u.push({id:z.id,params:e}),d.unshift({id:L.id,params:{range:a,unitId:t,subUnitId:n}})}else{let e=o<=c?o:f===0?o-p:c,r=o<=c?s-f:s-p,i={unitId:t,subUnitId:n,range:{...a,startColumn:e,endColumn:r}};u.push({id:L.id,params:i}),d.unshift({id:L.id,params:{range:a,unitId:t,subUnitId:n}}),u.push(...g.redos),d.unshift(...g.undos)}return{undos:d,redos:u}}_handleRemoveRowCommand(e,n,r){let i=this._sheetsFilterService.getFilterModel(n,r);if(!i)return this._handleNull();let a=i.getRange(),{startRow:o,endRow:s}=a,{startRow:c,endRow:l}=e.range;if(c>s)return this._handleNull();if(l<o)return{undos:[{id:L.id,params:{range:a,unitId:n,subUnitId:r}}],redos:[{id:L.id,params:{range:{...a,startRow:o-(l-c+1),endRow:s-(l-c+1)},unitId:n,subUnitId:r}}]};let u=[],d=[],f=i.getAllFilterColumns(),p=o<=l&&o>=c;d.push({id:L.id,params:{range:a,unitId:n,subUnitId:r}});let m=Math.min(l,s)-Math.max(c,o)+1;if(m===s-o+1||p){let e={unitId:n,subUnitId:r};u.push({id:z.id,params:e}),f.forEach(e=>{let[t,i]=e,a={unitId:n,subUnitId:r,col:t,criteria:{...i.serialize(),colId:t}};d.push({id:R.id,params:a})})}else{var h;let e=(h=this._univerInstanceService.getUnit(n,t.UniverInstanceType.UNIVER_SHEET))==null?void 0:h.getSheetBySheetId(r);if(!e)return this._handleNull();let i=this._getFilteredRowCount(e,c,l),d=Math.min(o,c),f=d+(s-o)-m+i,p={unitId:n,subUnitId:r,range:{...a,startRow:d,endRow:f}};u.push({id:L.id,params:p})}return{undos:Y(d),redos:Y(u)}}_getFilteredRowCount(e,t,n){let r=0;for(let i=t;i<=n;i++)e.getRowFiltered(i)&&r++;return r}handleMoveColsCommand({fromRange:e,toRange:n},r,i){var a;let o=this._sheetsFilterService.getFilterModel(r,i),s=(a=o==null?void 0:o.getRange())==null?null:a;if(!o||!s)return this._handleNull();let{startColumn:c,endColumn:l}=s;if(e.endColumn<c&&n.startColumn<=c||e.startColumn>l&&n.endColumn>l)return this._handleNull();let u=[],d=[],f={};for(let e=c;e<=l;e++)f[e]={colIndex:e,filter:o.getFilterColumn(e)};(0,t.moveMatrixArray)(e.startColumn,e.endColumn-e.startColumn+1,n.startColumn,f);let p=s.startColumn,m=s.endColumn;c>=e.startColumn&&c<=e.endColumn&&n.startColumn>e.startColumn&&e.endColumn<l&&(p=e.endColumn+1),l>=e.startColumn&&l<=e.endColumn&&n.startColumn<e.startColumn&&e.startColumn>c&&(m=e.startColumn-1);let h=Object.keys(f).map(e=>Number(e)),g=h.find(e=>f[e].colIndex===m),_=h.find(e=>f[e].colIndex===p);if(h.forEach(e=>{let{colIndex:t,filter:n}=f[e],a=e;if(n){var s;if(a>=_&&a<=g){var c;let e={unitId:r,subUnitId:i,col:a,criteria:{...n.serialize(),colId:a}},t={unitId:r,subUnitId:i,col:a,criteria:o.getFilterColumn(a)?{...(c=o.getFilterColumn(a))==null?void 0:c.serialize(),colId:a}:null};u.push({id:R.id,params:e}),d.push({id:R.id,params:t})}if(!((s=f[t])!=null&&s.filter)){let e={unitId:r,subUnitId:i,col:t,criteria:null};u.push({id:R.id,params:e}),d.push({id:R.id,params:{unitId:r,subUnitId:i,col:t,criteria:{...n.serialize(),colId:t}}})}}}),c!==_||l!==g){let e={unitId:r,subUnitId:i,range:{...s,startColumn:_,endColumn:g}};u.unshift({id:L.id,params:e}),d.unshift({id:L.id,params:{range:s,unitId:r,subUnitId:i}})}return{undos:d,redos:u}}_handleMoveRowsCommand(e,n,r){var i;let a=this._sheetsFilterService.getFilterModel(n,r),o=(i=a==null?void 0:a.getRange())==null?null:i;if(!a||!o)return this._handleNull();let{startRow:s,endRow:c}=o,{fromRange:l,toRange:u}=e;if(l.endRow<s&&u.startRow<=s||l.startRow>c&&u.endRow>c)return this._handleNull();let d=[],f=[],p={};for(let e=s;e<=c;e++)p[e]={oldIndex:e};let m=s,h=c;c>=l.startRow&&c<=l.endRow&&u.startRow<l.startRow&&l.startRow>s&&(h=l.startRow-1),(0,t.moveMatrixArray)(l.startRow,l.endRow-l.startRow+1,u.startRow,p);let g=Object.keys(p).map(e=>Number(e)),_=g.find(e=>p[e].oldIndex===h),v=g.find(e=>p[e].oldIndex===m);if(s!==v||c!==_){let e={unitId:n,subUnitId:r,range:{...o,startRow:v,endRow:_}};d.push({id:L.id,params:e},{id:B.id,params:{unitId:n,subUnitId:r}}),f.push({id:L.id,params:{range:o,unitId:n,subUnitId:r}},{id:B.id,params:{unitId:n,subUnitId:r}})}return{redos:d,undos:f}}_handleMoveRangeCommand(e,n,r){let{fromRange:i,toRange:a}=e,o=this._sheetsFilterService.getFilterModel(n,r);if(!o)return this._handleNull();let s=o.getRange();if(!s)return this._handleNull();let c=[],l=[];if(t.Rectangle.contains(i,s)){let e=s.startRow-i.startRow,t=s.startColumn-i.startColumn,u={startRow:a.startRow+e,startColumn:a.startColumn+t,endRow:a.startRow+e+(s.endRow-s.startRow),endColumn:a.startColumn+t+(s.endColumn-s.startColumn)},d={id:z.id,params:{unitId:n,subUnitId:r}},f={id:L.id,params:{unitId:n,subUnitId:r,range:u}},p={id:L.id,params:{unitId:n,subUnitId:r,range:s}};c.push(d,f),l.push(d,p);let m=o.getAllFilterColumns(),h=a.startColumn-i.startColumn;m.forEach(e=>{let[t,i]=e;i&&(c.push({id:R.id,params:{unitId:n,subUnitId:r,col:t+h,criteria:{...i.serialize(),colId:t+h}}}),l.push({id:R.id,params:{unitId:n,subUnitId:r,col:t,criteria:{...i.serialize(),colId:t}}}))})}else if(t.Rectangle.intersects(a,s)){let e={...s,endRow:Math.max(s.endRow,a.endRow)};c.push({id:L.id,params:{unitId:n,subUnitId:r,range:e}}),l.push({id:L.id,params:{unitId:n,subUnitId:r,range:s}})}return{redos:c,undos:l}}_handleRemoveSheetCommand(e,t,n){let r=this._sheetsFilterService.getFilterModel(t,n);if(!r)return this._handleNull();let i=r.getRange();if(!i)return this._handleNull();let a=[],o=[];return r.getAllFilterColumns().forEach(([e,r])=>{o.push({id:R.id,params:{unitId:t,subUnitId:n,col:e,criteria:{...r.serialize(),colId:e}}})}),a.push({id:z.id,params:{unitId:t,subUnitId:n,range:i}}),o.unshift({id:L.id,params:{range:i,unitId:t,subUnitId:n}}),{undos:o,redos:a}}_handleCopySheetCommand(e,t,n){let r=this._sheetsFilterService.getFilterModel(e,t);if(!r)return this._handleNull();let i=r.getRange();if(!i)return this._handleNull();let a=[],o=[],s=[];return r.getAllFilterColumns().forEach(([t,r])=>{a.push({id:R.id,params:{unitId:e,subUnitId:n,col:t,criteria:{...r.serialize(),colId:t}}}),s.push({id:R.id,params:{unitId:e,subUnitId:n,col:t,criteria:null}})}),s.push({id:z.id,params:{unitId:e,subUnitId:n,range:i}}),a.unshift({id:L.id,params:{range:i,unitId:e,subUnitId:n}}),{undos:o,redos:a,preUndos:s,preRedos:[]}}_handleNull(){return{redos:[],undos:[]}}_initRowFilteredInterceptor(){this.disposeWithMe(this._sheetInterceptorService.intercept(n.INTERCEPTOR_POINT.ROW_FILTERED,{handler:(e,t)=>{var n,r;return e?!0:(n=(r=this._sheetsFilterService.getFilterModel(t.unitId,t.subUnitId))==null?void 0:r.isRowFiltered(t.row))!=null&&n}}))}_moveCriteria(e,t,n,r){let i={unitId:e,subUnitId:t,criteria:null,col:-1},a=[],o=[],s=[],c=[];return n.forEach(e=>{let[t,n]=e;o.push({id:R.id,params:{...i,col:t}}),a.push({id:R.id,params:{...i,col:t,criteria:{...n.serialize(),colId:t}}})}),n.forEach(e=>{let[t,n]=e;c.push({id:R.id,params:{...i,col:t+r,criteria:{...n.serialize(),colId:t+r}}}),s.push({id:R.id,params:{...i,col:t+r,criteria:null}})}),{newRange:{redos:c,undos:s},oldRange:{redos:o,undos:a}}}_commandExecutedListener(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{let{unitId:r,subUnitId:i}=e.params||{},a=this._sheetsFilterService.getFilterModel(r,i);if(!a)return;let o=Array.from(a.filteredOutRows).sort((e,t)=>e-t),s=[],c=!1;if(e.id===n.RemoveRowMutation.id){let{startRow:t,endRow:n}=e.params.range,r=o.filter(e=>e>=t&&e<=n);o.forEach(e=>{if(e<t)s.push(e);else if(c=!0,e<=n){let e=Math.max(t,s.length?s[s.length-1]+1:t);s.push(e)}else s.push(e-(n-t+1-r.length))})}if(e.id===n.InsertRowMutation.id){let{startRow:t,endRow:n}=e.params.range;o.forEach(e=>{e>=t?(c=!0,s.push(e+(n-t+1))):s.push(e)})}if(c&&(a.filteredOutRows=new Set(s)),e.id===n.SetRangeValuesMutation.id&&!(t!=null&&t.onlyLocal)){let t=this._getExtendRegion(r,i);if(t){let a=e.params.cellValue;if(a)for(let e=t.startColumn;e<=t.endColumn;e++){var l;let o=a==null||(l=a[t.startRow])==null?void 0:l[e];if(o&&this._cellHasValue(o)){var u;let e=(u=this._univerInstanceService.getUnit(r))==null?void 0:u.getSheetBySheetId(i);if(e){let a=(0,n.expandToContinuousRange)(t,{down:!0},e),o=this._sheetsFilterService.getFilterModel(r,i),s=o.getRange();o.setRange({...s,endRow:a.endRow}),this._registerRefRange(r,i)}}}}}}))}_getExtendRegion(e,t){var n;let r=this._sheetsFilterService.getFilterModel(e,t);if(!r)return null;let i=(n=this._univerInstanceService.getUnit(e))==null?void 0:n.getSheetBySheetId(t);if(!i)return null;let a=r.getRange();if(!a)return null;let o=i.getRowCount()-1,s=i.getRowManager();for(let e=a.endRow+1;e<=o;e++)if(s.getRowRawVisible(e))return{startRow:e,endRow:e,startColumn:a.startColumn,endColumn:a.endColumn};return null}_initErrorHandling(){this.disposeWithMe(this._commandService.beforeCommandExecuted(e=>{let t=e.params,r=(0,n.getSheetCommandTarget)(this._univerInstanceService,t);if(!r)return;let{subUnitId:i,unitId:a}=r,o=this._sheetsFilterService.getFilterModel(a,i);if(!o)return;let s=o.getRange();if(e.id===n.MoveRowsCommand.id&&t.fromRange.startRow<=s.startRow&&t.fromRange.endRow<s.endRow&&t.fromRange.endRow>=s.startRow)throw this._sheetsFilterService.setFilterErrorMsg(`sheets-filter.msg.filter-header-forbidden`),Error(`[SheetsFilterController]: Cannot move header row of filter`)}))}_cellHasValue(e){let t=Object.values(e);return!(t.length===0||t.every(e=>e==null))}};X=P([N(0,t.ICommandService),N(1,(0,t.Inject)(n.SheetInterceptorService)),N(2,(0,t.Inject)(I)),N(3,t.IUniverInstanceService),N(4,(0,t.Inject)(n.RefRangeService)),N(5,(0,t.Optional)(a.DataSyncPrimaryController)),N(6,(0,t.Inject)(n.ZebraCrossingCacheController))],X);let _e=[R.id,B.id],ve=[n.InsertColMutation.id,n.RemoveColMutation.id,n.MoveColsMutation.id],Z=class extends t.Disposable{get visible(){return this._visible$.getValue()}get enabled(){return this._enabled$.getValue()}constructor(e,n,i){super(),this._sheetsFilterController=e,this._commandService=n,this._configService=i,O(this,`_d`,new t.DisposableCollection),O(this,`_visible$`,new r.BehaviorSubject(!1)),O(this,`visible$`,this._visible$.asObservable()),O(this,`_enabled$`,new r.BehaviorSubject(!0)),O(this,`enabled$`,this._enabled$.asObservable());let a=this._configService.getConfig(q);if(a!=null&&a.enableSyncSwitch&&(this._visible$.next(!0),typeof a.enableSyncSwitch==`object`)){var o;this.setEnabled((o=a.enableSyncSwitch.defaultValue)==null||o)}}setEnabled(e){this._enabled$.next(e),e?this._d.dispose():this._initOnlyLocalListener()}_initOnlyLocalListener(){this._d.add(this._commandService.beforeCommandExecuted((e,t)=>{_e.includes(e.id)&&(t||(t={}),t.onlyLocal=!0)})),this._d.add(this._commandService.onCommandExecuted((e,r)=>{if(ve.includes(e.id)&&r!=null&&r.fromCollab){if(e.id===n.InsertColMutation.id){let{range:n,unitId:i,subUnitId:a}=e.params,{redos:o}=this._sheetsFilterController.handleInsertColCommand(n,i,a);(0,t.sequenceExecute)(o,this._commandService,r)}else if(e.id===n.RemoveColMutation.id){let{range:n,unitId:i,subUnitId:a}=e.params,{redos:o}=this._sheetsFilterController.handleRemoveColCommand(n,i,a);(0,t.sequenceExecute)(o,this._commandService,r)}else if(e.id===n.MoveColsMutation.id){let{sourceRange:n,targetRange:i,unitId:a,subUnitId:o}=e.params,{redos:s}=this._sheetsFilterController.handleMoveColsCommand({fromRange:n,toRange:i},a,o);(0,t.sequenceExecute)(s,this._commandService,r)}}}))}};Z=P([N(0,(0,t.Inject)(X)),N(1,t.ICommandService),N(2,t.IConfigService)],Z);var ye=`@univerjs/sheets-filter`,be=`1.0.0-alpha.8`;let Q=class extends t.Disposable{constructor(e,t,n,r){super(),this._activeDirtyManagerService=e,this._sheetRowFilteredService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._initFormulaDirtyRange(),this._registerSheetRowFiltered()}_initFormulaDirtyRange(){d.forEach(e=>{this._activeDirtyManagerService.register(e,{commandId:e,getDirtyData:e=>{let{unitId:t,subUnitId:n}=e.params;return{dirtyRanges:this._getHideRowMutation(t,n),clearDependencyTreeCache:{[t]:{[n]:`1`}}}}})})}_getHideRowMutation(e,t){var n,r;let i=(n=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:n.getRange(),a=(r=this._univerInstanceService.getUnit(e))==null?void 0:r.getSheetBySheetId(t);if(i==null||a==null)return[];let{startRow:o,endRow:s}=i;return[{unitId:e,sheetId:t,range:{startRow:o,startColumn:0,endRow:s,endColumn:a.getColumnCount()-1}}]}_registerSheetRowFiltered(){this._sheetRowFilteredService.register((e,t,n)=>{var r,i;return(r=(i=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:i.isRowFiltered(n))!=null&&r})}};Q=P([N(0,(0,t.Inject)(o.IActiveDirtyManagerService)),N(1,(0,t.Inject)(o.ISheetRowFilteredService)),N(2,(0,t.Inject)(I)),N(3,t.IUniverInstanceService)],Q);let $=class extends t.Plugin{constructor(e=J,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},J,this._config);this._configService.setConfig(q,i)}onStarting(){[[Q],[I],[X],[Z]].forEach(e=>this._injector.add(e))}onReady(){(0,t.touchDependencies)(this._injector,[[Q],[X],[Z]])}};O($,`type`,t.UniverInstanceType.UNIVER_SHEET),O($,`pluginName`,F),O($,`packageName`,ye),O($,`version`,be),$=P([(0,t.DependentOn)(o.UniverFormulaEnginePlugin,n.UniverSheetsPlugin),N(1,(0,t.Inject)(t.Injector)),N(2,t.IConfigService)],$),e.ClearSheetsFilterCriteriaCommand=W,e.CustomFilterOperator=p,e.FILTER_MUTATIONS=d,e.FilterBy=f,e.FilterColumn=j,e.FilterModel=A,e.ReCalcSheetsFilterCommand=G,e.ReCalcSheetsFilterMutation=B,e.RemoveSheetFilterCommand=H,e.RemoveSheetsFilterMutation=z,e.SHEET_FILTER_SNAPSHOT_ID=F,e.SetSheetFilterRangeCommand=V,e.SetSheetsFilterCriteriaCommand=U,e.SetSheetsFilterCriteriaMutation=R,e.SetSheetsFilterRangeMutation=L,Object.defineProperty(e,"SheetsFilterService",{enumerable:!0,get:function(){return I}}),Object.defineProperty(e,"SheetsFilterSyncController",{enumerable:!0,get:function(){return Z}}),e.SmartToggleSheetsFilterCommand=fe,Object.defineProperty(e,"UniverSheetsFilterPlugin",{enumerable:!0,get:function(){return $}}),e.equals=v,e.getCustomFilterFn=S,e.greaterThan=m,e.greaterThanOrEqualTo=h,e.lessThan=g,e.lessThanOrEqualTo=_,e.notEquals=y});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("rxjs"),require("@univerjs/engine-render"),require("@univerjs/rpc"),require("@univerjs/engine-formula")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/sheets`,`rxjs`,`@univerjs/engine-render`,`@univerjs/rpc`,`@univerjs/engine-formula`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsFilter={},e.UniverCore,e.UniverSheets,e.rxjs,e.UniverEngineRender,e.UniverRpc,e.UniverEngineFormula))})(this,function(e,t,n,r,i,a,o){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let s=`sheet.mutation.set-filter-range`,c=`sheet.mutation.set-filter-criteria`,l=`sheet.mutation.remove-filter`,u=`sheet.mutation.re-calc-filter`,d=new Set([s,c,l,u]),f=function(e){return e[e.VALUES=0]=`VALUES`,e[e.COLORS=1]=`COLORS`,e[e.CONDITIONS=2]=`CONDITIONS`,e}({}),p=function(e){return e.EQUAL=`equal`,e.GREATER_THAN=`greaterThan`,e.GREATER_THAN_OR_EQUAL=`greaterThanOrEqual`,e.LESS_THAN=`lessThan`,e.LESS_THAN_OR_EQUAL=`lessThanOrEqual`,e.NOT_EQUALS=`notEqual`,e}({}),m={operator:`greaterThan`,fn:(e,t)=>S(e)?e>t:!1},h={operator:`greaterThanOrEqual`,fn:(e,t)=>S(e)?e>=t:!1},g={operator:`lessThan`,fn:(e,t)=>S(e)?e<t:!1},_={operator:`lessThanOrEqual`,fn:(e,t)=>S(e)?e<=t:!1},v={operator:`equal`,fn:(e,t)=>S(e)?e===t:!1},y={operator:`notEqual`,fn:(e,n)=>{if(typeof n==`string`){if(n===` `)return e!=null;let r=w(e);return r&&ne(n)?!t.regexp.createFromWildcard(n).test(r):r!==n}return!S(e)||e!==n}},b=new Map([]);[m,h,g,_,v,y].forEach(e=>{b.set(e.operator,e)});function ee(e){return!!e}let te={fn:(e,n)=>{let r=w(e);return r===null?n===``:t.regexp.createFromWildcard(n).test(r)}};function x(e){return e?b.get(e):te}function S(e){return typeof e==`number`}function C(e){return!!(typeof e==`number`||typeof e==`string`&&(0,t.isNumeric)(e))}function w(e){return typeof e==`boolean`||e==null?null:typeof e==`string`?e:e.toString()}function ne(e){return typeof e==`number`?!1:e.indexOf(`*`)!==-1||e.indexOf(`?`)!==-1}function T(e){"@babel/helpers - typeof";return T=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},T(e)}function re(e,t){if(T(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(T(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ie(e){var t=re(e,`string`);return T(t)==`symbol`?t:t+``}function E(e,t,n){return(t=ie(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let D=()=>new Set;var O=class e extends t.Disposable{get filteredOutRows(){return this._filteredOutRows$.getValue()}set filteredOutRows(e){this._alreadyFilteredOutRows=e,this._filteredOutRows$.next(e)}constructor(e,t,n){super(),this.unitId=e,this.subUnitId=t,this._worksheet=n,E(this,`_filteredOutRows$`,new r.BehaviorSubject(D())),E(this,`filteredOutRows$`,this._filteredOutRows$.asObservable()),E(this,`_hasCriteria$`,new r.BehaviorSubject(!1)),E(this,`hasCriteria$`,this._hasCriteria$.asObservable()),E(this,`_filterColumnByIndex`,new Map),E(this,`_alreadyFilteredOutRows`,D()),E(this,`_range`,void 0)}dispose(){super.dispose(),this._filteredOutRows$.complete(),this._hasCriteria$.complete(),this._worksheet=null}serialize(){let e={ref:t.Rectangle.clone(this._range),filterColumns:this._getAllFilterColumns(!0).sort(([e],[t])=>e-t).map(([e,t])=>t.serialize())};return this._alreadyFilteredOutRows&&(e.cachedFilteredOut=Array.from(this._alreadyFilteredOutRows).sort()),e}static deserialize(t,n,r,i){let a=new e(t,n,r);return a._dump(i),a}_dump(e){var t;this.setRange(e.ref),(t=e.filterColumns)==null||t.filter(e=>!(!e.filters&&!e.colorFilters&&!e.customFilters)).forEach(e=>this._setCriteriaWithoutReCalc(e.colId,e)),e.cachedFilteredOut?(this._alreadyFilteredOutRows=new Set(e.cachedFilteredOut),this._emit()):e.filterColumns&&e.filterColumns.length>0&&(this._reCalcAllColumns(),this._emit()),this._emitHasCriteria()}isRowFiltered(e){return this._alreadyFilteredOutRows.has(e)}getRange(){if(!this._range)throw Error(`[FilterModel] could not get range before a range is set!`);return this._range}getFilteredOutRowsExceptCol(e){return this._getAllFilterColumns(!0).filter(([t])=>t!==e).reduce((e,[,n])=>{let r=n.calc({getAlreadyFilteredOutRows:()=>e});return r?(0,t.mergeSets)(e,r):e},new Set)}setRange(e){this._range=e,this._getAllFilterColumns(!0).forEach(([t,n])=>{n.setRangeAndColumn({startRow:e.startRow,endRow:e.endRow,startColumn:t,endColumn:t},t)})}setCriteria(e,t,n=!1){if(!this._range)throw Error(`[FilterModel] could not set criteria before a range is set!`);if(!t){this._removeCriteria(e),this._rebuildAlreadyFilteredOutRowsWithCache(),n&&this._reCalcAllColumns(),this._emit(),this._emitHasCriteria();return}this._setCriteriaWithoutReCalc(e,t),n&&(this._rebuildAlreadyFilteredOutRowsWithCache(),this._getAllFilterColumns().forEach(e=>e.__clearCache()),this._reCalcWithNoCacheColumns(),this._emit(),this._emitHasCriteria())}getAllFilterColumns(){return this._getAllFilterColumns(!0)}getFilterColumn(e){return this._filterColumnByIndex.get(e)??null}reCalc(){this._reCalcAllColumns(),this._emit()}_getAllFilterColumns(e=!1){let t=Array.from(this._filterColumnByIndex.entries());return e?t:t.map(([e,t])=>t)}_reCalcAllColumns(){this._alreadyFilteredOutRows=D(),this._getAllFilterColumns().forEach(e=>e.__clearCache()),this._reCalcWithNoCacheColumns()}_setCriteriaWithoutReCalc(e,t){let n=this._range;if(!n)throw Error(`[FilterModel] could not set criteria before a range is set!`);let{startColumn:r,endColumn:i}=n;if(e>i||e<r)throw Error(`[FilterModel] could not set criteria on column ${e} which is out of range!`);let a;this._filterColumnByIndex.has(e)?a=this._filterColumnByIndex.get(e):(a=new k(this.unitId,this.subUnitId,this._worksheet,t,{getAlreadyFilteredOutRows:()=>this._alreadyFilteredOutRows}),a.setRangeAndColumn(n,e),this._filterColumnByIndex.set(e,a)),a.setCriteria(t)}_removeCriteria(e){let t=this._filterColumnByIndex.get(e);t&&(t.dispose(),this._filterColumnByIndex.delete(e))}_emit(){this._filteredOutRows$.next(this._alreadyFilteredOutRows)}_emitHasCriteria(){this._hasCriteria$.next(this._filterColumnByIndex.size>0)}_rebuildAlreadyFilteredOutRowsWithCache(){let e=this._getAllFilterColumns().filter(e=>e.hasCache()).reduce((e,n)=>(0,t.mergeSets)(e,n.filteredOutRows),new Set);this._alreadyFilteredOutRows=e}_reCalcWithNoCacheColumns(){let e=this._getAllFilterColumns().filter(e=>!e.hasCache());for(let n of e){let e=n.reCalc();e&&(this._alreadyFilteredOutRows=(0,t.mergeSets)(this._alreadyFilteredOutRows,e))}}},k=class extends t.Disposable{get filteredOutRows(){return this._filteredOutRows}get filterBy(){return this._filterBy}constructor(e,t,n,r,i){super(),this.unitId=e,this.subUnitId=t,this._worksheet=n,this._criteria=r,this._filterColumnContext=i,E(this,`_filteredOutRows`,null),E(this,`_filterFn`,null),E(this,`_range`,null),E(this,`_column`,0),E(this,`_filterBy`,0)}dispose(){super.dispose(),this._filteredOutRows=null}__clearCache(){this._filteredOutRows=null}serialize(){if(!this._criteria)throw Error(`[FilterColumn]: could not serialize without a filter column!`);return t.Tools.deepClone({...this._criteria,colId:this._column})}hasCache(){return this._filteredOutRows!==null}setRangeAndColumn(e,t){this._range=e,this._column=t}setCriteria(e){this._criteria=e,this._generateFilterFn(),this._filteredOutRows=null}getColumnData(){return t.Tools.deepClone(this._criteria)}reCalc(){return this._filteredOutRows=this.calc(this._filterColumnContext),this._filteredOutRows}calc(e){if(!this._filterFn)throw Error(`[FilterColumn] cannot calculate without a filter fn!`);if(!this._range)throw Error(`[FilterColumn] cannot calculate without a range!`);if(typeof this._column!=`number`)throw TypeError(`[FilterColumn] cannot calculate without a column offset!`);let n=this._column,r={startColumn:n,endColumn:n,startRow:this._range.startRow+1,endRow:this._range.endRow},i=new Set,a=e.getAlreadyFilteredOutRows();for(let e of this._worksheet.iterateByColumn(r,!1,!1)){let{row:n,rowSpan:r,col:o}=e;if(!(a.has(n)&&(!r||r===1))&&!(this._filterBy===0?this._filterFn((0,t.extractPureTextFromCell)(this._worksheet.getCell(n,o))):this._filterBy===1?this._filterFn(this._worksheet.getComposedCellStyle(n,o)):this._filterFn(fe(this._worksheet,n,o)))&&(i.add(n),r))for(let e=1;e<r;e++)i.add(n+e)}return i}_generateFilterFn(){this._criteria&&(this._filterFn=ae(this._criteria),this._filterBy=this._criteria.filters?0:this._criteria.colorFilters?1:2)}};function ae(e){if(e.filters)return oe(e.filters);if(e.colorFilters)return se(e.colorFilters);if(e.customFilters)return ce(e.customFilters);throw Error(`[FilterModel]: other types of filters are not supported yet.`)}function oe(e){let t=!!e.blank,n=new Set(e.filters);return e=>e===void 0||e===``?t:n.has(typeof e==`string`?e:`${e}`)}function se(e){if(e.cellFillColors){let n=new Set(e.cellFillColors);return e=>{var r;if(!e||!((r=e.bg)!=null&&r.rgb))return!!n.has(null);let i=new t.ColorKit(e.bg.rgb).toRgbString();return n.has(i)}}if(e.cellTextColors){let n=new Set(e.cellTextColors);return e=>{var r;if(!e||!((r=e.cl)!=null&&r.rgb))return!!n.has(i.COLOR_BLACK_RGB);let a=new t.ColorKit(e.cl.rgb).toRgbString();return n.has(a)}}throw Error(`[FilterModel]: color filters are not supported yet.`)}function ce(e){let t=e.customFilters.map(e=>A(e));return de(t)?e.and?le(t):ue(t):t[0]}function le(e){let[t,n]=e;return e=>t(e)&&n(e)}function ue(e){let[t,n]=e;return e=>t(e)||n(e)}function de(e){return e.length===2}function A(e){let t=e.val;if(e.operator===`notEqual`&&!C(t))return e=>y.fn(e,t);if(ee(e.operator)){if(!C(t))return()=>!1;let n=x(e.operator),r=Number(t);return e=>n.fn(e,r)}let n=x(e.operator);return e=>n.fn(e,t)}function fe(e,n,r){let i=e.getCell(n,r);if(!i)return null;let a=e.getCellRaw(n,r);return i&&!a?j(i):a?i.t===t.CellValueType.NUMBER&&typeof i.v==`string`?a.v:i.t===t.CellValueType.NUMBER?Number(a.v):j(a):null}function j(e){var n;let r=(n=e.p)==null||(n=n.body)==null?void 0:n.dataStream;if(r)return r.trimEnd();let i=e.v;return typeof i==`string`?e.t===t.CellValueType.BOOLEAN?i.toUpperCase():i:typeof i==`number`?e.t===t.CellValueType.BOOLEAN?i?`TRUE`:`FALSE`:i:typeof i==`boolean`?i?`TRUE`:`FALSE`:``}function M(e,t){return function(n,r){t(n,r,e)}}function N(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let P=`SHEET_FILTER_PLUGIN`,F=class extends t.Disposable{get activeFilterModel(){return this._activeFilterModel$.getValue()}constructor(e,t,n){super(),this._resourcesManagerService=e,this._univerInstanceService=t,this._commandService=n,E(this,`_filterModels`,new Map),E(this,`_loadedUnitId$`,new r.BehaviorSubject(null)),E(this,`loadedUnitId$`,this._loadedUnitId$.asObservable()),E(this,`_errorMsg$`,new r.BehaviorSubject(null)),E(this,`errorMsg$`,this._errorMsg$.asObservable()),E(this,`_activeFilterModel$`,new r.BehaviorSubject(null)),E(this,`activeFilterModel$`,this._activeFilterModel$.asObservable()),this._initModel(),this._initActiveFilterModel()}ensureFilterModel(e,n){let r=this.getFilterModel(e,n);if(r)return r;let i=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET);if(!i)throw Error(`[SheetsFilterService]: could not create "FilterModel" on a non-existing workbook ${e}!`);let a=i.getSheetBySheetId(n);if(!a)throw Error(`[SheetsFilterService]: could not create "FilterModel" on a non-existing worksheet ${n}!`);let o=new O(e,n,a);return this._cacheFilterModel(e,n,o),o}getFilterModel(e,t){var n;return((n=this._filterModels.get(e))==null?void 0:n.get(t))??null}removeFilterModel(e,t){let n=this.getFilterModel(e,t);return n?(n.dispose(),this._filterModels.get(e).delete(t),!0):!1}setFilterErrorMsg(e){this._errorMsg$.next(e)}_updateActiveFilterModel(){let e;try{if(e=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET),!e){this._activeFilterModel$.next(null);return}}catch(e){console.error(`[SheetsFilterService]: could not get active workbook!`,e);return}let n=e.getActiveSheet(!0);if(!n){this._activeFilterModel$.next(null);return}let r=n.getUnitId(),i=n.getSheetId(),a=this.getFilterModel(r,i);this._activeFilterModel$.next(a)}_initActiveFilterModel(){this.disposeWithMe((0,r.merge)((0,t.fromCallback)(this._commandService.onCommandExecuted.bind(this._commandService)).pipe((0,r.filter)(([e])=>e.type===t.CommandType.MUTATION&&d.has(e.id))),this._univerInstanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_SHEET).pipe((0,r.switchMap)(e=>(e==null?void 0:e.activeSheet$)??(0,r.of)(null)))).subscribe(()=>this._updateActiveFilterModel()))}_serializeAutoFiltersForUnit(e){let t=this._filterModels.get(e);if(!t)return`{}`;let n={};return t.forEach((e,t)=>{n[t]=e.serialize()}),JSON.stringify(n)}_deserializeAutoFiltersForUnit(e,n){let r=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET);Object.keys(n).forEach(t=>{let i=n[t],a=O.deserialize(e,t,r.getSheetBySheetId(t),i);this._cacheFilterModel(e,t,a)})}dispose(){super.dispose(),this._loadedUnitId$.complete(),this._errorMsg$.complete(),this._activeFilterModel$.complete(),this._filterModels.forEach(e=>{e.forEach(e=>e.dispose()),e.clear()}),this._filterModels.clear()}_initModel(){this._resourcesManagerService.registerPluginResource({pluginName:P,businesses:[t.UniverInstanceType.UNIVER_SHEET],toJson:e=>this._serializeAutoFiltersForUnit(e),parseJson:e=>JSON.parse(e),onLoad:(e,t)=>{this._deserializeAutoFiltersForUnit(e,t),this._loadedUnitId$.next(e),this._updateActiveFilterModel()},onUnLoad:e=>{let t=this._filterModels.get(e);t&&(t.forEach(e=>e.dispose()),this._filterModels.delete(e))}})}_cacheFilterModel(e,t,n){this._filterModels.has(e)||this._filterModels.set(e,new Map),this._filterModels.get(e).set(t,n)}};F=N([M(0,t.IResourceManagerService),M(1,t.IUniverInstanceService),M(2,t.ICommandService)],F);let I={id:s,type:t.CommandType.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,range:i}=t;return e.get(F).ensureFilterModel(r,n).setRange(i),!0}},L={id:c,type:t.CommandType.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,criteria:i,col:a,reCalc:o=!0}=t,s=e.get(F).getFilterModel(r,n);return s?(s.setCriteria(a,i,o),!0):!1}},R={id:l,type:t.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t;return e.get(F).removeFilterModel(n,r)}},z={id:u,type:t.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t,i=e.get(F).getFilterModel(n,r);return i?(i.reCalc(),!0):!1}},B={id:`sheet.command.set-filter-range`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(F),a=e.get(t.ICommandService),o=e.get(t.IUndoRedoService),s=e.get(t.IUniverInstanceService),{unitId:c,subUnitId:l,range:u}=r;if(!(0,n.getSheetCommandTarget)(s,r)||i.getFilterModel(c,l))return!1;if(u.endRow===u.startRow){let n=e.get(t.ErrorService),r=e.get(t.LocaleService);return n.emit(r.t(`sheets-filter.command.not-valid-filter-range`)),!1}let d={id:I.id,params:{unitId:c,subUnitId:l,range:u}},f=a.syncExecuteCommand(d.id,d.params);return f&&o.pushUndoRedo({unitID:c,undoMutations:[{id:R.id,params:{unitId:c,subUnitId:l}}],redoMutations:[d]}),f}},V={id:`sheet.command.remove-sheet-filter`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService),r);if(!i)return!1;let a=e.get(F),{unitId:o,subUnitId:s}=i,c=a.getFilterModel(o,s);if(!c)return!1;let l=c.getRange();if(!l)return!1;let u=e.get(t.ICommandService),d=e.get(t.IUndoRedoService),f=me(o,s,c.serialize()),p=u.syncExecuteCommand(R.id,{unitId:o,subUnitId:s});return p&&(d.pushUndoRedo({unitID:o,undoMutations:f,redoMutations:[{id:R.id,params:{unitId:o,subUnitId:s}}]}),u.executeCommand(n.MarkDirtyFilterChangeMutation.id,{unitId:o,subUnitId:s,filterRange:l})),p}},pe={id:`sheet.command.smart-toggle-filter`,type:t.CommandType.COMMAND,handler:async e=>{let r=e.get(t.IUniverInstanceService),i=e.get(F),a=e.get(t.ICommandService),o=r.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET),s=o==null?void 0:o.getActiveSheet();if(!s||!o)return!1;let c=o.getUnitId(),l=s.getSheetId();if(i.getFilterModel(c,l))return a.executeCommand(V.id,{unitId:c,subUnitId:l});let u=e.get(n.SheetsSelectionsService).getCurrentLastSelection();if(!u)return!1;let d=u.range,f=(0,n.isSingleCellSelection)(u)?(0,n.expandToContinuousRange)(d,{left:!0,right:!0,up:!0,down:!0},s):d.startRow===d.endRow?(0,n.expandToContinuousRange)(d,{down:!0},s):d;return a.executeCommand(B.id,{unitId:c,subUnitId:l,range:f})}},H={id:`sheet.command.set-filter-criteria`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService),r);if(!i)return!1;let a=e.get(F),{unitId:o,subUnitId:s}=i,c=a.getFilterModel(o,s);if(!c)return!1;let{col:l,criteria:u}=r,d=c.getRange();if(!d||l<d.startColumn||l>d.endColumn)return!1;let f=e.get(t.ICommandService),p=e.get(t.IUndoRedoService),m=ge(o,s,l,c.getFilterColumn(l)),h={id:L.id,params:{unitId:o,subUnitId:s,col:l,criteria:u}},g=f.syncExecuteCommand(h.id,h.params);return g&&(p.pushUndoRedo({unitID:o,undoMutations:[m],redoMutations:[h]}),f.executeCommand(n.MarkDirtyFilterChangeMutation.id,{unitId:o,subUnitId:s,filterRange:d})),g}},U={id:`sheet.command.clear-filter-criteria`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService),r);if(!i)return!1;let a=e.get(F),{unitId:o,subUnitId:s}=i,c=a.getFilterModel(o,s);if(!c)return!1;let l=c.getRange();if(!l)return!1;let u=e.get(t.IUndoRedoService),d=e.get(t.ICommandService),f=c.serialize(),p=G(o,s,f),m=he(o,s,f);return(0,t.sequenceExecute)(m,d).result?(u.pushUndoRedo({unitID:o,undoMutations:p,redoMutations:m}),d.executeCommand(n.MarkDirtyFilterChangeMutation.id,{unitId:o,subUnitId:s,filterRange:l}),!0):!1}},W={id:`sheet.command.re-calc-filter`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(F),a=e.get(t.ICommandService),o=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService),r);if(!o)return!1;let{unitId:s,subUnitId:c}=o;return i.getFilterModel(o.unitId,o.subUnitId)?a.executeCommand(z.id,{unitId:s,subUnitId:c}):!1}};function me(e,t,n){let r=[],i={id:I.id,params:{unitId:e,subUnitId:t,range:n.ref}};return r.push(i),G(e,t,n).forEach(e=>r.push(e)),r}function G(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:L.id,params:{unitId:e,subUnitId:t,col:n.colId,criteria:n}};i.push(r)}),i}function he(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:L.id,params:{unitId:e,subUnitId:t,col:n.colId,criteria:null}};i.push(r)}),i}function ge(e,t,n,r){if(!r)return{id:L.id,params:{unitId:e,subUnitId:t,col:n,criteria:null}};let i=r.serialize();return{id:L.id,params:{unitId:e,subUnitId:t,col:n,criteria:i}}}let K=`sheets-filter.config`,q={};function _e(e,t){for(let n=0;n<e.length;n++){let r=n;if(e[n])for(let i=n+1;i<e.length;i++)e[r]&&e[i]&&t(e[r],e[i])&&(e[r]=null,r=i)}return e.filter(e=>e!==null)}function J(e){return _e(e,(e,t)=>e.id===L.id&&t.id===L.id&&e.params.unitId===t.params.unitId&&e.params.subUnitId===t.params.subUnitId&&e.params.col===t.params.col)}let Y=class extends t.Disposable{constructor(e,n,r,i,a,o,s){super(),this._commandService=e,this._sheetInterceptorService=n,this._sheetsFilterService=r,this._univerInstanceService=i,this._refRangeService=a,this._dataSyncPrimaryController=o,this._zebraCrossingCacheController=s,E(this,`_disposableCollection`,new t.DisposableCollection),this._initCommands(),this._initRowFilteredInterceptor(),this._initInterceptors(),this._commandExecutedListener(),this._initErrorHandling(),this._initZebraCrossingCacheListener()}_initZebraCrossingCacheListener(){this.disposeWithMe(this._sheetsFilterService.activeFilterModel$.subscribe(e=>{e&&this.disposeWithMe(e.filteredOutRows$.subscribe(()=>{this._zebraCrossingCacheController.updateZebraCrossingCache(e.unitId,e.subUnitId)}))}))}_initCommands(){[B,V,H,U,W].forEach(e=>{this.disposeWithMe(this._commandService.registerCommand(e))}),[L,I,z,R].forEach(e=>{var t;this.disposeWithMe(this._commandService.registerCommand(e)),(t=this._dataSyncPrimaryController)==null||t.registerSyncingMutations(e)})}_initInterceptors(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>this._getUpdateFilter(e)})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===n.SetWorksheetActiveOperation.id){let t=e.params,n=t.subUnitId,r=t.unitId;if(!n||!r)return;this._registerRefRange(r,n)}if(e.id===I.id){let t=e.params,n=t.subUnitId,r=t.unitId;if(!n||!r)return;this._registerRefRange(t.unitId,t.subUnitId)}})),this.disposeWithMe(this._sheetsFilterService.loadedUnitId$.subscribe(e=>{if(e){let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET),r=n==null?void 0:n.getActiveSheet();r&&this._registerRefRange(e,r.getSheetId())}}))}_registerRefRange(e,r){var i;this._disposableCollection.dispose();let a=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET),o=a==null?void 0:a.getSheetBySheetId(r);if(!a||!o)return;let s=(i=this._sheetsFilterService.getFilterModel(e,r))==null?void 0:i.getRange();s&&this._disposableCollection.add(this._refRangeService.registerRefRange(s,t=>{switch(t.id){case n.InsertRowCommand.id:{let n=t.params,i=n.unitId||e,a=n.subUnitId||r;return this._handleInsertRowCommand(n,i,a)}case n.InsertColCommand.id:{let n=t.params,i=n.unitId||e,a=n.subUnitId||r;return this.handleInsertColCommand(n.range,i,a)}case n.RemoveColCommand.id:{let n=t.params;return this.handleRemoveColCommand(n.range,e,r)}case n.RemoveRowCommand.id:{let n=t.params;return this._handleRemoveRowCommand(n,e,r)}case n.EffectRefRangId.MoveColsCommandId:{let n=t.params;return this.handleMoveColsCommand({fromRange:n.fromRange,toRange:n.toRange},e,r)}case n.EffectRefRangId.MoveRowsCommandId:{let n=t.params;return this._handleMoveRowsCommand(n,e,r)}case n.MoveRangeCommand.id:{let n=t.params;return this._handleMoveRangeCommand(n,e,r)}}return{redos:[],undos:[]}},e,r))}_getUpdateFilter(e){let{id:t}=e;switch(t){case n.RemoveSheetCommand.id:{let t=e.params;return this._handleRemoveSheetCommand(t,t.unitId,t.subUnitId)}case n.CopySheetCommand.id:{let{targetSubUnitId:t,unitId:n,subUnitId:r}=e.params;return!n||!r||!t?this._handleNull():this._handleCopySheetCommand(n,r,t)}}return{redos:[],undos:[]}}handleInsertColCommand(e,t,n){let r=this._sheetsFilterService.getFilterModel(t,n),i=(r==null?void 0:r.getRange())??null;if(!r||!i)return this._handleNull();let{startColumn:a,endColumn:o}=i,{startColumn:s,endColumn:c}=e,l=c-s+1;if(c>o)return this._handleNull();let u=[],d=[],f=s,p={unitId:t,subUnitId:n,range:{...i,startColumn:s<=a?a+l:a,endColumn:o+l}},m={unitId:t,subUnitId:n,range:i};u.push({id:I.id,params:p}),d.push({id:I.id,params:m});let h=r.getAllFilterColumns().filter(e=>e[0]>=f);if(h.length!==0){let{newRange:e,oldRange:r}=this._moveCriteria(t,n,h,l);u.push(...r.redos,...e.redos),d.push(...e.undos,...r.undos)}return{redos:J(u),undos:J(d)}}_handleInsertRowCommand(e,t,n){let r=this._sheetsFilterService.getFilterModel(t,n),i=(r==null?void 0:r.getRange())??null;if(!r||!i)return this._handleNull();let{startRow:a,endRow:o}=i,{startRow:s,endRow:c}=e.range,l=c-s+1;if(c>o)return this._handleNull();let u=[],d=[],f={unitId:t,subUnitId:n,range:{...i,startRow:s<=a?a+l:a,endRow:o+l}},p={unitId:t,subUnitId:n,range:i};return u.push({id:I.id,params:f}),d.push({id:I.id,params:p}),{redos:J(u),undos:J(d)}}handleRemoveColCommand(e,t,n){let r=this._sheetsFilterService.getFilterModel(t,n),i=(r==null?void 0:r.getRange())??null;if(!r||!i)return this._handleNull();let{startColumn:a,endColumn:o}=i,{startColumn:s,endColumn:c}=e;if(s>o)return this._handleNull();let l=[],u=[],d=c<a?0:Math.min(c,o)-Math.max(s,a)+1,f=c-s+1,p=r.getAllFilterColumns();p.forEach(e=>{let[r,i]=e;r<=c&&r>=s&&(l.push({id:L.id,params:{unitId:t,subUnitId:n,col:r,criteria:null}}),u.push({id:L.id,params:{unitId:t,subUnitId:n,col:r,criteria:{...i.serialize(),colId:r}}}))});let m=p.filter(e=>{let[t,n]=e;return t>c}),h={undos:[],redos:[]};if(m.length>0){let{oldRange:e,newRange:r}=this._moveCriteria(t,n,m,-f);h=r,l.push(...e.redos),u.unshift(...e.undos)}if(d===o-a+1){let e={unitId:t,subUnitId:n};l.push({id:R.id,params:e}),u.unshift({id:I.id,params:{range:i,unitId:t,subUnitId:n}})}else{let e=a<=s?a:d===0?a-f:s,r=a<=s?o-d:o-f,c={unitId:t,subUnitId:n,range:{...i,startColumn:e,endColumn:r}};l.push({id:I.id,params:c}),u.unshift({id:I.id,params:{range:i,unitId:t,subUnitId:n}}),l.push(...h.redos),u.unshift(...h.undos)}return{undos:u,redos:l}}_handleRemoveRowCommand(e,n,r){let i=this._sheetsFilterService.getFilterModel(n,r);if(!i)return this._handleNull();let a=i.getRange(),{startRow:o,endRow:s}=a,{startRow:c,endRow:l}=e.range;if(c>s)return this._handleNull();if(l<o)return{undos:[{id:I.id,params:{range:a,unitId:n,subUnitId:r}}],redos:[{id:I.id,params:{range:{...a,startRow:o-(l-c+1),endRow:s-(l-c+1)},unitId:n,subUnitId:r}}]};let u=[],d=[],f=i.getAllFilterColumns(),p=o<=l&&o>=c;d.push({id:I.id,params:{range:a,unitId:n,subUnitId:r}});let m=Math.min(l,s)-Math.max(c,o)+1;if(m===s-o+1||p){let e={unitId:n,subUnitId:r};u.push({id:R.id,params:e}),f.forEach(e=>{let[t,i]=e,a={unitId:n,subUnitId:r,col:t,criteria:{...i.serialize(),colId:t}};d.push({id:L.id,params:a})})}else{var h;let e=(h=this._univerInstanceService.getUnit(n,t.UniverInstanceType.UNIVER_SHEET))==null?void 0:h.getSheetBySheetId(r);if(!e)return this._handleNull();let i=this._getFilteredRowCount(e,c,l),d=Math.min(o,c),f=d+(s-o)-m+i,p={unitId:n,subUnitId:r,range:{...a,startRow:d,endRow:f}};u.push({id:I.id,params:p})}return{undos:J(d),redos:J(u)}}_getFilteredRowCount(e,t,n){let r=0;for(let i=t;i<=n;i++)e.getRowFiltered(i)&&r++;return r}handleMoveColsCommand({fromRange:e,toRange:n},r,i){let a=this._sheetsFilterService.getFilterModel(r,i),o=(a==null?void 0:a.getRange())??null;if(!a||!o)return this._handleNull();let{startColumn:s,endColumn:c}=o;if(e.endColumn<s&&n.startColumn<=s||e.startColumn>c&&n.endColumn>c)return this._handleNull();let l=[],u=[],d={};for(let e=s;e<=c;e++)d[e]={colIndex:e,filter:a.getFilterColumn(e)};(0,t.moveMatrixArray)(e.startColumn,e.endColumn-e.startColumn+1,n.startColumn,d);let f=o.startColumn,p=o.endColumn;s>=e.startColumn&&s<=e.endColumn&&n.startColumn>e.startColumn&&e.endColumn<c&&(f=e.endColumn+1),c>=e.startColumn&&c<=e.endColumn&&n.startColumn<e.startColumn&&e.startColumn>s&&(p=e.startColumn-1);let m=Object.keys(d).map(e=>Number(e)),h=m.find(e=>d[e].colIndex===p),g=m.find(e=>d[e].colIndex===f);if(m.forEach(e=>{let{colIndex:t,filter:n}=d[e],o=e;if(n){var s;if(o>=g&&o<=h){var c;let e={unitId:r,subUnitId:i,col:o,criteria:{...n.serialize(),colId:o}},t={unitId:r,subUnitId:i,col:o,criteria:a.getFilterColumn(o)?{...(c=a.getFilterColumn(o))==null?void 0:c.serialize(),colId:o}:null};l.push({id:L.id,params:e}),u.push({id:L.id,params:t})}if(!((s=d[t])!=null&&s.filter)){let e={unitId:r,subUnitId:i,col:t,criteria:null};l.push({id:L.id,params:e}),u.push({id:L.id,params:{unitId:r,subUnitId:i,col:t,criteria:{...n.serialize(),colId:t}}})}}}),s!==g||c!==h){let e={unitId:r,subUnitId:i,range:{...o,startColumn:g,endColumn:h}};l.unshift({id:I.id,params:e}),u.unshift({id:I.id,params:{range:o,unitId:r,subUnitId:i}})}return{undos:u,redos:l}}_handleMoveRowsCommand(e,n,r){let i=this._sheetsFilterService.getFilterModel(n,r),a=(i==null?void 0:i.getRange())??null;if(!i||!a)return this._handleNull();let{startRow:o,endRow:s}=a,{fromRange:c,toRange:l}=e;if(c.endRow<o&&l.startRow<=o||c.startRow>s&&l.endRow>s)return this._handleNull();let u=[],d=[],f={};for(let e=o;e<=s;e++)f[e]={oldIndex:e};let p=o,m=s;s>=c.startRow&&s<=c.endRow&&l.startRow<c.startRow&&c.startRow>o&&(m=c.startRow-1),(0,t.moveMatrixArray)(c.startRow,c.endRow-c.startRow+1,l.startRow,f);let h=Object.keys(f).map(e=>Number(e)),g=h.find(e=>f[e].oldIndex===m),_=h.find(e=>f[e].oldIndex===p);if(o!==_||s!==g){let e={unitId:n,subUnitId:r,range:{...a,startRow:_,endRow:g}};u.push({id:I.id,params:e},{id:z.id,params:{unitId:n,subUnitId:r}}),d.push({id:I.id,params:{range:a,unitId:n,subUnitId:r}},{id:z.id,params:{unitId:n,subUnitId:r}})}return{redos:u,undos:d}}_handleMoveRangeCommand(e,n,r){let{fromRange:i,toRange:a}=e,o=this._sheetsFilterService.getFilterModel(n,r);if(!o)return this._handleNull();let s=o.getRange();if(!s)return this._handleNull();let c=[],l=[];if(t.Rectangle.contains(i,s)){let e=s.startRow-i.startRow,t=s.startColumn-i.startColumn,u={startRow:a.startRow+e,startColumn:a.startColumn+t,endRow:a.startRow+e+(s.endRow-s.startRow),endColumn:a.startColumn+t+(s.endColumn-s.startColumn)},d={id:R.id,params:{unitId:n,subUnitId:r}},f={id:I.id,params:{unitId:n,subUnitId:r,range:u}},p={id:I.id,params:{unitId:n,subUnitId:r,range:s}};c.push(d,f),l.push(d,p);let m=o.getAllFilterColumns(),h=a.startColumn-i.startColumn;m.forEach(e=>{let[t,i]=e;i&&(c.push({id:L.id,params:{unitId:n,subUnitId:r,col:t+h,criteria:{...i.serialize(),colId:t+h}}}),l.push({id:L.id,params:{unitId:n,subUnitId:r,col:t,criteria:{...i.serialize(),colId:t}}}))})}else if(t.Rectangle.intersects(a,s)){let e={...s,endRow:Math.max(s.endRow,a.endRow)};c.push({id:I.id,params:{unitId:n,subUnitId:r,range:e}}),l.push({id:I.id,params:{unitId:n,subUnitId:r,range:s}})}return{redos:c,undos:l}}_handleRemoveSheetCommand(e,t,n){let r=this._sheetsFilterService.getFilterModel(t,n);if(!r)return this._handleNull();let i=r.getRange();if(!i)return this._handleNull();let a=[],o=[];return r.getAllFilterColumns().forEach(([e,r])=>{o.push({id:L.id,params:{unitId:t,subUnitId:n,col:e,criteria:{...r.serialize(),colId:e}}})}),a.push({id:R.id,params:{unitId:t,subUnitId:n,range:i}}),o.unshift({id:I.id,params:{range:i,unitId:t,subUnitId:n}}),{undos:o,redos:a}}_handleCopySheetCommand(e,t,n){let r=this._sheetsFilterService.getFilterModel(e,t);if(!r)return this._handleNull();let i=r.getRange();if(!i)return this._handleNull();let a=[],o=[],s=[];return r.getAllFilterColumns().forEach(([t,r])=>{a.push({id:L.id,params:{unitId:e,subUnitId:n,col:t,criteria:{...r.serialize(),colId:t}}}),s.push({id:L.id,params:{unitId:e,subUnitId:n,col:t,criteria:null}})}),s.push({id:R.id,params:{unitId:e,subUnitId:n,range:i}}),a.unshift({id:I.id,params:{range:i,unitId:e,subUnitId:n}}),{undos:o,redos:a,preUndos:s,preRedos:[]}}_handleNull(){return{redos:[],undos:[]}}_initRowFilteredInterceptor(){this.disposeWithMe(this._sheetInterceptorService.intercept(n.INTERCEPTOR_POINT.ROW_FILTERED,{handler:(e,t)=>{var n;return e?!0:((n=this._sheetsFilterService.getFilterModel(t.unitId,t.subUnitId))==null?void 0:n.isRowFiltered(t.row))??!1}}))}_moveCriteria(e,t,n,r){let i={unitId:e,subUnitId:t,criteria:null,col:-1},a=[],o=[],s=[],c=[];return n.forEach(e=>{let[t,n]=e;o.push({id:L.id,params:{...i,col:t}}),a.push({id:L.id,params:{...i,col:t,criteria:{...n.serialize(),colId:t}}})}),n.forEach(e=>{let[t,n]=e;c.push({id:L.id,params:{...i,col:t+r,criteria:{...n.serialize(),colId:t+r}}}),s.push({id:L.id,params:{...i,col:t+r,criteria:null}})}),{newRange:{redos:c,undos:s},oldRange:{redos:o,undos:a}}}_commandExecutedListener(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{let{unitId:r,subUnitId:i}=e.params||{},a=this._sheetsFilterService.getFilterModel(r,i);if(!a)return;let o=Array.from(a.filteredOutRows).sort((e,t)=>e-t),s=[],c=!1;if(e.id===n.RemoveRowMutation.id){let{startRow:t,endRow:n}=e.params.range,r=o.filter(e=>e>=t&&e<=n);o.forEach(e=>{if(e<t)s.push(e);else if(c=!0,e<=n){let e=Math.max(t,s.length?s[s.length-1]+1:t);s.push(e)}else s.push(e-(n-t+1-r.length))})}if(e.id===n.InsertRowMutation.id){let{startRow:t,endRow:n}=e.params.range;o.forEach(e=>{e>=t?(c=!0,s.push(e+(n-t+1))):s.push(e)})}if(c&&(a.filteredOutRows=new Set(s)),e.id===n.SetRangeValuesMutation.id&&!(t!=null&&t.onlyLocal)){let t=this._getExtendRegion(r,i);if(t){let a=e.params.cellValue;if(a)for(let e=t.startColumn;e<=t.endColumn;e++){var l;let o=a==null||(l=a[t.startRow])==null?void 0:l[e];if(o&&this._cellHasValue(o)){var u;let e=(u=this._univerInstanceService.getUnit(r))==null?void 0:u.getSheetBySheetId(i);if(e){let a=(0,n.expandToContinuousRange)(t,{down:!0},e),o=this._sheetsFilterService.getFilterModel(r,i),s=o.getRange();o.setRange({...s,endRow:a.endRow}),this._registerRefRange(r,i)}}}}}}))}_getExtendRegion(e,t){var n;let r=this._sheetsFilterService.getFilterModel(e,t);if(!r)return null;let i=(n=this._univerInstanceService.getUnit(e))==null?void 0:n.getSheetBySheetId(t);if(!i)return null;let a=r.getRange();if(!a)return null;let o=i.getRowCount()-1,s=i.getRowManager();for(let e=a.endRow+1;e<=o;e++)if(s.getRowRawVisible(e))return{startRow:e,endRow:e,startColumn:a.startColumn,endColumn:a.endColumn};return null}_initErrorHandling(){this.disposeWithMe(this._commandService.beforeCommandExecuted(e=>{let t=e.params,r=(0,n.getSheetCommandTarget)(this._univerInstanceService,t);if(!r)return;let{subUnitId:i,unitId:a}=r,o=this._sheetsFilterService.getFilterModel(a,i);if(!o)return;let s=o.getRange();if(e.id===n.MoveRowsCommand.id&&t.fromRange.startRow<=s.startRow&&t.fromRange.endRow<s.endRow&&t.fromRange.endRow>=s.startRow)throw this._sheetsFilterService.setFilterErrorMsg(`sheets-filter.msg.filter-header-forbidden`),Error(`[SheetsFilterController]: Cannot move header row of filter`)}))}_cellHasValue(e){let t=Object.values(e);return!(t.length===0||t.every(e=>e==null))}};Y=N([M(0,t.ICommandService),M(1,(0,t.Inject)(n.SheetInterceptorService)),M(2,(0,t.Inject)(F)),M(3,t.IUniverInstanceService),M(4,(0,t.Inject)(n.RefRangeService)),M(5,(0,t.Optional)(a.DataSyncPrimaryController)),M(6,(0,t.Inject)(n.ZebraCrossingCacheController))],Y);let ve=[L.id,z.id],X=[n.InsertColMutation.id,n.RemoveColMutation.id,n.MoveColsMutation.id],Z=class extends t.Disposable{get visible(){return this._visible$.getValue()}get enabled(){return this._enabled$.getValue()}constructor(e,n,i){super(),this._sheetsFilterController=e,this._commandService=n,this._configService=i,E(this,`_d`,new t.DisposableCollection),E(this,`_visible$`,new r.BehaviorSubject(!1)),E(this,`visible$`,this._visible$.asObservable()),E(this,`_enabled$`,new r.BehaviorSubject(!0)),E(this,`enabled$`,this._enabled$.asObservable());let a=this._configService.getConfig(K);a!=null&&a.enableSyncSwitch&&(this._visible$.next(!0),typeof a.enableSyncSwitch==`object`&&this.setEnabled(a.enableSyncSwitch.defaultValue??!0))}setEnabled(e){this._enabled$.next(e),e?this._d.dispose():this._initOnlyLocalListener()}_initOnlyLocalListener(){this._d.add(this._commandService.beforeCommandExecuted((e,t)=>{ve.includes(e.id)&&(t||={},t.onlyLocal=!0)})),this._d.add(this._commandService.onCommandExecuted((e,r)=>{if(X.includes(e.id)&&r!=null&&r.fromCollab){if(e.id===n.InsertColMutation.id){let{range:n,unitId:i,subUnitId:a}=e.params,{redos:o}=this._sheetsFilterController.handleInsertColCommand(n,i,a);(0,t.sequenceExecute)(o,this._commandService,r)}else if(e.id===n.RemoveColMutation.id){let{range:n,unitId:i,subUnitId:a}=e.params,{redos:o}=this._sheetsFilterController.handleRemoveColCommand(n,i,a);(0,t.sequenceExecute)(o,this._commandService,r)}else if(e.id===n.MoveColsMutation.id){let{sourceRange:n,targetRange:i,unitId:a,subUnitId:o}=e.params,{redos:s}=this._sheetsFilterController.handleMoveColsCommand({fromRange:n,toRange:i},a,o);(0,t.sequenceExecute)(s,this._commandService,r)}}}))}};Z=N([M(0,(0,t.Inject)(Y)),M(1,t.ICommandService),M(2,t.IConfigService)],Z);var ye=`@univerjs/sheets-filter`,be=`1.0.0-beta.0`;let Q=class extends t.Disposable{constructor(e,t,n,r){super(),this._activeDirtyManagerService=e,this._sheetRowFilteredService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._initFormulaDirtyRange(),this._registerSheetRowFiltered()}_initFormulaDirtyRange(){d.forEach(e=>{this._activeDirtyManagerService.register(e,{commandId:e,getDirtyData:e=>{let{unitId:t,subUnitId:n}=e.params;return{dirtyRanges:this._getHideRowMutation(t,n),clearDependencyTreeCache:{[t]:{[n]:`1`}}}}})})}_getHideRowMutation(e,t){var n,r;let i=(n=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:n.getRange(),a=(r=this._univerInstanceService.getUnit(e))==null?void 0:r.getSheetBySheetId(t);if(i==null||a==null)return[];let{startRow:o,endRow:s}=i;return[{unitId:e,sheetId:t,range:{startRow:o,startColumn:0,endRow:s,endColumn:a.getColumnCount()-1}}]}_registerSheetRowFiltered(){this._sheetRowFilteredService.register((e,t,n)=>{var r;return((r=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:r.isRowFiltered(n))??!1})}};Q=N([M(0,(0,t.Inject)(o.IActiveDirtyManagerService)),M(1,(0,t.Inject)(o.ISheetRowFilteredService)),M(2,(0,t.Inject)(F)),M(3,t.IUniverInstanceService)],Q);let $=class extends t.Plugin{constructor(e=q,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},q,this._config);this._configService.setConfig(K,i)}onStarting(){[[Q],[F],[Y],[Z]].forEach(e=>this._injector.add(e))}onReady(){(0,t.touchDependencies)(this._injector,[[Q],[Y],[Z]])}};E($,`type`,t.UniverInstanceType.UNIVER_SHEET),E($,`pluginName`,P),E($,`packageName`,ye),E($,`version`,be),$=N([(0,t.DependentOn)(o.UniverFormulaEnginePlugin,n.UniverSheetsPlugin),M(1,(0,t.Inject)(t.Injector)),M(2,t.IConfigService)],$),e.ClearSheetsFilterCriteriaCommand=U,e.CustomFilterOperator=p,e.FILTER_MUTATIONS=d,e.FilterBy=f,e.FilterColumn=k,e.FilterModel=O,e.ReCalcSheetsFilterCommand=W,e.ReCalcSheetsFilterMutation=z,e.RemoveSheetFilterCommand=V,e.RemoveSheetsFilterMutation=R,e.SHEET_FILTER_SNAPSHOT_ID=P,e.SetSheetFilterRangeCommand=B,e.SetSheetsFilterCriteriaCommand=H,e.SetSheetsFilterCriteriaMutation=L,e.SetSheetsFilterRangeMutation=I,Object.defineProperty(e,"SheetsFilterService",{enumerable:!0,get:function(){return F}}),Object.defineProperty(e,"SheetsFilterSyncController",{enumerable:!0,get:function(){return Z}}),e.SmartToggleSheetsFilterCommand=pe,Object.defineProperty(e,"UniverSheetsFilterPlugin",{enumerable:!0,get:function(){return $}}),e.equals=v,e.getCustomFilterFn=x,e.greaterThan=m,e.greaterThanOrEqualTo=h,e.lessThan=g,e.lessThanOrEqualTo=_,e.notEquals=y});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/sheets-filter",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-beta.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Filtering model, commands, and services for Univer Sheets.",
|
|
6
6
|
"author": "DreamNum Co., Ltd. <developer@univer.ai>",
|
|
@@ -67,17 +67,17 @@
|
|
|
67
67
|
"rxjs": ">=7.0.0"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@univerjs/engine-
|
|
71
|
-
"@univerjs/
|
|
72
|
-
"@univerjs/
|
|
73
|
-
"@univerjs/engine-
|
|
74
|
-
"@univerjs/sheets": "1.0.0-
|
|
70
|
+
"@univerjs/engine-render": "1.0.0-beta.0",
|
|
71
|
+
"@univerjs/rpc": "1.0.0-beta.0",
|
|
72
|
+
"@univerjs/core": "1.0.0-beta.0",
|
|
73
|
+
"@univerjs/engine-formula": "1.0.0-beta.0",
|
|
74
|
+
"@univerjs/sheets": "1.0.0-beta.0"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"rxjs": "^7.8.2",
|
|
78
78
|
"typescript": "^6.0.3",
|
|
79
79
|
"vitest": "^4.1.10",
|
|
80
|
-
"@univerjs-infra/shared": "1.0.0-
|
|
80
|
+
"@univerjs-infra/shared": "1.0.0-beta.0"
|
|
81
81
|
},
|
|
82
82
|
"scripts": {
|
|
83
83
|
"test": "vitest run",
|