@univerjs/sheets-filter 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/index.js +1 -1
- package/lib/es/index.js +1 -1
- package/lib/index.js +1 -1
- package/lib/umd/index.js +1 -1
- package/package.json +9 -9
package/lib/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/sheets`),n=require(`rxjs`),r=require(`@univerjs/engine-render`),i=require(`@univerjs/rpc`),a=require(`@univerjs/engine-formula`);const o=`sheet.mutation.set-filter-range`,s=`sheet.mutation.set-filter-criteria`,c=`sheet.mutation.remove-filter`,l=`sheet.mutation.re-calc-filter`,u=new Set([o,s,c,l]);let d=function(e){return e[e.VALUES=0]=`VALUES`,e[e.COLORS=1]=`COLORS`,e[e.CONDITIONS=2]=`CONDITIONS`,e}({}),f=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}({});const p={operator:f.GREATER_THAN,fn:(e,t)=>x(e)?e>t:!1},m={operator:f.GREATER_THAN_OR_EQUAL,fn:(e,t)=>x(e)?e>=t:!1},h={operator:f.LESS_THAN,fn:(e,t)=>x(e)?e<t:!1},g={operator:f.LESS_THAN_OR_EQUAL,fn:(e,t)=>x(e)?e<=t:!1},_={operator:f.EQUAL,fn:(e,t)=>x(e)?e===t:!1},v={operator:f.NOT_EQUALS,fn:(t,n)=>{if(typeof n==`string`){if(n===` `)return t!=null;let r=C(t);return r&&ne(n)?!(0,e.createREGEXFromWildChar)(n).test(r):r!==n}return x(t)?t!==n:!0}},y=new Map([]);[p,m,h,g,_,v].forEach(e=>{y.set(e.operator,e)});function ee(e){return!!e}const te={fn:(t,n)=>{let r=C(t);return r===null?n===``:(0,e.createREGEXFromWildChar)(n).test(r)}};function b(e){return e?y.get(e):te}function x(e){return typeof e==`number`}function S(t){return!!(typeof t==`number`||typeof t==`string`&&(0,e.isNumeric)(t))}function C(e){return typeof e==`boolean`||e==null?null:typeof e==`string`?e:e.toString()}function ne(e){return typeof e==`number`?!1:e.indexOf(`*`)!==-1||e.indexOf(`?`)!==-1}function w(e){"@babel/helpers - typeof";return w=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},w(e)}function re(e,t){if(w(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(w(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ie(e){var t=re(e,`string`);return w(t)==`symbol`?t:t+``}function T(e,t,n){return(t=ie(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const E=()=>new Set;var D=class t extends e.Disposable{get filteredOutRows(){return this._filteredOutRows$.getValue()}set filteredOutRows(e){this._alreadyFilteredOutRows=e,this._filteredOutRows$.next(e)}constructor(e,t,r){super(),this.unitId=e,this.subUnitId=t,this._worksheet=r,T(this,`_filteredOutRows$`,new n.BehaviorSubject(E())),T(this,`filteredOutRows$`,this._filteredOutRows$.asObservable()),T(this,`_hasCriteria$`,new n.BehaviorSubject(!1)),T(this,`hasCriteria$`,this._hasCriteria$.asObservable()),T(this,`_filterColumnByIndex`,new Map),T(this,`_alreadyFilteredOutRows`,E()),T(this,`_range`,void 0)}dispose(){super.dispose(),this._filteredOutRows$.complete(),this._hasCriteria$.complete(),this._worksheet=null}serialize(){let t={ref:e.Rectangle.clone(this._range),filterColumns:this._getAllFilterColumns(!0).sort(([e],[t])=>e-t).map(([e,t])=>t.serialize())};return this._alreadyFilteredOutRows&&(t.cachedFilteredOut=Array.from(this._alreadyFilteredOutRows).sort()),t}static deserialize(e,n,r,i){let a=new t(e,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(t){return this._getAllFilterColumns(!0).filter(([e])=>e!==t).reduce((t,[,n])=>{let r=n.calc({getAlreadyFilteredOutRows:()=>t});return r?(0,e.mergeSets)(t,r):t},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=E(),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 O(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(){this._alreadyFilteredOutRows=this._getAllFilterColumns().filter(e=>e.hasCache()).reduce((t,n)=>(0,e.mergeSets)(t,n.filteredOutRows),new Set)}_reCalcWithNoCacheColumns(){let t=this._getAllFilterColumns().filter(e=>!e.hasCache());for(let n of t){let t=n.reCalc();t&&(this._alreadyFilteredOutRows=(0,e.mergeSets)(this._alreadyFilteredOutRows,t))}}},O=class extends e.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,T(this,`_filteredOutRows`,null),T(this,`_filterFn`,null),T(this,`_range`,null),T(this,`_column`,0),T(this,`_filterBy`,d.VALUES)}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 e.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 e.Tools.deepClone(this._criteria)}reCalc(){return this._filteredOutRows=this.calc(this._filterColumnContext),this._filteredOutRows}calc(t){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=t.getAlreadyFilteredOutRows();for(let t of this._worksheet.iterateByColumn(r,!1,!1)){let{row:n,rowSpan:r,col:o}=t;if(!(a.has(n)&&(!r||r===1))&&!(this._filterBy===d.VALUES?this._filterFn((0,e.extractPureTextFromCell)(this._worksheet.getCell(n,o))):this._filterBy===d.COLORS?this._filterFn(this._worksheet.getComposedCellStyle(n,o)):this._filterFn(ce(this._worksheet,n,o)))&&(i.add(n),r))for(let e=1;e<r;e++)i.add(n+e)}return i}_generateFilterFn(){this._criteria&&(this._filterFn=ae(this._criteria),this._filterBy=this._criteria.filters?d.VALUES:this._criteria.colorFilters?d.COLORS:d.CONDITIONS)}};function ae(e){if(e.filters)return k(e.filters);if(e.colorFilters)return A(e.colorFilters);if(e.customFilters)return j(e.customFilters);throw Error(`[FilterModel]: other types of filters are not supported yet.`)}function k(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 A(t){if(t.cellFillColors){let n=new Set(t.cellFillColors);return t=>{var r;if(!t||!((r=t.bg)!=null&&r.rgb))return!!n.has(null);let i=new e.ColorKit(t.bg.rgb).toRgbString();return n.has(i)}}if(t.cellTextColors){let n=new Set(t.cellTextColors);return t=>{var i;if(!t||!((i=t.cl)!=null&&i.rgb))return!!n.has(r.COLOR_BLACK_RGB);let a=new e.ColorKit(t.cl.rgb).toRgbString();return n.has(a)}}throw Error(`[FilterModel]: color filters are not supported yet.`)}function j(e){let t=e.customFilters.map(e=>se(e));return oe(t)?e.and?M(t):N(t):t[0]}function M(e){let[t,n]=e;return e=>t(e)&&n(e)}function N(e){let[t,n]=e;return e=>t(e)||n(e)}function oe(e){return e.length===2}function se(e){let t=e.val;if(e.operator===f.NOT_EQUALS&&!S(t))return e=>v.fn(e,t);if(ee(e.operator)){if(!S(t))return()=>!1;let n=b(e.operator),r=Number(t);return e=>n.fn(e,r)}let n=b(e.operator);return e=>n.fn(e,t)}function ce(t,n,r){let i=t.getCell(n,r);if(!i)return null;let a=t.getCellRaw(n,r);return i&&!a?P(i):a?i.t===e.CellValueType.NUMBER&&typeof i.v==`string`?a.v:i.t===e.CellValueType.NUMBER?Number(a.v):P(a):null}function P(t){var n;let r=(n=t.p)==null||(n=n.body)==null?void 0:n.dataStream;if(r)return r.trimEnd();let i=t.v;return typeof i==`string`?t.t===e.CellValueType.BOOLEAN?i.toUpperCase():i:typeof i==`number`?t.t===e.CellValueType.BOOLEAN?i?`TRUE`:`FALSE`:i:typeof i==`boolean`?i?`TRUE`:`FALSE`:``}function F(e,t){return function(n,r){t(n,r,e)}}function I(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}const L=`SHEET_FILTER_PLUGIN`;let R=class extends e.Disposable{get activeFilterModel(){return this._activeFilterModel$.getValue()}constructor(e,t,r){super(),this._resourcesManagerService=e,this._univerInstanceService=t,this._commandService=r,T(this,`_filterModels`,new Map),T(this,`_loadedUnitId$`,new n.BehaviorSubject(null)),T(this,`loadedUnitId$`,this._loadedUnitId$.asObservable()),T(this,`_errorMsg$`,new n.BehaviorSubject(null)),T(this,`errorMsg$`,this._errorMsg$.asObservable()),T(this,`_activeFilterModel$`,new n.BehaviorSubject(null)),T(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 D(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 t;try{if(t=this._univerInstanceService.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET),!t){this._activeFilterModel$.next(null);return}}catch(e){console.error(`[SheetsFilterService]: could not get active workbook!`,e);return}let n=t.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,n.merge)((0,e.fromCallback)(this._commandService.onCommandExecuted.bind(this._commandService)).pipe((0,n.filter)(([t])=>t.type===e.CommandType.MUTATION&&u.has(t.id))),this._univerInstanceService.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET).pipe((0,n.switchMap)(e=>{var t;return(t=e==null?void 0:e.activeSheet$)==null?(0,n.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=D.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:L,businesses:[e.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)}};R=I([F(0,e.IResourceManagerService),F(1,e.IUniverInstanceService),F(2,e.ICommandService)],R);const z={id:o,type:e.CommandType.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,range:i}=t;return e.get(R).ensureFilterModel(r,n).setRange(i),!0}},B={id:s,type:e.CommandType.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,criteria:i,col:a,reCalc:o=!0}=t,s=e.get(R).getFilterModel(r,n);return s?(s.setCriteria(a,i,o),!0):!1}},V={id:c,type:e.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t;return e.get(R).removeFilterModel(n,r)}},H={id:l,type:e.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t,i=e.get(R).getFilterModel(n,r);return i?(i.reCalc(),!0):!1}},U={id:`sheet.command.set-filter-range`,type:e.CommandType.COMMAND,handler:(n,r)=>{let i=n.get(R),a=n.get(e.ICommandService),o=n.get(e.IUndoRedoService),s=n.get(e.IUniverInstanceService),{unitId:c,subUnitId:l,range:u}=r;if(!(0,t.getSheetCommandTarget)(s,r)||i.getFilterModel(c,l))return!1;if(u.endRow===u.startRow){let t=n.get(e.ErrorService),r=n.get(e.LocaleService);return t.emit(r.t(`sheets-filter.command.not-valid-filter-range`)),!1}let d={id:z.id,params:{unitId:c,subUnitId:l,range:u}},f=a.syncExecuteCommand(d.id,d.params);return f&&o.pushUndoRedo({unitID:c,undoMutations:[{id:V.id,params:{unitId:c,subUnitId:l}}],redoMutations:[d]}),f}},W={id:`sheet.command.remove-sheet-filter`,type:e.CommandType.COMMAND,handler:(n,r)=>{let i=n.get(e.IUniverInstanceService),a=n.get(R),o=n.get(e.ICommandService),s=n.get(e.IUndoRedoService),c=(0,t.getSheetCommandTarget)(i,r);if(!c)return!1;let{unitId:l,subUnitId:u}=c,d=a.getFilterModel(l,u);if(!d)return!1;let f=pe(l,u,d==null?void 0:d.serialize()),p=o.syncExecuteCommand(V.id,{unitId:l,subUnitId:u});return p&&s.pushUndoRedo({unitID:l,undoMutations:f,redoMutations:[{id:V.id,params:{unitId:l,subUnitId:u}}]}),p}},le={id:`sheet.command.smart-toggle-filter`,type:e.CommandType.COMMAND,handler:async n=>{let r=n.get(e.IUniverInstanceService),i=n.get(R),a=n.get(e.ICommandService),o=r.getCurrentUnitForType(e.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(W.id,{unitId:c,subUnitId:l});let u=n.get(t.SheetsSelectionsService).getCurrentLastSelection();if(!u)return!1;let d=u.range,f=(0,t.isSingleCellSelection)(u)?(0,t.expandToContinuousRange)(d,{left:!0,right:!0,up:!0,down:!0},s):d.startRow===d.endRow?(0,t.expandToContinuousRange)(d,{down:!0},s):d;return a.executeCommand(U.id,{unitId:c,subUnitId:l,range:f})}},ue={id:`sheet.command.set-filter-criteria`,type:e.CommandType.COMMAND,handler:(t,n)=>{let r=t.get(R),i=t.get(e.ICommandService),a=t.get(e.IUndoRedoService),{unitId:o,subUnitId:s,col:c,criteria:l}=n,u=r.getFilterModel(o,s);if(!u)return!1;let d=u.getRange();if(!d||c<d.startColumn||c>d.endColumn)return!1;let f=he(o,s,c,u.getFilterColumn(c)),p={id:B.id,params:{unitId:o,subUnitId:s,col:c,criteria:l}},m=i.syncExecuteCommand(p.id,p.params);return m&&a.pushUndoRedo({unitID:o,undoMutations:[f],redoMutations:[p]}),m}},de={id:`sheet.command.clear-filter-criteria`,type:e.CommandType.COMMAND,handler:(n,r)=>{let i=n.get(R),a=n.get(e.IUndoRedoService),o=n.get(e.ICommandService),s=(0,t.getSheetCommandTarget)(n.get(e.IUniverInstanceService),r);if(!s)return!1;let{unitId:c,subUnitId:l}=s,u=i.getFilterModel(s.unitId,s.subUnitId);if(!u)return!1;let d=u.serialize(),f=G(c,l,d),p=me(c,l,d);return(0,e.sequenceExecute)(p,o).result?(a.pushUndoRedo({unitID:c,undoMutations:f,redoMutations:p}),!0):!1}},fe={id:`sheet.command.re-calc-filter`,type:e.CommandType.COMMAND,handler:(n,r)=>{let i=n.get(R),a=n.get(e.ICommandService),o=(0,t.getSheetCommandTarget)(n.get(e.IUniverInstanceService),r);if(!o)return!1;let{unitId:s,subUnitId:c}=o;return i.getFilterModel(o.unitId,o.subUnitId)?a.executeCommand(H.id,{unitId:s,subUnitId:c}):!1}};function pe(e,t,n){let r=[],i={id:z.id,params:{unitId:e,subUnitId:t,range:n.ref}};return r.push(i),G(e,t,n).forEach(e=>r.push(e)),r}function G(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:B.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:B.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:B.id,params:{unitId:e,subUnitId:t,col:n,criteria:null}};let i=r.serialize();return{id:B.id,params:{unitId:e,subUnitId:t,col:n,criteria:i}}}const K=`sheets-filter.config`;Symbol(K);const q={};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 J(e){return ge(e,(e,t)=>e.id===B.id&&t.id===B.id&&e.params.unitId===t.params.unitId&&e.params.subUnitId===t.params.subUnitId&&e.params.col===t.params.col)}let Y=class extends e.Disposable{constructor(t,n,r,i,a,o,s){super(),this._commandService=t,this._sheetInterceptorService=n,this._sheetsFilterService=r,this._univerInstanceService=i,this._refRangeService=a,this._dataSyncPrimaryController=o,this._zebraCrossingCacheController=s,T(this,`_disposableCollection`,new e.DisposableCollection),this._initCommands(),this._initRowFilteredInterceptor(),this._initInterceptors(),this._commandExecutedListener(),this._initErrorHandling(),this._initZebraCrossingCacheListener()}_initZebraCrossingCacheListener(){this.disposeWithMe(this._sheetsFilterService.activeFilterModel$.subscribe(e=>{e&&this.disposeWithMe(e.filteredOutRows$.subscribe(()=>{this._zebraCrossingCacheController.updateZebraCrossingCache(e.unitId,e.subUnitId)}))}))}_initCommands(){[B,z,H,V].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===t.SetWorksheetActiveOperation.id){let t=e.params,n=t.subUnitId,r=t.unitId;if(!n||!r)return;this._registerRefRange(r,n)}if(e.id===z.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,n){var r;this._disposableCollection.dispose();let i=this._univerInstanceService.getUniverSheetInstance(e),a=i==null?void 0:i.getSheetBySheetId(n);if(!i||!a)return;let o=(r=this._sheetsFilterService.getFilterModel(e,n))==null?void 0:r.getRange();o&&this._disposableCollection.add(this._refRangeService.registerRefRange(o,r=>{switch(r.id){case t.InsertRowCommand.id:{let t=r.params,i=t.unitId||e,a=t.subUnitId||n;return this._handleInsertRowCommand(t,i,a)}case t.InsertColCommand.id:{let t=r.params,i=t.unitId||e,a=t.subUnitId||n;return this.handleInsertColCommand(t.range,i,a)}case t.RemoveColCommand.id:{let t=r.params;return this.handleRemoveColCommand(t.range,e,n)}case t.RemoveRowCommand.id:{let t=r.params;return this._handleRemoveRowCommand(t,e,n)}case t.EffectRefRangId.MoveColsCommandId:{let t=r.params;return this.handleMoveColsCommand({fromRange:t.fromRange,toRange:t.toRange},e,n)}case t.EffectRefRangId.MoveRowsCommandId:{let t=r.params;return this._handleMoveRowsCommand(t,e,n)}case t.MoveRangeCommand.id:{let t=r.params;return this._handleMoveRangeCommand(t,e,n)}}return{redos:[],undos:[]}},e,n))}_getUpdateFilter(e){let{id:n}=e;switch(n){case t.RemoveSheetCommand.id:{let t=e.params;return this._handleRemoveSheetCommand(t,t.unitId,t.subUnitId)}case t.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:z.id,params:m}),f.push({id:z.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:J(d),undos:J(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:z.id,params:p}),f.push({id:z.id,params:m}),{redos:J(d),undos:J(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:B.id,params:{unitId:t,subUnitId:n,col:r,criteria:null}}),d.push({id:B.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:V.id,params:e}),d.unshift({id:z.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:z.id,params:i}),d.unshift({id:z.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:z.id,params:{range:i,unitId:t,subUnitId:n}}],redos:[{id:z.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:z.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:V.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:B.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=[];for(let t=s;t<=c;t++)e.getRowFiltered(t)&&r.push(t);let u=Math.min(a,s),d=u+(o-a)-p+r.length,f={unitId:t,subUnitId:n,range:{...i,startRow:u,endRow:d}};l.push({id:z.id,params:f})}return{undos:J(u),redos:J(l)}}handleMoveColsCommand({fromRange:t,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(t.endColumn<c&&n.startColumn<=c||t.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,e.moveMatrixArray)(t.startColumn,t.endColumn-t.startColumn+1,n.startColumn,f);let p=s.startColumn,m=s.endColumn;c>=t.startColumn&&c<=t.endColumn&&n.startColumn>t.startColumn&&t.endColumn<l&&(p=t.endColumn+1),l>=t.startColumn&&l<=t.endColumn&&n.startColumn<t.startColumn&&t.startColumn>c&&(m=t.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:B.id,params:e}),d.push({id:B.id,params:t})}if(!((s=f[t])!=null&&s.filter)){let e={unitId:r,subUnitId:i,col:t,criteria:null};u.push({id:B.id,params:e}),d.push({id:B.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:z.id,params:e}),d.unshift({id:z.id,params:{range:s,unitId:r,subUnitId:i}})}return{undos:d,redos:u}}_handleMoveRowsCommand(t,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}=t;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,e.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:z.id,params:e},{id:H.id,params:{unitId:n,subUnitId:r}}),f.push({id:z.id,params:{range:o,unitId:n,subUnitId:r}},{id:H.id,params:{unitId:n,subUnitId:r}})}return{redos:d,undos:f}}_handleMoveRangeCommand(t,n,r){let{fromRange:i,toRange:a}=t,o=this._sheetsFilterService.getFilterModel(n,r);if(!o)return this._handleNull();let s=o.getRange();if(!s)return this._handleNull();let c=[],l=[];if(e.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:V.id,params:{unitId:n,subUnitId:r}},f={id:z.id,params:{unitId:n,subUnitId:r,range:u}},p={id:z.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:B.id,params:{unitId:n,subUnitId:r,col:t+h,criteria:{...i.serialize(),colId:t+h}}}),l.push({id:B.id,params:{unitId:n,subUnitId:r,col:t,criteria:{...i.serialize(),colId:t}}}))})}else if(e.Rectangle.intersects(a,s)){let e={...s,endRow:Math.max(s.endRow,a.endRow)};c.push({id:z.id,params:{unitId:n,subUnitId:r,range:e}}),l.push({id:z.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:B.id,params:{unitId:t,subUnitId:n,col:e,criteria:{...r.serialize(),colId:e}}})}),a.push({id:V.id,params:{unitId:t,subUnitId:n,range:i}}),o.unshift({id:z.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:B.id,params:{unitId:e,subUnitId:n,col:t,criteria:{...r.serialize(),colId:t}}}),s.push({id:B.id,params:{unitId:e,subUnitId:n,col:t,criteria:null}})}),s.push({id:V.id,params:{unitId:e,subUnitId:n,range:i}}),a.unshift({id:z.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(t.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:B.id,params:{...i,col:t}}),a.push({id:B.id,params:{...i,col:t,criteria:{...n.serialize(),colId:t}}})}),n.forEach(e=>{let[t,n]=e;c.push({id:B.id,params:{...i,col:t+r,criteria:{...n.serialize(),colId:t+r}}}),s.push({id:B.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,n)=>{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===t.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===t.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===t.SetRangeValuesMutation.id&&!(n!=null&&n.onlyLocal)){let n=this._getExtendRegion(r,i);if(n){let a=e.params.cellValue;if(a)for(let e=n.startColumn;e<=n.endColumn;e++){var l;let o=a==null||(l=a[n.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,t.expandToContinuousRange)(n,{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 n=e.params,r=(0,t.getSheetCommandTarget)(this._univerInstanceService,n);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===t.MoveRowsCommand.id&&n.fromRange.startRow<=s.startRow&&n.fromRange.endRow<s.endRow&&n.fromRange.endRow>=s.startRow)throw this._sheetsFilterService.setFilterErrorMsg(`sheets-filter.msg.filter-header-forbidden`),Error(`[SheetsFilterController]: Cannot move header row of filter`)}))}_cellHasValue(e){let t=Object.values(e);return!(t.length===0||t.every(e=>e==null))}};Y=I([F(0,e.ICommandService),F(1,(0,e.Inject)(t.SheetInterceptorService)),F(2,(0,e.Inject)(R)),F(3,e.IUniverInstanceService),F(4,(0,e.Inject)(t.RefRangeService)),F(5,(0,e.Optional)(i.DataSyncPrimaryController)),F(6,(0,e.Inject)(t.ZebraCrossingCacheController))],Y);const _e=[B.id,H.id],ve=[t.InsertColMutation.id,t.RemoveColMutation.id,t.MoveColsMutation.id];let X=class extends e.Disposable{get visible(){return this._visible$.getValue()}get enabled(){return this._enabled$.getValue()}constructor(t,r,i){super(),this._sheetsFilterController=t,this._commandService=r,this._configService=i,T(this,`_d`,new e.DisposableCollection),T(this,`_visible$`,new n.BehaviorSubject(!1)),T(this,`visible$`,this._visible$.asObservable()),T(this,`_enabled$`,new n.BehaviorSubject(!0)),T(this,`enabled$`,this._enabled$.asObservable());let a=this._configService.getConfig(K);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((n,r)=>{if(ve.includes(n.id)&&r!=null&&r.fromCollab){if(n.id===t.InsertColMutation.id){let{range:t,unitId:i,subUnitId:a}=n.params,{redos:o}=this._sheetsFilterController.handleInsertColCommand(t,i,a);(0,e.sequenceExecute)(o,this._commandService,r)}else if(n.id===t.RemoveColMutation.id){let{range:t,unitId:i,subUnitId:a}=n.params,{redos:o}=this._sheetsFilterController.handleRemoveColCommand(t,i,a);(0,e.sequenceExecute)(o,this._commandService,r)}else if(n.id===t.MoveColsMutation.id){let{sourceRange:t,targetRange:i,unitId:a,subUnitId:o}=n.params,{redos:s}=this._sheetsFilterController.handleMoveColsCommand({fromRange:t,toRange:i},a,o);(0,e.sequenceExecute)(s,this._commandService,r)}}}))}};X=I([F(0,(0,e.Inject)(Y)),F(1,e.ICommandService),F(2,e.IConfigService)],X);var Z=`@univerjs/sheets-filter`,ye=`0.18.0`;let Q=class extends e.Disposable{constructor(e,t,n,r){super(),this._activeDirtyManagerService=e,this._sheetRowFilteredService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._initFormulaDirtyRange(),this._registerSheetRowFiltered()}_initFormulaDirtyRange(){u.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=I([F(0,(0,e.Inject)(a.IActiveDirtyManagerService)),F(1,(0,e.Inject)(a.ISheetRowFilteredService)),F(2,(0,e.Inject)(R)),F(3,e.IUniverInstanceService)],Q);let $=class extends e.Plugin{constructor(t=q,n,r){super(),this._config=t,this._injector=n,this._configService=r;let{...i}=(0,e.merge)({},q,this._config);this._configService.setConfig(K,i)}onStarting(){[[Q],[R],[Y],[X]].forEach(e=>this._injector.add(e))}onReady(){(0,e.touchDependencies)(this._injector,[[Q],[Y],[X]])}};T($,`type`,e.UniverInstanceType.UNIVER_SHEET),T($,`pluginName`,L),T($,`packageName`,Z),T($,`version`,ye),$=I([F(1,(0,e.Inject)(e.Injector)),F(2,e.IConfigService)],$),exports.ClearSheetsFilterCriteriaCommand=de,exports.CustomFilterOperator=f,exports.FILTER_MUTATIONS=u,exports.FilterBy=d,exports.FilterColumn=O,exports.FilterModel=D,exports.ReCalcSheetsFilterCommand=fe,exports.ReCalcSheetsFilterMutation=H,exports.RemoveSheetFilterCommand=W,exports.RemoveSheetsFilterMutation=V,exports.SHEET_FILTER_SNAPSHOT_ID=L,exports.SetSheetFilterRangeCommand=U,exports.SetSheetsFilterCriteriaCommand=ue,exports.SetSheetsFilterCriteriaMutation=B,exports.SetSheetsFilterRangeMutation=z,Object.defineProperty(exports,`SheetsFilterService`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`SheetsFilterSyncController`,{enumerable:!0,get:function(){return X}}),exports.SmartToggleSheetsFilterCommand=le,Object.defineProperty(exports,`UniverSheetsFilterPlugin`,{enumerable:!0,get:function(){return $}}),exports.equals=_,exports.getCustomFilterFn=b,exports.greaterThan=p,exports.greaterThanOrEqualTo=m,exports.lessThan=h,exports.lessThanOrEqualTo=g,exports.notEquals=v;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/sheets`),n=require(`rxjs`),r=require(`@univerjs/engine-render`),i=require(`@univerjs/rpc`),a=require(`@univerjs/engine-formula`);const o=`sheet.mutation.set-filter-range`,s=`sheet.mutation.set-filter-criteria`,c=`sheet.mutation.remove-filter`,l=`sheet.mutation.re-calc-filter`,u=new Set([o,s,c,l]);let d=function(e){return e[e.VALUES=0]=`VALUES`,e[e.COLORS=1]=`COLORS`,e[e.CONDITIONS=2]=`CONDITIONS`,e}({}),f=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}({});const p={operator:f.GREATER_THAN,fn:(e,t)=>x(e)?e>t:!1},m={operator:f.GREATER_THAN_OR_EQUAL,fn:(e,t)=>x(e)?e>=t:!1},h={operator:f.LESS_THAN,fn:(e,t)=>x(e)?e<t:!1},g={operator:f.LESS_THAN_OR_EQUAL,fn:(e,t)=>x(e)?e<=t:!1},_={operator:f.EQUAL,fn:(e,t)=>x(e)?e===t:!1},v={operator:f.NOT_EQUALS,fn:(t,n)=>{if(typeof n==`string`){if(n===` `)return t!=null;let r=C(t);return r&&ne(n)?!(0,e.createREGEXFromWildChar)(n).test(r):r!==n}return x(t)?t!==n:!0}},y=new Map([]);[p,m,h,g,_,v].forEach(e=>{y.set(e.operator,e)});function ee(e){return!!e}const te={fn:(t,n)=>{let r=C(t);return r===null?n===``:(0,e.createREGEXFromWildChar)(n).test(r)}};function b(e){return e?y.get(e):te}function x(e){return typeof e==`number`}function S(t){return!!(typeof t==`number`||typeof t==`string`&&(0,e.isNumeric)(t))}function C(e){return typeof e==`boolean`||e==null?null:typeof e==`string`?e:e.toString()}function ne(e){return typeof e==`number`?!1:e.indexOf(`*`)!==-1||e.indexOf(`?`)!==-1}function w(e){"@babel/helpers - typeof";return w=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},w(e)}function re(e,t){if(w(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(w(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ie(e){var t=re(e,`string`);return w(t)==`symbol`?t:t+``}function T(e,t,n){return(t=ie(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const E=()=>new Set;var D=class t extends e.Disposable{get filteredOutRows(){return this._filteredOutRows$.getValue()}set filteredOutRows(e){this._alreadyFilteredOutRows=e,this._filteredOutRows$.next(e)}constructor(e,t,r){super(),this.unitId=e,this.subUnitId=t,this._worksheet=r,T(this,`_filteredOutRows$`,new n.BehaviorSubject(E())),T(this,`filteredOutRows$`,this._filteredOutRows$.asObservable()),T(this,`_hasCriteria$`,new n.BehaviorSubject(!1)),T(this,`hasCriteria$`,this._hasCriteria$.asObservable()),T(this,`_filterColumnByIndex`,new Map),T(this,`_alreadyFilteredOutRows`,E()),T(this,`_range`,void 0)}dispose(){super.dispose(),this._filteredOutRows$.complete(),this._hasCriteria$.complete(),this._worksheet=null}serialize(){let t={ref:e.Rectangle.clone(this._range),filterColumns:this._getAllFilterColumns(!0).sort(([e],[t])=>e-t).map(([e,t])=>t.serialize())};return this._alreadyFilteredOutRows&&(t.cachedFilteredOut=Array.from(this._alreadyFilteredOutRows).sort()),t}static deserialize(e,n,r,i){let a=new t(e,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(t){return this._getAllFilterColumns(!0).filter(([e])=>e!==t).reduce((t,[,n])=>{let r=n.calc({getAlreadyFilteredOutRows:()=>t});return r?(0,e.mergeSets)(t,r):t},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=E(),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 O(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(){this._alreadyFilteredOutRows=this._getAllFilterColumns().filter(e=>e.hasCache()).reduce((t,n)=>(0,e.mergeSets)(t,n.filteredOutRows),new Set)}_reCalcWithNoCacheColumns(){let t=this._getAllFilterColumns().filter(e=>!e.hasCache());for(let n of t){let t=n.reCalc();t&&(this._alreadyFilteredOutRows=(0,e.mergeSets)(this._alreadyFilteredOutRows,t))}}},O=class extends e.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,T(this,`_filteredOutRows`,null),T(this,`_filterFn`,null),T(this,`_range`,null),T(this,`_column`,0),T(this,`_filterBy`,d.VALUES)}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 e.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 e.Tools.deepClone(this._criteria)}reCalc(){return this._filteredOutRows=this.calc(this._filterColumnContext),this._filteredOutRows}calc(t){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=t.getAlreadyFilteredOutRows();for(let t of this._worksheet.iterateByColumn(r,!1,!1)){let{row:n,rowSpan:r,col:o}=t;if(!(a.has(n)&&(!r||r===1))&&!(this._filterBy===d.VALUES?this._filterFn((0,e.extractPureTextFromCell)(this._worksheet.getCell(n,o))):this._filterBy===d.COLORS?this._filterFn(this._worksheet.getComposedCellStyle(n,o)):this._filterFn(ce(this._worksheet,n,o)))&&(i.add(n),r))for(let e=1;e<r;e++)i.add(n+e)}return i}_generateFilterFn(){this._criteria&&(this._filterFn=ae(this._criteria),this._filterBy=this._criteria.filters?d.VALUES:this._criteria.colorFilters?d.COLORS:d.CONDITIONS)}};function ae(e){if(e.filters)return k(e.filters);if(e.colorFilters)return A(e.colorFilters);if(e.customFilters)return j(e.customFilters);throw Error(`[FilterModel]: other types of filters are not supported yet.`)}function k(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 A(t){if(t.cellFillColors){let n=new Set(t.cellFillColors);return t=>{var r;if(!t||!((r=t.bg)!=null&&r.rgb))return!!n.has(null);let i=new e.ColorKit(t.bg.rgb).toRgbString();return n.has(i)}}if(t.cellTextColors){let n=new Set(t.cellTextColors);return t=>{var i;if(!t||!((i=t.cl)!=null&&i.rgb))return!!n.has(r.COLOR_BLACK_RGB);let a=new e.ColorKit(t.cl.rgb).toRgbString();return n.has(a)}}throw Error(`[FilterModel]: color filters are not supported yet.`)}function j(e){let t=e.customFilters.map(e=>se(e));return oe(t)?e.and?M(t):N(t):t[0]}function M(e){let[t,n]=e;return e=>t(e)&&n(e)}function N(e){let[t,n]=e;return e=>t(e)||n(e)}function oe(e){return e.length===2}function se(e){let t=e.val;if(e.operator===f.NOT_EQUALS&&!S(t))return e=>v.fn(e,t);if(ee(e.operator)){if(!S(t))return()=>!1;let n=b(e.operator),r=Number(t);return e=>n.fn(e,r)}let n=b(e.operator);return e=>n.fn(e,t)}function ce(t,n,r){let i=t.getCell(n,r);if(!i)return null;let a=t.getCellRaw(n,r);return i&&!a?P(i):a?i.t===e.CellValueType.NUMBER&&typeof i.v==`string`?a.v:i.t===e.CellValueType.NUMBER?Number(a.v):P(a):null}function P(t){var n;let r=(n=t.p)==null||(n=n.body)==null?void 0:n.dataStream;if(r)return r.trimEnd();let i=t.v;return typeof i==`string`?t.t===e.CellValueType.BOOLEAN?i.toUpperCase():i:typeof i==`number`?t.t===e.CellValueType.BOOLEAN?i?`TRUE`:`FALSE`:i:typeof i==`boolean`?i?`TRUE`:`FALSE`:``}function F(e,t){return function(n,r){t(n,r,e)}}function I(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}const L=`SHEET_FILTER_PLUGIN`;let R=class extends e.Disposable{get activeFilterModel(){return this._activeFilterModel$.getValue()}constructor(e,t,r){super(),this._resourcesManagerService=e,this._univerInstanceService=t,this._commandService=r,T(this,`_filterModels`,new Map),T(this,`_loadedUnitId$`,new n.BehaviorSubject(null)),T(this,`loadedUnitId$`,this._loadedUnitId$.asObservable()),T(this,`_errorMsg$`,new n.BehaviorSubject(null)),T(this,`errorMsg$`,this._errorMsg$.asObservable()),T(this,`_activeFilterModel$`,new n.BehaviorSubject(null)),T(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 D(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 t;try{if(t=this._univerInstanceService.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET),!t){this._activeFilterModel$.next(null);return}}catch(e){console.error(`[SheetsFilterService]: could not get active workbook!`,e);return}let n=t.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,n.merge)((0,e.fromCallback)(this._commandService.onCommandExecuted.bind(this._commandService)).pipe((0,n.filter)(([t])=>t.type===e.CommandType.MUTATION&&u.has(t.id))),this._univerInstanceService.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET).pipe((0,n.switchMap)(e=>{var t;return(t=e==null?void 0:e.activeSheet$)==null?(0,n.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=D.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:L,businesses:[e.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)}};R=I([F(0,e.IResourceManagerService),F(1,e.IUniverInstanceService),F(2,e.ICommandService)],R);const z={id:o,type:e.CommandType.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,range:i}=t;return e.get(R).ensureFilterModel(r,n).setRange(i),!0}},B={id:s,type:e.CommandType.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,criteria:i,col:a,reCalc:o=!0}=t,s=e.get(R).getFilterModel(r,n);return s?(s.setCriteria(a,i,o),!0):!1}},V={id:c,type:e.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t;return e.get(R).removeFilterModel(n,r)}},H={id:l,type:e.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t,i=e.get(R).getFilterModel(n,r);return i?(i.reCalc(),!0):!1}},U={id:`sheet.command.set-filter-range`,type:e.CommandType.COMMAND,handler:(n,r)=>{let i=n.get(R),a=n.get(e.ICommandService),o=n.get(e.IUndoRedoService),s=n.get(e.IUniverInstanceService),{unitId:c,subUnitId:l,range:u}=r;if(!(0,t.getSheetCommandTarget)(s,r)||i.getFilterModel(c,l))return!1;if(u.endRow===u.startRow){let t=n.get(e.ErrorService),r=n.get(e.LocaleService);return t.emit(r.t(`sheets-filter.command.not-valid-filter-range`)),!1}let d={id:z.id,params:{unitId:c,subUnitId:l,range:u}},f=a.syncExecuteCommand(d.id,d.params);return f&&o.pushUndoRedo({unitID:c,undoMutations:[{id:V.id,params:{unitId:c,subUnitId:l}}],redoMutations:[d]}),f}},W={id:`sheet.command.remove-sheet-filter`,type:e.CommandType.COMMAND,handler:(n,r)=>{let i=n.get(e.IUniverInstanceService),a=n.get(R),o=n.get(e.ICommandService),s=n.get(e.IUndoRedoService),c=(0,t.getSheetCommandTarget)(i,r);if(!c)return!1;let{unitId:l,subUnitId:u}=c,d=a.getFilterModel(l,u);if(!d)return!1;let f=pe(l,u,d==null?void 0:d.serialize()),p=o.syncExecuteCommand(V.id,{unitId:l,subUnitId:u});return p&&s.pushUndoRedo({unitID:l,undoMutations:f,redoMutations:[{id:V.id,params:{unitId:l,subUnitId:u}}]}),p}},le={id:`sheet.command.smart-toggle-filter`,type:e.CommandType.COMMAND,handler:async n=>{let r=n.get(e.IUniverInstanceService),i=n.get(R),a=n.get(e.ICommandService),o=r.getCurrentUnitForType(e.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(W.id,{unitId:c,subUnitId:l});let u=n.get(t.SheetsSelectionsService).getCurrentLastSelection();if(!u)return!1;let d=u.range,f=(0,t.isSingleCellSelection)(u)?(0,t.expandToContinuousRange)(d,{left:!0,right:!0,up:!0,down:!0},s):d.startRow===d.endRow?(0,t.expandToContinuousRange)(d,{down:!0},s):d;return a.executeCommand(U.id,{unitId:c,subUnitId:l,range:f})}},ue={id:`sheet.command.set-filter-criteria`,type:e.CommandType.COMMAND,handler:(t,n)=>{let r=t.get(R),i=t.get(e.ICommandService),a=t.get(e.IUndoRedoService),{unitId:o,subUnitId:s,col:c,criteria:l}=n,u=r.getFilterModel(o,s);if(!u)return!1;let d=u.getRange();if(!d||c<d.startColumn||c>d.endColumn)return!1;let f=he(o,s,c,u.getFilterColumn(c)),p={id:B.id,params:{unitId:o,subUnitId:s,col:c,criteria:l}},m=i.syncExecuteCommand(p.id,p.params);return m&&a.pushUndoRedo({unitID:o,undoMutations:[f],redoMutations:[p]}),m}},de={id:`sheet.command.clear-filter-criteria`,type:e.CommandType.COMMAND,handler:(n,r)=>{let i=n.get(R),a=n.get(e.IUndoRedoService),o=n.get(e.ICommandService),s=(0,t.getSheetCommandTarget)(n.get(e.IUniverInstanceService),r);if(!s)return!1;let{unitId:c,subUnitId:l}=s,u=i.getFilterModel(s.unitId,s.subUnitId);if(!u)return!1;let d=u.serialize(),f=G(c,l,d),p=me(c,l,d);return(0,e.sequenceExecute)(p,o).result?(a.pushUndoRedo({unitID:c,undoMutations:f,redoMutations:p}),!0):!1}},fe={id:`sheet.command.re-calc-filter`,type:e.CommandType.COMMAND,handler:(n,r)=>{let i=n.get(R),a=n.get(e.ICommandService),o=(0,t.getSheetCommandTarget)(n.get(e.IUniverInstanceService),r);if(!o)return!1;let{unitId:s,subUnitId:c}=o;return i.getFilterModel(o.unitId,o.subUnitId)?a.executeCommand(H.id,{unitId:s,subUnitId:c}):!1}};function pe(e,t,n){let r=[],i={id:z.id,params:{unitId:e,subUnitId:t,range:n.ref}};return r.push(i),G(e,t,n).forEach(e=>r.push(e)),r}function G(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:B.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:B.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:B.id,params:{unitId:e,subUnitId:t,col:n,criteria:null}};let i=r.serialize();return{id:B.id,params:{unitId:e,subUnitId:t,col:n,criteria:i}}}const K=`sheets-filter.config`;Symbol(K);const q={};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 J(e){return ge(e,(e,t)=>e.id===B.id&&t.id===B.id&&e.params.unitId===t.params.unitId&&e.params.subUnitId===t.params.subUnitId&&e.params.col===t.params.col)}let Y=class extends e.Disposable{constructor(t,n,r,i,a,o,s){super(),this._commandService=t,this._sheetInterceptorService=n,this._sheetsFilterService=r,this._univerInstanceService=i,this._refRangeService=a,this._dataSyncPrimaryController=o,this._zebraCrossingCacheController=s,T(this,`_disposableCollection`,new e.DisposableCollection),this._initCommands(),this._initRowFilteredInterceptor(),this._initInterceptors(),this._commandExecutedListener(),this._initErrorHandling(),this._initZebraCrossingCacheListener()}_initZebraCrossingCacheListener(){this.disposeWithMe(this._sheetsFilterService.activeFilterModel$.subscribe(e=>{e&&this.disposeWithMe(e.filteredOutRows$.subscribe(()=>{this._zebraCrossingCacheController.updateZebraCrossingCache(e.unitId,e.subUnitId)}))}))}_initCommands(){[B,z,H,V].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===t.SetWorksheetActiveOperation.id){let t=e.params,n=t.subUnitId,r=t.unitId;if(!n||!r)return;this._registerRefRange(r,n)}if(e.id===z.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,n){var r;this._disposableCollection.dispose();let i=this._univerInstanceService.getUniverSheetInstance(e),a=i==null?void 0:i.getSheetBySheetId(n);if(!i||!a)return;let o=(r=this._sheetsFilterService.getFilterModel(e,n))==null?void 0:r.getRange();o&&this._disposableCollection.add(this._refRangeService.registerRefRange(o,r=>{switch(r.id){case t.InsertRowCommand.id:{let t=r.params,i=t.unitId||e,a=t.subUnitId||n;return this._handleInsertRowCommand(t,i,a)}case t.InsertColCommand.id:{let t=r.params,i=t.unitId||e,a=t.subUnitId||n;return this.handleInsertColCommand(t.range,i,a)}case t.RemoveColCommand.id:{let t=r.params;return this.handleRemoveColCommand(t.range,e,n)}case t.RemoveRowCommand.id:{let t=r.params;return this._handleRemoveRowCommand(t,e,n)}case t.EffectRefRangId.MoveColsCommandId:{let t=r.params;return this.handleMoveColsCommand({fromRange:t.fromRange,toRange:t.toRange},e,n)}case t.EffectRefRangId.MoveRowsCommandId:{let t=r.params;return this._handleMoveRowsCommand(t,e,n)}case t.MoveRangeCommand.id:{let t=r.params;return this._handleMoveRangeCommand(t,e,n)}}return{redos:[],undos:[]}},e,n))}_getUpdateFilter(e){let{id:n}=e;switch(n){case t.RemoveSheetCommand.id:{let t=e.params;return this._handleRemoveSheetCommand(t,t.unitId,t.subUnitId)}case t.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:z.id,params:m}),f.push({id:z.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:J(d),undos:J(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:z.id,params:p}),f.push({id:z.id,params:m}),{redos:J(d),undos:J(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:B.id,params:{unitId:t,subUnitId:n,col:r,criteria:null}}),d.push({id:B.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:V.id,params:e}),d.unshift({id:z.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:z.id,params:i}),d.unshift({id:z.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:z.id,params:{range:i,unitId:t,subUnitId:n}}],redos:[{id:z.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:z.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:V.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:B.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=[];for(let t=s;t<=c;t++)e.getRowFiltered(t)&&r.push(t);let u=Math.min(a,s),d=u+(o-a)-p+r.length,f={unitId:t,subUnitId:n,range:{...i,startRow:u,endRow:d}};l.push({id:z.id,params:f})}return{undos:J(u),redos:J(l)}}handleMoveColsCommand({fromRange:t,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(t.endColumn<c&&n.startColumn<=c||t.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,e.moveMatrixArray)(t.startColumn,t.endColumn-t.startColumn+1,n.startColumn,f);let p=s.startColumn,m=s.endColumn;c>=t.startColumn&&c<=t.endColumn&&n.startColumn>t.startColumn&&t.endColumn<l&&(p=t.endColumn+1),l>=t.startColumn&&l<=t.endColumn&&n.startColumn<t.startColumn&&t.startColumn>c&&(m=t.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:B.id,params:e}),d.push({id:B.id,params:t})}if(!((s=f[t])!=null&&s.filter)){let e={unitId:r,subUnitId:i,col:t,criteria:null};u.push({id:B.id,params:e}),d.push({id:B.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:z.id,params:e}),d.unshift({id:z.id,params:{range:s,unitId:r,subUnitId:i}})}return{undos:d,redos:u}}_handleMoveRowsCommand(t,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}=t;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,e.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:z.id,params:e},{id:H.id,params:{unitId:n,subUnitId:r}}),f.push({id:z.id,params:{range:o,unitId:n,subUnitId:r}},{id:H.id,params:{unitId:n,subUnitId:r}})}return{redos:d,undos:f}}_handleMoveRangeCommand(t,n,r){let{fromRange:i,toRange:a}=t,o=this._sheetsFilterService.getFilterModel(n,r);if(!o)return this._handleNull();let s=o.getRange();if(!s)return this._handleNull();let c=[],l=[];if(e.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:V.id,params:{unitId:n,subUnitId:r}},f={id:z.id,params:{unitId:n,subUnitId:r,range:u}},p={id:z.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:B.id,params:{unitId:n,subUnitId:r,col:t+h,criteria:{...i.serialize(),colId:t+h}}}),l.push({id:B.id,params:{unitId:n,subUnitId:r,col:t,criteria:{...i.serialize(),colId:t}}}))})}else if(e.Rectangle.intersects(a,s)){let e={...s,endRow:Math.max(s.endRow,a.endRow)};c.push({id:z.id,params:{unitId:n,subUnitId:r,range:e}}),l.push({id:z.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:B.id,params:{unitId:t,subUnitId:n,col:e,criteria:{...r.serialize(),colId:e}}})}),a.push({id:V.id,params:{unitId:t,subUnitId:n,range:i}}),o.unshift({id:z.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:B.id,params:{unitId:e,subUnitId:n,col:t,criteria:{...r.serialize(),colId:t}}}),s.push({id:B.id,params:{unitId:e,subUnitId:n,col:t,criteria:null}})}),s.push({id:V.id,params:{unitId:e,subUnitId:n,range:i}}),a.unshift({id:z.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(t.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:B.id,params:{...i,col:t}}),a.push({id:B.id,params:{...i,col:t,criteria:{...n.serialize(),colId:t}}})}),n.forEach(e=>{let[t,n]=e;c.push({id:B.id,params:{...i,col:t+r,criteria:{...n.serialize(),colId:t+r}}}),s.push({id:B.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,n)=>{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===t.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===t.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===t.SetRangeValuesMutation.id&&!(n!=null&&n.onlyLocal)){let n=this._getExtendRegion(r,i);if(n){let a=e.params.cellValue;if(a)for(let e=n.startColumn;e<=n.endColumn;e++){var l;let o=a==null||(l=a[n.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,t.expandToContinuousRange)(n,{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 n=e.params,r=(0,t.getSheetCommandTarget)(this._univerInstanceService,n);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===t.MoveRowsCommand.id&&n.fromRange.startRow<=s.startRow&&n.fromRange.endRow<s.endRow&&n.fromRange.endRow>=s.startRow)throw this._sheetsFilterService.setFilterErrorMsg(`sheets-filter.msg.filter-header-forbidden`),Error(`[SheetsFilterController]: Cannot move header row of filter`)}))}_cellHasValue(e){let t=Object.values(e);return!(t.length===0||t.every(e=>e==null))}};Y=I([F(0,e.ICommandService),F(1,(0,e.Inject)(t.SheetInterceptorService)),F(2,(0,e.Inject)(R)),F(3,e.IUniverInstanceService),F(4,(0,e.Inject)(t.RefRangeService)),F(5,(0,e.Optional)(i.DataSyncPrimaryController)),F(6,(0,e.Inject)(t.ZebraCrossingCacheController))],Y);const _e=[B.id,H.id],ve=[t.InsertColMutation.id,t.RemoveColMutation.id,t.MoveColsMutation.id];let X=class extends e.Disposable{get visible(){return this._visible$.getValue()}get enabled(){return this._enabled$.getValue()}constructor(t,r,i){super(),this._sheetsFilterController=t,this._commandService=r,this._configService=i,T(this,`_d`,new e.DisposableCollection),T(this,`_visible$`,new n.BehaviorSubject(!1)),T(this,`visible$`,this._visible$.asObservable()),T(this,`_enabled$`,new n.BehaviorSubject(!0)),T(this,`enabled$`,this._enabled$.asObservable());let a=this._configService.getConfig(K);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((n,r)=>{if(ve.includes(n.id)&&r!=null&&r.fromCollab){if(n.id===t.InsertColMutation.id){let{range:t,unitId:i,subUnitId:a}=n.params,{redos:o}=this._sheetsFilterController.handleInsertColCommand(t,i,a);(0,e.sequenceExecute)(o,this._commandService,r)}else if(n.id===t.RemoveColMutation.id){let{range:t,unitId:i,subUnitId:a}=n.params,{redos:o}=this._sheetsFilterController.handleRemoveColCommand(t,i,a);(0,e.sequenceExecute)(o,this._commandService,r)}else if(n.id===t.MoveColsMutation.id){let{sourceRange:t,targetRange:i,unitId:a,subUnitId:o}=n.params,{redos:s}=this._sheetsFilterController.handleMoveColsCommand({fromRange:t,toRange:i},a,o);(0,e.sequenceExecute)(s,this._commandService,r)}}}))}};X=I([F(0,(0,e.Inject)(Y)),F(1,e.ICommandService),F(2,e.IConfigService)],X);var Z=`@univerjs/sheets-filter`,ye=`0.19.0`;let Q=class extends e.Disposable{constructor(e,t,n,r){super(),this._activeDirtyManagerService=e,this._sheetRowFilteredService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._initFormulaDirtyRange(),this._registerSheetRowFiltered()}_initFormulaDirtyRange(){u.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=I([F(0,(0,e.Inject)(a.IActiveDirtyManagerService)),F(1,(0,e.Inject)(a.ISheetRowFilteredService)),F(2,(0,e.Inject)(R)),F(3,e.IUniverInstanceService)],Q);let $=class extends e.Plugin{constructor(t=q,n,r){super(),this._config=t,this._injector=n,this._configService=r;let{...i}=(0,e.merge)({},q,this._config);this._configService.setConfig(K,i)}onStarting(){[[Q],[R],[Y],[X]].forEach(e=>this._injector.add(e))}onReady(){(0,e.touchDependencies)(this._injector,[[Q],[Y],[X]])}};T($,`type`,e.UniverInstanceType.UNIVER_SHEET),T($,`pluginName`,L),T($,`packageName`,Z),T($,`version`,ye),$=I([F(1,(0,e.Inject)(e.Injector)),F(2,e.IConfigService)],$),exports.ClearSheetsFilterCriteriaCommand=de,exports.CustomFilterOperator=f,exports.FILTER_MUTATIONS=u,exports.FilterBy=d,exports.FilterColumn=O,exports.FilterModel=D,exports.ReCalcSheetsFilterCommand=fe,exports.ReCalcSheetsFilterMutation=H,exports.RemoveSheetFilterCommand=W,exports.RemoveSheetsFilterMutation=V,exports.SHEET_FILTER_SNAPSHOT_ID=L,exports.SetSheetFilterRangeCommand=U,exports.SetSheetsFilterCriteriaCommand=ue,exports.SetSheetsFilterCriteriaMutation=B,exports.SetSheetsFilterRangeMutation=z,Object.defineProperty(exports,`SheetsFilterService`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`SheetsFilterSyncController`,{enumerable:!0,get:function(){return X}}),exports.SmartToggleSheetsFilterCommand=le,Object.defineProperty(exports,`UniverSheetsFilterPlugin`,{enumerable:!0,get:function(){return $}}),exports.equals=_,exports.getCustomFilterFn=b,exports.greaterThan=p,exports.greaterThanOrEqualTo=m,exports.lessThan=h,exports.lessThanOrEqualTo=g,exports.notEquals=v;
|
package/lib/es/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{CellValueType as e,ColorKit as t,CommandType as n,Disposable as r,DisposableCollection as i,ErrorService as a,ICommandService as o,IConfigService as s,IResourceManagerService as c,IUndoRedoService as l,IUniverInstanceService as u,Inject as d,Injector as f,LocaleService as p,Optional as m,Plugin as h,Rectangle as g,Tools as _,UniverInstanceType as v,createREGEXFromWildChar as ee,extractPureTextFromCell as te,fromCallback as ne,isNumeric as re,merge as ie,mergeSets as y,moveMatrixArray as ae,sequenceExecute as b,touchDependencies as oe}from"@univerjs/core";import{CopySheetCommand as se,EffectRefRangId as ce,INTERCEPTOR_POINT as le,InsertColCommand as ue,InsertColMutation as de,InsertRowCommand as fe,InsertRowMutation as pe,MoveColsMutation as me,MoveRangeCommand as he,MoveRowsCommand as ge,RefRangeService as _e,RemoveColCommand as ve,RemoveColMutation as ye,RemoveRowCommand as be,RemoveRowMutation as xe,RemoveSheetCommand as Se,SetRangeValuesMutation as Ce,SetWorksheetActiveOperation as we,SheetInterceptorService as Te,SheetsSelectionsService as Ee,ZebraCrossingCacheController as De,expandToContinuousRange as x,getSheetCommandTarget as S,isSingleCellSelection as Oe}from"@univerjs/sheets";import{BehaviorSubject as C,filter as ke,merge as Ae,of as je,switchMap as Me}from"rxjs";import{COLOR_BLACK_RGB as Ne}from"@univerjs/engine-render";import{DataSyncPrimaryController as Pe}from"@univerjs/rpc";import{IActiveDirtyManagerService as Fe,ISheetRowFilteredService as Ie}from"@univerjs/engine-formula";const w=`sheet.mutation.set-filter-range`,T=`sheet.mutation.set-filter-criteria`,E=`sheet.mutation.remove-filter`,D=`sheet.mutation.re-calc-filter`,O=new Set([w,T,E,D]);let k=function(e){return e[e.VALUES=0]=`VALUES`,e[e.COLORS=1]=`COLORS`,e[e.CONDITIONS=2]=`CONDITIONS`,e}({}),A=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}({});const Le={operator:A.GREATER_THAN,fn:(e,t)=>P(e)?e>t:!1},Re={operator:A.GREATER_THAN_OR_EQUAL,fn:(e,t)=>P(e)?e>=t:!1},ze={operator:A.LESS_THAN,fn:(e,t)=>P(e)?e<t:!1},Be={operator:A.LESS_THAN_OR_EQUAL,fn:(e,t)=>P(e)?e<=t:!1},j={operator:A.EQUAL,fn:(e,t)=>P(e)?e===t:!1},M={operator:A.NOT_EQUALS,fn:(e,t)=>{if(typeof t==`string`){if(t===` `)return e!=null;let n=Ge(e);return n&&Ke(t)?!ee(t).test(n):n!==t}return P(e)?e!==t:!0}},Ve=new Map([]);[Le,Re,ze,Be,j,M].forEach(e=>{Ve.set(e.operator,e)});function He(e){return!!e}const Ue={fn:(e,t)=>{let n=Ge(e);return n===null?t===``:ee(t).test(n)}};function N(e){return e?Ve.get(e):Ue}function P(e){return typeof e==`number`}function We(e){return!!(typeof e==`number`||typeof e==`string`&&re(e))}function Ge(e){return typeof e==`boolean`||e==null?null:typeof e==`string`?e:e.toString()}function Ke(e){return typeof e==`number`?!1:e.indexOf(`*`)!==-1||e.indexOf(`?`)!==-1}function F(e){"@babel/helpers - typeof";return F=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},F(e)}function qe(e,t){if(F(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(F(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Je(e){var t=qe(e,`string`);return F(t)==`symbol`?t:t+``}function I(e,t,n){return(t=Je(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const L=()=>new Set;var R=class e extends r{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,I(this,`_filteredOutRows$`,new C(L())),I(this,`filteredOutRows$`,this._filteredOutRows$.asObservable()),I(this,`_hasCriteria$`,new C(!1)),I(this,`hasCriteria$`,this._hasCriteria$.asObservable()),I(this,`_filterColumnByIndex`,new Map),I(this,`_alreadyFilteredOutRows`,L()),I(this,`_range`,void 0)}dispose(){super.dispose(),this._filteredOutRows$.complete(),this._hasCriteria$.complete(),this._worksheet=null}serialize(){let e={ref:g.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,[,t])=>{let n=t.calc({getAlreadyFilteredOutRows:()=>e});return n?y(e,n):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=L(),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 Ye(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(){this._alreadyFilteredOutRows=this._getAllFilterColumns().filter(e=>e.hasCache()).reduce((e,t)=>y(e,t.filteredOutRows),new Set)}_reCalcWithNoCacheColumns(){let e=this._getAllFilterColumns().filter(e=>!e.hasCache());for(let t of e){let e=t.reCalc();e&&(this._alreadyFilteredOutRows=y(this._alreadyFilteredOutRows,e))}}},Ye=class extends r{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,I(this,`_filteredOutRows`,null),I(this,`_filterFn`,null),I(this,`_range`,null),I(this,`_column`,0),I(this,`_filterBy`,k.VALUES)}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 _.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 _.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 t=this._column,n={startColumn:t,endColumn:t,startRow:this._range.startRow+1,endRow:this._range.endRow},r=new Set,i=e.getAlreadyFilteredOutRows();for(let e of this._worksheet.iterateByColumn(n,!1,!1)){let{row:t,rowSpan:n,col:a}=e;if(!(i.has(t)&&(!n||n===1))&&!(this._filterBy===k.VALUES?this._filterFn(te(this._worksheet.getCell(t,a))):this._filterBy===k.COLORS?this._filterFn(this._worksheet.getComposedCellStyle(t,a)):this._filterFn(it(this._worksheet,t,a)))&&(r.add(t),n))for(let e=1;e<n;e++)r.add(t+e)}return r}_generateFilterFn(){this._criteria&&(this._filterFn=Xe(this._criteria),this._filterBy=this._criteria.filters?k.VALUES:this._criteria.colorFilters?k.COLORS:k.CONDITIONS)}};function Xe(e){if(e.filters)return Ze(e.filters);if(e.colorFilters)return Qe(e.colorFilters);if(e.customFilters)return $e(e.customFilters);throw Error(`[FilterModel]: other types of filters are not supported yet.`)}function Ze(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 Qe(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(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(Ne);let i=new t(e.cl.rgb).toRgbString();return n.has(i)}}throw Error(`[FilterModel]: color filters are not supported yet.`)}function $e(e){let t=e.customFilters.map(e=>rt(e));return nt(t)?e.and?et(t):tt(t):t[0]}function et(e){let[t,n]=e;return e=>t(e)&&n(e)}function tt(e){let[t,n]=e;return e=>t(e)||n(e)}function nt(e){return e.length===2}function rt(e){let t=e.val;if(e.operator===A.NOT_EQUALS&&!We(t))return e=>M.fn(e,t);if(He(e.operator)){if(!We(t))return()=>!1;let n=N(e.operator),r=Number(t);return e=>n.fn(e,r)}let n=N(e.operator);return e=>n.fn(e,t)}function it(t,n,r){let i=t.getCell(n,r);if(!i)return null;let a=t.getCellRaw(n,r);return i&&!a?at(i):a?i.t===e.NUMBER&&typeof i.v==`string`?a.v:i.t===e.NUMBER?Number(a.v):at(a):null}function at(t){var n;let r=(n=t.p)==null||(n=n.body)==null?void 0:n.dataStream;if(r)return r.trimEnd();let i=t.v;return typeof i==`string`?t.t===e.BOOLEAN?i.toUpperCase():i:typeof i==`number`?t.t===e.BOOLEAN?i?`TRUE`:`FALSE`:i:typeof i==`boolean`?i?`TRUE`:`FALSE`:``}function z(e,t){return function(n,r){t(n,r,e)}}function B(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}const V=`SHEET_FILTER_PLUGIN`;let H=class extends r{get activeFilterModel(){return this._activeFilterModel$.getValue()}constructor(e,t,n){super(),this._resourcesManagerService=e,this._univerInstanceService=t,this._commandService=n,I(this,`_filterModels`,new Map),I(this,`_loadedUnitId$`,new C(null)),I(this,`loadedUnitId$`,this._loadedUnitId$.asObservable()),I(this,`_errorMsg$`,new C(null)),I(this,`errorMsg$`,this._errorMsg$.asObservable()),I(this,`_activeFilterModel$`,new C(null)),I(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 R(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.getCurrentUnitForType(v.UNIVER_SHEET),!e){this._activeFilterModel$.next(null);return}}catch(e){console.error(`[SheetsFilterService]: could not get active workbook!`,e);return}let t=e.getActiveSheet(!0);if(!t){this._activeFilterModel$.next(null);return}let n=t.getUnitId(),r=t.getSheetId(),i=this.getFilterModel(n,r);this._activeFilterModel$.next(i)}_initActiveFilterModel(){this.disposeWithMe(Ae(ne(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(ke(([e])=>e.type===n.MUTATION&&O.has(e.id))),this._univerInstanceService.getCurrentTypeOfUnit$(v.UNIVER_SHEET).pipe(Me(e=>{var t;return(t=e==null?void 0:e.activeSheet$)==null?je(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=R.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:V,businesses:[v.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)}};H=B([z(0,c),z(1,u),z(2,o)],H);const U={id:w,type:n.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,range:i}=t;return e.get(H).ensureFilterModel(r,n).setRange(i),!0}},W={id:T,type:n.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,criteria:i,col:a,reCalc:o=!0}=t,s=e.get(H).getFilterModel(r,n);return s?(s.setCriteria(a,i,o),!0):!1}},G={id:E,type:n.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t;return e.get(H).removeFilterModel(n,r)}},K={id:D,type:n.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t,i=e.get(H).getFilterModel(n,r);return i?(i.reCalc(),!0):!1}},ot={id:`sheet.command.set-filter-range`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(o),i=e.get(l),s=e.get(u),{unitId:c,subUnitId:d,range:f}=t;if(!S(s,t)||n.getFilterModel(c,d))return!1;if(f.endRow===f.startRow){let t=e.get(a),n=e.get(p);return t.emit(n.t(`sheets-filter.command.not-valid-filter-range`)),!1}let m={id:U.id,params:{unitId:c,subUnitId:d,range:f}},h=r.syncExecuteCommand(m.id,m.params);return h&&i.pushUndoRedo({unitID:c,undoMutations:[{id:G.id,params:{unitId:c,subUnitId:d}}],redoMutations:[m]}),h}},st={id:`sheet.command.remove-sheet-filter`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(u),r=e.get(H),i=e.get(o),a=e.get(l),s=S(n,t);if(!s)return!1;let{unitId:c,subUnitId:d}=s,f=r.getFilterModel(c,d);if(!f)return!1;let p=ft(c,d,f==null?void 0:f.serialize()),m=i.syncExecuteCommand(G.id,{unitId:c,subUnitId:d});return m&&a.pushUndoRedo({unitID:c,undoMutations:p,redoMutations:[{id:G.id,params:{unitId:c,subUnitId:d}}]}),m}},ct={id:`sheet.command.smart-toggle-filter`,type:n.COMMAND,handler:async e=>{let t=e.get(u),n=e.get(H),r=e.get(o),i=t.getCurrentUnitForType(v.UNIVER_SHEET),a=i==null?void 0:i.getActiveSheet();if(!a||!i)return!1;let s=i.getUnitId(),c=a.getSheetId();if(n.getFilterModel(s,c))return r.executeCommand(st.id,{unitId:s,subUnitId:c});let l=e.get(Ee).getCurrentLastSelection();if(!l)return!1;let d=l.range,f=Oe(l)?x(d,{left:!0,right:!0,up:!0,down:!0},a):d.startRow===d.endRow?x(d,{down:!0},a):d;return r.executeCommand(ot.id,{unitId:s,subUnitId:c,range:f})}},lt={id:`sheet.command.set-filter-criteria`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(o),i=e.get(l),{unitId:a,subUnitId:s,col:c,criteria:u}=t,d=n.getFilterModel(a,s);if(!d)return!1;let f=d.getRange();if(!f||c<f.startColumn||c>f.endColumn)return!1;let p=ht(a,s,c,d.getFilterColumn(c)),m={id:W.id,params:{unitId:a,subUnitId:s,col:c,criteria:u}},h=r.syncExecuteCommand(m.id,m.params);return h&&i.pushUndoRedo({unitID:a,undoMutations:[p],redoMutations:[m]}),h}},ut={id:`sheet.command.clear-filter-criteria`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(l),i=e.get(o),a=S(e.get(u),t);if(!a)return!1;let{unitId:s,subUnitId:c}=a,d=n.getFilterModel(a.unitId,a.subUnitId);if(!d)return!1;let f=d.serialize(),p=pt(s,c,f),m=mt(s,c,f);return b(m,i).result?(r.pushUndoRedo({unitID:s,undoMutations:p,redoMutations:m}),!0):!1}},dt={id:`sheet.command.re-calc-filter`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(o),i=S(e.get(u),t);if(!i)return!1;let{unitId:a,subUnitId:s}=i;return n.getFilterModel(i.unitId,i.subUnitId)?r.executeCommand(K.id,{unitId:a,subUnitId:s}):!1}};function ft(e,t,n){let r=[],i={id:U.id,params:{unitId:e,subUnitId:t,range:n.ref}};return r.push(i),pt(e,t,n).forEach(e=>r.push(e)),r}function pt(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:W.id,params:{unitId:e,subUnitId:t,col:n.colId,criteria:n}};i.push(r)}),i}function mt(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:W.id,params:{unitId:e,subUnitId:t,col:n.colId,criteria:null}};i.push(r)}),i}function ht(e,t,n,r){if(!r)return{id:W.id,params:{unitId:e,subUnitId:t,col:n,criteria:null}};let i=r.serialize();return{id:W.id,params:{unitId:e,subUnitId:t,col:n,criteria:i}}}const q=`sheets-filter.config`;Symbol(q);const J={};function gt(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 gt(e,(e,t)=>e.id===W.id&&t.id===W.id&&e.params.unitId===t.params.unitId&&e.params.subUnitId===t.params.subUnitId&&e.params.col===t.params.col)}let X=class extends r{constructor(e,t,n,r,a,o,s){super(),this._commandService=e,this._sheetInterceptorService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._refRangeService=a,this._dataSyncPrimaryController=o,this._zebraCrossingCacheController=s,I(this,`_disposableCollection`,new i),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(){[W,U,K,G].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===we.id){let t=e.params,n=t.subUnitId,r=t.unitId;if(!n||!r)return;this._registerRefRange(r,n)}if(e.id===U.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 n;this._disposableCollection.dispose();let r=this._univerInstanceService.getUniverSheetInstance(e),i=r==null?void 0:r.getSheetBySheetId(t);if(!r||!i)return;let a=(n=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:n.getRange();a&&this._disposableCollection.add(this._refRangeService.registerRefRange(a,n=>{switch(n.id){case fe.id:{let r=n.params,i=r.unitId||e,a=r.subUnitId||t;return this._handleInsertRowCommand(r,i,a)}case ue.id:{let r=n.params,i=r.unitId||e,a=r.subUnitId||t;return this.handleInsertColCommand(r.range,i,a)}case ve.id:{let r=n.params;return this.handleRemoveColCommand(r.range,e,t)}case be.id:{let r=n.params;return this._handleRemoveRowCommand(r,e,t)}case ce.MoveColsCommandId:{let r=n.params;return this.handleMoveColsCommand({fromRange:r.fromRange,toRange:r.toRange},e,t)}case ce.MoveRowsCommandId:{let r=n.params;return this._handleMoveRowsCommand(r,e,t)}case he.id:{let r=n.params;return this._handleMoveRangeCommand(r,e,t)}}return{redos:[],undos:[]}},e,t))}_getUpdateFilter(e){let{id:t}=e;switch(t){case Se.id:{let t=e.params;return this._handleRemoveSheetCommand(t,t.unitId,t.subUnitId)}case se.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:U.id,params:m}),f.push({id:U.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:U.id,params:p}),f.push({id:U.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:W.id,params:{unitId:t,subUnitId:n,col:r,criteria:null}}),d.push({id:W.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:G.id,params:e}),d.unshift({id:U.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:U.id,params:i}),d.unshift({id:U.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:U.id,params:{range:i,unitId:t,subUnitId:n}}],redos:[{id:U.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:U.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:G.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:W.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=[];for(let t=s;t<=c;t++)e.getRowFiltered(t)&&r.push(t);let u=Math.min(a,s),d=u+(o-a)-p+r.length,f={unitId:t,subUnitId:n,range:{...i,startRow:u,endRow:d}};l.push({id:U.id,params:f})}return{undos:Y(u),redos:Y(l)}}handleMoveColsCommand({fromRange:e,toRange:t},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{startColumn:s,endColumn:c}=o;if(e.endColumn<s&&t.startColumn<=s||e.startColumn>c&&t.endColumn>c)return this._handleNull();let l=[],u=[],d={};for(let e=s;e<=c;e++)d[e]={colIndex:e,filter:a.getFilterColumn(e)};ae(e.startColumn,e.endColumn-e.startColumn+1,t.startColumn,d);let f=o.startColumn,p=o.endColumn;s>=e.startColumn&&s<=e.endColumn&&t.startColumn>e.startColumn&&e.endColumn<c&&(f=e.endColumn+1),c>=e.startColumn&&c<=e.endColumn&&t.startColumn<e.startColumn&&e.startColumn>s&&(p=e.startColumn-1);let m=Object.keys(d).map(e=>Number(e)),h=m.find(e=>d[e].colIndex===p),g=m.find(e=>d[e].colIndex===f);if(m.forEach(e=>{let{colIndex:t,filter:i}=d[e],o=e;if(i){var s;if(o>=g&&o<=h){var c;let e={unitId:n,subUnitId:r,col:o,criteria:{...i.serialize(),colId:o}},t={unitId:n,subUnitId:r,col:o,criteria:a.getFilterColumn(o)?{...(c=a.getFilterColumn(o))==null?void 0:c.serialize(),colId:o}:null};l.push({id:W.id,params:e}),u.push({id:W.id,params:t})}if(!((s=d[t])!=null&&s.filter)){let e={unitId:n,subUnitId:r,col:t,criteria:null};l.push({id:W.id,params:e}),u.push({id:W.id,params:{unitId:n,subUnitId:r,col:t,criteria:{...i.serialize(),colId:t}}})}}}),s!==g||c!==h){let e={unitId:n,subUnitId:r,range:{...o,startColumn:g,endColumn:h}};l.unshift({id:U.id,params:e}),u.unshift({id:U.id,params:{range:o,unitId:n,subUnitId:r}})}return{undos:u,redos:l}}_handleMoveRowsCommand(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,{fromRange:c,toRange:l}=e;if(c.endRow<o&&l.startRow<=o||c.startRow>s&&l.endRow>s)return this._handleNull();let u=[],d=[],f={};for(let e=o;e<=s;e++)f[e]={oldIndex:e};let p=o,m=s;s>=c.startRow&&s<=c.endRow&&l.startRow<c.startRow&&c.startRow>o&&(m=c.startRow-1),ae(c.startRow,c.endRow-c.startRow+1,l.startRow,f);let h=Object.keys(f).map(e=>Number(e)),g=h.find(e=>f[e].oldIndex===m),_=h.find(e=>f[e].oldIndex===p);if(o!==_||s!==g){let e={unitId:t,subUnitId:n,range:{...a,startRow:_,endRow:g}};u.push({id:U.id,params:e},{id:K.id,params:{unitId:t,subUnitId:n}}),d.push({id:U.id,params:{range:a,unitId:t,subUnitId:n}},{id:K.id,params:{unitId:t,subUnitId:n}})}return{redos:u,undos:d}}_handleMoveRangeCommand(e,t,n){let{fromRange:r,toRange:i}=e,a=this._sheetsFilterService.getFilterModel(t,n);if(!a)return this._handleNull();let o=a.getRange();if(!o)return this._handleNull();let s=[],c=[];if(g.contains(r,o)){let e=o.startRow-r.startRow,l=o.startColumn-r.startColumn,u={startRow:i.startRow+e,startColumn:i.startColumn+l,endRow:i.startRow+e+(o.endRow-o.startRow),endColumn:i.startColumn+l+(o.endColumn-o.startColumn)},d={id:G.id,params:{unitId:t,subUnitId:n}},f={id:U.id,params:{unitId:t,subUnitId:n,range:u}},p={id:U.id,params:{unitId:t,subUnitId:n,range:o}};s.push(d,f),c.push(d,p);let m=a.getAllFilterColumns(),h=i.startColumn-r.startColumn;m.forEach(e=>{let[r,i]=e;i&&(s.push({id:W.id,params:{unitId:t,subUnitId:n,col:r+h,criteria:{...i.serialize(),colId:r+h}}}),c.push({id:W.id,params:{unitId:t,subUnitId:n,col:r,criteria:{...i.serialize(),colId:r}}}))})}else if(g.intersects(i,o)){let e={...o,endRow:Math.max(o.endRow,i.endRow)};s.push({id:U.id,params:{unitId:t,subUnitId:n,range:e}}),c.push({id:U.id,params:{unitId:t,subUnitId:n,range:o}})}return{redos:s,undos:c}}_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:W.id,params:{unitId:t,subUnitId:n,col:e,criteria:{...r.serialize(),colId:e}}})}),a.push({id:G.id,params:{unitId:t,subUnitId:n,range:i}}),o.unshift({id:U.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:W.id,params:{unitId:e,subUnitId:n,col:t,criteria:{...r.serialize(),colId:t}}}),s.push({id:W.id,params:{unitId:e,subUnitId:n,col:t,criteria:null}})}),s.push({id:G.id,params:{unitId:e,subUnitId:n,range:i}}),a.unshift({id:U.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(le.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:W.id,params:{...i,col:t}}),a.push({id:W.id,params:{...i,col:t,criteria:{...n.serialize(),colId:t}}})}),n.forEach(e=>{let[t,n]=e;c.push({id:W.id,params:{...i,col:t+r,criteria:{...n.serialize(),colId:t+r}}}),s.push({id:W.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:n,subUnitId:r}=e.params||{},i=this._sheetsFilterService.getFilterModel(n,r);if(!i)return;let a=Array.from(i.filteredOutRows).sort((e,t)=>e-t),o=[],s=!1;if(e.id===xe.id){let{startRow:t,endRow:n}=e.params.range,r=a.filter(e=>e>=t&&e<=n);a.forEach(e=>{if(e<t)o.push(e);else if(s=!0,e<=n){let e=Math.max(t,o.length?o[o.length-1]+1:t);o.push(e)}else o.push(e-(n-t+1-r.length))})}if(e.id===pe.id){let{startRow:t,endRow:n}=e.params.range;a.forEach(e=>{e>=t?(s=!0,o.push(e+(n-t+1))):o.push(e)})}if(s&&(i.filteredOutRows=new Set(o)),e.id===Ce.id&&!(t!=null&&t.onlyLocal)){let t=this._getExtendRegion(n,r);if(t){let i=e.params.cellValue;if(i)for(let e=t.startColumn;e<=t.endColumn;e++){var c;let a=i==null||(c=i[t.startRow])==null?void 0:c[e];if(a&&this._cellHasValue(a)){var l;let e=(l=this._univerInstanceService.getUnit(n))==null?void 0:l.getSheetBySheetId(r);if(e){let i=x(t,{down:!0},e),a=this._sheetsFilterService.getFilterModel(n,r),o=a.getRange();a.setRange({...o,endRow:i.endRow}),this._registerRefRange(n,r)}}}}}}))}_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,n=S(this._univerInstanceService,t);if(!n)return;let{subUnitId:r,unitId:i}=n,a=this._sheetsFilterService.getFilterModel(i,r);if(!a)return;let o=a.getRange();if(e.id===ge.id&&t.fromRange.startRow<=o.startRow&&t.fromRange.endRow<o.endRow&&t.fromRange.endRow>=o.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=B([z(0,o),z(1,d(Te)),z(2,d(H)),z(3,u),z(4,d(_e)),z(5,m(Pe)),z(6,d(De))],X);const _t=[W.id,K.id],vt=[de.id,ye.id,me.id];let Z=class extends r{get visible(){return this._visible$.getValue()}get enabled(){return this._enabled$.getValue()}constructor(e,t,n){super(),this._sheetsFilterController=e,this._commandService=t,this._configService=n,I(this,`_d`,new i),I(this,`_visible$`,new C(!1)),I(this,`visible$`,this._visible$.asObservable()),I(this,`_enabled$`,new C(!0)),I(this,`enabled$`,this._enabled$.asObservable());let r=this._configService.getConfig(q);if(r!=null&&r.enableSyncSwitch&&(this._visible$.next(!0),typeof r.enableSyncSwitch==`object`)){var a;this.setEnabled((a=r.enableSyncSwitch.defaultValue)==null?!0:a)}}setEnabled(e){this._enabled$.next(e),e?this._d.dispose():this._initOnlyLocalListener()}_initOnlyLocalListener(){this._d.add(this._commandService.beforeCommandExecuted((e,t)=>{_t.includes(e.id)&&(t||(t={}),t.onlyLocal=!0)})),this._d.add(this._commandService.onCommandExecuted((e,t)=>{if(vt.includes(e.id)&&t!=null&&t.fromCollab){if(e.id===de.id){let{range:n,unitId:r,subUnitId:i}=e.params,{redos:a}=this._sheetsFilterController.handleInsertColCommand(n,r,i);b(a,this._commandService,t)}else if(e.id===ye.id){let{range:n,unitId:r,subUnitId:i}=e.params,{redos:a}=this._sheetsFilterController.handleRemoveColCommand(n,r,i);b(a,this._commandService,t)}else if(e.id===me.id){let{sourceRange:n,targetRange:r,unitId:i,subUnitId:a}=e.params,{redos:o}=this._sheetsFilterController.handleMoveColsCommand({fromRange:n,toRange:r},i,a);b(o,this._commandService,t)}}}))}};Z=B([z(0,d(X)),z(1,o),z(2,s)],Z);var yt=`@univerjs/sheets-filter`,bt=`0.18.0`;let Q=class extends r{constructor(e,t,n,r){super(),this._activeDirtyManagerService=e,this._sheetRowFilteredService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._initFormulaDirtyRange(),this._registerSheetRowFiltered()}_initFormulaDirtyRange(){O.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=B([z(0,d(Fe)),z(1,d(Ie)),z(2,d(H)),z(3,u)],Q);let $=class extends h{constructor(e=J,t,n){super(),this._config=e,this._injector=t,this._configService=n;let{...r}=ie({},J,this._config);this._configService.setConfig(q,r)}onStarting(){[[Q],[H],[X],[Z]].forEach(e=>this._injector.add(e))}onReady(){oe(this._injector,[[Q],[X],[Z]])}};I($,`type`,v.UNIVER_SHEET),I($,`pluginName`,V),I($,`packageName`,yt),I($,`version`,bt),$=B([z(1,d(f)),z(2,s)],$);export{ut as ClearSheetsFilterCriteriaCommand,A as CustomFilterOperator,O as FILTER_MUTATIONS,k as FilterBy,Ye as FilterColumn,R as FilterModel,dt as ReCalcSheetsFilterCommand,K as ReCalcSheetsFilterMutation,st as RemoveSheetFilterCommand,G as RemoveSheetsFilterMutation,V as SHEET_FILTER_SNAPSHOT_ID,ot as SetSheetFilterRangeCommand,lt as SetSheetsFilterCriteriaCommand,W as SetSheetsFilterCriteriaMutation,U as SetSheetsFilterRangeMutation,H as SheetsFilterService,Z as SheetsFilterSyncController,ct as SmartToggleSheetsFilterCommand,$ as UniverSheetsFilterPlugin,j as equals,N as getCustomFilterFn,Le as greaterThan,Re as greaterThanOrEqualTo,ze as lessThan,Be as lessThanOrEqualTo,M as notEquals};
|
|
1
|
+
import{CellValueType as e,ColorKit as t,CommandType as n,Disposable as r,DisposableCollection as i,ErrorService as a,ICommandService as o,IConfigService as s,IResourceManagerService as c,IUndoRedoService as l,IUniverInstanceService as u,Inject as d,Injector as f,LocaleService as p,Optional as m,Plugin as h,Rectangle as g,Tools as _,UniverInstanceType as v,createREGEXFromWildChar as ee,extractPureTextFromCell as te,fromCallback as ne,isNumeric as re,merge as ie,mergeSets as y,moveMatrixArray as ae,sequenceExecute as b,touchDependencies as oe}from"@univerjs/core";import{CopySheetCommand as se,EffectRefRangId as ce,INTERCEPTOR_POINT as le,InsertColCommand as ue,InsertColMutation as de,InsertRowCommand as fe,InsertRowMutation as pe,MoveColsMutation as me,MoveRangeCommand as he,MoveRowsCommand as ge,RefRangeService as _e,RemoveColCommand as ve,RemoveColMutation as ye,RemoveRowCommand as be,RemoveRowMutation as xe,RemoveSheetCommand as Se,SetRangeValuesMutation as Ce,SetWorksheetActiveOperation as we,SheetInterceptorService as Te,SheetsSelectionsService as Ee,ZebraCrossingCacheController as De,expandToContinuousRange as x,getSheetCommandTarget as S,isSingleCellSelection as Oe}from"@univerjs/sheets";import{BehaviorSubject as C,filter as ke,merge as Ae,of as je,switchMap as Me}from"rxjs";import{COLOR_BLACK_RGB as Ne}from"@univerjs/engine-render";import{DataSyncPrimaryController as Pe}from"@univerjs/rpc";import{IActiveDirtyManagerService as Fe,ISheetRowFilteredService as Ie}from"@univerjs/engine-formula";const w=`sheet.mutation.set-filter-range`,T=`sheet.mutation.set-filter-criteria`,E=`sheet.mutation.remove-filter`,D=`sheet.mutation.re-calc-filter`,O=new Set([w,T,E,D]);let k=function(e){return e[e.VALUES=0]=`VALUES`,e[e.COLORS=1]=`COLORS`,e[e.CONDITIONS=2]=`CONDITIONS`,e}({}),A=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}({});const Le={operator:A.GREATER_THAN,fn:(e,t)=>P(e)?e>t:!1},Re={operator:A.GREATER_THAN_OR_EQUAL,fn:(e,t)=>P(e)?e>=t:!1},ze={operator:A.LESS_THAN,fn:(e,t)=>P(e)?e<t:!1},Be={operator:A.LESS_THAN_OR_EQUAL,fn:(e,t)=>P(e)?e<=t:!1},j={operator:A.EQUAL,fn:(e,t)=>P(e)?e===t:!1},M={operator:A.NOT_EQUALS,fn:(e,t)=>{if(typeof t==`string`){if(t===` `)return e!=null;let n=Ge(e);return n&&Ke(t)?!ee(t).test(n):n!==t}return P(e)?e!==t:!0}},Ve=new Map([]);[Le,Re,ze,Be,j,M].forEach(e=>{Ve.set(e.operator,e)});function He(e){return!!e}const Ue={fn:(e,t)=>{let n=Ge(e);return n===null?t===``:ee(t).test(n)}};function N(e){return e?Ve.get(e):Ue}function P(e){return typeof e==`number`}function We(e){return!!(typeof e==`number`||typeof e==`string`&&re(e))}function Ge(e){return typeof e==`boolean`||e==null?null:typeof e==`string`?e:e.toString()}function Ke(e){return typeof e==`number`?!1:e.indexOf(`*`)!==-1||e.indexOf(`?`)!==-1}function F(e){"@babel/helpers - typeof";return F=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},F(e)}function qe(e,t){if(F(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(F(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Je(e){var t=qe(e,`string`);return F(t)==`symbol`?t:t+``}function I(e,t,n){return(t=Je(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const L=()=>new Set;var R=class e extends r{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,I(this,`_filteredOutRows$`,new C(L())),I(this,`filteredOutRows$`,this._filteredOutRows$.asObservable()),I(this,`_hasCriteria$`,new C(!1)),I(this,`hasCriteria$`,this._hasCriteria$.asObservable()),I(this,`_filterColumnByIndex`,new Map),I(this,`_alreadyFilteredOutRows`,L()),I(this,`_range`,void 0)}dispose(){super.dispose(),this._filteredOutRows$.complete(),this._hasCriteria$.complete(),this._worksheet=null}serialize(){let e={ref:g.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,[,t])=>{let n=t.calc({getAlreadyFilteredOutRows:()=>e});return n?y(e,n):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=L(),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 Ye(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(){this._alreadyFilteredOutRows=this._getAllFilterColumns().filter(e=>e.hasCache()).reduce((e,t)=>y(e,t.filteredOutRows),new Set)}_reCalcWithNoCacheColumns(){let e=this._getAllFilterColumns().filter(e=>!e.hasCache());for(let t of e){let e=t.reCalc();e&&(this._alreadyFilteredOutRows=y(this._alreadyFilteredOutRows,e))}}},Ye=class extends r{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,I(this,`_filteredOutRows`,null),I(this,`_filterFn`,null),I(this,`_range`,null),I(this,`_column`,0),I(this,`_filterBy`,k.VALUES)}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 _.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 _.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 t=this._column,n={startColumn:t,endColumn:t,startRow:this._range.startRow+1,endRow:this._range.endRow},r=new Set,i=e.getAlreadyFilteredOutRows();for(let e of this._worksheet.iterateByColumn(n,!1,!1)){let{row:t,rowSpan:n,col:a}=e;if(!(i.has(t)&&(!n||n===1))&&!(this._filterBy===k.VALUES?this._filterFn(te(this._worksheet.getCell(t,a))):this._filterBy===k.COLORS?this._filterFn(this._worksheet.getComposedCellStyle(t,a)):this._filterFn(it(this._worksheet,t,a)))&&(r.add(t),n))for(let e=1;e<n;e++)r.add(t+e)}return r}_generateFilterFn(){this._criteria&&(this._filterFn=Xe(this._criteria),this._filterBy=this._criteria.filters?k.VALUES:this._criteria.colorFilters?k.COLORS:k.CONDITIONS)}};function Xe(e){if(e.filters)return Ze(e.filters);if(e.colorFilters)return Qe(e.colorFilters);if(e.customFilters)return $e(e.customFilters);throw Error(`[FilterModel]: other types of filters are not supported yet.`)}function Ze(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 Qe(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(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(Ne);let i=new t(e.cl.rgb).toRgbString();return n.has(i)}}throw Error(`[FilterModel]: color filters are not supported yet.`)}function $e(e){let t=e.customFilters.map(e=>rt(e));return nt(t)?e.and?et(t):tt(t):t[0]}function et(e){let[t,n]=e;return e=>t(e)&&n(e)}function tt(e){let[t,n]=e;return e=>t(e)||n(e)}function nt(e){return e.length===2}function rt(e){let t=e.val;if(e.operator===A.NOT_EQUALS&&!We(t))return e=>M.fn(e,t);if(He(e.operator)){if(!We(t))return()=>!1;let n=N(e.operator),r=Number(t);return e=>n.fn(e,r)}let n=N(e.operator);return e=>n.fn(e,t)}function it(t,n,r){let i=t.getCell(n,r);if(!i)return null;let a=t.getCellRaw(n,r);return i&&!a?at(i):a?i.t===e.NUMBER&&typeof i.v==`string`?a.v:i.t===e.NUMBER?Number(a.v):at(a):null}function at(t){var n;let r=(n=t.p)==null||(n=n.body)==null?void 0:n.dataStream;if(r)return r.trimEnd();let i=t.v;return typeof i==`string`?t.t===e.BOOLEAN?i.toUpperCase():i:typeof i==`number`?t.t===e.BOOLEAN?i?`TRUE`:`FALSE`:i:typeof i==`boolean`?i?`TRUE`:`FALSE`:``}function z(e,t){return function(n,r){t(n,r,e)}}function B(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}const V=`SHEET_FILTER_PLUGIN`;let H=class extends r{get activeFilterModel(){return this._activeFilterModel$.getValue()}constructor(e,t,n){super(),this._resourcesManagerService=e,this._univerInstanceService=t,this._commandService=n,I(this,`_filterModels`,new Map),I(this,`_loadedUnitId$`,new C(null)),I(this,`loadedUnitId$`,this._loadedUnitId$.asObservable()),I(this,`_errorMsg$`,new C(null)),I(this,`errorMsg$`,this._errorMsg$.asObservable()),I(this,`_activeFilterModel$`,new C(null)),I(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 R(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.getCurrentUnitForType(v.UNIVER_SHEET),!e){this._activeFilterModel$.next(null);return}}catch(e){console.error(`[SheetsFilterService]: could not get active workbook!`,e);return}let t=e.getActiveSheet(!0);if(!t){this._activeFilterModel$.next(null);return}let n=t.getUnitId(),r=t.getSheetId(),i=this.getFilterModel(n,r);this._activeFilterModel$.next(i)}_initActiveFilterModel(){this.disposeWithMe(Ae(ne(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(ke(([e])=>e.type===n.MUTATION&&O.has(e.id))),this._univerInstanceService.getCurrentTypeOfUnit$(v.UNIVER_SHEET).pipe(Me(e=>{var t;return(t=e==null?void 0:e.activeSheet$)==null?je(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=R.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:V,businesses:[v.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)}};H=B([z(0,c),z(1,u),z(2,o)],H);const U={id:w,type:n.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,range:i}=t;return e.get(H).ensureFilterModel(r,n).setRange(i),!0}},W={id:T,type:n.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,criteria:i,col:a,reCalc:o=!0}=t,s=e.get(H).getFilterModel(r,n);return s?(s.setCriteria(a,i,o),!0):!1}},G={id:E,type:n.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t;return e.get(H).removeFilterModel(n,r)}},K={id:D,type:n.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t,i=e.get(H).getFilterModel(n,r);return i?(i.reCalc(),!0):!1}},ot={id:`sheet.command.set-filter-range`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(o),i=e.get(l),s=e.get(u),{unitId:c,subUnitId:d,range:f}=t;if(!S(s,t)||n.getFilterModel(c,d))return!1;if(f.endRow===f.startRow){let t=e.get(a),n=e.get(p);return t.emit(n.t(`sheets-filter.command.not-valid-filter-range`)),!1}let m={id:U.id,params:{unitId:c,subUnitId:d,range:f}},h=r.syncExecuteCommand(m.id,m.params);return h&&i.pushUndoRedo({unitID:c,undoMutations:[{id:G.id,params:{unitId:c,subUnitId:d}}],redoMutations:[m]}),h}},st={id:`sheet.command.remove-sheet-filter`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(u),r=e.get(H),i=e.get(o),a=e.get(l),s=S(n,t);if(!s)return!1;let{unitId:c,subUnitId:d}=s,f=r.getFilterModel(c,d);if(!f)return!1;let p=ft(c,d,f==null?void 0:f.serialize()),m=i.syncExecuteCommand(G.id,{unitId:c,subUnitId:d});return m&&a.pushUndoRedo({unitID:c,undoMutations:p,redoMutations:[{id:G.id,params:{unitId:c,subUnitId:d}}]}),m}},ct={id:`sheet.command.smart-toggle-filter`,type:n.COMMAND,handler:async e=>{let t=e.get(u),n=e.get(H),r=e.get(o),i=t.getCurrentUnitForType(v.UNIVER_SHEET),a=i==null?void 0:i.getActiveSheet();if(!a||!i)return!1;let s=i.getUnitId(),c=a.getSheetId();if(n.getFilterModel(s,c))return r.executeCommand(st.id,{unitId:s,subUnitId:c});let l=e.get(Ee).getCurrentLastSelection();if(!l)return!1;let d=l.range,f=Oe(l)?x(d,{left:!0,right:!0,up:!0,down:!0},a):d.startRow===d.endRow?x(d,{down:!0},a):d;return r.executeCommand(ot.id,{unitId:s,subUnitId:c,range:f})}},lt={id:`sheet.command.set-filter-criteria`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(o),i=e.get(l),{unitId:a,subUnitId:s,col:c,criteria:u}=t,d=n.getFilterModel(a,s);if(!d)return!1;let f=d.getRange();if(!f||c<f.startColumn||c>f.endColumn)return!1;let p=ht(a,s,c,d.getFilterColumn(c)),m={id:W.id,params:{unitId:a,subUnitId:s,col:c,criteria:u}},h=r.syncExecuteCommand(m.id,m.params);return h&&i.pushUndoRedo({unitID:a,undoMutations:[p],redoMutations:[m]}),h}},ut={id:`sheet.command.clear-filter-criteria`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(l),i=e.get(o),a=S(e.get(u),t);if(!a)return!1;let{unitId:s,subUnitId:c}=a,d=n.getFilterModel(a.unitId,a.subUnitId);if(!d)return!1;let f=d.serialize(),p=pt(s,c,f),m=mt(s,c,f);return b(m,i).result?(r.pushUndoRedo({unitID:s,undoMutations:p,redoMutations:m}),!0):!1}},dt={id:`sheet.command.re-calc-filter`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(o),i=S(e.get(u),t);if(!i)return!1;let{unitId:a,subUnitId:s}=i;return n.getFilterModel(i.unitId,i.subUnitId)?r.executeCommand(K.id,{unitId:a,subUnitId:s}):!1}};function ft(e,t,n){let r=[],i={id:U.id,params:{unitId:e,subUnitId:t,range:n.ref}};return r.push(i),pt(e,t,n).forEach(e=>r.push(e)),r}function pt(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:W.id,params:{unitId:e,subUnitId:t,col:n.colId,criteria:n}};i.push(r)}),i}function mt(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:W.id,params:{unitId:e,subUnitId:t,col:n.colId,criteria:null}};i.push(r)}),i}function ht(e,t,n,r){if(!r)return{id:W.id,params:{unitId:e,subUnitId:t,col:n,criteria:null}};let i=r.serialize();return{id:W.id,params:{unitId:e,subUnitId:t,col:n,criteria:i}}}const q=`sheets-filter.config`;Symbol(q);const J={};function gt(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 gt(e,(e,t)=>e.id===W.id&&t.id===W.id&&e.params.unitId===t.params.unitId&&e.params.subUnitId===t.params.subUnitId&&e.params.col===t.params.col)}let X=class extends r{constructor(e,t,n,r,a,o,s){super(),this._commandService=e,this._sheetInterceptorService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._refRangeService=a,this._dataSyncPrimaryController=o,this._zebraCrossingCacheController=s,I(this,`_disposableCollection`,new i),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(){[W,U,K,G].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===we.id){let t=e.params,n=t.subUnitId,r=t.unitId;if(!n||!r)return;this._registerRefRange(r,n)}if(e.id===U.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 n;this._disposableCollection.dispose();let r=this._univerInstanceService.getUniverSheetInstance(e),i=r==null?void 0:r.getSheetBySheetId(t);if(!r||!i)return;let a=(n=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:n.getRange();a&&this._disposableCollection.add(this._refRangeService.registerRefRange(a,n=>{switch(n.id){case fe.id:{let r=n.params,i=r.unitId||e,a=r.subUnitId||t;return this._handleInsertRowCommand(r,i,a)}case ue.id:{let r=n.params,i=r.unitId||e,a=r.subUnitId||t;return this.handleInsertColCommand(r.range,i,a)}case ve.id:{let r=n.params;return this.handleRemoveColCommand(r.range,e,t)}case be.id:{let r=n.params;return this._handleRemoveRowCommand(r,e,t)}case ce.MoveColsCommandId:{let r=n.params;return this.handleMoveColsCommand({fromRange:r.fromRange,toRange:r.toRange},e,t)}case ce.MoveRowsCommandId:{let r=n.params;return this._handleMoveRowsCommand(r,e,t)}case he.id:{let r=n.params;return this._handleMoveRangeCommand(r,e,t)}}return{redos:[],undos:[]}},e,t))}_getUpdateFilter(e){let{id:t}=e;switch(t){case Se.id:{let t=e.params;return this._handleRemoveSheetCommand(t,t.unitId,t.subUnitId)}case se.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:U.id,params:m}),f.push({id:U.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:U.id,params:p}),f.push({id:U.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:W.id,params:{unitId:t,subUnitId:n,col:r,criteria:null}}),d.push({id:W.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:G.id,params:e}),d.unshift({id:U.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:U.id,params:i}),d.unshift({id:U.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:U.id,params:{range:i,unitId:t,subUnitId:n}}],redos:[{id:U.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:U.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:G.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:W.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=[];for(let t=s;t<=c;t++)e.getRowFiltered(t)&&r.push(t);let u=Math.min(a,s),d=u+(o-a)-p+r.length,f={unitId:t,subUnitId:n,range:{...i,startRow:u,endRow:d}};l.push({id:U.id,params:f})}return{undos:Y(u),redos:Y(l)}}handleMoveColsCommand({fromRange:e,toRange:t},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{startColumn:s,endColumn:c}=o;if(e.endColumn<s&&t.startColumn<=s||e.startColumn>c&&t.endColumn>c)return this._handleNull();let l=[],u=[],d={};for(let e=s;e<=c;e++)d[e]={colIndex:e,filter:a.getFilterColumn(e)};ae(e.startColumn,e.endColumn-e.startColumn+1,t.startColumn,d);let f=o.startColumn,p=o.endColumn;s>=e.startColumn&&s<=e.endColumn&&t.startColumn>e.startColumn&&e.endColumn<c&&(f=e.endColumn+1),c>=e.startColumn&&c<=e.endColumn&&t.startColumn<e.startColumn&&e.startColumn>s&&(p=e.startColumn-1);let m=Object.keys(d).map(e=>Number(e)),h=m.find(e=>d[e].colIndex===p),g=m.find(e=>d[e].colIndex===f);if(m.forEach(e=>{let{colIndex:t,filter:i}=d[e],o=e;if(i){var s;if(o>=g&&o<=h){var c;let e={unitId:n,subUnitId:r,col:o,criteria:{...i.serialize(),colId:o}},t={unitId:n,subUnitId:r,col:o,criteria:a.getFilterColumn(o)?{...(c=a.getFilterColumn(o))==null?void 0:c.serialize(),colId:o}:null};l.push({id:W.id,params:e}),u.push({id:W.id,params:t})}if(!((s=d[t])!=null&&s.filter)){let e={unitId:n,subUnitId:r,col:t,criteria:null};l.push({id:W.id,params:e}),u.push({id:W.id,params:{unitId:n,subUnitId:r,col:t,criteria:{...i.serialize(),colId:t}}})}}}),s!==g||c!==h){let e={unitId:n,subUnitId:r,range:{...o,startColumn:g,endColumn:h}};l.unshift({id:U.id,params:e}),u.unshift({id:U.id,params:{range:o,unitId:n,subUnitId:r}})}return{undos:u,redos:l}}_handleMoveRowsCommand(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,{fromRange:c,toRange:l}=e;if(c.endRow<o&&l.startRow<=o||c.startRow>s&&l.endRow>s)return this._handleNull();let u=[],d=[],f={};for(let e=o;e<=s;e++)f[e]={oldIndex:e};let p=o,m=s;s>=c.startRow&&s<=c.endRow&&l.startRow<c.startRow&&c.startRow>o&&(m=c.startRow-1),ae(c.startRow,c.endRow-c.startRow+1,l.startRow,f);let h=Object.keys(f).map(e=>Number(e)),g=h.find(e=>f[e].oldIndex===m),_=h.find(e=>f[e].oldIndex===p);if(o!==_||s!==g){let e={unitId:t,subUnitId:n,range:{...a,startRow:_,endRow:g}};u.push({id:U.id,params:e},{id:K.id,params:{unitId:t,subUnitId:n}}),d.push({id:U.id,params:{range:a,unitId:t,subUnitId:n}},{id:K.id,params:{unitId:t,subUnitId:n}})}return{redos:u,undos:d}}_handleMoveRangeCommand(e,t,n){let{fromRange:r,toRange:i}=e,a=this._sheetsFilterService.getFilterModel(t,n);if(!a)return this._handleNull();let o=a.getRange();if(!o)return this._handleNull();let s=[],c=[];if(g.contains(r,o)){let e=o.startRow-r.startRow,l=o.startColumn-r.startColumn,u={startRow:i.startRow+e,startColumn:i.startColumn+l,endRow:i.startRow+e+(o.endRow-o.startRow),endColumn:i.startColumn+l+(o.endColumn-o.startColumn)},d={id:G.id,params:{unitId:t,subUnitId:n}},f={id:U.id,params:{unitId:t,subUnitId:n,range:u}},p={id:U.id,params:{unitId:t,subUnitId:n,range:o}};s.push(d,f),c.push(d,p);let m=a.getAllFilterColumns(),h=i.startColumn-r.startColumn;m.forEach(e=>{let[r,i]=e;i&&(s.push({id:W.id,params:{unitId:t,subUnitId:n,col:r+h,criteria:{...i.serialize(),colId:r+h}}}),c.push({id:W.id,params:{unitId:t,subUnitId:n,col:r,criteria:{...i.serialize(),colId:r}}}))})}else if(g.intersects(i,o)){let e={...o,endRow:Math.max(o.endRow,i.endRow)};s.push({id:U.id,params:{unitId:t,subUnitId:n,range:e}}),c.push({id:U.id,params:{unitId:t,subUnitId:n,range:o}})}return{redos:s,undos:c}}_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:W.id,params:{unitId:t,subUnitId:n,col:e,criteria:{...r.serialize(),colId:e}}})}),a.push({id:G.id,params:{unitId:t,subUnitId:n,range:i}}),o.unshift({id:U.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:W.id,params:{unitId:e,subUnitId:n,col:t,criteria:{...r.serialize(),colId:t}}}),s.push({id:W.id,params:{unitId:e,subUnitId:n,col:t,criteria:null}})}),s.push({id:G.id,params:{unitId:e,subUnitId:n,range:i}}),a.unshift({id:U.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(le.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:W.id,params:{...i,col:t}}),a.push({id:W.id,params:{...i,col:t,criteria:{...n.serialize(),colId:t}}})}),n.forEach(e=>{let[t,n]=e;c.push({id:W.id,params:{...i,col:t+r,criteria:{...n.serialize(),colId:t+r}}}),s.push({id:W.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:n,subUnitId:r}=e.params||{},i=this._sheetsFilterService.getFilterModel(n,r);if(!i)return;let a=Array.from(i.filteredOutRows).sort((e,t)=>e-t),o=[],s=!1;if(e.id===xe.id){let{startRow:t,endRow:n}=e.params.range,r=a.filter(e=>e>=t&&e<=n);a.forEach(e=>{if(e<t)o.push(e);else if(s=!0,e<=n){let e=Math.max(t,o.length?o[o.length-1]+1:t);o.push(e)}else o.push(e-(n-t+1-r.length))})}if(e.id===pe.id){let{startRow:t,endRow:n}=e.params.range;a.forEach(e=>{e>=t?(s=!0,o.push(e+(n-t+1))):o.push(e)})}if(s&&(i.filteredOutRows=new Set(o)),e.id===Ce.id&&!(t!=null&&t.onlyLocal)){let t=this._getExtendRegion(n,r);if(t){let i=e.params.cellValue;if(i)for(let e=t.startColumn;e<=t.endColumn;e++){var c;let a=i==null||(c=i[t.startRow])==null?void 0:c[e];if(a&&this._cellHasValue(a)){var l;let e=(l=this._univerInstanceService.getUnit(n))==null?void 0:l.getSheetBySheetId(r);if(e){let i=x(t,{down:!0},e),a=this._sheetsFilterService.getFilterModel(n,r),o=a.getRange();a.setRange({...o,endRow:i.endRow}),this._registerRefRange(n,r)}}}}}}))}_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,n=S(this._univerInstanceService,t);if(!n)return;let{subUnitId:r,unitId:i}=n,a=this._sheetsFilterService.getFilterModel(i,r);if(!a)return;let o=a.getRange();if(e.id===ge.id&&t.fromRange.startRow<=o.startRow&&t.fromRange.endRow<o.endRow&&t.fromRange.endRow>=o.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=B([z(0,o),z(1,d(Te)),z(2,d(H)),z(3,u),z(4,d(_e)),z(5,m(Pe)),z(6,d(De))],X);const _t=[W.id,K.id],vt=[de.id,ye.id,me.id];let Z=class extends r{get visible(){return this._visible$.getValue()}get enabled(){return this._enabled$.getValue()}constructor(e,t,n){super(),this._sheetsFilterController=e,this._commandService=t,this._configService=n,I(this,`_d`,new i),I(this,`_visible$`,new C(!1)),I(this,`visible$`,this._visible$.asObservable()),I(this,`_enabled$`,new C(!0)),I(this,`enabled$`,this._enabled$.asObservable());let r=this._configService.getConfig(q);if(r!=null&&r.enableSyncSwitch&&(this._visible$.next(!0),typeof r.enableSyncSwitch==`object`)){var a;this.setEnabled((a=r.enableSyncSwitch.defaultValue)==null?!0:a)}}setEnabled(e){this._enabled$.next(e),e?this._d.dispose():this._initOnlyLocalListener()}_initOnlyLocalListener(){this._d.add(this._commandService.beforeCommandExecuted((e,t)=>{_t.includes(e.id)&&(t||(t={}),t.onlyLocal=!0)})),this._d.add(this._commandService.onCommandExecuted((e,t)=>{if(vt.includes(e.id)&&t!=null&&t.fromCollab){if(e.id===de.id){let{range:n,unitId:r,subUnitId:i}=e.params,{redos:a}=this._sheetsFilterController.handleInsertColCommand(n,r,i);b(a,this._commandService,t)}else if(e.id===ye.id){let{range:n,unitId:r,subUnitId:i}=e.params,{redos:a}=this._sheetsFilterController.handleRemoveColCommand(n,r,i);b(a,this._commandService,t)}else if(e.id===me.id){let{sourceRange:n,targetRange:r,unitId:i,subUnitId:a}=e.params,{redos:o}=this._sheetsFilterController.handleMoveColsCommand({fromRange:n,toRange:r},i,a);b(o,this._commandService,t)}}}))}};Z=B([z(0,d(X)),z(1,o),z(2,s)],Z);var yt=`@univerjs/sheets-filter`,bt=`0.19.0`;let Q=class extends r{constructor(e,t,n,r){super(),this._activeDirtyManagerService=e,this._sheetRowFilteredService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._initFormulaDirtyRange(),this._registerSheetRowFiltered()}_initFormulaDirtyRange(){O.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=B([z(0,d(Fe)),z(1,d(Ie)),z(2,d(H)),z(3,u)],Q);let $=class extends h{constructor(e=J,t,n){super(),this._config=e,this._injector=t,this._configService=n;let{...r}=ie({},J,this._config);this._configService.setConfig(q,r)}onStarting(){[[Q],[H],[X],[Z]].forEach(e=>this._injector.add(e))}onReady(){oe(this._injector,[[Q],[X],[Z]])}};I($,`type`,v.UNIVER_SHEET),I($,`pluginName`,V),I($,`packageName`,yt),I($,`version`,bt),$=B([z(1,d(f)),z(2,s)],$);export{ut as ClearSheetsFilterCriteriaCommand,A as CustomFilterOperator,O as FILTER_MUTATIONS,k as FilterBy,Ye as FilterColumn,R as FilterModel,dt as ReCalcSheetsFilterCommand,K as ReCalcSheetsFilterMutation,st as RemoveSheetFilterCommand,G as RemoveSheetsFilterMutation,V as SHEET_FILTER_SNAPSHOT_ID,ot as SetSheetFilterRangeCommand,lt as SetSheetsFilterCriteriaCommand,W as SetSheetsFilterCriteriaMutation,U as SetSheetsFilterRangeMutation,H as SheetsFilterService,Z as SheetsFilterSyncController,ct as SmartToggleSheetsFilterCommand,$ as UniverSheetsFilterPlugin,j as equals,N as getCustomFilterFn,Le as greaterThan,Re as greaterThanOrEqualTo,ze as lessThan,Be as lessThanOrEqualTo,M as notEquals};
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{CellValueType as e,ColorKit as t,CommandType as n,Disposable as r,DisposableCollection as i,ErrorService as a,ICommandService as o,IConfigService as s,IResourceManagerService as c,IUndoRedoService as l,IUniverInstanceService as u,Inject as d,Injector as f,LocaleService as p,Optional as m,Plugin as h,Rectangle as g,Tools as _,UniverInstanceType as v,createREGEXFromWildChar as ee,extractPureTextFromCell as te,fromCallback as ne,isNumeric as re,merge as ie,mergeSets as y,moveMatrixArray as ae,sequenceExecute as b,touchDependencies as oe}from"@univerjs/core";import{CopySheetCommand as se,EffectRefRangId as ce,INTERCEPTOR_POINT as le,InsertColCommand as ue,InsertColMutation as de,InsertRowCommand as fe,InsertRowMutation as pe,MoveColsMutation as me,MoveRangeCommand as he,MoveRowsCommand as ge,RefRangeService as _e,RemoveColCommand as ve,RemoveColMutation as ye,RemoveRowCommand as be,RemoveRowMutation as xe,RemoveSheetCommand as Se,SetRangeValuesMutation as Ce,SetWorksheetActiveOperation as we,SheetInterceptorService as Te,SheetsSelectionsService as Ee,ZebraCrossingCacheController as De,expandToContinuousRange as x,getSheetCommandTarget as S,isSingleCellSelection as Oe}from"@univerjs/sheets";import{BehaviorSubject as C,filter as ke,merge as Ae,of as je,switchMap as Me}from"rxjs";import{COLOR_BLACK_RGB as Ne}from"@univerjs/engine-render";import{DataSyncPrimaryController as Pe}from"@univerjs/rpc";import{IActiveDirtyManagerService as Fe,ISheetRowFilteredService as Ie}from"@univerjs/engine-formula";const w=`sheet.mutation.set-filter-range`,T=`sheet.mutation.set-filter-criteria`,E=`sheet.mutation.remove-filter`,D=`sheet.mutation.re-calc-filter`,O=new Set([w,T,E,D]);let k=function(e){return e[e.VALUES=0]=`VALUES`,e[e.COLORS=1]=`COLORS`,e[e.CONDITIONS=2]=`CONDITIONS`,e}({}),A=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}({});const Le={operator:A.GREATER_THAN,fn:(e,t)=>P(e)?e>t:!1},Re={operator:A.GREATER_THAN_OR_EQUAL,fn:(e,t)=>P(e)?e>=t:!1},ze={operator:A.LESS_THAN,fn:(e,t)=>P(e)?e<t:!1},Be={operator:A.LESS_THAN_OR_EQUAL,fn:(e,t)=>P(e)?e<=t:!1},j={operator:A.EQUAL,fn:(e,t)=>P(e)?e===t:!1},M={operator:A.NOT_EQUALS,fn:(e,t)=>{if(typeof t==`string`){if(t===` `)return e!=null;let n=Ge(e);return n&&Ke(t)?!ee(t).test(n):n!==t}return P(e)?e!==t:!0}},Ve=new Map([]);[Le,Re,ze,Be,j,M].forEach(e=>{Ve.set(e.operator,e)});function He(e){return!!e}const Ue={fn:(e,t)=>{let n=Ge(e);return n===null?t===``:ee(t).test(n)}};function N(e){return e?Ve.get(e):Ue}function P(e){return typeof e==`number`}function We(e){return!!(typeof e==`number`||typeof e==`string`&&re(e))}function Ge(e){return typeof e==`boolean`||e==null?null:typeof e==`string`?e:e.toString()}function Ke(e){return typeof e==`number`?!1:e.indexOf(`*`)!==-1||e.indexOf(`?`)!==-1}function F(e){"@babel/helpers - typeof";return F=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},F(e)}function qe(e,t){if(F(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(F(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Je(e){var t=qe(e,`string`);return F(t)==`symbol`?t:t+``}function I(e,t,n){return(t=Je(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const L=()=>new Set;var R=class e extends r{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,I(this,`_filteredOutRows$`,new C(L())),I(this,`filteredOutRows$`,this._filteredOutRows$.asObservable()),I(this,`_hasCriteria$`,new C(!1)),I(this,`hasCriteria$`,this._hasCriteria$.asObservable()),I(this,`_filterColumnByIndex`,new Map),I(this,`_alreadyFilteredOutRows`,L()),I(this,`_range`,void 0)}dispose(){super.dispose(),this._filteredOutRows$.complete(),this._hasCriteria$.complete(),this._worksheet=null}serialize(){let e={ref:g.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,[,t])=>{let n=t.calc({getAlreadyFilteredOutRows:()=>e});return n?y(e,n):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=L(),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 Ye(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(){this._alreadyFilteredOutRows=this._getAllFilterColumns().filter(e=>e.hasCache()).reduce((e,t)=>y(e,t.filteredOutRows),new Set)}_reCalcWithNoCacheColumns(){let e=this._getAllFilterColumns().filter(e=>!e.hasCache());for(let t of e){let e=t.reCalc();e&&(this._alreadyFilteredOutRows=y(this._alreadyFilteredOutRows,e))}}},Ye=class extends r{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,I(this,`_filteredOutRows`,null),I(this,`_filterFn`,null),I(this,`_range`,null),I(this,`_column`,0),I(this,`_filterBy`,k.VALUES)}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 _.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 _.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 t=this._column,n={startColumn:t,endColumn:t,startRow:this._range.startRow+1,endRow:this._range.endRow},r=new Set,i=e.getAlreadyFilteredOutRows();for(let e of this._worksheet.iterateByColumn(n,!1,!1)){let{row:t,rowSpan:n,col:a}=e;if(!(i.has(t)&&(!n||n===1))&&!(this._filterBy===k.VALUES?this._filterFn(te(this._worksheet.getCell(t,a))):this._filterBy===k.COLORS?this._filterFn(this._worksheet.getComposedCellStyle(t,a)):this._filterFn(it(this._worksheet,t,a)))&&(r.add(t),n))for(let e=1;e<n;e++)r.add(t+e)}return r}_generateFilterFn(){this._criteria&&(this._filterFn=Xe(this._criteria),this._filterBy=this._criteria.filters?k.VALUES:this._criteria.colorFilters?k.COLORS:k.CONDITIONS)}};function Xe(e){if(e.filters)return Ze(e.filters);if(e.colorFilters)return Qe(e.colorFilters);if(e.customFilters)return $e(e.customFilters);throw Error(`[FilterModel]: other types of filters are not supported yet.`)}function Ze(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 Qe(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(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(Ne);let i=new t(e.cl.rgb).toRgbString();return n.has(i)}}throw Error(`[FilterModel]: color filters are not supported yet.`)}function $e(e){let t=e.customFilters.map(e=>rt(e));return nt(t)?e.and?et(t):tt(t):t[0]}function et(e){let[t,n]=e;return e=>t(e)&&n(e)}function tt(e){let[t,n]=e;return e=>t(e)||n(e)}function nt(e){return e.length===2}function rt(e){let t=e.val;if(e.operator===A.NOT_EQUALS&&!We(t))return e=>M.fn(e,t);if(He(e.operator)){if(!We(t))return()=>!1;let n=N(e.operator),r=Number(t);return e=>n.fn(e,r)}let n=N(e.operator);return e=>n.fn(e,t)}function it(t,n,r){let i=t.getCell(n,r);if(!i)return null;let a=t.getCellRaw(n,r);return i&&!a?at(i):a?i.t===e.NUMBER&&typeof i.v==`string`?a.v:i.t===e.NUMBER?Number(a.v):at(a):null}function at(t){var n;let r=(n=t.p)==null||(n=n.body)==null?void 0:n.dataStream;if(r)return r.trimEnd();let i=t.v;return typeof i==`string`?t.t===e.BOOLEAN?i.toUpperCase():i:typeof i==`number`?t.t===e.BOOLEAN?i?`TRUE`:`FALSE`:i:typeof i==`boolean`?i?`TRUE`:`FALSE`:``}function z(e,t){return function(n,r){t(n,r,e)}}function B(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}const V=`SHEET_FILTER_PLUGIN`;let H=class extends r{get activeFilterModel(){return this._activeFilterModel$.getValue()}constructor(e,t,n){super(),this._resourcesManagerService=e,this._univerInstanceService=t,this._commandService=n,I(this,`_filterModels`,new Map),I(this,`_loadedUnitId$`,new C(null)),I(this,`loadedUnitId$`,this._loadedUnitId$.asObservable()),I(this,`_errorMsg$`,new C(null)),I(this,`errorMsg$`,this._errorMsg$.asObservable()),I(this,`_activeFilterModel$`,new C(null)),I(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 R(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.getCurrentUnitForType(v.UNIVER_SHEET),!e){this._activeFilterModel$.next(null);return}}catch(e){console.error(`[SheetsFilterService]: could not get active workbook!`,e);return}let t=e.getActiveSheet(!0);if(!t){this._activeFilterModel$.next(null);return}let n=t.getUnitId(),r=t.getSheetId(),i=this.getFilterModel(n,r);this._activeFilterModel$.next(i)}_initActiveFilterModel(){this.disposeWithMe(Ae(ne(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(ke(([e])=>e.type===n.MUTATION&&O.has(e.id))),this._univerInstanceService.getCurrentTypeOfUnit$(v.UNIVER_SHEET).pipe(Me(e=>{var t;return(t=e==null?void 0:e.activeSheet$)==null?je(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=R.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:V,businesses:[v.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)}};H=B([z(0,c),z(1,u),z(2,o)],H);const U={id:w,type:n.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,range:i}=t;return e.get(H).ensureFilterModel(r,n).setRange(i),!0}},W={id:T,type:n.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,criteria:i,col:a,reCalc:o=!0}=t,s=e.get(H).getFilterModel(r,n);return s?(s.setCriteria(a,i,o),!0):!1}},G={id:E,type:n.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t;return e.get(H).removeFilterModel(n,r)}},K={id:D,type:n.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t,i=e.get(H).getFilterModel(n,r);return i?(i.reCalc(),!0):!1}},ot={id:`sheet.command.set-filter-range`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(o),i=e.get(l),s=e.get(u),{unitId:c,subUnitId:d,range:f}=t;if(!S(s,t)||n.getFilterModel(c,d))return!1;if(f.endRow===f.startRow){let t=e.get(a),n=e.get(p);return t.emit(n.t(`sheets-filter.command.not-valid-filter-range`)),!1}let m={id:U.id,params:{unitId:c,subUnitId:d,range:f}},h=r.syncExecuteCommand(m.id,m.params);return h&&i.pushUndoRedo({unitID:c,undoMutations:[{id:G.id,params:{unitId:c,subUnitId:d}}],redoMutations:[m]}),h}},st={id:`sheet.command.remove-sheet-filter`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(u),r=e.get(H),i=e.get(o),a=e.get(l),s=S(n,t);if(!s)return!1;let{unitId:c,subUnitId:d}=s,f=r.getFilterModel(c,d);if(!f)return!1;let p=ft(c,d,f==null?void 0:f.serialize()),m=i.syncExecuteCommand(G.id,{unitId:c,subUnitId:d});return m&&a.pushUndoRedo({unitID:c,undoMutations:p,redoMutations:[{id:G.id,params:{unitId:c,subUnitId:d}}]}),m}},ct={id:`sheet.command.smart-toggle-filter`,type:n.COMMAND,handler:async e=>{let t=e.get(u),n=e.get(H),r=e.get(o),i=t.getCurrentUnitForType(v.UNIVER_SHEET),a=i==null?void 0:i.getActiveSheet();if(!a||!i)return!1;let s=i.getUnitId(),c=a.getSheetId();if(n.getFilterModel(s,c))return r.executeCommand(st.id,{unitId:s,subUnitId:c});let l=e.get(Ee).getCurrentLastSelection();if(!l)return!1;let d=l.range,f=Oe(l)?x(d,{left:!0,right:!0,up:!0,down:!0},a):d.startRow===d.endRow?x(d,{down:!0},a):d;return r.executeCommand(ot.id,{unitId:s,subUnitId:c,range:f})}},lt={id:`sheet.command.set-filter-criteria`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(o),i=e.get(l),{unitId:a,subUnitId:s,col:c,criteria:u}=t,d=n.getFilterModel(a,s);if(!d)return!1;let f=d.getRange();if(!f||c<f.startColumn||c>f.endColumn)return!1;let p=ht(a,s,c,d.getFilterColumn(c)),m={id:W.id,params:{unitId:a,subUnitId:s,col:c,criteria:u}},h=r.syncExecuteCommand(m.id,m.params);return h&&i.pushUndoRedo({unitID:a,undoMutations:[p],redoMutations:[m]}),h}},ut={id:`sheet.command.clear-filter-criteria`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(l),i=e.get(o),a=S(e.get(u),t);if(!a)return!1;let{unitId:s,subUnitId:c}=a,d=n.getFilterModel(a.unitId,a.subUnitId);if(!d)return!1;let f=d.serialize(),p=pt(s,c,f),m=mt(s,c,f);return b(m,i).result?(r.pushUndoRedo({unitID:s,undoMutations:p,redoMutations:m}),!0):!1}},dt={id:`sheet.command.re-calc-filter`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(o),i=S(e.get(u),t);if(!i)return!1;let{unitId:a,subUnitId:s}=i;return n.getFilterModel(i.unitId,i.subUnitId)?r.executeCommand(K.id,{unitId:a,subUnitId:s}):!1}};function ft(e,t,n){let r=[],i={id:U.id,params:{unitId:e,subUnitId:t,range:n.ref}};return r.push(i),pt(e,t,n).forEach(e=>r.push(e)),r}function pt(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:W.id,params:{unitId:e,subUnitId:t,col:n.colId,criteria:n}};i.push(r)}),i}function mt(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:W.id,params:{unitId:e,subUnitId:t,col:n.colId,criteria:null}};i.push(r)}),i}function ht(e,t,n,r){if(!r)return{id:W.id,params:{unitId:e,subUnitId:t,col:n,criteria:null}};let i=r.serialize();return{id:W.id,params:{unitId:e,subUnitId:t,col:n,criteria:i}}}const q=`sheets-filter.config`;Symbol(q);const J={};function gt(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 gt(e,(e,t)=>e.id===W.id&&t.id===W.id&&e.params.unitId===t.params.unitId&&e.params.subUnitId===t.params.subUnitId&&e.params.col===t.params.col)}let X=class extends r{constructor(e,t,n,r,a,o,s){super(),this._commandService=e,this._sheetInterceptorService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._refRangeService=a,this._dataSyncPrimaryController=o,this._zebraCrossingCacheController=s,I(this,`_disposableCollection`,new i),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(){[W,U,K,G].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===we.id){let t=e.params,n=t.subUnitId,r=t.unitId;if(!n||!r)return;this._registerRefRange(r,n)}if(e.id===U.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 n;this._disposableCollection.dispose();let r=this._univerInstanceService.getUniverSheetInstance(e),i=r==null?void 0:r.getSheetBySheetId(t);if(!r||!i)return;let a=(n=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:n.getRange();a&&this._disposableCollection.add(this._refRangeService.registerRefRange(a,n=>{switch(n.id){case fe.id:{let r=n.params,i=r.unitId||e,a=r.subUnitId||t;return this._handleInsertRowCommand(r,i,a)}case ue.id:{let r=n.params,i=r.unitId||e,a=r.subUnitId||t;return this.handleInsertColCommand(r.range,i,a)}case ve.id:{let r=n.params;return this.handleRemoveColCommand(r.range,e,t)}case be.id:{let r=n.params;return this._handleRemoveRowCommand(r,e,t)}case ce.MoveColsCommandId:{let r=n.params;return this.handleMoveColsCommand({fromRange:r.fromRange,toRange:r.toRange},e,t)}case ce.MoveRowsCommandId:{let r=n.params;return this._handleMoveRowsCommand(r,e,t)}case he.id:{let r=n.params;return this._handleMoveRangeCommand(r,e,t)}}return{redos:[],undos:[]}},e,t))}_getUpdateFilter(e){let{id:t}=e;switch(t){case Se.id:{let t=e.params;return this._handleRemoveSheetCommand(t,t.unitId,t.subUnitId)}case se.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:U.id,params:m}),f.push({id:U.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:U.id,params:p}),f.push({id:U.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:W.id,params:{unitId:t,subUnitId:n,col:r,criteria:null}}),d.push({id:W.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:G.id,params:e}),d.unshift({id:U.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:U.id,params:i}),d.unshift({id:U.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:U.id,params:{range:i,unitId:t,subUnitId:n}}],redos:[{id:U.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:U.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:G.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:W.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=[];for(let t=s;t<=c;t++)e.getRowFiltered(t)&&r.push(t);let u=Math.min(a,s),d=u+(o-a)-p+r.length,f={unitId:t,subUnitId:n,range:{...i,startRow:u,endRow:d}};l.push({id:U.id,params:f})}return{undos:Y(u),redos:Y(l)}}handleMoveColsCommand({fromRange:e,toRange:t},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{startColumn:s,endColumn:c}=o;if(e.endColumn<s&&t.startColumn<=s||e.startColumn>c&&t.endColumn>c)return this._handleNull();let l=[],u=[],d={};for(let e=s;e<=c;e++)d[e]={colIndex:e,filter:a.getFilterColumn(e)};ae(e.startColumn,e.endColumn-e.startColumn+1,t.startColumn,d);let f=o.startColumn,p=o.endColumn;s>=e.startColumn&&s<=e.endColumn&&t.startColumn>e.startColumn&&e.endColumn<c&&(f=e.endColumn+1),c>=e.startColumn&&c<=e.endColumn&&t.startColumn<e.startColumn&&e.startColumn>s&&(p=e.startColumn-1);let m=Object.keys(d).map(e=>Number(e)),h=m.find(e=>d[e].colIndex===p),g=m.find(e=>d[e].colIndex===f);if(m.forEach(e=>{let{colIndex:t,filter:i}=d[e],o=e;if(i){var s;if(o>=g&&o<=h){var c;let e={unitId:n,subUnitId:r,col:o,criteria:{...i.serialize(),colId:o}},t={unitId:n,subUnitId:r,col:o,criteria:a.getFilterColumn(o)?{...(c=a.getFilterColumn(o))==null?void 0:c.serialize(),colId:o}:null};l.push({id:W.id,params:e}),u.push({id:W.id,params:t})}if(!((s=d[t])!=null&&s.filter)){let e={unitId:n,subUnitId:r,col:t,criteria:null};l.push({id:W.id,params:e}),u.push({id:W.id,params:{unitId:n,subUnitId:r,col:t,criteria:{...i.serialize(),colId:t}}})}}}),s!==g||c!==h){let e={unitId:n,subUnitId:r,range:{...o,startColumn:g,endColumn:h}};l.unshift({id:U.id,params:e}),u.unshift({id:U.id,params:{range:o,unitId:n,subUnitId:r}})}return{undos:u,redos:l}}_handleMoveRowsCommand(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,{fromRange:c,toRange:l}=e;if(c.endRow<o&&l.startRow<=o||c.startRow>s&&l.endRow>s)return this._handleNull();let u=[],d=[],f={};for(let e=o;e<=s;e++)f[e]={oldIndex:e};let p=o,m=s;s>=c.startRow&&s<=c.endRow&&l.startRow<c.startRow&&c.startRow>o&&(m=c.startRow-1),ae(c.startRow,c.endRow-c.startRow+1,l.startRow,f);let h=Object.keys(f).map(e=>Number(e)),g=h.find(e=>f[e].oldIndex===m),_=h.find(e=>f[e].oldIndex===p);if(o!==_||s!==g){let e={unitId:t,subUnitId:n,range:{...a,startRow:_,endRow:g}};u.push({id:U.id,params:e},{id:K.id,params:{unitId:t,subUnitId:n}}),d.push({id:U.id,params:{range:a,unitId:t,subUnitId:n}},{id:K.id,params:{unitId:t,subUnitId:n}})}return{redos:u,undos:d}}_handleMoveRangeCommand(e,t,n){let{fromRange:r,toRange:i}=e,a=this._sheetsFilterService.getFilterModel(t,n);if(!a)return this._handleNull();let o=a.getRange();if(!o)return this._handleNull();let s=[],c=[];if(g.contains(r,o)){let e=o.startRow-r.startRow,l=o.startColumn-r.startColumn,u={startRow:i.startRow+e,startColumn:i.startColumn+l,endRow:i.startRow+e+(o.endRow-o.startRow),endColumn:i.startColumn+l+(o.endColumn-o.startColumn)},d={id:G.id,params:{unitId:t,subUnitId:n}},f={id:U.id,params:{unitId:t,subUnitId:n,range:u}},p={id:U.id,params:{unitId:t,subUnitId:n,range:o}};s.push(d,f),c.push(d,p);let m=a.getAllFilterColumns(),h=i.startColumn-r.startColumn;m.forEach(e=>{let[r,i]=e;i&&(s.push({id:W.id,params:{unitId:t,subUnitId:n,col:r+h,criteria:{...i.serialize(),colId:r+h}}}),c.push({id:W.id,params:{unitId:t,subUnitId:n,col:r,criteria:{...i.serialize(),colId:r}}}))})}else if(g.intersects(i,o)){let e={...o,endRow:Math.max(o.endRow,i.endRow)};s.push({id:U.id,params:{unitId:t,subUnitId:n,range:e}}),c.push({id:U.id,params:{unitId:t,subUnitId:n,range:o}})}return{redos:s,undos:c}}_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:W.id,params:{unitId:t,subUnitId:n,col:e,criteria:{...r.serialize(),colId:e}}})}),a.push({id:G.id,params:{unitId:t,subUnitId:n,range:i}}),o.unshift({id:U.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:W.id,params:{unitId:e,subUnitId:n,col:t,criteria:{...r.serialize(),colId:t}}}),s.push({id:W.id,params:{unitId:e,subUnitId:n,col:t,criteria:null}})}),s.push({id:G.id,params:{unitId:e,subUnitId:n,range:i}}),a.unshift({id:U.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(le.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:W.id,params:{...i,col:t}}),a.push({id:W.id,params:{...i,col:t,criteria:{...n.serialize(),colId:t}}})}),n.forEach(e=>{let[t,n]=e;c.push({id:W.id,params:{...i,col:t+r,criteria:{...n.serialize(),colId:t+r}}}),s.push({id:W.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:n,subUnitId:r}=e.params||{},i=this._sheetsFilterService.getFilterModel(n,r);if(!i)return;let a=Array.from(i.filteredOutRows).sort((e,t)=>e-t),o=[],s=!1;if(e.id===xe.id){let{startRow:t,endRow:n}=e.params.range,r=a.filter(e=>e>=t&&e<=n);a.forEach(e=>{if(e<t)o.push(e);else if(s=!0,e<=n){let e=Math.max(t,o.length?o[o.length-1]+1:t);o.push(e)}else o.push(e-(n-t+1-r.length))})}if(e.id===pe.id){let{startRow:t,endRow:n}=e.params.range;a.forEach(e=>{e>=t?(s=!0,o.push(e+(n-t+1))):o.push(e)})}if(s&&(i.filteredOutRows=new Set(o)),e.id===Ce.id&&!(t!=null&&t.onlyLocal)){let t=this._getExtendRegion(n,r);if(t){let i=e.params.cellValue;if(i)for(let e=t.startColumn;e<=t.endColumn;e++){var c;let a=i==null||(c=i[t.startRow])==null?void 0:c[e];if(a&&this._cellHasValue(a)){var l;let e=(l=this._univerInstanceService.getUnit(n))==null?void 0:l.getSheetBySheetId(r);if(e){let i=x(t,{down:!0},e),a=this._sheetsFilterService.getFilterModel(n,r),o=a.getRange();a.setRange({...o,endRow:i.endRow}),this._registerRefRange(n,r)}}}}}}))}_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,n=S(this._univerInstanceService,t);if(!n)return;let{subUnitId:r,unitId:i}=n,a=this._sheetsFilterService.getFilterModel(i,r);if(!a)return;let o=a.getRange();if(e.id===ge.id&&t.fromRange.startRow<=o.startRow&&t.fromRange.endRow<o.endRow&&t.fromRange.endRow>=o.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=B([z(0,o),z(1,d(Te)),z(2,d(H)),z(3,u),z(4,d(_e)),z(5,m(Pe)),z(6,d(De))],X);const _t=[W.id,K.id],vt=[de.id,ye.id,me.id];let Z=class extends r{get visible(){return this._visible$.getValue()}get enabled(){return this._enabled$.getValue()}constructor(e,t,n){super(),this._sheetsFilterController=e,this._commandService=t,this._configService=n,I(this,`_d`,new i),I(this,`_visible$`,new C(!1)),I(this,`visible$`,this._visible$.asObservable()),I(this,`_enabled$`,new C(!0)),I(this,`enabled$`,this._enabled$.asObservable());let r=this._configService.getConfig(q);if(r!=null&&r.enableSyncSwitch&&(this._visible$.next(!0),typeof r.enableSyncSwitch==`object`)){var a;this.setEnabled((a=r.enableSyncSwitch.defaultValue)==null?!0:a)}}setEnabled(e){this._enabled$.next(e),e?this._d.dispose():this._initOnlyLocalListener()}_initOnlyLocalListener(){this._d.add(this._commandService.beforeCommandExecuted((e,t)=>{_t.includes(e.id)&&(t||(t={}),t.onlyLocal=!0)})),this._d.add(this._commandService.onCommandExecuted((e,t)=>{if(vt.includes(e.id)&&t!=null&&t.fromCollab){if(e.id===de.id){let{range:n,unitId:r,subUnitId:i}=e.params,{redos:a}=this._sheetsFilterController.handleInsertColCommand(n,r,i);b(a,this._commandService,t)}else if(e.id===ye.id){let{range:n,unitId:r,subUnitId:i}=e.params,{redos:a}=this._sheetsFilterController.handleRemoveColCommand(n,r,i);b(a,this._commandService,t)}else if(e.id===me.id){let{sourceRange:n,targetRange:r,unitId:i,subUnitId:a}=e.params,{redos:o}=this._sheetsFilterController.handleMoveColsCommand({fromRange:n,toRange:r},i,a);b(o,this._commandService,t)}}}))}};Z=B([z(0,d(X)),z(1,o),z(2,s)],Z);var yt=`@univerjs/sheets-filter`,bt=`0.18.0`;let Q=class extends r{constructor(e,t,n,r){super(),this._activeDirtyManagerService=e,this._sheetRowFilteredService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._initFormulaDirtyRange(),this._registerSheetRowFiltered()}_initFormulaDirtyRange(){O.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=B([z(0,d(Fe)),z(1,d(Ie)),z(2,d(H)),z(3,u)],Q);let $=class extends h{constructor(e=J,t,n){super(),this._config=e,this._injector=t,this._configService=n;let{...r}=ie({},J,this._config);this._configService.setConfig(q,r)}onStarting(){[[Q],[H],[X],[Z]].forEach(e=>this._injector.add(e))}onReady(){oe(this._injector,[[Q],[X],[Z]])}};I($,`type`,v.UNIVER_SHEET),I($,`pluginName`,V),I($,`packageName`,yt),I($,`version`,bt),$=B([z(1,d(f)),z(2,s)],$);export{ut as ClearSheetsFilterCriteriaCommand,A as CustomFilterOperator,O as FILTER_MUTATIONS,k as FilterBy,Ye as FilterColumn,R as FilterModel,dt as ReCalcSheetsFilterCommand,K as ReCalcSheetsFilterMutation,st as RemoveSheetFilterCommand,G as RemoveSheetsFilterMutation,V as SHEET_FILTER_SNAPSHOT_ID,ot as SetSheetFilterRangeCommand,lt as SetSheetsFilterCriteriaCommand,W as SetSheetsFilterCriteriaMutation,U as SetSheetsFilterRangeMutation,H as SheetsFilterService,Z as SheetsFilterSyncController,ct as SmartToggleSheetsFilterCommand,$ as UniverSheetsFilterPlugin,j as equals,N as getCustomFilterFn,Le as greaterThan,Re as greaterThanOrEqualTo,ze as lessThan,Be as lessThanOrEqualTo,M as notEquals};
|
|
1
|
+
import{CellValueType as e,ColorKit as t,CommandType as n,Disposable as r,DisposableCollection as i,ErrorService as a,ICommandService as o,IConfigService as s,IResourceManagerService as c,IUndoRedoService as l,IUniverInstanceService as u,Inject as d,Injector as f,LocaleService as p,Optional as m,Plugin as h,Rectangle as g,Tools as _,UniverInstanceType as v,createREGEXFromWildChar as ee,extractPureTextFromCell as te,fromCallback as ne,isNumeric as re,merge as ie,mergeSets as y,moveMatrixArray as ae,sequenceExecute as b,touchDependencies as oe}from"@univerjs/core";import{CopySheetCommand as se,EffectRefRangId as ce,INTERCEPTOR_POINT as le,InsertColCommand as ue,InsertColMutation as de,InsertRowCommand as fe,InsertRowMutation as pe,MoveColsMutation as me,MoveRangeCommand as he,MoveRowsCommand as ge,RefRangeService as _e,RemoveColCommand as ve,RemoveColMutation as ye,RemoveRowCommand as be,RemoveRowMutation as xe,RemoveSheetCommand as Se,SetRangeValuesMutation as Ce,SetWorksheetActiveOperation as we,SheetInterceptorService as Te,SheetsSelectionsService as Ee,ZebraCrossingCacheController as De,expandToContinuousRange as x,getSheetCommandTarget as S,isSingleCellSelection as Oe}from"@univerjs/sheets";import{BehaviorSubject as C,filter as ke,merge as Ae,of as je,switchMap as Me}from"rxjs";import{COLOR_BLACK_RGB as Ne}from"@univerjs/engine-render";import{DataSyncPrimaryController as Pe}from"@univerjs/rpc";import{IActiveDirtyManagerService as Fe,ISheetRowFilteredService as Ie}from"@univerjs/engine-formula";const w=`sheet.mutation.set-filter-range`,T=`sheet.mutation.set-filter-criteria`,E=`sheet.mutation.remove-filter`,D=`sheet.mutation.re-calc-filter`,O=new Set([w,T,E,D]);let k=function(e){return e[e.VALUES=0]=`VALUES`,e[e.COLORS=1]=`COLORS`,e[e.CONDITIONS=2]=`CONDITIONS`,e}({}),A=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}({});const Le={operator:A.GREATER_THAN,fn:(e,t)=>P(e)?e>t:!1},Re={operator:A.GREATER_THAN_OR_EQUAL,fn:(e,t)=>P(e)?e>=t:!1},ze={operator:A.LESS_THAN,fn:(e,t)=>P(e)?e<t:!1},Be={operator:A.LESS_THAN_OR_EQUAL,fn:(e,t)=>P(e)?e<=t:!1},j={operator:A.EQUAL,fn:(e,t)=>P(e)?e===t:!1},M={operator:A.NOT_EQUALS,fn:(e,t)=>{if(typeof t==`string`){if(t===` `)return e!=null;let n=Ge(e);return n&&Ke(t)?!ee(t).test(n):n!==t}return P(e)?e!==t:!0}},Ve=new Map([]);[Le,Re,ze,Be,j,M].forEach(e=>{Ve.set(e.operator,e)});function He(e){return!!e}const Ue={fn:(e,t)=>{let n=Ge(e);return n===null?t===``:ee(t).test(n)}};function N(e){return e?Ve.get(e):Ue}function P(e){return typeof e==`number`}function We(e){return!!(typeof e==`number`||typeof e==`string`&&re(e))}function Ge(e){return typeof e==`boolean`||e==null?null:typeof e==`string`?e:e.toString()}function Ke(e){return typeof e==`number`?!1:e.indexOf(`*`)!==-1||e.indexOf(`?`)!==-1}function F(e){"@babel/helpers - typeof";return F=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},F(e)}function qe(e,t){if(F(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(F(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Je(e){var t=qe(e,`string`);return F(t)==`symbol`?t:t+``}function I(e,t,n){return(t=Je(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const L=()=>new Set;var R=class e extends r{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,I(this,`_filteredOutRows$`,new C(L())),I(this,`filteredOutRows$`,this._filteredOutRows$.asObservable()),I(this,`_hasCriteria$`,new C(!1)),I(this,`hasCriteria$`,this._hasCriteria$.asObservable()),I(this,`_filterColumnByIndex`,new Map),I(this,`_alreadyFilteredOutRows`,L()),I(this,`_range`,void 0)}dispose(){super.dispose(),this._filteredOutRows$.complete(),this._hasCriteria$.complete(),this._worksheet=null}serialize(){let e={ref:g.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,[,t])=>{let n=t.calc({getAlreadyFilteredOutRows:()=>e});return n?y(e,n):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=L(),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 Ye(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(){this._alreadyFilteredOutRows=this._getAllFilterColumns().filter(e=>e.hasCache()).reduce((e,t)=>y(e,t.filteredOutRows),new Set)}_reCalcWithNoCacheColumns(){let e=this._getAllFilterColumns().filter(e=>!e.hasCache());for(let t of e){let e=t.reCalc();e&&(this._alreadyFilteredOutRows=y(this._alreadyFilteredOutRows,e))}}},Ye=class extends r{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,I(this,`_filteredOutRows`,null),I(this,`_filterFn`,null),I(this,`_range`,null),I(this,`_column`,0),I(this,`_filterBy`,k.VALUES)}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 _.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 _.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 t=this._column,n={startColumn:t,endColumn:t,startRow:this._range.startRow+1,endRow:this._range.endRow},r=new Set,i=e.getAlreadyFilteredOutRows();for(let e of this._worksheet.iterateByColumn(n,!1,!1)){let{row:t,rowSpan:n,col:a}=e;if(!(i.has(t)&&(!n||n===1))&&!(this._filterBy===k.VALUES?this._filterFn(te(this._worksheet.getCell(t,a))):this._filterBy===k.COLORS?this._filterFn(this._worksheet.getComposedCellStyle(t,a)):this._filterFn(it(this._worksheet,t,a)))&&(r.add(t),n))for(let e=1;e<n;e++)r.add(t+e)}return r}_generateFilterFn(){this._criteria&&(this._filterFn=Xe(this._criteria),this._filterBy=this._criteria.filters?k.VALUES:this._criteria.colorFilters?k.COLORS:k.CONDITIONS)}};function Xe(e){if(e.filters)return Ze(e.filters);if(e.colorFilters)return Qe(e.colorFilters);if(e.customFilters)return $e(e.customFilters);throw Error(`[FilterModel]: other types of filters are not supported yet.`)}function Ze(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 Qe(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(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(Ne);let i=new t(e.cl.rgb).toRgbString();return n.has(i)}}throw Error(`[FilterModel]: color filters are not supported yet.`)}function $e(e){let t=e.customFilters.map(e=>rt(e));return nt(t)?e.and?et(t):tt(t):t[0]}function et(e){let[t,n]=e;return e=>t(e)&&n(e)}function tt(e){let[t,n]=e;return e=>t(e)||n(e)}function nt(e){return e.length===2}function rt(e){let t=e.val;if(e.operator===A.NOT_EQUALS&&!We(t))return e=>M.fn(e,t);if(He(e.operator)){if(!We(t))return()=>!1;let n=N(e.operator),r=Number(t);return e=>n.fn(e,r)}let n=N(e.operator);return e=>n.fn(e,t)}function it(t,n,r){let i=t.getCell(n,r);if(!i)return null;let a=t.getCellRaw(n,r);return i&&!a?at(i):a?i.t===e.NUMBER&&typeof i.v==`string`?a.v:i.t===e.NUMBER?Number(a.v):at(a):null}function at(t){var n;let r=(n=t.p)==null||(n=n.body)==null?void 0:n.dataStream;if(r)return r.trimEnd();let i=t.v;return typeof i==`string`?t.t===e.BOOLEAN?i.toUpperCase():i:typeof i==`number`?t.t===e.BOOLEAN?i?`TRUE`:`FALSE`:i:typeof i==`boolean`?i?`TRUE`:`FALSE`:``}function z(e,t){return function(n,r){t(n,r,e)}}function B(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}const V=`SHEET_FILTER_PLUGIN`;let H=class extends r{get activeFilterModel(){return this._activeFilterModel$.getValue()}constructor(e,t,n){super(),this._resourcesManagerService=e,this._univerInstanceService=t,this._commandService=n,I(this,`_filterModels`,new Map),I(this,`_loadedUnitId$`,new C(null)),I(this,`loadedUnitId$`,this._loadedUnitId$.asObservable()),I(this,`_errorMsg$`,new C(null)),I(this,`errorMsg$`,this._errorMsg$.asObservable()),I(this,`_activeFilterModel$`,new C(null)),I(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 R(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.getCurrentUnitForType(v.UNIVER_SHEET),!e){this._activeFilterModel$.next(null);return}}catch(e){console.error(`[SheetsFilterService]: could not get active workbook!`,e);return}let t=e.getActiveSheet(!0);if(!t){this._activeFilterModel$.next(null);return}let n=t.getUnitId(),r=t.getSheetId(),i=this.getFilterModel(n,r);this._activeFilterModel$.next(i)}_initActiveFilterModel(){this.disposeWithMe(Ae(ne(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(ke(([e])=>e.type===n.MUTATION&&O.has(e.id))),this._univerInstanceService.getCurrentTypeOfUnit$(v.UNIVER_SHEET).pipe(Me(e=>{var t;return(t=e==null?void 0:e.activeSheet$)==null?je(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=R.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:V,businesses:[v.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)}};H=B([z(0,c),z(1,u),z(2,o)],H);const U={id:w,type:n.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,range:i}=t;return e.get(H).ensureFilterModel(r,n).setRange(i),!0}},W={id:T,type:n.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,criteria:i,col:a,reCalc:o=!0}=t,s=e.get(H).getFilterModel(r,n);return s?(s.setCriteria(a,i,o),!0):!1}},G={id:E,type:n.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t;return e.get(H).removeFilterModel(n,r)}},K={id:D,type:n.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t,i=e.get(H).getFilterModel(n,r);return i?(i.reCalc(),!0):!1}},ot={id:`sheet.command.set-filter-range`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(o),i=e.get(l),s=e.get(u),{unitId:c,subUnitId:d,range:f}=t;if(!S(s,t)||n.getFilterModel(c,d))return!1;if(f.endRow===f.startRow){let t=e.get(a),n=e.get(p);return t.emit(n.t(`sheets-filter.command.not-valid-filter-range`)),!1}let m={id:U.id,params:{unitId:c,subUnitId:d,range:f}},h=r.syncExecuteCommand(m.id,m.params);return h&&i.pushUndoRedo({unitID:c,undoMutations:[{id:G.id,params:{unitId:c,subUnitId:d}}],redoMutations:[m]}),h}},st={id:`sheet.command.remove-sheet-filter`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(u),r=e.get(H),i=e.get(o),a=e.get(l),s=S(n,t);if(!s)return!1;let{unitId:c,subUnitId:d}=s,f=r.getFilterModel(c,d);if(!f)return!1;let p=ft(c,d,f==null?void 0:f.serialize()),m=i.syncExecuteCommand(G.id,{unitId:c,subUnitId:d});return m&&a.pushUndoRedo({unitID:c,undoMutations:p,redoMutations:[{id:G.id,params:{unitId:c,subUnitId:d}}]}),m}},ct={id:`sheet.command.smart-toggle-filter`,type:n.COMMAND,handler:async e=>{let t=e.get(u),n=e.get(H),r=e.get(o),i=t.getCurrentUnitForType(v.UNIVER_SHEET),a=i==null?void 0:i.getActiveSheet();if(!a||!i)return!1;let s=i.getUnitId(),c=a.getSheetId();if(n.getFilterModel(s,c))return r.executeCommand(st.id,{unitId:s,subUnitId:c});let l=e.get(Ee).getCurrentLastSelection();if(!l)return!1;let d=l.range,f=Oe(l)?x(d,{left:!0,right:!0,up:!0,down:!0},a):d.startRow===d.endRow?x(d,{down:!0},a):d;return r.executeCommand(ot.id,{unitId:s,subUnitId:c,range:f})}},lt={id:`sheet.command.set-filter-criteria`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(o),i=e.get(l),{unitId:a,subUnitId:s,col:c,criteria:u}=t,d=n.getFilterModel(a,s);if(!d)return!1;let f=d.getRange();if(!f||c<f.startColumn||c>f.endColumn)return!1;let p=ht(a,s,c,d.getFilterColumn(c)),m={id:W.id,params:{unitId:a,subUnitId:s,col:c,criteria:u}},h=r.syncExecuteCommand(m.id,m.params);return h&&i.pushUndoRedo({unitID:a,undoMutations:[p],redoMutations:[m]}),h}},ut={id:`sheet.command.clear-filter-criteria`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(l),i=e.get(o),a=S(e.get(u),t);if(!a)return!1;let{unitId:s,subUnitId:c}=a,d=n.getFilterModel(a.unitId,a.subUnitId);if(!d)return!1;let f=d.serialize(),p=pt(s,c,f),m=mt(s,c,f);return b(m,i).result?(r.pushUndoRedo({unitID:s,undoMutations:p,redoMutations:m}),!0):!1}},dt={id:`sheet.command.re-calc-filter`,type:n.COMMAND,handler:(e,t)=>{let n=e.get(H),r=e.get(o),i=S(e.get(u),t);if(!i)return!1;let{unitId:a,subUnitId:s}=i;return n.getFilterModel(i.unitId,i.subUnitId)?r.executeCommand(K.id,{unitId:a,subUnitId:s}):!1}};function ft(e,t,n){let r=[],i={id:U.id,params:{unitId:e,subUnitId:t,range:n.ref}};return r.push(i),pt(e,t,n).forEach(e=>r.push(e)),r}function pt(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:W.id,params:{unitId:e,subUnitId:t,col:n.colId,criteria:n}};i.push(r)}),i}function mt(e,t,n){var r;let i=[];return(r=n.filterColumns)==null||r.forEach(n=>{let r={id:W.id,params:{unitId:e,subUnitId:t,col:n.colId,criteria:null}};i.push(r)}),i}function ht(e,t,n,r){if(!r)return{id:W.id,params:{unitId:e,subUnitId:t,col:n,criteria:null}};let i=r.serialize();return{id:W.id,params:{unitId:e,subUnitId:t,col:n,criteria:i}}}const q=`sheets-filter.config`;Symbol(q);const J={};function gt(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 gt(e,(e,t)=>e.id===W.id&&t.id===W.id&&e.params.unitId===t.params.unitId&&e.params.subUnitId===t.params.subUnitId&&e.params.col===t.params.col)}let X=class extends r{constructor(e,t,n,r,a,o,s){super(),this._commandService=e,this._sheetInterceptorService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._refRangeService=a,this._dataSyncPrimaryController=o,this._zebraCrossingCacheController=s,I(this,`_disposableCollection`,new i),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(){[W,U,K,G].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===we.id){let t=e.params,n=t.subUnitId,r=t.unitId;if(!n||!r)return;this._registerRefRange(r,n)}if(e.id===U.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 n;this._disposableCollection.dispose();let r=this._univerInstanceService.getUniverSheetInstance(e),i=r==null?void 0:r.getSheetBySheetId(t);if(!r||!i)return;let a=(n=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:n.getRange();a&&this._disposableCollection.add(this._refRangeService.registerRefRange(a,n=>{switch(n.id){case fe.id:{let r=n.params,i=r.unitId||e,a=r.subUnitId||t;return this._handleInsertRowCommand(r,i,a)}case ue.id:{let r=n.params,i=r.unitId||e,a=r.subUnitId||t;return this.handleInsertColCommand(r.range,i,a)}case ve.id:{let r=n.params;return this.handleRemoveColCommand(r.range,e,t)}case be.id:{let r=n.params;return this._handleRemoveRowCommand(r,e,t)}case ce.MoveColsCommandId:{let r=n.params;return this.handleMoveColsCommand({fromRange:r.fromRange,toRange:r.toRange},e,t)}case ce.MoveRowsCommandId:{let r=n.params;return this._handleMoveRowsCommand(r,e,t)}case he.id:{let r=n.params;return this._handleMoveRangeCommand(r,e,t)}}return{redos:[],undos:[]}},e,t))}_getUpdateFilter(e){let{id:t}=e;switch(t){case Se.id:{let t=e.params;return this._handleRemoveSheetCommand(t,t.unitId,t.subUnitId)}case se.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:U.id,params:m}),f.push({id:U.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:U.id,params:p}),f.push({id:U.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:W.id,params:{unitId:t,subUnitId:n,col:r,criteria:null}}),d.push({id:W.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:G.id,params:e}),d.unshift({id:U.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:U.id,params:i}),d.unshift({id:U.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:U.id,params:{range:i,unitId:t,subUnitId:n}}],redos:[{id:U.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:U.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:G.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:W.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=[];for(let t=s;t<=c;t++)e.getRowFiltered(t)&&r.push(t);let u=Math.min(a,s),d=u+(o-a)-p+r.length,f={unitId:t,subUnitId:n,range:{...i,startRow:u,endRow:d}};l.push({id:U.id,params:f})}return{undos:Y(u),redos:Y(l)}}handleMoveColsCommand({fromRange:e,toRange:t},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{startColumn:s,endColumn:c}=o;if(e.endColumn<s&&t.startColumn<=s||e.startColumn>c&&t.endColumn>c)return this._handleNull();let l=[],u=[],d={};for(let e=s;e<=c;e++)d[e]={colIndex:e,filter:a.getFilterColumn(e)};ae(e.startColumn,e.endColumn-e.startColumn+1,t.startColumn,d);let f=o.startColumn,p=o.endColumn;s>=e.startColumn&&s<=e.endColumn&&t.startColumn>e.startColumn&&e.endColumn<c&&(f=e.endColumn+1),c>=e.startColumn&&c<=e.endColumn&&t.startColumn<e.startColumn&&e.startColumn>s&&(p=e.startColumn-1);let m=Object.keys(d).map(e=>Number(e)),h=m.find(e=>d[e].colIndex===p),g=m.find(e=>d[e].colIndex===f);if(m.forEach(e=>{let{colIndex:t,filter:i}=d[e],o=e;if(i){var s;if(o>=g&&o<=h){var c;let e={unitId:n,subUnitId:r,col:o,criteria:{...i.serialize(),colId:o}},t={unitId:n,subUnitId:r,col:o,criteria:a.getFilterColumn(o)?{...(c=a.getFilterColumn(o))==null?void 0:c.serialize(),colId:o}:null};l.push({id:W.id,params:e}),u.push({id:W.id,params:t})}if(!((s=d[t])!=null&&s.filter)){let e={unitId:n,subUnitId:r,col:t,criteria:null};l.push({id:W.id,params:e}),u.push({id:W.id,params:{unitId:n,subUnitId:r,col:t,criteria:{...i.serialize(),colId:t}}})}}}),s!==g||c!==h){let e={unitId:n,subUnitId:r,range:{...o,startColumn:g,endColumn:h}};l.unshift({id:U.id,params:e}),u.unshift({id:U.id,params:{range:o,unitId:n,subUnitId:r}})}return{undos:u,redos:l}}_handleMoveRowsCommand(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,{fromRange:c,toRange:l}=e;if(c.endRow<o&&l.startRow<=o||c.startRow>s&&l.endRow>s)return this._handleNull();let u=[],d=[],f={};for(let e=o;e<=s;e++)f[e]={oldIndex:e};let p=o,m=s;s>=c.startRow&&s<=c.endRow&&l.startRow<c.startRow&&c.startRow>o&&(m=c.startRow-1),ae(c.startRow,c.endRow-c.startRow+1,l.startRow,f);let h=Object.keys(f).map(e=>Number(e)),g=h.find(e=>f[e].oldIndex===m),_=h.find(e=>f[e].oldIndex===p);if(o!==_||s!==g){let e={unitId:t,subUnitId:n,range:{...a,startRow:_,endRow:g}};u.push({id:U.id,params:e},{id:K.id,params:{unitId:t,subUnitId:n}}),d.push({id:U.id,params:{range:a,unitId:t,subUnitId:n}},{id:K.id,params:{unitId:t,subUnitId:n}})}return{redos:u,undos:d}}_handleMoveRangeCommand(e,t,n){let{fromRange:r,toRange:i}=e,a=this._sheetsFilterService.getFilterModel(t,n);if(!a)return this._handleNull();let o=a.getRange();if(!o)return this._handleNull();let s=[],c=[];if(g.contains(r,o)){let e=o.startRow-r.startRow,l=o.startColumn-r.startColumn,u={startRow:i.startRow+e,startColumn:i.startColumn+l,endRow:i.startRow+e+(o.endRow-o.startRow),endColumn:i.startColumn+l+(o.endColumn-o.startColumn)},d={id:G.id,params:{unitId:t,subUnitId:n}},f={id:U.id,params:{unitId:t,subUnitId:n,range:u}},p={id:U.id,params:{unitId:t,subUnitId:n,range:o}};s.push(d,f),c.push(d,p);let m=a.getAllFilterColumns(),h=i.startColumn-r.startColumn;m.forEach(e=>{let[r,i]=e;i&&(s.push({id:W.id,params:{unitId:t,subUnitId:n,col:r+h,criteria:{...i.serialize(),colId:r+h}}}),c.push({id:W.id,params:{unitId:t,subUnitId:n,col:r,criteria:{...i.serialize(),colId:r}}}))})}else if(g.intersects(i,o)){let e={...o,endRow:Math.max(o.endRow,i.endRow)};s.push({id:U.id,params:{unitId:t,subUnitId:n,range:e}}),c.push({id:U.id,params:{unitId:t,subUnitId:n,range:o}})}return{redos:s,undos:c}}_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:W.id,params:{unitId:t,subUnitId:n,col:e,criteria:{...r.serialize(),colId:e}}})}),a.push({id:G.id,params:{unitId:t,subUnitId:n,range:i}}),o.unshift({id:U.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:W.id,params:{unitId:e,subUnitId:n,col:t,criteria:{...r.serialize(),colId:t}}}),s.push({id:W.id,params:{unitId:e,subUnitId:n,col:t,criteria:null}})}),s.push({id:G.id,params:{unitId:e,subUnitId:n,range:i}}),a.unshift({id:U.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(le.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:W.id,params:{...i,col:t}}),a.push({id:W.id,params:{...i,col:t,criteria:{...n.serialize(),colId:t}}})}),n.forEach(e=>{let[t,n]=e;c.push({id:W.id,params:{...i,col:t+r,criteria:{...n.serialize(),colId:t+r}}}),s.push({id:W.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:n,subUnitId:r}=e.params||{},i=this._sheetsFilterService.getFilterModel(n,r);if(!i)return;let a=Array.from(i.filteredOutRows).sort((e,t)=>e-t),o=[],s=!1;if(e.id===xe.id){let{startRow:t,endRow:n}=e.params.range,r=a.filter(e=>e>=t&&e<=n);a.forEach(e=>{if(e<t)o.push(e);else if(s=!0,e<=n){let e=Math.max(t,o.length?o[o.length-1]+1:t);o.push(e)}else o.push(e-(n-t+1-r.length))})}if(e.id===pe.id){let{startRow:t,endRow:n}=e.params.range;a.forEach(e=>{e>=t?(s=!0,o.push(e+(n-t+1))):o.push(e)})}if(s&&(i.filteredOutRows=new Set(o)),e.id===Ce.id&&!(t!=null&&t.onlyLocal)){let t=this._getExtendRegion(n,r);if(t){let i=e.params.cellValue;if(i)for(let e=t.startColumn;e<=t.endColumn;e++){var c;let a=i==null||(c=i[t.startRow])==null?void 0:c[e];if(a&&this._cellHasValue(a)){var l;let e=(l=this._univerInstanceService.getUnit(n))==null?void 0:l.getSheetBySheetId(r);if(e){let i=x(t,{down:!0},e),a=this._sheetsFilterService.getFilterModel(n,r),o=a.getRange();a.setRange({...o,endRow:i.endRow}),this._registerRefRange(n,r)}}}}}}))}_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,n=S(this._univerInstanceService,t);if(!n)return;let{subUnitId:r,unitId:i}=n,a=this._sheetsFilterService.getFilterModel(i,r);if(!a)return;let o=a.getRange();if(e.id===ge.id&&t.fromRange.startRow<=o.startRow&&t.fromRange.endRow<o.endRow&&t.fromRange.endRow>=o.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=B([z(0,o),z(1,d(Te)),z(2,d(H)),z(3,u),z(4,d(_e)),z(5,m(Pe)),z(6,d(De))],X);const _t=[W.id,K.id],vt=[de.id,ye.id,me.id];let Z=class extends r{get visible(){return this._visible$.getValue()}get enabled(){return this._enabled$.getValue()}constructor(e,t,n){super(),this._sheetsFilterController=e,this._commandService=t,this._configService=n,I(this,`_d`,new i),I(this,`_visible$`,new C(!1)),I(this,`visible$`,this._visible$.asObservable()),I(this,`_enabled$`,new C(!0)),I(this,`enabled$`,this._enabled$.asObservable());let r=this._configService.getConfig(q);if(r!=null&&r.enableSyncSwitch&&(this._visible$.next(!0),typeof r.enableSyncSwitch==`object`)){var a;this.setEnabled((a=r.enableSyncSwitch.defaultValue)==null?!0:a)}}setEnabled(e){this._enabled$.next(e),e?this._d.dispose():this._initOnlyLocalListener()}_initOnlyLocalListener(){this._d.add(this._commandService.beforeCommandExecuted((e,t)=>{_t.includes(e.id)&&(t||(t={}),t.onlyLocal=!0)})),this._d.add(this._commandService.onCommandExecuted((e,t)=>{if(vt.includes(e.id)&&t!=null&&t.fromCollab){if(e.id===de.id){let{range:n,unitId:r,subUnitId:i}=e.params,{redos:a}=this._sheetsFilterController.handleInsertColCommand(n,r,i);b(a,this._commandService,t)}else if(e.id===ye.id){let{range:n,unitId:r,subUnitId:i}=e.params,{redos:a}=this._sheetsFilterController.handleRemoveColCommand(n,r,i);b(a,this._commandService,t)}else if(e.id===me.id){let{sourceRange:n,targetRange:r,unitId:i,subUnitId:a}=e.params,{redos:o}=this._sheetsFilterController.handleMoveColsCommand({fromRange:n,toRange:r},i,a);b(o,this._commandService,t)}}}))}};Z=B([z(0,d(X)),z(1,o),z(2,s)],Z);var yt=`@univerjs/sheets-filter`,bt=`0.19.0`;let Q=class extends r{constructor(e,t,n,r){super(),this._activeDirtyManagerService=e,this._sheetRowFilteredService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._initFormulaDirtyRange(),this._registerSheetRowFiltered()}_initFormulaDirtyRange(){O.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=B([z(0,d(Fe)),z(1,d(Ie)),z(2,d(H)),z(3,u)],Q);let $=class extends h{constructor(e=J,t,n){super(),this._config=e,this._injector=t,this._configService=n;let{...r}=ie({},J,this._config);this._configService.setConfig(q,r)}onStarting(){[[Q],[H],[X],[Z]].forEach(e=>this._injector.add(e))}onReady(){oe(this._injector,[[Q],[X],[Z]])}};I($,`type`,v.UNIVER_SHEET),I($,`pluginName`,V),I($,`packageName`,yt),I($,`version`,bt),$=B([z(1,d(f)),z(2,s)],$);export{ut as ClearSheetsFilterCriteriaCommand,A as CustomFilterOperator,O as FILTER_MUTATIONS,k as FilterBy,Ye as FilterColumn,R as FilterModel,dt as ReCalcSheetsFilterCommand,K as ReCalcSheetsFilterMutation,st as RemoveSheetFilterCommand,G as RemoveSheetsFilterMutation,V as SHEET_FILTER_SNAPSHOT_ID,ot as SetSheetFilterRangeCommand,lt as SetSheetsFilterCriteriaCommand,W as SetSheetsFilterCriteriaMutation,U as SetSheetsFilterRangeMutation,H as SheetsFilterService,Z as SheetsFilterSyncController,ct as SmartToggleSheetsFilterCommand,$ as UniverSheetsFilterPlugin,j as equals,N as getCustomFilterFn,Le as greaterThan,Re as greaterThanOrEqualTo,ze as lessThan,Be as lessThanOrEqualTo,M as 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:p.GREATER_THAN,fn:(e,t)=>C(e)?e>t:!1},h={operator:p.GREATER_THAN_OR_EQUAL,fn:(e,t)=>C(e)?e>=t:!1},g={operator:p.LESS_THAN,fn:(e,t)=>C(e)?e<t:!1},_={operator:p.LESS_THAN_OR_EQUAL,fn:(e,t)=>C(e)?e<=t:!1},v={operator:p.EQUAL,fn:(e,t)=>C(e)?e===t:!1},y={operator:p.NOT_EQUALS,fn:(e,n)=>{if(typeof n==`string`){if(n===` `)return e!=null;let r=T(e);return r&&te(n)?!(0,t.createREGEXFromWildChar)(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===``:(0,t.createREGEXFromWildChar)(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(){this._alreadyFilteredOutRows=this._getAllFilterColumns().filter(e=>e.hasCache()).reduce((e,n)=>(0,t.mergeSets)(e,n.filteredOutRows),new Set)}_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`,f.VALUES)}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===f.VALUES?this._filterFn((0,t.extractPureTextFromCell)(this._worksheet.getCell(n,o))):this._filterBy===f.COLORS?this._filterFn(this._worksheet.getComposedCellStyle(n,o)):this._filterFn(ce(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?f.VALUES:this._criteria.colorFilters?f.COLORS:f.CONDITIONS)}};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=>P(e));return N(t)?e.and?se(t):M(t):t[0]}function se(e){let[t,n]=e;return e=>t(e)&&n(e)}function M(e){let[t,n]=e;return e=>t(e)||n(e)}function N(e){return e.length===2}function P(e){let t=e.val;if(e.operator===p.NOT_EQUALS&&!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 ce(e,n,r){let i=e.getCell(n,r);if(!i)return null;let a=e.getCellRaw(n,r);return i&&!a?F(i):a?i.t===t.CellValueType.NUMBER&&typeof i.v==`string`?a.v:i.t===t.CellValueType.NUMBER?Number(a.v):F(a):null}function F(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 I(e,t){return function(n,r){t(n,r,e)}}function L(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 R=`SHEET_FILTER_PLUGIN`,z=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.getCurrentUnitForType(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:R,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)}};z=L([I(0,t.IResourceManagerService),I(1,t.IUniverInstanceService),I(2,t.ICommandService)],z);let B={id:s,type:t.CommandType.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,range:i}=t;return e.get(z).ensureFilterModel(r,n).setRange(i),!0}},V={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(z).getFilterModel(r,n);return s?(s.setCriteria(a,i,o),!0):!1}},H={id:l,type:t.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t;return e.get(z).removeFilterModel(n,r)}},U={id:u,type:t.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t,i=e.get(z).getFilterModel(n,r);return i?(i.reCalc(),!0):!1}},W={id:`sheet.command.set-filter-range`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(z),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:B.id,params:{unitId:c,subUnitId:l,range:u}},f=a.syncExecuteCommand(d.id,d.params);return f&&o.pushUndoRedo({unitID:c,undoMutations:[{id:H.id,params:{unitId:c,subUnitId:l}}],redoMutations:[d]}),f}},G={id:`sheet.command.remove-sheet-filter`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(t.IUniverInstanceService),a=e.get(z),o=e.get(t.ICommandService),s=e.get(t.IUndoRedoService),c=(0,n.getSheetCommandTarget)(i,r);if(!c)return!1;let{unitId:l,subUnitId:u}=c,d=a.getFilterModel(l,u);if(!d)return!1;let f=pe(l,u,d==null?void 0:d.serialize()),p=o.syncExecuteCommand(H.id,{unitId:l,subUnitId:u});return p&&s.pushUndoRedo({unitID:l,undoMutations:f,redoMutations:[{id:H.id,params:{unitId:l,subUnitId:u}}]}),p}},le={id:`sheet.command.smart-toggle-filter`,type:t.CommandType.COMMAND,handler:async e=>{let r=e.get(t.IUniverInstanceService),i=e.get(z),a=e.get(t.ICommandService),o=r.getCurrentUnitForType(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(G.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(W.id,{unitId:c,subUnitId:l,range:f})}},ue={id:`sheet.command.set-filter-criteria`,type:t.CommandType.COMMAND,handler:(e,n)=>{let r=e.get(z),i=e.get(t.ICommandService),a=e.get(t.IUndoRedoService),{unitId:o,subUnitId:s,col:c,criteria:l}=n,u=r.getFilterModel(o,s);if(!u)return!1;let d=u.getRange();if(!d||c<d.startColumn||c>d.endColumn)return!1;let f=he(o,s,c,u.getFilterColumn(c)),p={id:V.id,params:{unitId:o,subUnitId:s,col:c,criteria:l}},m=i.syncExecuteCommand(p.id,p.params);return m&&a.pushUndoRedo({unitID:o,undoMutations:[f],redoMutations:[p]}),m}},de={id:`sheet.command.clear-filter-criteria`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(z),a=e.get(t.IUndoRedoService),o=e.get(t.ICommandService),s=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService),r);if(!s)return!1;let{unitId:c,subUnitId:l}=s,u=i.getFilterModel(s.unitId,s.subUnitId);if(!u)return!1;let d=u.serialize(),f=K(c,l,d),p=me(c,l,d);return(0,t.sequenceExecute)(p,o).result?(a.pushUndoRedo({unitID:c,undoMutations:f,redoMutations:p}),!0):!1}},fe={id:`sheet.command.re-calc-filter`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(z),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(U.id,{unitId:s,subUnitId:c}):!1}};function pe(e,t,n){let r=[],i={id:B.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:V.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:V.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:V.id,params:{unitId:e,subUnitId:t,col:n,criteria:null}};let i=r.serialize();return{id:V.id,params:{unitId:e,subUnitId:t,col:n,criteria:i}}}let q=`sheets-filter.config`;Symbol(q);let 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===V.id&&t.id===V.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,B,U,H].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===B.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:B.id,params:m}),f.push({id:B.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:B.id,params:p}),f.push({id:B.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:V.id,params:{unitId:t,subUnitId:n,col:r,criteria:null}}),d.push({id:V.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:H.id,params:e}),d.unshift({id:B.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:B.id,params:i}),d.unshift({id:B.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:B.id,params:{range:i,unitId:t,subUnitId:n}}],redos:[{id:B.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:B.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:H.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:V.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=[];for(let t=s;t<=c;t++)e.getRowFiltered(t)&&r.push(t);let u=Math.min(a,s),d=u+(o-a)-p+r.length,f={unitId:t,subUnitId:n,range:{...i,startRow:u,endRow:d}};l.push({id:B.id,params:f})}return{undos:Y(u),redos:Y(l)}}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:V.id,params:e}),d.push({id:V.id,params:t})}if(!((s=f[t])!=null&&s.filter)){let e={unitId:r,subUnitId:i,col:t,criteria:null};u.push({id:V.id,params:e}),d.push({id:V.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:B.id,params:e}),d.unshift({id:B.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:B.id,params:e},{id:U.id,params:{unitId:n,subUnitId:r}}),f.push({id:B.id,params:{range:o,unitId:n,subUnitId:r}},{id:U.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:H.id,params:{unitId:n,subUnitId:r}},f={id:B.id,params:{unitId:n,subUnitId:r,range:u}},p={id:B.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:V.id,params:{unitId:n,subUnitId:r,col:t+h,criteria:{...i.serialize(),colId:t+h}}}),l.push({id:V.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:B.id,params:{unitId:n,subUnitId:r,range:e}}),l.push({id:B.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:V.id,params:{unitId:t,subUnitId:n,col:e,criteria:{...r.serialize(),colId:e}}})}),a.push({id:H.id,params:{unitId:t,subUnitId:n,range:i}}),o.unshift({id:B.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:V.id,params:{unitId:e,subUnitId:n,col:t,criteria:{...r.serialize(),colId:t}}}),s.push({id:V.id,params:{unitId:e,subUnitId:n,col:t,criteria:null}})}),s.push({id:H.id,params:{unitId:e,subUnitId:n,range:i}}),a.unshift({id:B.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:V.id,params:{...i,col:t}}),a.push({id:V.id,params:{...i,col:t,criteria:{...n.serialize(),colId:t}}})}),n.forEach(e=>{let[t,n]=e;c.push({id:V.id,params:{...i,col:t+r,criteria:{...n.serialize(),colId:t+r}}}),s.push({id:V.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=L([I(0,t.ICommandService),I(1,(0,t.Inject)(n.SheetInterceptorService)),I(2,(0,t.Inject)(z)),I(3,t.IUniverInstanceService),I(4,(0,t.Inject)(n.RefRangeService)),I(5,(0,t.Optional)(a.DataSyncPrimaryController)),I(6,(0,t.Inject)(n.ZebraCrossingCacheController))],X);let _e=[V.id,U.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=L([I(0,(0,t.Inject)(X)),I(1,t.ICommandService),I(2,t.IConfigService)],Z);var ye=`@univerjs/sheets-filter`,be=`0.18.0`;let Q=class extends t.Disposable{constructor(e,t,n,r){super(),this._activeDirtyManagerService=e,this._sheetRowFilteredService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._initFormulaDirtyRange(),this._registerSheetRowFiltered()}_initFormulaDirtyRange(){d.forEach(e=>{this._activeDirtyManagerService.register(e,{commandId:e,getDirtyData:e=>{let{unitId:t,subUnitId:n}=e.params;return{dirtyRanges:this._getHideRowMutation(t,n),clearDependencyTreeCache:{[t]:{[n]:`1`}}}}})})}_getHideRowMutation(e,t){var n,r;let i=(n=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:n.getRange(),a=(r=this._univerInstanceService.getUnit(e))==null?void 0:r.getSheetBySheetId(t);if(i==null||a==null)return[];let{startRow:o,endRow:s}=i;return[{unitId:e,sheetId:t,range:{startRow:o,startColumn:0,endRow:s,endColumn:a.getColumnCount()-1}}]}_registerSheetRowFiltered(){this._sheetRowFilteredService.register((e,t,n)=>{var r,i;return(r=(i=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:i.isRowFiltered(n))==null?!1:r})}};Q=L([I(0,(0,t.Inject)(o.IActiveDirtyManagerService)),I(1,(0,t.Inject)(o.ISheetRowFilteredService)),I(2,(0,t.Inject)(z)),I(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],[z],[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`,R),O($,`packageName`,ye),O($,`version`,be),$=L([I(1,(0,t.Inject)(t.Injector)),I(2,t.IConfigService)],$),e.ClearSheetsFilterCriteriaCommand=de,e.CustomFilterOperator=p,e.FILTER_MUTATIONS=d,e.FilterBy=f,e.FilterColumn=j,e.FilterModel=A,e.ReCalcSheetsFilterCommand=fe,e.ReCalcSheetsFilterMutation=U,e.RemoveSheetFilterCommand=G,e.RemoveSheetsFilterMutation=H,e.SHEET_FILTER_SNAPSHOT_ID=R,e.SetSheetFilterRangeCommand=W,e.SetSheetsFilterCriteriaCommand=ue,e.SetSheetsFilterCriteriaMutation=V,e.SetSheetsFilterRangeMutation=B,Object.defineProperty(e,`SheetsFilterService`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,`SheetsFilterSyncController`,{enumerable:!0,get:function(){return Z}}),e.SmartToggleSheetsFilterCommand=le,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:p.GREATER_THAN,fn:(e,t)=>C(e)?e>t:!1},h={operator:p.GREATER_THAN_OR_EQUAL,fn:(e,t)=>C(e)?e>=t:!1},g={operator:p.LESS_THAN,fn:(e,t)=>C(e)?e<t:!1},_={operator:p.LESS_THAN_OR_EQUAL,fn:(e,t)=>C(e)?e<=t:!1},v={operator:p.EQUAL,fn:(e,t)=>C(e)?e===t:!1},y={operator:p.NOT_EQUALS,fn:(e,n)=>{if(typeof n==`string`){if(n===` `)return e!=null;let r=T(e);return r&&te(n)?!(0,t.createREGEXFromWildChar)(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===``:(0,t.createREGEXFromWildChar)(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(){this._alreadyFilteredOutRows=this._getAllFilterColumns().filter(e=>e.hasCache()).reduce((e,n)=>(0,t.mergeSets)(e,n.filteredOutRows),new Set)}_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`,f.VALUES)}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===f.VALUES?this._filterFn((0,t.extractPureTextFromCell)(this._worksheet.getCell(n,o))):this._filterBy===f.COLORS?this._filterFn(this._worksheet.getComposedCellStyle(n,o)):this._filterFn(ce(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?f.VALUES:this._criteria.colorFilters?f.COLORS:f.CONDITIONS)}};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=>P(e));return N(t)?e.and?se(t):M(t):t[0]}function se(e){let[t,n]=e;return e=>t(e)&&n(e)}function M(e){let[t,n]=e;return e=>t(e)||n(e)}function N(e){return e.length===2}function P(e){let t=e.val;if(e.operator===p.NOT_EQUALS&&!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 ce(e,n,r){let i=e.getCell(n,r);if(!i)return null;let a=e.getCellRaw(n,r);return i&&!a?F(i):a?i.t===t.CellValueType.NUMBER&&typeof i.v==`string`?a.v:i.t===t.CellValueType.NUMBER?Number(a.v):F(a):null}function F(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 I(e,t){return function(n,r){t(n,r,e)}}function L(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 R=`SHEET_FILTER_PLUGIN`,z=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.getCurrentUnitForType(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:R,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)}};z=L([I(0,t.IResourceManagerService),I(1,t.IUniverInstanceService),I(2,t.ICommandService)],z);let B={id:s,type:t.CommandType.MUTATION,handler:(e,t)=>{let{subUnitId:n,unitId:r,range:i}=t;return e.get(z).ensureFilterModel(r,n).setRange(i),!0}},V={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(z).getFilterModel(r,n);return s?(s.setCriteria(a,i,o),!0):!1}},H={id:l,type:t.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t;return e.get(z).removeFilterModel(n,r)}},U={id:u,type:t.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r}=t,i=e.get(z).getFilterModel(n,r);return i?(i.reCalc(),!0):!1}},W={id:`sheet.command.set-filter-range`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(z),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:B.id,params:{unitId:c,subUnitId:l,range:u}},f=a.syncExecuteCommand(d.id,d.params);return f&&o.pushUndoRedo({unitID:c,undoMutations:[{id:H.id,params:{unitId:c,subUnitId:l}}],redoMutations:[d]}),f}},G={id:`sheet.command.remove-sheet-filter`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(t.IUniverInstanceService),a=e.get(z),o=e.get(t.ICommandService),s=e.get(t.IUndoRedoService),c=(0,n.getSheetCommandTarget)(i,r);if(!c)return!1;let{unitId:l,subUnitId:u}=c,d=a.getFilterModel(l,u);if(!d)return!1;let f=pe(l,u,d==null?void 0:d.serialize()),p=o.syncExecuteCommand(H.id,{unitId:l,subUnitId:u});return p&&s.pushUndoRedo({unitID:l,undoMutations:f,redoMutations:[{id:H.id,params:{unitId:l,subUnitId:u}}]}),p}},le={id:`sheet.command.smart-toggle-filter`,type:t.CommandType.COMMAND,handler:async e=>{let r=e.get(t.IUniverInstanceService),i=e.get(z),a=e.get(t.ICommandService),o=r.getCurrentUnitForType(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(G.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(W.id,{unitId:c,subUnitId:l,range:f})}},ue={id:`sheet.command.set-filter-criteria`,type:t.CommandType.COMMAND,handler:(e,n)=>{let r=e.get(z),i=e.get(t.ICommandService),a=e.get(t.IUndoRedoService),{unitId:o,subUnitId:s,col:c,criteria:l}=n,u=r.getFilterModel(o,s);if(!u)return!1;let d=u.getRange();if(!d||c<d.startColumn||c>d.endColumn)return!1;let f=he(o,s,c,u.getFilterColumn(c)),p={id:V.id,params:{unitId:o,subUnitId:s,col:c,criteria:l}},m=i.syncExecuteCommand(p.id,p.params);return m&&a.pushUndoRedo({unitID:o,undoMutations:[f],redoMutations:[p]}),m}},de={id:`sheet.command.clear-filter-criteria`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(z),a=e.get(t.IUndoRedoService),o=e.get(t.ICommandService),s=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService),r);if(!s)return!1;let{unitId:c,subUnitId:l}=s,u=i.getFilterModel(s.unitId,s.subUnitId);if(!u)return!1;let d=u.serialize(),f=K(c,l,d),p=me(c,l,d);return(0,t.sequenceExecute)(p,o).result?(a.pushUndoRedo({unitID:c,undoMutations:f,redoMutations:p}),!0):!1}},fe={id:`sheet.command.re-calc-filter`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(z),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(U.id,{unitId:s,subUnitId:c}):!1}};function pe(e,t,n){let r=[],i={id:B.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:V.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:V.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:V.id,params:{unitId:e,subUnitId:t,col:n,criteria:null}};let i=r.serialize();return{id:V.id,params:{unitId:e,subUnitId:t,col:n,criteria:i}}}let q=`sheets-filter.config`;Symbol(q);let 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===V.id&&t.id===V.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,B,U,H].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===B.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:B.id,params:m}),f.push({id:B.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:B.id,params:p}),f.push({id:B.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:V.id,params:{unitId:t,subUnitId:n,col:r,criteria:null}}),d.push({id:V.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:H.id,params:e}),d.unshift({id:B.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:B.id,params:i}),d.unshift({id:B.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:B.id,params:{range:i,unitId:t,subUnitId:n}}],redos:[{id:B.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:B.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:H.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:V.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=[];for(let t=s;t<=c;t++)e.getRowFiltered(t)&&r.push(t);let u=Math.min(a,s),d=u+(o-a)-p+r.length,f={unitId:t,subUnitId:n,range:{...i,startRow:u,endRow:d}};l.push({id:B.id,params:f})}return{undos:Y(u),redos:Y(l)}}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:V.id,params:e}),d.push({id:V.id,params:t})}if(!((s=f[t])!=null&&s.filter)){let e={unitId:r,subUnitId:i,col:t,criteria:null};u.push({id:V.id,params:e}),d.push({id:V.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:B.id,params:e}),d.unshift({id:B.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:B.id,params:e},{id:U.id,params:{unitId:n,subUnitId:r}}),f.push({id:B.id,params:{range:o,unitId:n,subUnitId:r}},{id:U.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:H.id,params:{unitId:n,subUnitId:r}},f={id:B.id,params:{unitId:n,subUnitId:r,range:u}},p={id:B.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:V.id,params:{unitId:n,subUnitId:r,col:t+h,criteria:{...i.serialize(),colId:t+h}}}),l.push({id:V.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:B.id,params:{unitId:n,subUnitId:r,range:e}}),l.push({id:B.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:V.id,params:{unitId:t,subUnitId:n,col:e,criteria:{...r.serialize(),colId:e}}})}),a.push({id:H.id,params:{unitId:t,subUnitId:n,range:i}}),o.unshift({id:B.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:V.id,params:{unitId:e,subUnitId:n,col:t,criteria:{...r.serialize(),colId:t}}}),s.push({id:V.id,params:{unitId:e,subUnitId:n,col:t,criteria:null}})}),s.push({id:H.id,params:{unitId:e,subUnitId:n,range:i}}),a.unshift({id:B.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:V.id,params:{...i,col:t}}),a.push({id:V.id,params:{...i,col:t,criteria:{...n.serialize(),colId:t}}})}),n.forEach(e=>{let[t,n]=e;c.push({id:V.id,params:{...i,col:t+r,criteria:{...n.serialize(),colId:t+r}}}),s.push({id:V.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=L([I(0,t.ICommandService),I(1,(0,t.Inject)(n.SheetInterceptorService)),I(2,(0,t.Inject)(z)),I(3,t.IUniverInstanceService),I(4,(0,t.Inject)(n.RefRangeService)),I(5,(0,t.Optional)(a.DataSyncPrimaryController)),I(6,(0,t.Inject)(n.ZebraCrossingCacheController))],X);let _e=[V.id,U.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=L([I(0,(0,t.Inject)(X)),I(1,t.ICommandService),I(2,t.IConfigService)],Z);var ye=`@univerjs/sheets-filter`,be=`0.19.0`;let Q=class extends t.Disposable{constructor(e,t,n,r){super(),this._activeDirtyManagerService=e,this._sheetRowFilteredService=t,this._sheetsFilterService=n,this._univerInstanceService=r,this._initFormulaDirtyRange(),this._registerSheetRowFiltered()}_initFormulaDirtyRange(){d.forEach(e=>{this._activeDirtyManagerService.register(e,{commandId:e,getDirtyData:e=>{let{unitId:t,subUnitId:n}=e.params;return{dirtyRanges:this._getHideRowMutation(t,n),clearDependencyTreeCache:{[t]:{[n]:`1`}}}}})})}_getHideRowMutation(e,t){var n,r;let i=(n=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:n.getRange(),a=(r=this._univerInstanceService.getUnit(e))==null?void 0:r.getSheetBySheetId(t);if(i==null||a==null)return[];let{startRow:o,endRow:s}=i;return[{unitId:e,sheetId:t,range:{startRow:o,startColumn:0,endRow:s,endColumn:a.getColumnCount()-1}}]}_registerSheetRowFiltered(){this._sheetRowFilteredService.register((e,t,n)=>{var r,i;return(r=(i=this._sheetsFilterService.getFilterModel(e,t))==null?void 0:i.isRowFiltered(n))==null?!1:r})}};Q=L([I(0,(0,t.Inject)(o.IActiveDirtyManagerService)),I(1,(0,t.Inject)(o.ISheetRowFilteredService)),I(2,(0,t.Inject)(z)),I(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],[z],[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`,R),O($,`packageName`,ye),O($,`version`,be),$=L([I(1,(0,t.Inject)(t.Injector)),I(2,t.IConfigService)],$),e.ClearSheetsFilterCriteriaCommand=de,e.CustomFilterOperator=p,e.FILTER_MUTATIONS=d,e.FilterBy=f,e.FilterColumn=j,e.FilterModel=A,e.ReCalcSheetsFilterCommand=fe,e.ReCalcSheetsFilterMutation=U,e.RemoveSheetFilterCommand=G,e.RemoveSheetsFilterMutation=H,e.SHEET_FILTER_SNAPSHOT_ID=R,e.SetSheetFilterRangeCommand=W,e.SetSheetsFilterCriteriaCommand=ue,e.SetSheetsFilterCriteriaMutation=V,e.SetSheetsFilterRangeMutation=B,Object.defineProperty(e,`SheetsFilterService`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(e,`SheetsFilterSyncController`,{enumerable:!0,get:function(){return Z}}),e.SmartToggleSheetsFilterCommand=le,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": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A library for filtering data in Univer Sheet",
|
|
6
6
|
"author": "DreamNum <developer@univer.ai>",
|
|
@@ -56,17 +56,17 @@
|
|
|
56
56
|
"rxjs": ">=7.0.0"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@univerjs/core": "0.
|
|
60
|
-
"@univerjs/engine-render": "0.
|
|
61
|
-
"@univerjs/
|
|
62
|
-
"@univerjs/
|
|
63
|
-
"@univerjs/sheets": "0.
|
|
59
|
+
"@univerjs/core": "0.19.0",
|
|
60
|
+
"@univerjs/engine-render": "0.19.0",
|
|
61
|
+
"@univerjs/rpc": "0.19.0",
|
|
62
|
+
"@univerjs/engine-formula": "0.19.0",
|
|
63
|
+
"@univerjs/sheets": "0.19.0"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"rxjs": "^7.8.2",
|
|
67
|
-
"typescript": "^
|
|
68
|
-
"vitest": "^4.1.
|
|
69
|
-
"@univerjs-infra/shared": "0.
|
|
67
|
+
"typescript": "^6.0.2",
|
|
68
|
+
"vitest": "^4.1.1",
|
|
69
|
+
"@univerjs-infra/shared": "0.19.0"
|
|
70
70
|
},
|
|
71
71
|
"scripts": {
|
|
72
72
|
"test": "vitest run",
|