@univerjs/sheets-formula
Version:
| Package Name | UMD Namespace | Version | License | Downloads | Contains CSS | Contains i18n locales | | --- | --- | --- | --- | --- | :---: | :---: | | `@univerjs/sheets-formula` | `UniverSheetsFormula` | [![][npm-version-shield]][npm-version-link] | ![
1 lines • 416 kB
JavaScript
"use strict";var we=Object.defineProperty;var Ye=(r,t,n)=>t in r?we(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n;var g=(r,t,n)=>Ye(r,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@univerjs/core"),l=require("@univerjs/sheets"),e=require("@univerjs/engine-formula"),xe=require("rxjs"),fe=require("@univerjs/rpc"),Ue={id:"formula.command.insert-function",type:c.CommandType.COMMAND,handler:async(r,t)=>{const{list:n,listOfRangeHasNumber:a}=t,i=r.get(c.ICommandService),o=new c.ObjectMatrix;n.forEach(m=>{const{range:f,primary:s,formula:p}=m,{row:L,column:N}=s,T=c.generateRandomId(6);o.setValue(L,N,{f:p,si:T});const{startRow:A,startColumn:C,endRow:S,endColumn:d}=f;for(let I=A;I<=S;I++)for(let P=C;P<=d;P++)(I!==L||P!==N)&&o.setValue(I,P,{si:T})}),a&&a.length>0&&a.forEach(m=>{const{primary:f,formula:s}=m;o.setValue(f.row,f.column,{f:s})});const u={value:o.getData()};return i.executeCommand(l.SetRangeValuesCommand.id,u)}},ge={id:"sheets-formula.command.quick-sum",type:c.CommandType.COMMAND,handler:async r=>{const n=r.get(l.SheetsSelectionsService).getCurrentLastSelection();if(!n)return!1;const a=r.get(c.IUniverInstanceService),i=l.getSheetCommandTarget(a);if(!i)return!1;const o=n.range,{worksheet:u}=i;let m=l.findFirstNonEmptyCell(o,u);if(!m)return!1;m=l.alignToMergedCellsBorders(m,u);const f=l.expandToContinuousRange({startRow:m.startRow,startColumn:m.startColumn,endRow:o.endRow,endColumn:o.endColumn},{left:!0,right:!0,up:!0,down:!0},u),s=new c.ObjectMatrix,p=l.alignToMergedCellsBorders({startRow:f.endRow,endRow:f.endRow,startColumn:f.startColumn,endColumn:f.endColumn},u);if(!c.Rectangle.equals(p,f))for(const T of u.iterateByColumn(p))(!T.value||!u.cellHasValue(T.value))&&s.setValue(T.row,T.col,{f:`=SUM(${e.serializeRange({startColumn:T.col,endColumn:T.col,startRow:f.startRow,endRow:T.row-1})})`});const L=l.alignToMergedCellsBorders({startRow:f.startRow,startColumn:f.endColumn,endRow:f.endRow,endColumn:f.endColumn},u);if(!c.Rectangle.equals(L,f))for(const T of u.iterateByRow(L))(!T.value||!u.cellHasValue(T.value))&&s.setValue(T.row,T.col,{f:`=SUM(${e.serializeRange({startColumn:f.startColumn,endColumn:T.col-1,startRow:T.row,endRow:T.row})})`});const N=r.get(c.ICommandService);return(await c.sequenceExecuteAsync([{id:l.SetRangeValuesCommand.id,params:{range:f,value:s.getMatrix()}},{id:l.SetSelectionsOperation.id,params:{unitId:i.unitId,subUnitId:i.subUnitId,selections:[{range:f,primary:c.Rectangle.contains(f,n.primary)?n.primary:{...m,actualRow:m.startRow,actualColumn:m.startColumn},style:null}]}}],N)).result}},Z="sheets-formula.base.config";var w=(r=>(r[r.FORCED=0]="FORCED",r[r.WHEN_EMPTY=1]="WHEN_EMPTY",r[r.NO_CALCULATION=2]="NO_CALCULATION",r))(w||{});const De={},Xe="sheets-formula.remote.config",Fe={};var We=Object.getOwnPropertyDescriptor,Ke=(r,t,n,a)=>{for(var i=a>1?void 0:a?We(t,n):t,o=r.length-1,u;o>=0;o--)(u=r[o])&&(i=u(i)||i);return i},Ee=(r,t)=>(n,a)=>t(n,a,r);exports.ImageFormulaCellInterceptorController=class extends c.Disposable{constructor(n,a,i){super();g(this,"_errorValueCell",{v:e.ErrorType.VALUE,t:c.CellValueType.STRING});g(this,"_refreshRender");this._commandService=n,this._sheetInterceptorService=a,this._formulaDataModel=i,this._initialize()}_initialize(){this._commandExecutedListener(),this._initInterceptorCellContent()}_commandExecutedListener(){this.disposeWithMe(this._commandService.onCommandExecuted(async n=>{if(n.id===e.SetImageFormulaDataMutation.id){const a=n.params;if(!a)return;const{imageFormulaData:i}=a;if(!i||i.length===0)return;const o=await Promise.all(i.map(m=>this._getImageNatureSize(m))),u={};o.forEach(m=>{const{unitId:f,sheetId:s,row:p,column:L,...N}=m;u[f]||(u[f]={}),u[f][s]||(u[f][s]=new c.ObjectMatrix),u[f][s].setValue(p,L,N)}),this._formulaDataModel.mergeUnitImageFormulaData(u),this._refreshRender()}}))}_initInterceptorCellContent(){this.disposeWithMe(this._sheetInterceptorService.intercept(l.INTERCEPTOR_POINT.CELL_CONTENT,{priority:l.InterceptCellContentPriority.CELL_IMAGE,effect:c.InterceptorEffectEnum.Value|c.InterceptorEffectEnum.Style,handler:(n,a,i)=>{var _,y;const{unitId:o,subUnitId:u,row:m,col:f}=a,s=this._formulaDataModel.getUnitImageFormulaData(),p=(y=(_=s==null?void 0:s[o])==null?void 0:_[u])==null?void 0:y.getValue(m,f);if(!p)return i(n);const{source:L,height:N,width:T,isErrorImage:A,imageNaturalWidth:C,imageNaturalHeight:S}=p;if(A)return i(this._errorValueCell);const d=T||C,I=N||S,P=c.createDocumentModelWithStyle("",{}),E={unitId:o,subUnitId:u,drawingId:c.generateRandomId(),drawingType:c.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:c.ImageSourceType.URL,source:L,transform:{left:0,top:0,width:d,height:I},docTransform:{size:{width:d,height:I},positionH:{relativeFrom:c.ObjectRelativeFromH.PAGE,posOffset:0},positionV:{relativeFrom:c.ObjectRelativeFromV.PARAGRAPH,posOffset:0},angle:0},behindDoc:c.BooleanNumber.FALSE,title:"",description:"",layoutType:c.PositionedObjectLayoutType.INLINE,wrapText:c.WrapTextType.BOTH_SIDES,distB:0,distL:0,distR:0,distT:0},R=c.BuildTextUtils.drawing.add({documentDataModel:P,drawings:[E],selection:{collapsed:!0,startOffset:0,endOffset:0}});return R?(P.apply(R),i({...n,p:P.getSnapshot()})):i(this._errorValueCell)}}))}async _getImageNatureSize(n){const a=await this._getImageSize(n.source);return a.image?{...n,isErrorImage:!1,imageNaturalHeight:a.height,imageNaturalWidth:a.width}:{...n,isErrorImage:!0}}async _getImageSize(n){return new Promise(a=>{const i=new Image;i.src=n,i.onload=()=>{a({width:i.width,height:i.height,image:i})},i.onerror=()=>{a({width:0,height:0,image:null})}})}registerRefreshRenderFunction(n){this._refreshRender=n}};exports.ImageFormulaCellInterceptorController=Ke([Ee(0,c.ICommandService),Ee(1,c.Inject(l.SheetInterceptorService)),Ee(2,c.Inject(e.FormulaDataModel))],exports.ImageFormulaCellInterceptorController);var ke=Object.getOwnPropertyDescriptor,Qe=(r,t,n,a)=>{for(var i=a>1?void 0:a?ke(t,n):t,o=r.length-1,u;o>=0;o--)(u=r[o])&&(i=u(i)||i);return i},k=(r,t)=>(n,a)=>t(n,a,r);const be={done:0,count:0},Ie={onlyLocal:!0};exports.TriggerCalculationController=class extends c.Disposable{constructor(n,a,i,o,u,m,f){super();g(this,"_waitingCommandQueue",[]);g(this,"_executingDirtyData",{forceCalculation:!1,dirtyRanges:[],dirtyNameMap:{},dirtyDefinedNameMap:{},dirtyUnitFeatureMap:{},dirtyUnitOtherFormulaMap:{},clearDependencyTreeCache:{}});g(this,"_setTimeoutKey",-1);g(this,"_startExecutionTime",0);g(this,"_totalCalculationTaskCount",0);g(this,"_doneCalculationTaskCount",0);g(this,"_executionInProgressParams",null);g(this,"_restartCalculation",!1);g(this,"_progress$",new xe.BehaviorSubject(be));g(this,"progress$",this._progress$.asObservable());this._commandService=n,this._activeDirtyManagerService=a,this._logService=i,this._configService=o,this._formulaDataModel=u,this._localeService=m,this._registerOtherFormulaService=f,this._commandExecutedListener(),this._initialExecuteFormulaProcessListener(),this._initialExecuteFormula()}_emitProgress(n){this._progress$.next({done:this._doneCalculationTaskCount,count:this._totalCalculationTaskCount,label:n})}_startProgress(){this._doneCalculationTaskCount=0,this._totalCalculationTaskCount=1;const n=this._localeService.t("formula.progress.analyzing");this._emitProgress(n)}_calculateProgress(n){if(this._executionInProgressParams){const{totalFormulasToCalculate:a,completedFormulasCount:i,totalArrayFormulasToCalculate:o,completedArrayFormulasCount:u}=this._executionInProgressParams;if(this._doneCalculationTaskCount=i+u,this._totalCalculationTaskCount=a+o,this._totalCalculationTaskCount===0)return;this._emitProgress(n)}}_completeProgress(){this._doneCalculationTaskCount=this._totalCalculationTaskCount=1;const n=this._localeService.t("formula.progress.done");this._emitProgress(n)}clearProgress(){this._doneCalculationTaskCount=0,this._totalCalculationTaskCount=0,this._emitProgress()}dispose(){super.dispose(),this._progress$.next(be),this._progress$.complete(),clearTimeout(this._setTimeoutKey)}_getCalculationMode(){var a;const n=this._configService.getConfig(Z);return(a=n==null?void 0:n.initialFormulaComputing)!=null?a:w.WHEN_EMPTY}_commandExecutedListener(){this.disposeWithMe(this._commandService.beforeCommandExecuted(n=>{if(n.id===e.SetFormulaCalculationStartMutation.id||n.id===e.SetFormulaStringBatchCalculationMutation.id){const a=n.params;if(n.id===e.SetFormulaCalculationStartMutation.id){const i=this._configService.getConfig(e.ENGINE_FORMULA_RETURN_DEPENDENCY_TREE)||!1;a.isCalculateTreeModel=i}a.maxIteration=this._configService.getConfig(e.ENGINE_FORMULA_CYCLE_REFERENCE_COUNT),a.rowData=this._formulaDataModel.getHiddenRowsFiltered()}})),this.disposeWithMe(this._commandService.onCommandExecuted((n,a)=>{if(this._activeDirtyManagerService.get(n.id)){if(n.id===l.SetRangeValuesMutation.id){const i=n.params;if(a&&a.onlyLocal===!0||i.trigger===l.SetStyleCommand.id||i.trigger===l.SetBorderCommand.id||i.trigger===l.ClearSelectionFormatCommand.id)return}this._waitingCommandQueue.push(n),clearTimeout(this._setTimeoutKey),this._setTimeoutKey=setTimeout(()=>{const i=this._generateDirty(this._waitingCommandQueue);this._executingDirtyData=this._mergeDirty(this._executingDirtyData,i),this._executionInProgressParams==null?this._commandService.executeCommand(e.SetFormulaCalculationStartMutation.id,{...this._executingDirtyData},Ie):(this._restartCalculation=!0,this._commandService.executeCommand(e.SetFormulaCalculationStopMutation.id,{})),this._waitingCommandQueue=[]},100)}}))}_generateDirty(n){const a=[],i={},o={},u={},m={},f={};let s=!1;for(const p of n){const L=this._activeDirtyManagerService.get(p.id);if(L==null)continue;const N=L.getDirtyData(p),{dirtyRanges:T,dirtyNameMap:A,dirtyDefinedNameMap:C,dirtyUnitFeatureMap:S,dirtyUnitOtherFormulaMap:d,clearDependencyTreeCache:I,forceCalculation:P=!1}=N;T!=null&&this._mergeDirtyRanges(a,T),A!=null&&this._mergeDirtyNameMap(i,A),C!=null&&this._mergeDirtyNameMap(o,C),S!=null&&this._mergeDirtyUnitFeatureOrOtherFormulaMap(u,S),d!=null&&this._mergeDirtyUnitFeatureOrOtherFormulaMap(m,d),I!=null&&this._mergeDirtyNameMap(f,I),s=s||P}return{dirtyRanges:a,dirtyNameMap:i,dirtyDefinedNameMap:o,dirtyUnitFeatureMap:u,dirtyUnitOtherFormulaMap:m,forceCalculation:s,clearDependencyTreeCache:f}}_mergeDirty(n,a){const i=[...n.dirtyRanges,...a.dirtyRanges],o={...n.dirtyNameMap},u={...n.dirtyDefinedNameMap},m={...n.dirtyUnitFeatureMap},f={...n.dirtyUnitOtherFormulaMap},s={...n.clearDependencyTreeCache};this._mergeDirtyNameMap(o,a.dirtyNameMap),this._mergeDirtyNameMap(u,a.dirtyDefinedNameMap),this._mergeDirtyUnitFeatureOrOtherFormulaMap(m,a.dirtyUnitFeatureMap),this._mergeDirtyUnitFeatureOrOtherFormulaMap(f,a.dirtyUnitOtherFormulaMap),this._mergeDirtyNameMap(s,a.clearDependencyTreeCache);const p=n.forceCalculation||a.forceCalculation;return{dirtyRanges:i,dirtyNameMap:o,dirtyDefinedNameMap:u,dirtyUnitFeatureMap:m,dirtyUnitOtherFormulaMap:f,forceCalculation:p,clearDependencyTreeCache:s}}_mergeDirtyRanges(n,a){for(const i of a){let o=!1;for(const u of n)if(i.unitId===u.unitId&&i.sheetId===u.sheetId){const{startRow:m,startColumn:f,endRow:s,endColumn:p}=i.range,{startRow:L,startColumn:N,endRow:T,endColumn:A}=u.range;if(m===L&&f===N&&s===T&&p===A){o=!0;break}}o||n.push(i)}}_mergeDirtyNameMap(n,a){Object.keys(a).forEach(i=>{n[i]==null&&(n[i]={}),Object.keys(a[i]).forEach(o=>{var u;(u=a[i])!=null&&u[o]&&(n[i][o]=a[i][o])})})}_mergeDirtyUnitFeatureOrOtherFormulaMap(n,a){Object.keys(a).forEach(i=>{n[i]==null&&(n[i]={}),Object.keys(a[i]).forEach(o=>{n[i][o]==null&&(n[i][o]={}),Object.keys(a[i][o]).forEach(u=>{n[i][o][u]=a[i][o][u]||!1})})})}_initialExecuteFormulaProcessListener(){let n=null,a=0;this.disposeWithMe(this._commandService.onCommandExecuted(i=>{if(i.id===e.SetFormulaCalculationStopMutation.id&&this.clearProgress(),i.id!==e.SetFormulaCalculationNotificationMutation.id)return;const o=i.params;if(o.stageInfo!=null){const{stage:u}=o.stageInfo;if(u===e.FormulaExecuteStageType.START)a===0&&(this._startExecutionTime=performance.now()),a++,n!==null&&(clearTimeout(n),n=null),n=setTimeout(()=>{n=null,this._startProgress()},1e3);else if(u===e.FormulaExecuteStageType.CURRENTLY_CALCULATING){if(this._executionInProgressParams=o.stageInfo,n===null){const m=this._localeService.t("formula.progress.calculating");this._calculateProgress(m)}}else if(u===e.FormulaExecuteStageType.START_DEPENDENCY_ARRAY_FORMULA){if(this._executionInProgressParams=o.stageInfo,n===null){const m=this._localeService.t("formula.progress.array-analysis");this._calculateProgress(m)}}else if(u===e.FormulaExecuteStageType.CURRENTLY_CALCULATING_ARRAY_FORMULA&&(this._executionInProgressParams=o.stageInfo,n===null)){const m=this._localeService.t("formula.progress.array-calculation");this._calculateProgress(m)}}else{const u=o.functionsExecutedState;let m="";switch(a--,u){case e.FormulaExecutedStateType.NOT_EXECUTED:m="No tasks are being executed anymore",this._resetExecutingDirtyData();break;case e.FormulaExecutedStateType.STOP_EXECUTION:m="The execution of the formula has been stopped",a=0;break;case e.FormulaExecutedStateType.SUCCESS:m="Formula calculation succeeded",(a===0||a===-1)&&(m+=`. Total time consumed: ${performance.now()-this._startExecutionTime} ms`),this._resetExecutingDirtyData();break;case e.FormulaExecutedStateType.INITIAL:m="Waiting for calculation",this._resetExecutingDirtyData();break}(a===0||a===-1)&&(n?(clearTimeout(n),n=null,this.clearProgress()):this._completeProgress(),a=0,this._doneCalculationTaskCount=0,this._totalCalculationTaskCount=0),u===e.FormulaExecutedStateType.STOP_EXECUTION&&this._restartCalculation?(this._restartCalculation=!1,this._commandService.executeCommand(e.SetFormulaCalculationStartMutation.id,{...this._executingDirtyData},Ie)):this._executionInProgressParams=null,this._logService.debug("[TriggerCalculationController]",m)}}))}_resetExecutingDirtyData(){this._executingDirtyData={dirtyRanges:[],dirtyNameMap:{},dirtyDefinedNameMap:{},dirtyUnitFeatureMap:{},dirtyUnitOtherFormulaMap:{},forceCalculation:!1,clearDependencyTreeCache:{}}}_initialExecuteFormula(){const n=this._getCalculationMode(),a=this._getDirtyDataByCalculationMode(n);this._commandService.executeCommand(e.SetTriggerFormulaCalculationStartMutation.id,a,Ie),this._registerOtherFormulaService.calculateStarted$.next(!0)}_getDirtyDataByCalculationMode(n){const a=n===w.FORCED,i=n===w.WHEN_EMPTY?this._formulaDataModel.getFormulaDirtyRanges():[];return{forceCalculation:a,dirtyRanges:i,dirtyNameMap:{},dirtyDefinedNameMap:{},dirtyUnitFeatureMap:{},dirtyUnitOtherFormulaMap:{},clearDependencyTreeCache:{}}}};exports.TriggerCalculationController=Qe([k(0,c.ICommandService),k(1,e.IActiveDirtyManagerService),k(2,c.ILogService),k(3,c.IConfigService),k(4,c.Inject(e.FormulaDataModel)),k(5,c.Inject(c.LocaleService)),k(6,c.Inject(e.RegisterOtherFormulaService))],exports.TriggerCalculationController);function je(r,t,n){var a;return r==null||r[t]==null||((a=r[t])==null?void 0:a[n])==null}function Ae(r,t,n){var a;if(n){if(r&&r[t]&&((a=r[t])!=null&&a[n]))return delete r[t][n],{[t]:{[n]:null}}}else if(r&&r[t])return delete r[t],{[t]:null}}var F=(r=>(r[r.MoveRange=0]="MoveRange",r[r.MoveRows=1]="MoveRows",r[r.MoveCols=2]="MoveCols",r[r.InsertRow=3]="InsertRow",r[r.InsertColumn=4]="InsertColumn",r[r.RemoveRow=5]="RemoveRow",r[r.RemoveColumn=6]="RemoveColumn",r[r.DeleteMoveLeft=7]="DeleteMoveLeft",r[r.DeleteMoveUp=8]="DeleteMoveUp",r[r.InsertMoveDown=9]="InsertMoveDown",r[r.InsertMoveRight=10]="InsertMoveRight",r[r.SetName=11]="SetName",r[r.RemoveSheet=12]="RemoveSheet",r[r.SetDefinedName=13]="SetDefinedName",r[r.RemoveDefinedName=14]="RemoveDefinedName",r))(F||{});const $e=[11,12,13,14];function ze(r,t,n){const{type:a}=n;return $e.includes(a)?Ze(r,t):Je(r,t,n)}function Ze(r,t){const n=[],a=[];return Object.keys(t).forEach(i=>{const o=t[i],u=r[i];if(o==null||u==null)return!0;Object.keys(o).forEach(m=>{const f=new c.ObjectMatrix(o[m]||{}),s=new c.ObjectMatrix(u[m]||{}),p=new c.ObjectMatrix,L=new c.ObjectMatrix;if(f.forValue((S,d,I)=>{if(I==null)return!0;const P=te(I);P!==null&&(p.setValue(S,d,P),L.setValue(S,d,s.getValue(S,d)))}),p.getSizeOf()===0)return;const N={subUnitId:m,unitId:i,cellValue:p.getMatrix()},T={id:l.SetRangeValuesMutation.id,params:N};a.push(T);const A={subUnitId:m,unitId:i,cellValue:L.getMatrix()},C={id:l.SetRangeValuesMutation.id,params:A};n.push(C)})}),{undos:n,redos:a}}function Je(r,t,n){const{redoFormulaData:a,undoFormulaData:i}=et(r,t,n),o=[],u=[];return Object.keys(a).forEach(m=>{Object.keys(a[m]).forEach(f=>{if(Object.keys(a[m][f]).length!==0){const s={subUnitId:f,unitId:m,cellValue:a[m][f]},p={id:l.SetRangeValuesMutation.id,params:s};o.push(p)}})}),Object.keys(i).forEach(m=>{Object.keys(i[m]).forEach(f=>{if(Object.keys(i[m][f]).length!==0){const s={subUnitId:f,unitId:m,cellValue:i[m][f]},p={id:l.SetRangeValuesMutation.id,params:s};u.push(p)}})}),{undos:u,redos:o}}function et(r,t,n){const a={},i={},{unitId:o,sheetId:u}=n;return new Set([...Object.keys(r),...Object.keys(t)]).forEach(f=>{if(je(r,f,u))return;new Set([...Object.keys(r[f]||{}),...Object.keys(t[f]||{})]).forEach(p=>{var I,P;const L=(I=r[f])==null?void 0:I[p],N=(P=t[f])==null?void 0:P[p],T=new c.ObjectMatrix(L||{}),A=new c.ObjectMatrix(N||{});let C=[];f!==o||p!==u?C=nt(A):C=tt(T,A,n);const S=Tt(C,T,A),d=Nt(C,T);a[f]||(a[f]={}),i[f]||(i[f]={}),a[f][p]={...a[f][p],...S},i[f][p]={...i[f][p],...d}})}),{redoFormulaData:a,undoFormulaData:i}}function tt(r,t,n){const{type:a,from:i,to:o,range:u}=n,m=[];return r.forValue((f,s,p)=>{if(p==null||!qe(p))return!0;const L=c.cellToRange(f,s);let N=null,T=!1;if([0,1,2].includes(a))N=at(a,i,o,L);else if(u!=null){const A=it(L,n);N=A.newCell,T=A.isReverse}if(c.Tools.diffValue(L,N)&&!t.getValue(f,s))return!0;T?m.unshift({oldCell:L,newCell:N}):m.push({oldCell:L,newCell:N})}),m}function nt(r){const t=[];return r.forValue((n,a,i)=>{if(i==null||!qe(i))return!0;const o=c.cellToRange(n,a);t.push({oldCell:o,newCell:o})}),t}function at(r,t,n,a){if(t==null||n==null)return null;switch(r){case 0:return rt(t,n,a);case 1:return ot(t,n,a);case 2:return ut(t,n,a);default:return null}}function it(r,t){const{type:n,rangeFilteredRows:a}=t,i=t.range;let o=null,u=!1;switch(n){case 3:o=mt(i,r),u=!0;break;case 4:o=ct(i,r),u=!0;break;case 5:o=ft(i,r,a);break;case 6:o=lt(i,r);break;case 7:o=st(i,r);break;case 8:o=pt(i,r);break;case 9:o=dt(i,r),u=!0;break;case 10:o=Lt(i,r),u=!0;break}return{newCell:o,isReverse:u}}function rt(r,t,n){const a=l.handleMoveRange({id:l.EffectRefRangId.MoveRangeCommandId,params:{toRange:t,fromRange:r}},n);return l.runRefRangeMutations(a,n)}function ot(r,t,n){const a=l.handleMoveRows({id:l.EffectRefRangId.MoveRowsCommandId,params:{toRange:t,fromRange:r}},n);return l.runRefRangeMutations(a,n)}function ut(r,t,n){const a=l.handleMoveCols({id:l.EffectRefRangId.MoveColsCommandId,params:{toRange:t,fromRange:r}},n);return l.runRefRangeMutations(a,n)}function mt(r,t){const n=l.handleInsertRow({id:l.EffectRefRangId.InsertRowCommandId,params:{range:r,unitId:"",subUnitId:"",direction:c.Direction.DOWN}},t);return l.runRefRangeMutations(n,t)}function ct(r,t){const n=l.handleInsertCol({id:l.EffectRefRangId.InsertColCommandId,params:{range:r,unitId:"",subUnitId:"",direction:c.Direction.RIGHT}},t);return l.runRefRangeMutations(n,t)}function ft(r,t,n){const a=l.handleIRemoveRow({id:l.EffectRefRangId.RemoveRowCommandId,params:{range:r}},t,n);return l.runRefRangeMutations(a,t)}function lt(r,t){const n=l.handleIRemoveCol({id:l.EffectRefRangId.RemoveColCommandId,params:{range:r}},t);return l.runRefRangeMutations(n,t)}function st(r,t){const n=l.handleDeleteRangeMoveLeft({id:l.EffectRefRangId.DeleteRangeMoveLeftCommandId,params:{range:r}},t);return l.runRefRangeMutations(n,t)}function pt(r,t){const n=l.handleDeleteRangeMoveUp({id:l.EffectRefRangId.DeleteRangeMoveUpCommandId,params:{range:r}},t);return l.runRefRangeMutations(n,t)}function dt(r,t){const n=l.handleInsertRangeMoveDown({id:l.EffectRefRangId.InsertRangeMoveDownCommandId,params:{range:r}},t);return l.runRefRangeMutations(n,t)}function Lt(r,t){const n=l.handleInsertRangeMoveRight({id:l.EffectRefRangId.InsertRangeMoveRightCommandId,params:{range:r}},t);return l.runRefRangeMutations(n,t)}function Tt(r,t,n){var i,o,u;const a=new c.ObjectMatrix({});for(let m=0;m<r.length;m++){const{oldCell:f,newCell:s}=r[m];if((i=a.getValue(f.startRow,f.startColumn))!=null&&i.f||(o=a.getValue(f.startRow,f.startColumn))!=null&&o.si||a.setValue(f.startRow,f.startColumn,{f:null,si:null}),s){const p=(u=n.getValue(f.startRow,f.startColumn))!=null?u:t.getValue(f.startRow,f.startColumn),L=te(p);a.setValue(s.startRow,s.startColumn,L)}}return a.getMatrix()}function Nt(r,t){const n=new c.ObjectMatrix({});for(let a=r.length-1;a>=0;a--){const{oldCell:i,newCell:o}=r[a],u=t.getValue(i.startRow,i.startColumn),m=te(u);if(n.setValue(i.startRow,i.startColumn,m),o){const f=t.getValue(o.startRow,o.startColumn),s=te(f);n.setValue(o.startRow,o.startColumn,s!=null?s:{f:null,si:null})}}return n.getMatrix()}function te(r){if(r==null)return{f:null,si:null};const{f:t,si:n,x:a=0,y:i=0}=r,o=c.isFormulaString(t),u=c.isFormulaId(n);if(!o&&!u)return{f:null,si:null};const m={};return u&&(m.si=n),o&&a===0&&i===0&&(m.f=t),m.f===void 0&&(m.f=null),m.si===void 0&&(m.si=null),m}function Pt(r){const t=new c.ObjectMatrix({});return new c.ObjectMatrix(r).forValue((a,i,o)=>{const u=te(o);u!==void 0&&t.setValue(a,i,u)}),t.getMatrix()}function qe(r){const t=(r==null?void 0:r.f)||"",n=(r==null?void 0:r.si)||"",a=c.isFormulaString(t),i=c.isFormulaId(n);return!!(a||i)}function he(r,t,n,a,i,o){if((i==null||i.length===0)&&(o==null||o.length===0)){if(r===n&&t===a)return!0}else if((r===i||i==null||i.length===0)&&t===o)return!0;return!1}function Be(r,t,n=0,a=0){const i=[];for(let o=0,u=r.length;o<u;o++){const m=r[o];if(typeof m=="string"||m.nodeType!==e.sequenceNodeType.REFERENCE||t.includes(o)){i.push(m);continue}const{token:f}=m,s=e.deserializeRangeWithSheetWithCache(f),{range:p,sheetName:L,unitId:N}=s,T=c.Rectangle.moveOffset(p,n,a);i.push({...m,token:e.serializeRangeToRefString({range:T,unitId:N,sheetName:L})})}return i}function ve(r,t,n,a){const{type:i,unitId:o,sheetId:u,range:m,from:f,to:s,rangeFilteredRows:p}=t,{range:L,sheetId:N,unitId:T,sheetName:A,refOffsetX:C,refOffsetY:S}=r;if(!he(o,u,n,a,T,N))return;const d=c.Rectangle.moveOffset(L,C,S);let I=null;if(i===F.MoveRange){if(f==null||s==null)return;const P=Ce(d,f),E=c.getIntersectRange(d,f);if(E==null||P!==4)return;const R=l.handleMoveRange({id:l.EffectRefRangId.MoveRangeCommandId,params:{toRange:s,fromRange:f}},E),_=l.runRefRangeMutations(R,E);if(_==null)return e.ErrorType.REF;I=Se(P,_,f,s,d,E)}else if(i===F.MoveRows){if(f==null||s==null)return;const P=Ce(d,f);let E=c.getIntersectRange(d,f);if(E==null&&(f.endRow<d.startRow&&s.endRow<=d.startRow||f.startRow>d.endRow&&s.startRow>d.endRow))return;E==null&&(E={startRow:d.startRow,endRow:d.endRow,startColumn:d.startColumn,endColumn:d.endColumn,rangeType:c.RANGE_TYPE.NORMAL});const R=l.handleMoveRows({id:l.EffectRefRangId.MoveRowsCommandId,params:{toRange:s,fromRange:f}},E),_=l.runRefRangeMutations(R,E);if(_==null)return e.ErrorType.REF;I=Se(P,_,f,s,d,E)}else if(i===F.MoveCols){if(f==null||s==null)return;const P=Ce(d,f);let E=c.getIntersectRange(d,f);if(E==null&&(f.endColumn<d.startColumn&&s.endColumn<=d.startColumn||f.startColumn>d.endColumn&&s.startColumn>d.endColumn))return;E==null&&(E={startRow:d.startRow,endRow:d.endRow,startColumn:d.startColumn,endColumn:d.endColumn,rangeType:c.RANGE_TYPE.NORMAL});const R=l.handleMoveCols({id:l.EffectRefRangId.MoveColsCommandId,params:{toRange:s,fromRange:f}},E),_=l.runRefRangeMutations(R,E);if(_==null)return e.ErrorType.REF;I=Se(P,_,f,s,d,E)}if(m!=null){if(i===F.InsertRow){const P=l.handleInsertRow({id:l.EffectRefRangId.InsertRowCommandId,params:{range:m,unitId:"",subUnitId:"",direction:c.Direction.DOWN}},d),E=l.runRefRangeMutations(P,d);if(E==null)return;I={...d,...E}}else if(i===F.InsertColumn){const P=l.handleInsertCol({id:l.EffectRefRangId.InsertColCommandId,params:{range:m,unitId:"",subUnitId:"",direction:c.Direction.RIGHT}},d),E=l.runRefRangeMutations(P,d);if(E==null)return;I={...d,...E}}else if(i===F.RemoveRow){const P=l.handleIRemoveRow({id:l.EffectRefRangId.RemoveRowCommandId,params:{range:m}},d,p),E=l.runRefRangeMutations(P,d);if(E==null)return e.ErrorType.REF;I={...d,...E}}else if(i===F.RemoveColumn){const P=l.handleIRemoveCol({id:l.EffectRefRangId.RemoveColCommandId,params:{range:m}},d),E=l.runRefRangeMutations(P,d);if(E==null)return e.ErrorType.REF;I={...d,...E}}else if(i===F.DeleteMoveLeft){const P=l.handleDeleteRangeMoveLeft({id:l.EffectRefRangId.DeleteRangeMoveLeftCommandId,params:{range:m}},d),E=l.runRefRangeMutations(P,d);if(E==null)return e.ErrorType.REF;I={...d,...E}}else if(i===F.DeleteMoveUp){const P=l.handleDeleteRangeMoveUp({id:l.EffectRefRangId.DeleteRangeMoveUpCommandId,params:{range:m}},d),E=l.runRefRangeMutations(P,d);if(E==null)return e.ErrorType.REF;I={...d,...E}}else if(i===F.InsertMoveDown){const P=l.handleInsertRangeMoveDown({id:l.EffectRefRangId.InsertRangeMoveDownCommandId,params:{range:m}},d),E=l.runRefRangeMutations(P,d);if(E==null)return;I={...d,...E}}else if(i===F.InsertMoveRight){const P=l.handleInsertRangeMoveRight({id:l.EffectRefRangId.InsertRangeMoveRightCommandId,params:{range:m}},d),E=l.runRefRangeMutations(P,d);if(E==null)return;I={...d,...E}}}if(I!=null)return e.serializeRangeToRefString({range:I,sheetName:A,unitId:T})}function Se(r,t,n,a,i,o){const{startRow:u,endRow:m,startColumn:f,endColumn:s,rangeType:p}=ee(t),{startRow:L,startColumn:N,endRow:T,endColumn:A,rangeType:C=c.RANGE_TYPE.NORMAL}=ee(n),{startRow:S,startColumn:d,endRow:I,endColumn:P}=ee(a),{startRow:E,endRow:R,startColumn:_,endColumn:y}=ee(o),{startRow:M,endRow:b,startColumn:D,endColumn:x,rangeType:U=c.RANGE_TYPE.NORMAL}=ee(i),O={...i};function q(){return p===c.RANGE_TYPE.COLUMN&&U===c.RANGE_TYPE.COLUMN?!0:f>=D&&s<=x}function Y(){return p===c.RANGE_TYPE.ROW&&U===c.RANGE_TYPE.ROW?!0:u>=M&&m<=b}if(r===0)if(q())if(u<M)O.startRow=u;else if(u>=b)O.endRow-=T+1-M;else return;else return;else if(r===1)if(q())if(m>b)O.endRow=m;else if(m<=M)O.startRow+=b-L+1;else return;else return;else if(r===2)if(Y())if(f<D)O.startColumn=f;else if(f>=x)O.endColumn-=A+1-D;else return;else return;else if(r===3)if(Y())if(s>x)O.endColumn=s;else if(s<=D)O.startColumn+=x-N+1;else return;else return;else r===4?(O.startRow=u,O.startColumn=f,O.endRow=m,O.endColumn=s):N<=D&&A>=x||C===c.RANGE_TYPE.ROW&&U===c.RANGE_TYPE.ROW?n.endRow<M?(S>=M&&(O.startRow-=T-L+1),S>=b&&(O.endRow-=T-L+1)):n.startRow>b?(I<=b&&(O.endRow+=T-L+1),I<=M&&(O.startRow+=T-L+1)):n.startRow>=M&&n.endRow<=b&&(S<=M?O.startRow+=T-L+1:S>=b&&(O.endRow-=T-L+1)):L<=M&&T>=b||C===c.RANGE_TYPE.COLUMN&&U===c.RANGE_TYPE.COLUMN?n.endColumn<D?(d>=D&&(O.startColumn-=A-N+1),d>=x&&(O.endColumn-=A-N+1)):n.startColumn>x?(P<=x&&(O.endColumn+=A-N+1),P<=D&&(O.startColumn+=A-N+1)):n.startColumn>=D&&n.endColumn<=x&&(d<=D?O.startColumn+=A-N+1:d>=x&&(O.endColumn-=A-N+1)):((d<=y+1&&P>=x||d<=D&&P>=_-1)&&S<=M&&I>=b||(S<=R+1&&I>=b||S<=M&&I>=E-1)&&d<=D&&P>=x,O.startRow=u,O.startColumn=f,O.endRow=m,O.endColumn=s);return O}function Ce(r,t){const n=$(r.startRow),a=z(r.endRow),i=$(r.startColumn),o=z(r.endColumn),u=$(t.startRow),m=z(t.endRow),f=$(t.startColumn),s=z(t.endColumn);function p(){return r.rangeType===c.RANGE_TYPE.COLUMN&&t.rangeType===c.RANGE_TYPE.COLUMN?!0:n>=u&&a<=m}function L(){return r.rangeType===c.RANGE_TYPE.ROW&&t.rangeType===c.RANGE_TYPE.ROW?!0:i>=f&&o<=s}function N(){return r.rangeType===c.RANGE_TYPE.ALL&&t.rangeType===c.RANGE_TYPE.ALL}return p()&&L()||N()?4:L()&&n>=u&&n<=m&&a>m?0:L()&&a>=u&&a<=m&&n<u?1:p()&&i>=f&&i<=s&&o>s?2:p()&&o>=f&&o<=s&&i<f?3:null}function $(r){return isNaN(r)?-1/0:r}function z(r){return isNaN(r)?1/0:r}function ee(r){const{startRow:t,endRow:n,startColumn:a,endColumn:i}=r;return{...r,startRow:$(t),endRow:z(n),startColumn:$(a),endColumn:z(i)}}function Ve(r,t){const{id:n}=t;let a=null;switch(n){case l.MoveRangeCommand.id:a=Et(t,r);break;case l.MoveRowsCommand.id:a=It(t,r);break;case l.MoveColsCommand.id:a=At(t,r);break;case l.InsertRowCommand.id:a=St(t);break;case l.InsertColCommand.id:a=Ct(t);break;case l.InsertRangeMoveRightCommand.id:a=Rt(t,r);break;case l.InsertRangeMoveDownCommand.id:a=Ot(t,r);break;case l.RemoveRowCommand.id:a=Mt(t,r);break;case l.RemoveColCommand.id:a=_t(t,r);break;case l.DeleteRangeMoveUpCommand.id:a=Dt(t,r);break;case l.DeleteRangeMoveLeftCommand.id:a=Ft(t,r);break;case l.SetWorksheetNameCommand.id:a=bt(t,r);break;case l.RemoveSheetCommand.id:a=yt(t,r);break;case l.SetDefinedNameCommand.id:a=xt(t,r);break;case l.RemoveDefinedNameCommand.id:a=Ut(t,r);break}return a}function v(r){var a;const t=r.getUnitId(),n=((a=r.getActiveSheet())==null?void 0:a.getSheetId())||"";return{unitId:t,sheetId:n}}function Et(r,t){const{params:n}=r;if(!n)return null;const{fromRange:a,toRange:i}=n;if(!a||!i)return null;const{unitId:o,sheetId:u}=v(t);return{type:F.MoveRange,from:a,to:i,unitId:o,sheetId:u}}function It(r,t){const{params:n}=r;if(!n)return null;const{fromRange:{startRow:a,endRow:i},toRange:{startRow:o,endRow:u}}=n,m=t.getUnitId(),f=t.getActiveSheet();if(!f)return null;const s=f.getSheetId(),p={startRow:a,startColumn:0,endRow:i,endColumn:f.getColumnCount()-1,rangeType:c.RANGE_TYPE.ROW},L={startRow:o,startColumn:0,endRow:u,endColumn:f.getColumnCount()-1,rangeType:c.RANGE_TYPE.ROW};return{type:F.MoveRows,from:p,to:L,unitId:m,sheetId:s}}function At(r,t){const{params:n}=r;if(!n)return null;const{fromRange:{startColumn:a,endColumn:i},toRange:{startColumn:o,endColumn:u}}=n,m=t.getUnitId(),f=t.getActiveSheet();if(!f)return null;const s=f.getSheetId(),p={startRow:0,startColumn:a,endRow:f.getRowCount()-1,endColumn:i,rangeType:c.RANGE_TYPE.COLUMN},L={startRow:0,startColumn:o,endRow:f.getRowCount()-1,endColumn:u,rangeType:c.RANGE_TYPE.COLUMN};return{type:F.MoveCols,from:p,to:L,unitId:m,sheetId:s}}function St(r){const{params:t}=r;if(!t)return null;const{range:n,unitId:a,subUnitId:i}=t;return{type:F.InsertRow,range:n,unitId:a,sheetId:i}}function Ct(r){const{params:t}=r;if(!t)return null;const{range:n,unitId:a,subUnitId:i}=t;return{type:F.InsertColumn,range:n,unitId:a,sheetId:i}}function Rt(r,t){const{params:n}=r;if(!n)return null;const{range:a}=n,{unitId:i,sheetId:o}=v(t);return{type:F.InsertMoveRight,range:a,unitId:i,sheetId:o}}function Ot(r,t){const{params:n}=r;if(!n)return null;const{range:a}=n,{unitId:i,sheetId:o}=v(t);return{type:F.InsertMoveDown,range:a,unitId:i,sheetId:o}}function Mt(r,t){var u,m;const{params:n}=r;if(!n)return null;const{range:a}=n,{unitId:i,sheetId:o}=v(t);return{type:F.RemoveRow,range:a,unitId:i,sheetId:o,rangeFilteredRows:(m=(u=t.getSheetBySheetId(o))==null?void 0:u.getRangeFilterRows(a))!=null?m:[]}}function _t(r,t){const{params:n}=r;if(!n)return null;const{range:a}=n,{unitId:i,sheetId:o}=v(t);return{type:F.RemoveColumn,range:a,unitId:i,sheetId:o}}function Dt(r,t){const{params:n}=r;if(!n)return null;const{range:a}=n,{unitId:i,sheetId:o}=v(t);return{type:F.DeleteMoveUp,range:a,unitId:i,sheetId:o}}function Ft(r,t){const{params:n}=r;if(!n)return null;const{range:a}=n,{unitId:i,sheetId:o}=v(t);return{type:F.DeleteMoveLeft,range:a,unitId:i,sheetId:o}}function bt(r,t){const{params:n}=r;if(!n)return null;const{unitId:a,subUnitId:i,name:o}=n,{unitId:u,sheetId:m}=v(t);return{type:F.SetName,unitId:a||u,sheetId:i||m,sheetName:o}}function yt(r,t){const{params:n}=r;if(!n)return null;const{unitId:a,subUnitId:i}=n,{unitId:o,sheetId:u}=v(t);return{type:F.RemoveSheet,unitId:a||o,sheetId:i||u}}function xt(r,t){const{params:n}=r;if(!n)return null;const{unitId:a,name:i,id:o}=n,{sheetId:u}=v(t);return{type:F.SetDefinedName,unitId:a,sheetId:u,definedName:i,definedNameId:o}}function Ut(r,t){const{params:n}=r;if(!n)return null;const{unitId:a,name:i,id:o}=n,{sheetId:u}=v(t);return{type:F.RemoveDefinedName,unitId:a,sheetId:u,definedName:i,definedNameId:o}}var gt=Object.getOwnPropertyDescriptor,qt=(r,t,n,a)=>{for(var i=a>1?void 0:a?gt(t,n):t,o=r.length-1,u;o>=0;o--)(u=r[o])&&(i=u(i)||i);return i},re=(r,t)=>(n,a)=>t(n,a,r);exports.UpdateDefinedNameController=class extends c.Disposable{constructor(t,n,a,i){super(),this._definedNamesService=t,this._univerInstanceService=n,this._sheetInterceptorService=a,this._lexerTreeBuilder=i,this._initialize()}_initialize(){this._commandExecutedListener()}_commandExecutedListener(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:t=>{if(t.id===l.SetDefinedNameCommand.id||t.id===l.RemoveDefinedNameCommand.id)return{redos:[],undos:[]};const n=this._univerInstanceService.getCurrentUnitForType(c.UniverInstanceType.UNIVER_SHEET);if(n==null)return{redos:[],undos:[]};const a=Ve(n,t);return a?this._getUpdateDefinedNameMutations(n,a):{redos:[],undos:[]}}}))}_getUpdateDefinedNameMutations(t,n){const{type:a,unitId:i,sheetId:o}=n,u=this._definedNamesService.getDefinedNameMap(i);if(!u)return{redos:[],undos:[]};const m=[],f=[];return Object.values(u).forEach(s=>{var d;const{formulaOrRefString:p}=s,L=this._lexerTreeBuilder.sequenceNodesBuilder(p);if(L==null)return!0;let N=!1;const T=[];for(let I=0,P=L.length;I<P;I++){const E=L[I];if(typeof E=="string"||E.nodeType!==e.sequenceNodeType.REFERENCE)continue;const{token:R}=E,_=e.deserializeRangeWithSheetWithCache(R),{range:y,sheetName:M,unitId:b}=_,D=((d=t.getSheetBySheetName(M))==null?void 0:d.getSheetId())||"",x={range:y,sheetId:D,unitId:b,sheetName:M,refOffsetX:0,refOffsetY:0};let U=null;if(a===F.RemoveSheet)U=this._removeSheet(s,i,o);else if(a===F.SetName){const{sheetId:O,sheetName:q}=n;if(q==null||D==null||D.length===0||O!==D)continue;U=e.serializeRangeToRefString({range:y,sheetName:q,unitId:b})}else U=ve(x,n,i,o);U!=null&&(L[I]={...E,token:U},N=!0,T.push(I))}if(!N)return!0;const A=e.generateStringWithSequence(Be(L,T)),C={id:e.SetDefinedNameMutation.id,params:{unitId:i,...s,formulaOrRefString:A}};m.push(C);const S={id:e.SetDefinedNameMutation.id,params:{unitId:i,...s}};f.push(S)}),{redos:m,undos:f}}_removeSheet(t,n,a){var u;const{formulaOrRefString:i}=t;return((u=this._definedNamesService.getWorksheetByRef(n,i))==null?void 0:u.getSheetId())===a?e.ErrorType.REF:null}};exports.UpdateDefinedNameController=qt([re(0,e.IDefinedNamesService),re(1,c.IUniverInstanceService),re(2,c.Inject(l.SheetInterceptorService)),re(3,c.Inject(e.LexerTreeBuilder))],exports.UpdateDefinedNameController);var ht=Object.getOwnPropertyDescriptor,Bt=(r,t,n,a)=>{for(var i=a>1?void 0:a?ht(t,n):t,o=r.length-1,u;o>=0;o--)(u=r[o])&&(i=u(i)||i);return i},H=(r,t)=>(n,a)=>t(n,a,r);exports.UpdateFormulaController=class extends c.Disposable{constructor(t,n,a,i,o,u,m,f){super(),this._univerInstanceService=t,this._commandService=n,this._lexerTreeBuilder=a,this._formulaDataModel=i,this._sheetInterceptorService=o,this._definedNamesService=u,this._configService=m,this._injector=f,this._commandExecutedListener()}_commandExecutedListener(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:t=>this._getUpdateFormula(t)})),this.disposeWithMe(this._commandService.onCommandExecuted(t=>{if(t.params)if(t.id===l.RemoveSheetMutation.id){const{subUnitId:n,unitId:a}=t.params;this._handleWorkbookDisposed(a,n)}else t.id===l.InsertSheetMutation.id&&this._handleInsertSheetMutation(t.params)})),this.disposeWithMe(this._commandService.beforeCommandExecuted((t,n)=>{if(t.id===l.SetRangeValuesMutation.id){const a=t.params;if(n&&n.onlyLocal===!0||n&&n.syncOnly===!0||a.trigger===l.SetStyleCommand.id||a.trigger===l.SetBorderCommand.id||a.trigger===l.ClearSelectionFormatCommand.id)return;this._handleSetRangeValuesMutation(a)}})),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitAdded$(c.UniverInstanceType.UNIVER_SHEET).subscribe(t=>this._handleWorkbookAdded(t))),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitDisposed$(c.UniverInstanceType.UNIVER_SHEET).pipe(xe.map(t=>t.getUnitId())).subscribe(t=>this._handleWorkbookDisposed(t)))}_handleSetRangeValuesMutation(t){const{subUnitId:n,unitId:a,cellValue:i}=t;if(i==null)return;const o=this._formulaDataModel.updateFormulaData(a,n,i);if(Object.keys(o).length===0)return;const u={[a]:{[n]:o}};this._commandService.executeCommand(l.SetRangeValuesMutation.id,{unitId:a,subUnitId:n,cellValue:Pt(o)},{onlyLocal:!0,fromFormula:!0}),this._formulaDataModel.updateArrayFormulaCellData(a,n,i),this._formulaDataModel.updateArrayFormulaRange(a,n,i),this._formulaDataModel.updateImageFormulaData(a,n,i),this._commandService.executeCommand(e.SetFormulaDataMutation.id,{formulaData:u},{onlyLocal:!0}),this._commandService.executeCommand(e.SetArrayFormulaDataMutation.id,{arrayFormulaRange:this._formulaDataModel.getArrayFormulaRange(),arrayFormulaCellData:this._formulaDataModel.getArrayFormulaCellData()},{onlyLocal:!0,remove:!0})}_handleWorkbookDisposed(t,n){const a=this._formulaDataModel.getFormulaData(),i=Ae(a,t,n),o=this._formulaDataModel.getArrayFormulaRange(),u=Ae(o,t,n),m=this._formulaDataModel.getArrayFormulaCellData(),f=Ae(m,t,n);i&&this._commandService.executeCommand(e.SetFormulaDataMutation.id,{formulaData:i},{onlyLocal:!0}),u&&f&&this._commandService.executeCommand(e.SetArrayFormulaDataMutation.id,{arrayFormulaRange:o,arrayFormulaCellData:m},{onlyLocal:!0})}_handleInsertSheetMutation(t){const{sheet:n,unitId:a}=t,i=this._formulaDataModel.getFormulaData(),{id:o,cellData:u}=n,m=new c.ObjectMatrix(u),f=e.initSheetFormulaData(i,a,o,m);this._commandService.executeCommand(e.SetFormulaDataMutation.id,{formulaData:f},{onlyLocal:!0})}_handleWorkbookAdded(t){var s;const n={},a=t.getUnitId(),i={[a]:{}};t.getSheets().forEach(p=>{var A;const L=p.getCellMatrix(),N=p.getSheetId(),T=e.initSheetFormulaData(n,a,N,L);i[a][N]=(A=T[a])==null?void 0:A[N]}),this._commandService.executeCommand(e.SetFormulaDataMutation.id,{formulaData:i},{onlyLocal:!0});const u=this._configService.getConfig(Z),m=(s=u==null?void 0:u.initialFormulaComputing)!=null?s:w.WHEN_EMPTY,f=this._getDirtyDataByCalculationMode(m);this._commandService.executeCommand(e.SetTriggerFormulaCalculationStartMutation.id,f,{onlyLocal:!0})}_getDirtyDataByCalculationMode(t){const n=t===w.FORCED,a=t===w.WHEN_EMPTY?this._formulaDataModel.getFormulaDirtyRanges():[];return{forceCalculation:n,dirtyRanges:a,dirtyNameMap:{},dirtyDefinedNameMap:{},dirtyUnitFeatureMap:{},dirtyUnitOtherFormulaMap:{},clearDependencyTreeCache:{}}}_getUpdateFormula(t){const n=this._univerInstanceService.getCurrentUnitForType(c.UniverInstanceType.UNIVER_SHEET);if(!n)return{undos:[],redos:[]};const a=Ve(n,t);if(a){const{unitSheetNameMap:i}=this._formulaDataModel.getCalculateData(),o=this._formulaDataModel.getFormulaData(),{newFormulaData:u}=this._getFormulaReferenceMoveInfo(o,i,a),{undos:m,redos:f}=ze(o,u,a);return{undos:m,redos:f}}return{undos:[],redos:[]}}_getFormulaReferenceMoveInfo(t,n,a){if(!c.Tools.isDefine(t))return{newFormulaData:{},oldFormulaData:{}};const i=Object.keys(t);if(i.length===0)return{newFormulaData:{},oldFormulaData:{}};const o={},u={};for(const m of i){const f=t[m];if(f==null)continue;const s=Object.keys(f);c.Tools.isDefine(o[m])||(o[m]={}),c.Tools.isDefine(u[m])||(u[m]={});for(const p of s){const L=new c.ObjectMatrix(f[p]||{}),N=new c.ObjectMatrix,T=[];L.forValue((A,C,S)=>{var x;if(!S)return!0;const{f:d,x:I,y:P,si:E}=S,R=this._lexerTreeBuilder.sequenceNodesBuilder(d);if(R==null)return!0;let _=!1;const y=[],{type:M,from:b}=a;for(let U=0,O=R.length;U<O;U++){const q=R[U];if(typeof q=="string")continue;const{token:Y,nodeType:X}=q;if((M===F.SetDefinedName||M===F.RemoveDefinedName)&&(X===e.sequenceNodeType.DEFINED_NAME||X===e.sequenceNodeType.FUNCTION)){const{definedNameId:ie,definedName:j}=a;if(ie===void 0||j===void 0)continue;const K=this._definedNamesService.getValueById(m,ie);if(K==null||K.name!==Y)continue;R[U]={...q,token:M===F.SetDefinedName?j:e.ErrorType.REF},_=!0,y.push(U);continue}else if(X!==e.sequenceNodeType.REFERENCE)continue;const W=e.deserializeRangeWithSheetWithCache(Y),{range:h,sheetName:V,unitId:G}=W,ae=G==null||G.length===0?m:G,B=((x=n==null?void 0:n[ae])==null?void 0:x[V])||"";if(!he(a.unitId,a.sheetId,m,p,G,B))continue;const Pe={range:h,sheetId:B,unitId:G,sheetName:V,refOffsetX:I||0,refOffsetY:P||0};let J=null;if(M===F.SetName){const{unitId:ie,sheetId:j,sheetName:K}=a;if(K==null||B==null||B.length===0||j!==B)continue;J=e.serializeRangeToRefString({range:h,sheetName:K,unitId:G})}else if(M===F.RemoveSheet){const{unitId:ie,sheetId:j,sheetName:K}=a;if(B==null||B.length===0||j!==B)continue;J=e.ErrorType.REF}else M!==F.SetDefinedName&&(J=ve(Pe,a,m,p));J!=null&&(R[U]={...q,token:J},_=!0,y.push(U),E&&(I!=null?I:0)===0&&(P!=null?P:0)===0&&T.push(E))}if(!_)if(E&&[F.MoveRows,F.MoveCols,F.MoveRange].includes(M)){if(b&&b.startRow<=A&&A<=b.endRow&&b.startColumn<=C&&C<=b.endColumn)(I!=null?I:0)===0&&(P!=null?P:0)===0&&T.push(E);else if(!T.includes(E))return!0}else return!0;const D=Be(R,y,I,P);N.setValue(A,C,{f:`=${e.generateStringWithSequence(D)}`})}),u[m]&&(u[m][p]=N.getData())}}return{newFormulaData:u}}};exports.UpdateFormulaController=Bt([H(0,c.IUniverInstanceService),H(1,c.ICommandService),H(2,c.Inject(e.LexerTreeBuilder)),H(3,c.Inject(e.FormulaDataModel)),H(4,c.Inject(l.SheetInterceptorService)),H(5,e.IDefinedNamesService),H(6,c.IConfigService),H(7,c.Inject(c.Injector))],exports.UpdateFormulaController);const vt="SHEETS_FORMULA_PLUGIN";var Vt=Object.getOwnPropertyDescriptor,Gt=(r,t,n,a)=>{for(var i=a>1?void 0:a?Vt(t,n):t,o=r.length-1,u;o>=0;o--)(u=r[o])&&(i=u(i)||i);return i},Re=(r,t)=>(n,a)=>t(n,a,r);let le=class extends c.Disposable{constructor(r,t,n){super(),this._activeDirtyManagerService=r,this._univerInstanceService=t,this._formulaDataModel=n,this._initialize()}_initialize(){this._initialConversion()}_initialConversion(){this._activeDirtyManagerService.register(l.SetRangeValuesMutation.id,{commandId:l.SetRangeValuesMutation.id,getDirtyData:r=>{const t=r.params;return t.trigger===l.SetStyleCommand.id?{}:{dirtyRanges:this._getSetRangeValuesMutationDirtyRange(t)}}}),this._initialMove(),this._initialRowAndColumn(),this._initialHideRow(),this._initialSheet(),this._initialDefinedName()}_initialMove(){this._activeDirtyManagerService.register(l.MoveRangeMutation.id,{commandId:l.MoveRangeMutation.id,getDirtyData:r=>{const t=r.params;return{dirtyRanges:this._getMoveRangeMutationDirtyRange(t),clearDependencyTreeCache:{[t.unitId]:{[t.to.subUnitId]:"1",[t.from.subUnitId]:"1"}}}}}),this._activeDirtyManagerService.register(l.MoveRowsMutation.id,{commandId:l.MoveRowsMutation.id,getDirtyData:r=>{const t=r.params;return{dirtyRanges:this._getMoveRowsMutationDirtyRange(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:"1"}}}}}),this._activeDirtyManagerService.register(l.MoveColsMutation.id,{commandId:l.MoveColsMutation.id,getDirtyData:r=>{const t=r.params;return{dirtyRanges:this._getMoveRowsMutationDirtyRange(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:"1"}}}}}),this._activeDirtyManagerService.register(l.ReorderRangeMutation.id,{commandId:l.ReorderRangeMutation.id,getDirtyData:r=>{const t=r.params;return{dirtyRanges:this._getReorderRangeMutationDirtyRange(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:"1"}}}}})}_initialRowAndColumn(){this._activeDirtyManagerService.register(l.RemoveRowMutation.id,{commandId:l.RemoveRowMutation.id,getDirtyData:r=>{const t=r.params;return{dirtyRanges:this._getRemoveRowOrColumnMutation(t,!0),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:"1"}}}}}),this._activeDirtyManagerService.register(l.RemoveColMutation.id,{commandId:l.RemoveColMutation.id,getDirtyData:r=>{const t=r.params;return{dirtyRanges:this._getRemoveRowOrColumnMutation(t,!1),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:"1"}}}}}),this._activeDirtyManagerService.register(l.InsertColMutation.id,{commandId:l.InsertColMutation.id,getDirtyData:r=>{const t=r.params;return{clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:"1"}}}}}),this._activeDirtyManagerService.register(l.InsertRowMutation.id,{commandId:l.InsertRowMutation.id,getDirtyData:r=>{const t=r.params;return{clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:"1"}}}}})}_initialHideRow(){this._activeDirtyManagerService.register(l.SetRowHiddenMutation.id,{commandId:l.SetRowHiddenMutation.id,getDirtyData:r=>{const t=r.params;return{dirtyRanges:this._getHideRowMutation(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:"1"}}}}}),this._activeDirtyManagerService.register(l.SetRowVisibleMutation.id,{commandId:l.SetRowVisibleMutation.id,getDirtyData:r=>{const t=r.params;return{dirtyRanges:this._getHideRowMutation(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:"1"}}}}})}_initialSheet(){this._activeDirtyManagerService.register(e.SetTriggerFormulaCalculationStartMutation.id,{commandId:e.SetTriggerFormulaCalculationStartMutation.id,getDirtyData:r=>({...r.params})}),this._activeDirtyManagerService.register(l.RemoveSheetMutation.id,{commandId:l.RemoveSheetMutation.id,getDirtyData:r=>{const t=r.params;return{dirtyNameMap:this._getRemoveSheetMutation(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:"1"}}}}}),this._activeDirtyManagerService.register(l.InsertSheetMutation.id,{commandId:l.InsertSheetMutation.id,getDirtyData:r=>{const t=r.params;return{dirtyNameMap:this._getInsertSheetMutation(t)}}})}_initialDefinedName(){this._activeDirtyManagerService.register(e.SetDefinedNameMutation.id,{commandId:e.SetDefinedNameMutation.id,getDirtyData:r=>{const t=r.params;return{dirtyDefinedNameMap:this._getDefinedNameMutation(t)}}}),this._activeDirtyManagerService.register(e.RemoveDefinedNameMutation.id,{commandId:e.RemoveDefinedNameMutation.id,getDirtyData:r=>{const t=r.params;return{dirtyDefinedNameMap:this._getDefinedNameMutation(t)}}})}_getDefinedNameMutation(r){const{unitId:t,name:n,formulaOrRefString:a}=r,i={};return r==null?{}:(i[t]={},i[t][n]=a,i)}_getSetRangeValuesMutationDirtyRange(r){const{subUnitId:t,unitId:n,cellValue:a}=r,i=[];return a==null||(i.push(...this._getDirtyRangesByCellValue(n,t,a)),i.push(...this._getDirtyRangesForArrayFormula(n,t,a))),i}_getMoveRangeMutationDirtyRange(r){const{unitId:t,from:n,to:a}=r,i=[];return i.push(...this._getDirtyRangesByCellValue(t,n.subUnitId,n.value)),i.push(...this._getDirtyRangesByCellValue(t,a.subUnitId,a.value)),i.push(...this._getDirtyRangesForArrayFormula(t,a.subUnitId,a.value)),i}_getMoveRowsMutationDirtyRange(r){const{subUnitId:t,unitId:n,sourceRange:a,targetRange:i}=r,o=[],u=this._rangeToMatrix(a).getData(),m=this._rangeToMatrix(i).getData();return o.push(...this._getDirtyRangesByCellValue(n,t,u)),o.push(...this._getDirtyRangesByCellValue(n,t,m)),o.push(...this._getDirtyRangesForArrayFormula(n,t,m)),o}_getReorderRangeMutationDirtyRange(r){const{unitId:t,subUnitId:n,range:a}=r,i=this._rangeToMatrix(a).getData(),o=[];return o.push(...this._getDirtyRangesByCellValue(t,n,i)),o.push(...this._getDirtyRangesForArrayFormula(t,n,i)),o}_getRemoveRowOrColumnMutation(r,t=!0){const{subUnitId:n,unitId:a,range:i}=r,o=[],u=this._univerInstanceService.getUniverSheetInstance(a),m=u==null?void 0:u.getSheetBySheetId(n),f=(m==null?void 0:m.getRowCount())||0,s=(m==null?void 0:m.getColumnCount())||0;let p=null;const{startRow:L,endRow:N,startColumn:T,endColumn:A}=i;t===!0?p=this._rangeToMatrix({startRow:L,startColumn:0,endRow:N,endColumn:s-1}):p=this._rangeToMatrix({startRow:0,startColumn:T,endRow:f,endColumn:A});const C=p.getData();return o.push(...this._getDirtyRangesByCellValue(a,n,C)),o.push(...this._getDirtyRangesForArrayFormula(a,n,C)),o}_getHideRowMutation(r){const{subUnitId:t,unitId:n,ranges:a}=r,i=[];return a.forEach(o=>{const u=this._rangeToMatrix(o).getMatrix();i.push(...this._getDirtyRangesByCellValue(n,t,u))}),i}_getRemoveSheetMutation(r){const t={},{subUnitId:n,unitId:a,subUnitName:i}=r;return t[a]==null&&(t[a]={}),t[a][n]=i,t}_getInsertSheetMutation(r){const t={},{sheet:n,unitId:a}=r;return t[a]==null&&(t[a]={}),t[a][n.id]=n.name,t}_rangeToMatrix(r){const t=new c.ObjectMatrix,{startRow:n,startColumn:a,endRow:i,endColumn:o}=r;for(let u=n;u<=i;u++)for(let m=a;m<=o;m++)t.setValue(u,m,{});return t}_getDirtyRangesByCellValue(r,t,n){const a=[];return n==null||new c.ObjectMatrix(n).getDiscreteRanges().forEach(u=>{a.push({unitId:r,sheetId:t,range:u})}),a}_getDirtyRangesForArrayFormula(r,t,n){var u,m;const a=[];if(n==null)return a;const i=new c.ObjectMatrix(n),o=this._formulaDataModel.getArrayFormulaRange();if((u=o==null?void 0:o[r])!=null&&u[t]){const f=new c.ObjectMatrix((m=o==null?void 0:o[r])==null?void 0:m[t]);i.forValue((s,p)=>{f.forValue((L,N,T)=>{if(T==null)return!0;const{startRow:A,startColumn:C,endRow:S,endColumn:d}=T;s>=A&&s<=S&&p>=C&&p<=d&&a.push({unitId:r,sheetId:t,range:{startRow:A,startColumn:C,endRow:A,endColumn:C}})})})}return a}};le=Gt([Re(0,e.IActiveDirtyManagerService),Re(1,c.IUniverInstanceService),Re(2,c.Inject(e.FormulaDataModel))],le);var Ht=Object.getOwnPropertyDescriptor,wt=(r,t,n,a)=>{for(var i=a>1?void 0:a?Ht(t,n):t,o=r.length-1,u;o>=0;o--)(u=r[o])&&(i=u(i)||i);return i},Q=(r,t)=>(n,a)=>t(n,a,r);let se=class extends c.Disposable{constructor(r,t,n,a,i,o,u){super(),this._commandService=r,this._configService=t,this._sheetInterceptorService=n,this._formulaDataModel=a,this._lexerTreeBuilder=i,this._functionService=o,this._definedNamesService=u,this._initialize()}_initialize(){this._commandExecutedListener(),this._initInterceptorCellContent()}_commandExecutedListener(){this.disposeWithMe(this._commandService.onCommandExecuted(r=>{var n;const t=(n=this._configService.getConfig(Z))==null?void 0:n.writeArrayFormulaToSnapshot;if(r.id===e.SetArrayFormulaDataMutation.id){const a=r.params;if(a==null)return;const{arrayFormulaRange:i,arrayFormulaCellData:o,arrayFormulaEmbedded:u}=a;this._formulaDataModel.setArrayFormulaRange(i),this._formulaDataModel.setArrayFormulaCellData(o),t&&this._writeArrayFormulaToSnapshot(i,o,u)}else r.id===e.SetFormulaCalculationResultMutation.id&&t&&(this._addPrefixToFunctionSnapshot(),this._addPrefixToDefinedNamesFunctionSnapshot())}))}_addPrefixToDefinedNamesFuncti