@univerjs/sheets-filter 1.0.0-alpha.6 → 1.0.0-alpha.8

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/facade.js CHANGED
@@ -70,7 +70,7 @@ var FUniverSheetsFilterMixin = class extends _univerjs_core_facade.FUniver {
70
70
  _univerjs_core_facade.FUniver.extend(FUniverSheetsFilterMixin);
71
71
 
72
72
  //#endregion
73
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
73
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
74
74
  function __decorateParam(paramIndex, decorator) {
75
75
  return function(target, key) {
76
76
  decorator(target, key, paramIndex);
@@ -78,7 +78,7 @@ function __decorateParam(paramIndex, decorator) {
78
78
  }
79
79
 
80
80
  //#endregion
81
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
81
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
82
82
  function __decorate(decorators, target, key, desc) {
83
83
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
84
84
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
package/lib/cjs/index.js CHANGED
@@ -164,7 +164,7 @@ function isWildCardString(str) {
164
164
  }
165
165
 
166
166
  //#endregion
167
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
167
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/typeof.js
168
168
  function _typeof(o) {
169
169
  "@babel/helpers - typeof";
170
170
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -175,7 +175,7 @@ function _typeof(o) {
175
175
  }
176
176
 
177
177
  //#endregion
178
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
178
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPrimitive.js
179
179
  function toPrimitive(t, r) {
180
180
  if ("object" != _typeof(t) || !t) return t;
181
181
  var e = t[Symbol.toPrimitive];
@@ -188,14 +188,14 @@ function toPrimitive(t, r) {
188
188
  }
189
189
 
190
190
  //#endregion
191
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
191
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPropertyKey.js
192
192
  function toPropertyKey(t) {
193
193
  var i = toPrimitive(t, "string");
194
194
  return "symbol" == _typeof(i) ? i : i + "";
195
195
  }
196
196
 
197
197
  //#endregion
198
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
198
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/defineProperty.js
199
199
  function _defineProperty(e, r, t) {
200
200
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
201
201
  value: t,
@@ -596,7 +596,7 @@ function extractFilterValueFromCell(cell) {
596
596
  }
597
597
 
598
598
  //#endregion
599
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
599
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
600
600
  function __decorateParam(paramIndex, decorator) {
601
601
  return function(target, key) {
602
602
  decorator(target, key, paramIndex);
@@ -604,7 +604,7 @@ function __decorateParam(paramIndex, decorator) {
604
604
  }
605
605
 
606
606
  //#endregion
607
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
607
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
608
608
  function __decorate(decorators, target, key, desc) {
609
609
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
610
610
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -643,7 +643,7 @@ let SheetsFilterService = class SheetsFilterService extends _univerjs_core.Dispo
643
643
  ensureFilterModel(unitId, subUnitId) {
644
644
  const already = this.getFilterModel(unitId, subUnitId);
645
645
  if (already) return already;
646
- const workbook = this._univerInstanceService.getUniverSheetInstance(unitId);
646
+ const workbook = this._univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_SHEET);
647
647
  if (!workbook) throw new Error(`[SheetsFilterService]: could not create "FilterModel" on a non-existing workbook ${unitId}!`);
648
648
  const worksheet = workbook.getSheetBySheetId(subUnitId);
649
649
  if (!worksheet) throw new Error(`[SheetsFilterService]: could not create "FilterModel" on a non-existing worksheet ${subUnitId}!`);
@@ -705,7 +705,7 @@ let SheetsFilterService = class SheetsFilterService extends _univerjs_core.Dispo
705
705
  return JSON.stringify(json);
706
706
  }
707
707
  _deserializeAutoFiltersForUnit(unitId, json) {
708
- const workbook = this._univerInstanceService.getUniverSheetInstance(unitId);
708
+ const workbook = this._univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_SHEET);
709
709
  Object.keys(json).forEach((worksheetId) => {
710
710
  const autoFilter = json[worksheetId];
711
711
  const filterModel = FilterModel.deserialize(unitId, worksheetId, workbook.getSheetBySheetId(worksheetId), autoFilter);
@@ -1242,7 +1242,7 @@ let SheetsFilterController = class SheetsFilterController extends _univerjs_core
1242
1242
  }));
1243
1243
  this.disposeWithMe(this._sheetsFilterService.loadedUnitId$.subscribe((unitId) => {
1244
1244
  if (unitId) {
1245
- const workbook = this._univerInstanceService.getUniverSheetInstance(unitId);
1245
+ const workbook = this._univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_SHEET);
1246
1246
  const sheet = workbook === null || workbook === void 0 ? void 0 : workbook.getActiveSheet();
1247
1247
  if (sheet) this._registerRefRange(unitId, sheet.getSheetId());
1248
1248
  }
@@ -1251,7 +1251,7 @@ let SheetsFilterController = class SheetsFilterController extends _univerjs_core
1251
1251
  _registerRefRange(unitId, subUnitId) {
1252
1252
  var _this$_sheetsFilterSe;
1253
1253
  this._disposableCollection.dispose();
1254
- const workbook = this._univerInstanceService.getUniverSheetInstance(unitId);
1254
+ const workbook = this._univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_SHEET);
1255
1255
  const workSheet = workbook === null || workbook === void 0 ? void 0 : workbook.getSheetBySheetId(subUnitId);
1256
1256
  if (!workbook || !workSheet) return;
1257
1257
  const range = (_this$_sheetsFilterSe = this._sheetsFilterService.getFilterModel(unitId, subUnitId)) === null || _this$_sheetsFilterSe === void 0 ? void 0 : _this$_sheetsFilterSe.getRange();
@@ -1572,7 +1572,7 @@ let SheetsFilterController = class SheetsFilterController extends _univerjs_core
1572
1572
  });
1573
1573
  } else {
1574
1574
  var _this$_univerInstance;
1575
- const worksheet = (_this$_univerInstance = this._univerInstanceService.getUniverSheetInstance(unitId)) === null || _this$_univerInstance === void 0 ? void 0 : _this$_univerInstance.getSheetBySheetId(subUnitId);
1575
+ const worksheet = (_this$_univerInstance = this._univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_SHEET)) === null || _this$_univerInstance === void 0 ? void 0 : _this$_univerInstance.getSheetBySheetId(subUnitId);
1576
1576
  if (!worksheet) return this._handleNull();
1577
1577
  const hiddenRowCount = this._getFilteredRowCount(worksheet, removeStartRow, removeEndRow);
1578
1578
  const afterStartRow = Math.min(startRow, removeStartRow);
@@ -2229,7 +2229,7 @@ SheetsFilterSyncController = __decorate([
2229
2229
  //#endregion
2230
2230
  //#region package.json
2231
2231
  var name = "@univerjs/sheets-filter";
2232
- var version = "1.0.0-alpha.6";
2232
+ var version = "1.0.0-alpha.8";
2233
2233
 
2234
2234
  //#endregion
2235
2235
  //#region src/services/sheet-filter-formula.service.ts
@@ -2319,7 +2319,11 @@ _defineProperty(UniverSheetsFilterPlugin, "type", _univerjs_core.UniverInstanceT
2319
2319
  _defineProperty(UniverSheetsFilterPlugin, "pluginName", SHEET_FILTER_SNAPSHOT_ID);
2320
2320
  _defineProperty(UniverSheetsFilterPlugin, "packageName", name);
2321
2321
  _defineProperty(UniverSheetsFilterPlugin, "version", version);
2322
- UniverSheetsFilterPlugin = __decorate([__decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_core.Injector)), __decorateParam(2, _univerjs_core.IConfigService)], UniverSheetsFilterPlugin);
2322
+ UniverSheetsFilterPlugin = __decorate([
2323
+ (0, _univerjs_core.DependentOn)(_univerjs_engine_formula.UniverFormulaEnginePlugin, _univerjs_sheets.UniverSheetsPlugin),
2324
+ __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_core.Injector)),
2325
+ __decorateParam(2, _univerjs_core.IConfigService)
2326
+ ], UniverSheetsFilterPlugin);
2323
2327
 
2324
2328
  //#endregion
2325
2329
  exports.ClearSheetsFilterCriteriaCommand = ClearSheetsFilterCriteriaCommand;
package/lib/es/facade.js CHANGED
@@ -69,7 +69,7 @@ var FUniverSheetsFilterMixin = class extends FUniver {
69
69
  FUniver.extend(FUniverSheetsFilterMixin);
70
70
 
71
71
  //#endregion
72
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
72
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
73
73
  function __decorateParam(paramIndex, decorator) {
74
74
  return function(target, key) {
75
75
  decorator(target, key, paramIndex);
@@ -77,7 +77,7 @@ function __decorateParam(paramIndex, decorator) {
77
77
  }
78
78
 
79
79
  //#endregion
80
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
80
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
81
81
  function __decorate(decorators, target, key, desc) {
82
82
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
83
83
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
package/lib/es/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { CellValueType, ColorKit, CommandType, Disposable, DisposableCollection, ErrorService, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, LocaleService, Optional, Plugin, Rectangle, Tools, UniverInstanceType, extractPureTextFromCell, fromCallback, isNumeric, merge, mergeSets, moveMatrixArray, regexp, sequenceExecute, touchDependencies } from "@univerjs/core";
2
- import { CopySheetCommand, EffectRefRangId, INTERCEPTOR_POINT, InsertColCommand, InsertColMutation, InsertRowCommand, InsertRowMutation, MarkDirtyFilterChangeMutation, MoveColsMutation, MoveRangeCommand, MoveRowsCommand, RefRangeService, RemoveColCommand, RemoveColMutation, RemoveRowCommand, RemoveRowMutation, RemoveSheetCommand, SetRangeValuesMutation, SetWorksheetActiveOperation, SheetInterceptorService, SheetsSelectionsService, ZebraCrossingCacheController, expandToContinuousRange, getSheetCommandTarget, isSingleCellSelection } from "@univerjs/sheets";
1
+ import { CellValueType, ColorKit, CommandType, DependentOn, Disposable, DisposableCollection, ErrorService, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, LocaleService, Optional, Plugin, Rectangle, Tools, UniverInstanceType, extractPureTextFromCell, fromCallback, isNumeric, merge, mergeSets, moveMatrixArray, regexp, sequenceExecute, touchDependencies } from "@univerjs/core";
2
+ import { CopySheetCommand, EffectRefRangId, INTERCEPTOR_POINT, InsertColCommand, InsertColMutation, InsertRowCommand, InsertRowMutation, MarkDirtyFilterChangeMutation, MoveColsMutation, MoveRangeCommand, MoveRowsCommand, RefRangeService, RemoveColCommand, RemoveColMutation, RemoveRowCommand, RemoveRowMutation, RemoveSheetCommand, SetRangeValuesMutation, SetWorksheetActiveOperation, SheetInterceptorService, SheetsSelectionsService, UniverSheetsPlugin, ZebraCrossingCacheController, expandToContinuousRange, getSheetCommandTarget, isSingleCellSelection } from "@univerjs/sheets";
3
3
  import { BehaviorSubject, filter, merge as merge$1, of, switchMap } from "rxjs";
4
4
  import { COLOR_BLACK_RGB } from "@univerjs/engine-render";
5
5
  import { DataSyncPrimaryController } from "@univerjs/rpc";
6
- import { IActiveDirtyManagerService, ISheetRowFilteredService } from "@univerjs/engine-formula";
6
+ import { IActiveDirtyManagerService, ISheetRowFilteredService, UniverFormulaEnginePlugin } from "@univerjs/engine-formula";
7
7
 
8
8
  //#region src/common/const.ts
9
9
  /**
@@ -163,7 +163,7 @@ function isWildCardString(str) {
163
163
  }
164
164
 
165
165
  //#endregion
166
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
166
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/typeof.js
167
167
  function _typeof(o) {
168
168
  "@babel/helpers - typeof";
169
169
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -174,7 +174,7 @@ function _typeof(o) {
174
174
  }
175
175
 
176
176
  //#endregion
177
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
177
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPrimitive.js
178
178
  function toPrimitive(t, r) {
179
179
  if ("object" != _typeof(t) || !t) return t;
180
180
  var e = t[Symbol.toPrimitive];
@@ -187,14 +187,14 @@ function toPrimitive(t, r) {
187
187
  }
188
188
 
189
189
  //#endregion
190
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
190
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPropertyKey.js
191
191
  function toPropertyKey(t) {
192
192
  var i = toPrimitive(t, "string");
193
193
  return "symbol" == _typeof(i) ? i : i + "";
194
194
  }
195
195
 
196
196
  //#endregion
197
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
197
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/defineProperty.js
198
198
  function _defineProperty(e, r, t) {
199
199
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
200
200
  value: t,
@@ -595,7 +595,7 @@ function extractFilterValueFromCell(cell) {
595
595
  }
596
596
 
597
597
  //#endregion
598
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
598
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
599
599
  function __decorateParam(paramIndex, decorator) {
600
600
  return function(target, key) {
601
601
  decorator(target, key, paramIndex);
@@ -603,7 +603,7 @@ function __decorateParam(paramIndex, decorator) {
603
603
  }
604
604
 
605
605
  //#endregion
606
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
606
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
607
607
  function __decorate(decorators, target, key, desc) {
608
608
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
609
609
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -642,7 +642,7 @@ let SheetsFilterService = class SheetsFilterService extends Disposable {
642
642
  ensureFilterModel(unitId, subUnitId) {
643
643
  const already = this.getFilterModel(unitId, subUnitId);
644
644
  if (already) return already;
645
- const workbook = this._univerInstanceService.getUniverSheetInstance(unitId);
645
+ const workbook = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_SHEET);
646
646
  if (!workbook) throw new Error(`[SheetsFilterService]: could not create "FilterModel" on a non-existing workbook ${unitId}!`);
647
647
  const worksheet = workbook.getSheetBySheetId(subUnitId);
648
648
  if (!worksheet) throw new Error(`[SheetsFilterService]: could not create "FilterModel" on a non-existing worksheet ${subUnitId}!`);
@@ -704,7 +704,7 @@ let SheetsFilterService = class SheetsFilterService extends Disposable {
704
704
  return JSON.stringify(json);
705
705
  }
706
706
  _deserializeAutoFiltersForUnit(unitId, json) {
707
- const workbook = this._univerInstanceService.getUniverSheetInstance(unitId);
707
+ const workbook = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_SHEET);
708
708
  Object.keys(json).forEach((worksheetId) => {
709
709
  const autoFilter = json[worksheetId];
710
710
  const filterModel = FilterModel.deserialize(unitId, worksheetId, workbook.getSheetBySheetId(worksheetId), autoFilter);
@@ -1241,7 +1241,7 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
1241
1241
  }));
1242
1242
  this.disposeWithMe(this._sheetsFilterService.loadedUnitId$.subscribe((unitId) => {
1243
1243
  if (unitId) {
1244
- const workbook = this._univerInstanceService.getUniverSheetInstance(unitId);
1244
+ const workbook = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_SHEET);
1245
1245
  const sheet = workbook === null || workbook === void 0 ? void 0 : workbook.getActiveSheet();
1246
1246
  if (sheet) this._registerRefRange(unitId, sheet.getSheetId());
1247
1247
  }
@@ -1250,7 +1250,7 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
1250
1250
  _registerRefRange(unitId, subUnitId) {
1251
1251
  var _this$_sheetsFilterSe;
1252
1252
  this._disposableCollection.dispose();
1253
- const workbook = this._univerInstanceService.getUniverSheetInstance(unitId);
1253
+ const workbook = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_SHEET);
1254
1254
  const workSheet = workbook === null || workbook === void 0 ? void 0 : workbook.getSheetBySheetId(subUnitId);
1255
1255
  if (!workbook || !workSheet) return;
1256
1256
  const range = (_this$_sheetsFilterSe = this._sheetsFilterService.getFilterModel(unitId, subUnitId)) === null || _this$_sheetsFilterSe === void 0 ? void 0 : _this$_sheetsFilterSe.getRange();
@@ -1571,7 +1571,7 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
1571
1571
  });
1572
1572
  } else {
1573
1573
  var _this$_univerInstance;
1574
- const worksheet = (_this$_univerInstance = this._univerInstanceService.getUniverSheetInstance(unitId)) === null || _this$_univerInstance === void 0 ? void 0 : _this$_univerInstance.getSheetBySheetId(subUnitId);
1574
+ const worksheet = (_this$_univerInstance = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_SHEET)) === null || _this$_univerInstance === void 0 ? void 0 : _this$_univerInstance.getSheetBySheetId(subUnitId);
1575
1575
  if (!worksheet) return this._handleNull();
1576
1576
  const hiddenRowCount = this._getFilteredRowCount(worksheet, removeStartRow, removeEndRow);
1577
1577
  const afterStartRow = Math.min(startRow, removeStartRow);
@@ -2228,7 +2228,7 @@ SheetsFilterSyncController = __decorate([
2228
2228
  //#endregion
2229
2229
  //#region package.json
2230
2230
  var name = "@univerjs/sheets-filter";
2231
- var version = "1.0.0-alpha.6";
2231
+ var version = "1.0.0-alpha.8";
2232
2232
 
2233
2233
  //#endregion
2234
2234
  //#region src/services/sheet-filter-formula.service.ts
@@ -2318,7 +2318,11 @@ _defineProperty(UniverSheetsFilterPlugin, "type", UniverInstanceType.UNIVER_SHEE
2318
2318
  _defineProperty(UniverSheetsFilterPlugin, "pluginName", SHEET_FILTER_SNAPSHOT_ID);
2319
2319
  _defineProperty(UniverSheetsFilterPlugin, "packageName", name);
2320
2320
  _defineProperty(UniverSheetsFilterPlugin, "version", version);
2321
- UniverSheetsFilterPlugin = __decorate([__decorateParam(1, Inject(Injector)), __decorateParam(2, IConfigService)], UniverSheetsFilterPlugin);
2321
+ UniverSheetsFilterPlugin = __decorate([
2322
+ DependentOn(UniverFormulaEnginePlugin, UniverSheetsPlugin),
2323
+ __decorateParam(1, Inject(Injector)),
2324
+ __decorateParam(2, IConfigService)
2325
+ ], UniverSheetsFilterPlugin);
2322
2326
 
2323
2327
  //#endregion
2324
2328
  export { ClearSheetsFilterCriteriaCommand, CustomFilterOperator, FILTER_MUTATIONS, FilterBy, FilterColumn, FilterModel, ReCalcSheetsFilterCommand, ReCalcSheetsFilterMutation, RemoveSheetFilterCommand, RemoveSheetsFilterMutation, SHEET_FILTER_SNAPSHOT_ID, SetSheetFilterRangeCommand, SetSheetsFilterCriteriaCommand, SetSheetsFilterCriteriaMutation, SetSheetsFilterRangeMutation, SheetsFilterService, SheetsFilterSyncController, SmartToggleSheetsFilterCommand, UniverSheetsFilterPlugin, equals, getCustomFilterFn, greaterThan, greaterThanOrEqualTo, lessThan, lessThanOrEqualTo, notEquals };
package/lib/facade.js CHANGED
@@ -69,7 +69,7 @@ var FUniverSheetsFilterMixin = class extends FUniver {
69
69
  FUniver.extend(FUniverSheetsFilterMixin);
70
70
 
71
71
  //#endregion
72
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
72
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
73
73
  function __decorateParam(paramIndex, decorator) {
74
74
  return function(target, key) {
75
75
  decorator(target, key, paramIndex);
@@ -77,7 +77,7 @@ function __decorateParam(paramIndex, decorator) {
77
77
  }
78
78
 
79
79
  //#endregion
80
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
80
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
81
81
  function __decorate(decorators, target, key, desc) {
82
82
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
83
83
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
package/lib/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { CellValueType, ColorKit, CommandType, Disposable, DisposableCollection, ErrorService, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, LocaleService, Optional, Plugin, Rectangle, Tools, UniverInstanceType, extractPureTextFromCell, fromCallback, isNumeric, merge, mergeSets, moveMatrixArray, regexp, sequenceExecute, touchDependencies } from "@univerjs/core";
2
- import { CopySheetCommand, EffectRefRangId, INTERCEPTOR_POINT, InsertColCommand, InsertColMutation, InsertRowCommand, InsertRowMutation, MarkDirtyFilterChangeMutation, MoveColsMutation, MoveRangeCommand, MoveRowsCommand, RefRangeService, RemoveColCommand, RemoveColMutation, RemoveRowCommand, RemoveRowMutation, RemoveSheetCommand, SetRangeValuesMutation, SetWorksheetActiveOperation, SheetInterceptorService, SheetsSelectionsService, ZebraCrossingCacheController, expandToContinuousRange, getSheetCommandTarget, isSingleCellSelection } from "@univerjs/sheets";
1
+ import { CellValueType, ColorKit, CommandType, DependentOn, Disposable, DisposableCollection, ErrorService, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, LocaleService, Optional, Plugin, Rectangle, Tools, UniverInstanceType, extractPureTextFromCell, fromCallback, isNumeric, merge, mergeSets, moveMatrixArray, regexp, sequenceExecute, touchDependencies } from "@univerjs/core";
2
+ import { CopySheetCommand, EffectRefRangId, INTERCEPTOR_POINT, InsertColCommand, InsertColMutation, InsertRowCommand, InsertRowMutation, MarkDirtyFilterChangeMutation, MoveColsMutation, MoveRangeCommand, MoveRowsCommand, RefRangeService, RemoveColCommand, RemoveColMutation, RemoveRowCommand, RemoveRowMutation, RemoveSheetCommand, SetRangeValuesMutation, SetWorksheetActiveOperation, SheetInterceptorService, SheetsSelectionsService, UniverSheetsPlugin, ZebraCrossingCacheController, expandToContinuousRange, getSheetCommandTarget, isSingleCellSelection } from "@univerjs/sheets";
3
3
  import { BehaviorSubject, filter, merge as merge$1, of, switchMap } from "rxjs";
4
4
  import { COLOR_BLACK_RGB } from "@univerjs/engine-render";
5
5
  import { DataSyncPrimaryController } from "@univerjs/rpc";
6
- import { IActiveDirtyManagerService, ISheetRowFilteredService } from "@univerjs/engine-formula";
6
+ import { IActiveDirtyManagerService, ISheetRowFilteredService, UniverFormulaEnginePlugin } from "@univerjs/engine-formula";
7
7
 
8
8
  //#region src/common/const.ts
9
9
  /**
@@ -163,7 +163,7 @@ function isWildCardString(str) {
163
163
  }
164
164
 
165
165
  //#endregion
166
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
166
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/typeof.js
167
167
  function _typeof(o) {
168
168
  "@babel/helpers - typeof";
169
169
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -174,7 +174,7 @@ function _typeof(o) {
174
174
  }
175
175
 
176
176
  //#endregion
177
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
177
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPrimitive.js
178
178
  function toPrimitive(t, r) {
179
179
  if ("object" != _typeof(t) || !t) return t;
180
180
  var e = t[Symbol.toPrimitive];
@@ -187,14 +187,14 @@ function toPrimitive(t, r) {
187
187
  }
188
188
 
189
189
  //#endregion
190
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
190
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPropertyKey.js
191
191
  function toPropertyKey(t) {
192
192
  var i = toPrimitive(t, "string");
193
193
  return "symbol" == _typeof(i) ? i : i + "";
194
194
  }
195
195
 
196
196
  //#endregion
197
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
197
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/defineProperty.js
198
198
  function _defineProperty(e, r, t) {
199
199
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
200
200
  value: t,
@@ -595,7 +595,7 @@ function extractFilterValueFromCell(cell) {
595
595
  }
596
596
 
597
597
  //#endregion
598
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
598
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
599
599
  function __decorateParam(paramIndex, decorator) {
600
600
  return function(target, key) {
601
601
  decorator(target, key, paramIndex);
@@ -603,7 +603,7 @@ function __decorateParam(paramIndex, decorator) {
603
603
  }
604
604
 
605
605
  //#endregion
606
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
606
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
607
607
  function __decorate(decorators, target, key, desc) {
608
608
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
609
609
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -642,7 +642,7 @@ let SheetsFilterService = class SheetsFilterService extends Disposable {
642
642
  ensureFilterModel(unitId, subUnitId) {
643
643
  const already = this.getFilterModel(unitId, subUnitId);
644
644
  if (already) return already;
645
- const workbook = this._univerInstanceService.getUniverSheetInstance(unitId);
645
+ const workbook = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_SHEET);
646
646
  if (!workbook) throw new Error(`[SheetsFilterService]: could not create "FilterModel" on a non-existing workbook ${unitId}!`);
647
647
  const worksheet = workbook.getSheetBySheetId(subUnitId);
648
648
  if (!worksheet) throw new Error(`[SheetsFilterService]: could not create "FilterModel" on a non-existing worksheet ${subUnitId}!`);
@@ -704,7 +704,7 @@ let SheetsFilterService = class SheetsFilterService extends Disposable {
704
704
  return JSON.stringify(json);
705
705
  }
706
706
  _deserializeAutoFiltersForUnit(unitId, json) {
707
- const workbook = this._univerInstanceService.getUniverSheetInstance(unitId);
707
+ const workbook = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_SHEET);
708
708
  Object.keys(json).forEach((worksheetId) => {
709
709
  const autoFilter = json[worksheetId];
710
710
  const filterModel = FilterModel.deserialize(unitId, worksheetId, workbook.getSheetBySheetId(worksheetId), autoFilter);
@@ -1241,7 +1241,7 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
1241
1241
  }));
1242
1242
  this.disposeWithMe(this._sheetsFilterService.loadedUnitId$.subscribe((unitId) => {
1243
1243
  if (unitId) {
1244
- const workbook = this._univerInstanceService.getUniverSheetInstance(unitId);
1244
+ const workbook = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_SHEET);
1245
1245
  const sheet = workbook === null || workbook === void 0 ? void 0 : workbook.getActiveSheet();
1246
1246
  if (sheet) this._registerRefRange(unitId, sheet.getSheetId());
1247
1247
  }
@@ -1250,7 +1250,7 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
1250
1250
  _registerRefRange(unitId, subUnitId) {
1251
1251
  var _this$_sheetsFilterSe;
1252
1252
  this._disposableCollection.dispose();
1253
- const workbook = this._univerInstanceService.getUniverSheetInstance(unitId);
1253
+ const workbook = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_SHEET);
1254
1254
  const workSheet = workbook === null || workbook === void 0 ? void 0 : workbook.getSheetBySheetId(subUnitId);
1255
1255
  if (!workbook || !workSheet) return;
1256
1256
  const range = (_this$_sheetsFilterSe = this._sheetsFilterService.getFilterModel(unitId, subUnitId)) === null || _this$_sheetsFilterSe === void 0 ? void 0 : _this$_sheetsFilterSe.getRange();
@@ -1571,7 +1571,7 @@ let SheetsFilterController = class SheetsFilterController extends Disposable {
1571
1571
  });
1572
1572
  } else {
1573
1573
  var _this$_univerInstance;
1574
- const worksheet = (_this$_univerInstance = this._univerInstanceService.getUniverSheetInstance(unitId)) === null || _this$_univerInstance === void 0 ? void 0 : _this$_univerInstance.getSheetBySheetId(subUnitId);
1574
+ const worksheet = (_this$_univerInstance = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_SHEET)) === null || _this$_univerInstance === void 0 ? void 0 : _this$_univerInstance.getSheetBySheetId(subUnitId);
1575
1575
  if (!worksheet) return this._handleNull();
1576
1576
  const hiddenRowCount = this._getFilteredRowCount(worksheet, removeStartRow, removeEndRow);
1577
1577
  const afterStartRow = Math.min(startRow, removeStartRow);
@@ -2228,7 +2228,7 @@ SheetsFilterSyncController = __decorate([
2228
2228
  //#endregion
2229
2229
  //#region package.json
2230
2230
  var name = "@univerjs/sheets-filter";
2231
- var version = "1.0.0-alpha.6";
2231
+ var version = "1.0.0-alpha.8";
2232
2232
 
2233
2233
  //#endregion
2234
2234
  //#region src/services/sheet-filter-formula.service.ts
@@ -2318,7 +2318,11 @@ _defineProperty(UniverSheetsFilterPlugin, "type", UniverInstanceType.UNIVER_SHEE
2318
2318
  _defineProperty(UniverSheetsFilterPlugin, "pluginName", SHEET_FILTER_SNAPSHOT_ID);
2319
2319
  _defineProperty(UniverSheetsFilterPlugin, "packageName", name);
2320
2320
  _defineProperty(UniverSheetsFilterPlugin, "version", version);
2321
- UniverSheetsFilterPlugin = __decorate([__decorateParam(1, Inject(Injector)), __decorateParam(2, IConfigService)], UniverSheetsFilterPlugin);
2321
+ UniverSheetsFilterPlugin = __decorate([
2322
+ DependentOn(UniverFormulaEnginePlugin, UniverSheetsPlugin),
2323
+ __decorateParam(1, Inject(Injector)),
2324
+ __decorateParam(2, IConfigService)
2325
+ ], UniverSheetsFilterPlugin);
2322
2326
 
2323
2327
  //#endregion
2324
2328
  export { ClearSheetsFilterCriteriaCommand, CustomFilterOperator, FILTER_MUTATIONS, FilterBy, FilterColumn, FilterModel, ReCalcSheetsFilterCommand, ReCalcSheetsFilterMutation, RemoveSheetFilterCommand, RemoveSheetsFilterMutation, SHEET_FILTER_SNAPSHOT_ID, SetSheetFilterRangeCommand, SetSheetsFilterCriteriaCommand, SetSheetsFilterCriteriaMutation, SetSheetsFilterRangeMutation, SheetsFilterService, SheetsFilterSyncController, SmartToggleSheetsFilterCommand, UniverSheetsFilterPlugin, equals, getCustomFilterFn, greaterThan, greaterThanOrEqualTo, lessThan, lessThanOrEqualTo, notEquals };
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:!0}},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,t){let n=this.getFilterModel(e,t);if(n)return n;let r=this._univerInstanceService.getUniverSheetInstance(e);if(!r)throw Error(`[SheetsFilterService]: could not create "FilterModel" on a non-existing workbook ${e}!`);let i=r.getSheetBySheetId(t);if(!i)throw Error(`[SheetsFilterService]: could not create "FilterModel" on a non-existing worksheet ${t}!`);let a=new A(e,t,i);return this._cacheFilterModel(e,t,a),a}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,t){let n=this._univerInstanceService.getUniverSheetInstance(e);Object.keys(t).forEach(r=>{let i=t[r],a=A.deserialize(e,r,n.getSheetBySheetId(r),i);this._cacheFilterModel(e,r,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 t=this._univerInstanceService.getUniverSheetInstance(e),n=t==null?void 0:t.getActiveSheet();n&&this._registerRefRange(e,n.getSheetId())}}))}_registerRefRange(e,t){var r;this._disposableCollection.dispose();let i=this._univerInstanceService.getUniverSheetInstance(e),a=i==null?void 0:i.getSheetBySheetId(t);if(!i||!a)return;let o=(r=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:r.getRange();o&&this._disposableCollection.add(this._refRangeService.registerRefRange(o,r=>{switch(r.id){case n.InsertRowCommand.id:{let n=r.params,i=n.unitId||e,a=n.subUnitId||t;return this._handleInsertRowCommand(n,i,a)}case n.InsertColCommand.id:{let n=r.params,i=n.unitId||e,a=n.subUnitId||t;return this.handleInsertColCommand(n.range,i,a)}case n.RemoveColCommand.id:{let n=r.params;return this.handleRemoveColCommand(n.range,e,t)}case n.RemoveRowCommand.id:{let n=r.params;return this._handleRemoveRowCommand(n,e,t)}case n.EffectRefRangId.MoveColsCommandId:{let n=r.params;return this.handleMoveColsCommand({fromRange:n.fromRange,toRange:n.toRange},e,t)}case n.EffectRefRangId.MoveRowsCommandId:{let n=r.params;return this._handleMoveRowsCommand(n,e,t)}case n.MoveRangeCommand.id:{let n=r.params;return this._handleMoveRangeCommand(n,e,t)}}return{redos:[],undos:[]}},e,t))}_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,t,n){let r=this._sheetsFilterService.getFilterModel(t,n);if(!r)return this._handleNull();let i=r.getRange(),{startRow:a,endRow:o}=i,{startRow:s,endRow:c}=e.range;if(s>o)return this._handleNull();if(c<a)return{undos:[{id:L.id,params:{range:i,unitId:t,subUnitId:n}}],redos:[{id:L.id,params:{range:{...i,startRow:a-(c-s+1),endRow:o-(c-s+1)},unitId:t,subUnitId:n}}]};let l=[],u=[],d=r.getAllFilterColumns(),f=a<=c&&a>=s;u.push({id:L.id,params:{range:i,unitId:t,subUnitId:n}});let p=Math.min(c,o)-Math.max(s,a)+1;if(p===o-a+1||f){let e={unitId:t,subUnitId:n};l.push({id:z.id,params:e}),d.forEach(e=>{let[r,i]=e,a={unitId:t,subUnitId:n,col:r,criteria:{...i.serialize(),colId:r}};u.push({id:R.id,params:a})})}else{var m;let e=(m=this._univerInstanceService.getUniverSheetInstance(t))==null?void 0:m.getSheetBySheetId(n);if(!e)return this._handleNull();let r=this._getFilteredRowCount(e,s,c),u=Math.min(a,s),d=u+(o-a)-p+r,f={unitId:t,subUnitId:n,range:{...i,startRow:u,endRow:d}};l.push({id:L.id,params:f})}return{undos:Y(u),redos:Y(l)}}_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?!1: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?!0: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.6`;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?!1: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([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)=>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});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/sheets-filter",
3
- "version": "1.0.0-alpha.6",
3
+ "version": "1.0.0-alpha.8",
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/core": "1.0.0-alpha.6",
71
- "@univerjs/rpc": "1.0.0-alpha.6",
72
- "@univerjs/engine-formula": "1.0.0-alpha.6",
73
- "@univerjs/sheets": "1.0.0-alpha.6",
74
- "@univerjs/engine-render": "1.0.0-alpha.6"
70
+ "@univerjs/engine-formula": "1.0.0-alpha.8",
71
+ "@univerjs/core": "1.0.0-alpha.8",
72
+ "@univerjs/rpc": "1.0.0-alpha.8",
73
+ "@univerjs/engine-render": "1.0.0-alpha.8",
74
+ "@univerjs/sheets": "1.0.0-alpha.8"
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-alpha.6"
80
+ "@univerjs-infra/shared": "1.0.0-alpha.8"
81
81
  },
82
82
  "scripts": {
83
83
  "test": "vitest run",