UNPKG

@univerjs/sheets

Version:

UniverSheet normal base-sheets

3 lines • 307 kB
"use strict";var ki=Object.defineProperty;var Oi=(o,e,t)=>e in o?ki(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var C=(o,e,t)=>Oi(o,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@univerjs/core"),q=require("@univerjs/engine-formula"),Ni=require("@univerjs/rpc"),x=require("rxjs"),On=require("@univerjs/engine-numfmt"),Et=require("rxjs/operators");var fs=(o=>(o.OthersCanView="othersCanView",o.NoOneElseCanView="noOneElseCanView",o))(fs||{}),ps=(o=>(o.DesignedUserCanEdit="designedUserCanEdit",o.OnlyMe="onlyMe",o))(ps||{});class K{constructor(){C(this,"_model",new Map);C(this,"_ruleChange$",new x.Subject);C(this,"ruleChange$",this._ruleChange$.asObservable());C(this,"_ruleRefresh$",new x.Subject);C(this,"ruleRefresh$",this._ruleRefresh$.asObservable());C(this,"_rangeRuleInitStateChange",new x.BehaviorSubject(!1));C(this,"rangeRuleInitStateChange$",this._rangeRuleInitStateChange.asObservable())}dispose(){this._ruleChange$.complete(),this._ruleRefresh$.complete()}ruleRefresh(e){this._ruleRefresh$.next(e)}getRangeRuleInitState(){return this._rangeRuleInitStateChange.value}changeRuleInitState(e){this._rangeRuleInitStateChange.next(e)}addRule(e,t,n){this._ensureRuleMap(e,t).set(n.id,n),this._ruleChange$.next({unitId:e,subUnitId:t,rule:n,type:"add"})}deleteRule(e,t,n){var r,a,c,u;const s=(a=(r=this._model.get(e))==null?void 0:r.get(t))==null?void 0:a.get(n);s&&((u=(c=this._model.get(e))==null?void 0:c.get(t))==null||u.delete(n),this._ruleChange$.next({unitId:e,subUnitId:t,rule:s,type:"delete"}))}setRule(e,t,n,s){var a,c;const r=this.getRule(e,t,n);r&&((c=(a=this._model.get(e))==null?void 0:a.get(t))==null||c.set(n,s),this._ruleChange$.next({unitId:e,subUnitId:t,oldRule:r,rule:s,type:"set"}))}getRule(e,t,n){var s,r;return(r=(s=this._model.get(e))==null?void 0:s.get(t))==null?void 0:r.get(n)}getSubunitRuleList(e,t){var s;return[...(((s=this._model.get(e))==null?void 0:s.get(t))||new Map).values()]}getSubunitRuleListLength(e,t){var s;const n=(s=this._model.get(e))==null?void 0:s.get(t);return n?n.size:0}_ensureRuleMap(e,t){let n=this._model.get(e);n||(n=new Map,this._model.set(e,n));let s=n.get(t);return s||(s=new Map,n.set(t,s)),s}toObject(){const e={};return[...this._model.keys()].forEach(n=>{const s=this._model.get(n),r=[...s.keys()];e[n]={},r.forEach(a=>{const c=s.get(a);e[n][a]=[...c.values()]})}),e}fromObject(e){const t=new Map;Object.keys(e).forEach(n=>{const s=e[n],r=new Map;Object.keys(s).forEach(a=>{const c=s[a].reduce((u,l)=>(u.set(l.id,l),u),new Map);r.set(a,c)}),t.set(n,r)}),this._model=t}deleteUnitModel(e){this._model.delete(e)}createRuleId(e,t){let n=i.Tools.generateRandomId(4);const s=this._ensureRuleMap(e,t);for(;s.has(n);)n=i.Tools.generateRandomId(4);return n}getTargetByPermissionId(e,t){const n=this._model.get(e);if(!n)return null;for(const[s,r]of n)for(const a of r.values())if(a.permissionId===t)return[e,s];return null}}const Di=(o,e)=>{const t=o.get(K),n=e.ruleIds.map(r=>t.getRule(e.unitId,e.subUnitId,r)).filter(r=>!!r);return{id:ge.id,params:{subUnitId:e.subUnitId,unitId:e.unitId,rules:n}}},_e={id:"sheet.mutation.delete-range-protection",type:i.CommandType.MUTATION,handler:(o,e)=>{const{unitId:t,subUnitId:n,ruleIds:s}=e,r=o.get(K);return s.forEach(a=>{r.deleteRule(t,n,a)}),!0}},Ai=o=>{const e={...o,ruleIds:o.rules.map(t=>t.id)};return{id:_e.id,params:e}},ge={id:"sheet.mutation.add-range-protection",type:i.CommandType.MUTATION,handler:(o,e)=>{const{unitId:t,subUnitId:n,rules:s}=e,r=o.get(K);return s.forEach(a=>{r.addRule(t,n,a)}),!0}},Is={type:i.CommandType.COMMAND,id:"sheet.command.add-range-protection",async handler(o,e){if(!e)return!1;const t=o.get(i.ICommandService),n=o.get(i.IUndoRedoService),s=o.get(K),{rule:r,permissionId:a}=e,{unitId:c,subUnitId:u,ranges:l,description:d,viewState:m,editState:h}=r,g=[{ranges:l,permissionId:a,id:s.createRuleId(c,u),description:d,unitType:r.unitType,unitId:c,subUnitId:u,viewState:m,editState:h}];if(await t.executeCommand(ge.id,{unitId:c,subUnitId:u,rules:g})){const S=[{id:ge.id,params:{unitId:c,subUnitId:u,rules:g}}],f=[{id:_e.id,params:{unitId:c,subUnitId:u,ruleIds:g.map(p=>p.id)}}];n.pushUndoRedo({unitID:c,redoMutations:S,undoMutations:f})}return!0}};class be{constructor(){C(this,"_model",new Map);C(this,"_ruleChange",new x.Subject);C(this,"_ruleRefresh",new x.Subject);C(this,"_resetOrder",new x.Subject);C(this,"ruleChange$",this._ruleChange.asObservable());C(this,"ruleRefresh$",this._ruleRefresh.asObservable());C(this,"resetOrder$",this._resetOrder.asObservable());C(this,"_worksheetRuleInitStateChange",new x.BehaviorSubject(!1));C(this,"worksheetRuleInitStateChange$",this._worksheetRuleInitStateChange.asObservable())}changeRuleInitState(e){this._worksheetRuleInitStateChange.next(e)}getSheetRuleInitState(){return this._worksheetRuleInitStateChange.value}addRule(e,t){this._ensureSubUnitMap(e).set(t.subUnitId,t),this._ruleChange.next({unitId:e,rule:t,type:"add",subUnitId:t.subUnitId})}deleteRule(e,t){var s,r,a;const n=(r=(s=this._model)==null?void 0:s.get(e))==null?void 0:r.get(t);n&&((a=this._model.get(e))==null||a.delete(t),this._ruleChange.next({unitId:e,rule:n,type:"delete",subUnitId:t}))}setRule(e,t,n){var r,a;const s=this.getRule(e,t);s&&((a=(r=this._model)==null?void 0:r.get(e))==null||a.set(t,n),this._ruleChange.next({unitId:e,oldRule:s,rule:n,type:"set",subUnitId:t}))}getRule(e,t){var n,s;return(s=(n=this._model)==null?void 0:n.get(e))==null?void 0:s.get(t)}toObject(){const e={};return[...this._model.keys()].forEach(n=>{const s=this._model.get(n);s!=null&&s.size&&(e[n]=[],[...s.keys()].forEach(a=>{const c=s.get(a);c&&e[n].push(c)}))}),e}fromObject(e){const t=new Map;Object.keys(e).forEach(n=>{const s=e[n];if(s!=null&&s.length){const r=new Map;s.forEach(a=>{r.set(a.subUnitId,a)}),t.set(n,r)}}),this._model=t}deleteUnitModel(e){this._model.delete(e)}_ensureSubUnitMap(e){let t=this._model.get(e);return t||(t=new Map,this._model.set(e,t)),t}ruleRefresh(e){this._ruleRefresh.next(e)}resetOrder(){this._resetOrder.next(Math.random())}getTargetByPermissionId(e,t){const n=this._model.get(e);if(!n)return null;for(const[s,r]of n)if(r.permissionId===t)return[e,s]}}const Be={id:"sheet.mutation.add-worksheet-protection",type:i.CommandType.MUTATION,handler:(o,e)=>{const{unitId:t,rule:n}=e;return o.get(be).addRule(t,n),!0}},ze={id:"sheet.mutation.delete-worksheet-protection",type:i.CommandType.MUTATION,handler:(o,e)=>{const{unitId:t,subUnitId:n}=e;return o.get(be).deleteRule(t,n),!0}},vs={type:i.CommandType.COMMAND,id:"sheet.command.add-worksheet-protection",async handler(o,e){if(!e)return!1;const t=o.get(i.ICommandService),n=o.get(i.IUndoRedoService),{rule:s,unitId:r}=e,a=s.subUnitId;if(await t.executeCommand(Be.id,{unitId:r,rule:s,subUnitId:s.subUnitId})){const u=[{id:Be.id,params:{unitId:r,rule:s,subUnitId:s.subUnitId}}],l=[{id:ze.id,params:{unitId:r,subUnitId:a}}];n.pushUndoRedo({unitID:r,redoMutations:u,undoMutations:l})}return!0}},xi=i.createInterceptorKey("CELL_CONTENT"),Wi=i.createInterceptorKey("ROW_FILTERED"),Pe={CELL_CONTENT:xi,ROW_FILTERED:Wi};var ws=(o=>(o[o.DATA_VALIDATION=9]="DATA_VALIDATION",o[o.NUMFMT=10]="NUMFMT",o[o.CELL_IMAGE=11]="CELL_IMAGE",o))(ws||{});const Ms="sheet.interceptor.range-theme-id",Zo="sheet.interceptor.ignore-range-theme";var Vi=Object.getOwnPropertyDescriptor,Li=(o,e,t,n)=>{for(var s=n>1?void 0:n?Vi(e,t):e,r=o.length-1,a;r>=0;r--)(a=o[r])&&(s=a(s)||s);return s},$i=(o,e)=>(t,n)=>e(t,n,o);const xn=i.createInterceptorKey("BEFORE_CELL_EDIT"),Zt=i.createInterceptorKey("AFTER_CELL_EDIT"),Qt=i.createInterceptorKey("VALIDATE_CELL");exports.SheetInterceptorService=class extends i.Disposable{constructor(t){super();C(this,"_interceptorsByName",new Map);C(this,"_commandInterceptors",[]);C(this,"_rangeInterceptors",[]);C(this,"_autoHeightInterceptors",[]);C(this,"_beforeCommandInterceptor",[]);C(this,"_afterCommandInterceptors",[]);C(this,"_workbookDisposables",new Map);C(this,"_worksheetDisposables",new Map);C(this,"_interceptorsDirty",!1);C(this,"_composedInterceptorByKey",new Map);C(this,"writeCellInterceptor",new i.InterceptorManager({BEFORE_CELL_EDIT:xn,AFTER_CELL_EDIT:Zt,VALIDATE_CELL:Qt}));this._univerInstanceService=t,this.disposeWithMe(this._univerInstanceService.getTypeOfUnitAdded$(i.UniverInstanceType.UNIVER_SHEET).subscribe(n=>{this._interceptWorkbook(n)})),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitDisposed$(i.UniverInstanceType.UNIVER_SHEET).subscribe(n=>this._disposeWorkbookInterceptor(n))),this.intercept(Pe.CELL_CONTENT,{priority:-1,effect:i.InterceptorEffectEnum.Style|i.InterceptorEffectEnum.Value,handler:n=>n}),this.disposeWithMe(this.writeCellInterceptor.intercept(Zt,{priority:-1,handler:n=>n})),this.disposeWithMe(this.writeCellInterceptor.intercept(xn,{priority:-1,handler:n=>n})),this.disposeWithMe(this.writeCellInterceptor.intercept(Qt,{priority:-1,handler:n=>n}))}dispose(){super.dispose(),this._workbookDisposables.forEach(t=>t.dispose()),this._workbookDisposables.clear(),this._worksheetDisposables.clear(),this._interceptorsByName.clear()}interceptCommand(t){if(this._commandInterceptors.includes(t))throw new Error("[SheetInterceptorService]: Interceptor already exists!");return this._commandInterceptors.push(t),this._commandInterceptors.sort((n,s)=>{var r,a;return((r=s.priority)!=null?r:0)-((a=n.priority)!=null?a:0)}),this.disposeWithMe(i.toDisposable(()=>i.remove(this._commandInterceptors,t)))}onCommandExecute(t){const n=this._commandInterceptors.map(s=>s.getMutations(t));return{preUndos:n.map(s=>{var r;return(r=s.preUndos)!=null?r:[]}).flat(),undos:n.map(s=>s.undos).flat(),preRedos:n.map(s=>{var r;return(r=s.preRedos)!=null?r:[]}).flat(),redos:n.map(s=>s.redos).flat()}}interceptAfterCommand(t){if(this._afterCommandInterceptors.includes(t))throw new Error("[SheetInterceptorService]: Interceptor already exists!");return this._afterCommandInterceptors.push(t),this._afterCommandInterceptors.sort((n,s)=>{var r,a;return((r=s.priority)!=null?r:0)-((a=n.priority)!=null?a:0)}),this.disposeWithMe(i.toDisposable(()=>i.remove(this._afterCommandInterceptors,t)))}afterCommandExecute(t){const n=this._afterCommandInterceptors.map(s=>s.getMutations(t));return{undos:n.map(s=>s.undos).flat(),redos:n.map(s=>s.redos).flat()}}interceptAutoHeight(t){if(this._autoHeightInterceptors.includes(t))throw new Error("[SheetInterceptorService]: Interceptor already exists!");return this._autoHeightInterceptors.push(t),this._autoHeightInterceptors.sort((n,s)=>{var r,a;return((r=s.priority)!=null?r:0)-((a=n.priority)!=null?a:0)}),this.disposeWithMe(i.toDisposable(()=>i.remove(this._autoHeightInterceptors,t)))}generateMutationsOfAutoHeight(t){const n=this._autoHeightInterceptors.map(s=>s.getMutations(t));return{preUndos:n.map(s=>{var r;return(r=s.preUndos)!=null?r:[]}).flat(),undos:n.map(s=>s.undos).flat(),preRedos:n.map(s=>{var r;return(r=s.preRedos)!=null?r:[]}).flat(),redos:n.map(s=>s.redos).flat()}}interceptBeforeCommand(t){if(this._beforeCommandInterceptor.includes(t))throw new Error("[SheetInterceptorService]: Interceptor already exists!");return this._beforeCommandInterceptor.push(t),this._beforeCommandInterceptor.sort((n,s)=>{var r,a;return((r=s.priority)!=null?r:0)-((a=n.priority)!=null?a:0)}),this.disposeWithMe(i.toDisposable(()=>i.remove(this._beforeCommandInterceptor,t)))}async beforeCommandExecute(t){return(await Promise.all(this._beforeCommandInterceptor.map(s=>s.performCheck(t)))).every(s=>s)}interceptRanges(t){if(this._rangeInterceptors.includes(t))throw new Error("[SheetInterceptorService]: Interceptor already exists!");return this._rangeInterceptors.push(t),this._rangeInterceptors.sort((n,s)=>{var r,a;return((r=s.priority)!=null?r:0)-((a=n.priority)!=null?a:0)}),this.disposeWithMe(i.toDisposable(()=>i.remove(this._rangeInterceptors,t)))}generateMutationsByRanges(t){const n=this._rangeInterceptors.map(s=>s.getMutations(t));return{preUndos:n.map(s=>{var r;return(r=s.preUndos)!=null?r:[]}).flat(),undos:n.map(s=>s.undos).flat(),preRedos:n.map(s=>{var r;return(r=s.preRedos)!=null?r:[]}).flat(),redos:n.map(s=>s.redos).flat()}}onWriteCell(t,n,s,r,a){const c={subUnitId:n.getSheetId(),unitId:t.getUnitId(),workbook:t,worksheet:n,row:s,col:r,origin:i.Tools.deepClone(a)};return this.writeCellInterceptor.fetchThroughInterceptors(Zt)(a,c)}onValidateCell(t,n,s,r){const a={subUnitId:n.getSheetId(),unitId:t.getUnitId(),workbook:t,worksheet:n,row:s,col:r};return this.writeCellInterceptor.fetchThroughInterceptors(Qt)(Promise.resolve(!0),a)}intercept(t,n){const s=t;this._interceptorsByName.has(s)||this._interceptorsByName.set(s,[]);const r=this._interceptorsByName.get(s);r.push(n);const a=r.sort((c,u)=>{var l,d;return((l=u.priority)!=null?l:0)-((d=c.priority)!=null?d:0)});if(this._interceptorsDirty=!0,s===Pe.CELL_CONTENT){const c=i.InterceptorEffectEnum.Style|i.InterceptorEffectEnum.Value;this._interceptorsByName.set(`${s}-${c}`,a);const u=i.InterceptorEffectEnum.Style|i.InterceptorEffectEnum.Value;return this._interceptorsByName.set(`${s}-${i.InterceptorEffectEnum.Style}`,a.filter(l=>((l.effect||u)&i.InterceptorEffectEnum.Style)>0)),this._interceptorsByName.set(`${s}-${i.InterceptorEffectEnum.Value}`,a.filter(l=>((l.effect||u)&i.InterceptorEffectEnum.Value)>0)),this.disposeWithMe(i.toDisposable(()=>{i.remove(this._interceptorsByName.get(s),n),i.remove(this._interceptorsByName.get(`${s}-${c}`),n),i.remove(this._interceptorsByName.get(`${s}-${i.InterceptorEffectEnum.Style}`),n),i.remove(this._interceptorsByName.get(`${s}-${i.InterceptorEffectEnum.Value}`),n)}))}else return this._interceptorsByName.set(s,a),this.disposeWithMe(i.toDisposable(()=>i.remove(this._interceptorsByName.get(s),n)))}fetchThroughInterceptors(t,n,s,r){const a=n===void 0?t:`${t}-${n}`,c=s!=null?s:a;let u=this._composedInterceptorByKey.get(c);if(!u||this._interceptorsDirty){let l=this._interceptorsByName.get(a);l&&r&&(l=l.filter(r)),u=i.composeInterceptors(l||[]),this._composedInterceptorByKey.set(c,u)}return u}_interceptWorkbook(t){const n=new i.DisposableCollection,s=t.getUnitId(),r=this,a=c=>{const u=c.getSheetId();c.__interceptViewModel(l=>{const d=new i.DisposableCollection;r._worksheetDisposables.set(Qo(s,c),d),d.add(l.registerCellContentInterceptor({getCell(m,h,g,R,S){const f=c.getCellRaw(m,h);return r.fetchThroughInterceptors(Pe.CELL_CONTENT,g,R,S)(f,{unitId:s,subUnitId:u,row:m,col:h,worksheet:c,workbook:t,rawData:f})}})),d.add(l.registerRowFilteredInterceptor({getRowFiltered(m){return!!r.fetchThroughInterceptors(Pe.ROW_FILTERED)(!1,{unitId:s,subUnitId:u,row:m,workbook:t,worksheet:c})}}))})};t.getSheets().forEach(c=>a(c)),n.add(t.sheetCreated$.subscribe(c=>a(c))),n.add(i.toDisposable(()=>t.getSheets().forEach(c=>this._disposeSheetInterceptor(s,c)))),n.add(t.sheetDisposed$.subscribe(c=>this._disposeSheetInterceptor(s,c))),this._workbookDisposables.set(s,n)}_disposeWorkbookInterceptor(t){const n=t.getUnitId(),s=this._workbookDisposables.get(n);s&&(s.dispose(),this._workbookDisposables.delete(n))}_disposeSheetInterceptor(t,n){const s=Qo(t,n),r=this._worksheetDisposables.get(s);r&&(r.dispose(),this._worksheetDisposables.delete(s))}};exports.SheetInterceptorService=Li([$i(0,i.IUniverInstanceService)],exports.SheetInterceptorService);function Qo(o,e){return`${o}|${e.getSheetId()}`}const J=o=>{const e={};return o.bg&&(e.bg={...o.bg}),o.ol&&(e.ol={...o.ol}),o.bd&&(e.bd={...o.bd}),o.cl&&(e.cl={...o.cl}),o.ht&&(e.ht=o.ht),o.vt&&(e.vt=o.vt),o.bl!==void 0&&(e.bl=o.bl),e};function Hi(o){const e={};if(o.length===1)return o[0];for(const t of o)t.bg&&(e.bg=t.bg),t.ol&&(e.ol=t.ol),t.bd&&(e.bd={...e.bd,...t.bd}),t.cl&&(e.cl=t.cl),t.ht&&(e.ht=t.ht),t.vt&&(e.vt=t.vt),t.bl!==void 0&&(e.bl=t.bl);return e}const X={wholeStyle:1,headerRowStyle:2,headerColumnStyle:4,firstRowStyle:8,secondRowStyle:16,lastRowStyle:32,firstColumnStyle:128,secondColumnStyle:256,lastColumnStyle:512};class Ae{constructor(e,t){C(this,"_name");C(this,"wholeStyle",null);C(this,"headerRowStyle",null);C(this,"headerColumnStyle",null);C(this,"firstRowStyle",null);C(this,"secondRowStyle",null);C(this,"lastRowStyle",null);C(this,"firstColumnStyle",null);C(this,"secondColumnStyle",null);C(this,"lastColumnStyle",null);C(this,"_mergeCacheMap",new Map);t&&this.fromJson({...t,name:e}),this._name=e}getName(){return this._name}getWholeStyle(){return this.wholeStyle}setWholeStyle(e){this.wholeStyle=e,this._resetStyleCache()}getFirstRowStyle(){return this.firstRowStyle}setFirstRowStyle(e){this.firstRowStyle=e,this._resetStyleCache()}getSecondRowStyle(){return this.secondRowStyle}setSecondRowStyle(e){this.secondRowStyle=e,this._resetStyleCache()}getLastRowStyle(){return this.lastRowStyle}setLastRowStyle(e){this.lastRowStyle=e,this._resetStyleCache()}getFirstColumnStyle(){return this.firstColumnStyle}setFirstColumnStyle(e){this.firstColumnStyle=e,this._resetStyleCache()}getSecondColumnStyle(){return this.secondColumnStyle}setSecondColumnStyle(e){this.secondColumnStyle=e,this._resetStyleCache()}getLastColumnStyle(){return this.lastColumnStyle}setLastColumnStyle(e){this.lastColumnStyle=e,this._resetStyleCache()}getHeaderRowStyle(){return this.headerRowStyle}setHeaderRowStyle(e){this.headerRowStyle=e,this._resetStyleCache()}getHeaderColumnStyle(){return this.headerColumnStyle}setHeaderColumnStyle(e){this.headerColumnStyle=e,this._resetStyleCache()}getStyle(e,t,n,s){let r=0;return n&&(r=r|X.lastRowStyle),s&&(r=r|X.lastColumnStyle),e>=0&&t>=0&&(r=r|X.wholeStyle),e%2===1&&(r=r|X.firstRowStyle),e%2===0&&(r=r|X.secondRowStyle),e===0&&(r=r|X.headerRowStyle),t===0&&(r=r|X.headerColumnStyle),t%2===1&&(r=r|X.firstColumnStyle),t%2===0&&(r=r|X.secondColumnStyle),r===0?null:this._getMergeStyle(r)}_getMergeStyle(e){let t=this._mergeCacheMap.get(e);return t||(t=this._mergeStyle(e),this._mergeCacheMap.set(e,t)),t}_mergeStyle(e){const t=[];return this.wholeStyle&&e&X.wholeStyle&&t.push(this.wholeStyle),this.firstColumnStyle&&e&X.firstColumnStyle&&t.push(this.firstColumnStyle),this.secondColumnStyle&&e&X.secondColumnStyle&&t.push(this.secondColumnStyle),this.firstRowStyle&&e&X.firstRowStyle&&t.push(this.firstRowStyle),this.secondRowStyle&&e&X.secondRowStyle&&t.push(this.secondRowStyle),this.headerColumnStyle&&e&X.headerColumnStyle&&t.push(this.headerColumnStyle),this.lastColumnStyle&&e&X.lastColumnStyle&&t.push(this.lastColumnStyle),this.headerRowStyle&&e&X.headerRowStyle&&t.push(this.headerRowStyle),this.lastRowStyle&&e&X.lastRowStyle&&t.push(this.lastRowStyle),Hi(t)}_resetStyleCache(){this._mergeCacheMap.clear()}toJson(){const e={name:this._name};return this.wholeStyle&&(e.wholeStyle=J(this.wholeStyle)),this.headerRowStyle&&(e.headerRowStyle=J(this.headerRowStyle)),this.headerColumnStyle&&(e.headerColumnStyle=J(this.headerColumnStyle)),this.firstRowStyle&&(e.firstRowStyle=J(this.firstRowStyle)),this.secondRowStyle&&(e.secondRowStyle=J(this.secondRowStyle)),this.lastRowStyle&&(e.lastRowStyle=J(this.lastRowStyle)),this.firstColumnStyle&&(e.firstColumnStyle=J(this.firstColumnStyle)),this.secondColumnStyle&&(e.secondColumnStyle=J(this.secondColumnStyle)),this.lastColumnStyle&&(e.lastColumnStyle=J(this.lastColumnStyle)),e}fromJson(e){this._name=e.name,e.wholeStyle&&(this.wholeStyle=J(e.wholeStyle)),e.headerRowStyle&&(this.headerRowStyle=J(e.headerRowStyle)),e.headerColumnStyle&&(this.headerColumnStyle=J(e.headerColumnStyle)),e.firstRowStyle&&(this.firstRowStyle=J(e.firstRowStyle)),e.secondRowStyle&&(this.secondRowStyle=J(e.secondRowStyle)),e.lastRowStyle&&(this.lastRowStyle=J(e.lastRowStyle)),e.firstColumnStyle&&(this.firstColumnStyle=J(e.firstColumnStyle)),e.secondColumnStyle&&(this.secondColumnStyle=J(e.secondColumnStyle)),e.lastColumnStyle&&(this.lastColumnStyle=J(e.lastColumnStyle))}dispose(){this._mergeCacheMap.clear()}}const Bi=(o,e,t)=>new Ae(`light-${o}`,{headerRowStyle:{bg:{rgb:e}},firstColumnStyle:{bg:{rgb:"rgb(255, 255, 255)"}},secondColumnStyle:{bg:{rgb:t}},lastRowStyle:{bg:{rgb:e}}}),ji=(o,e,t)=>new Ae(`middle-${o}`,{headerRowStyle:{bg:{rgb:e}},headerColumnStyle:{bg:{rgb:t}},secondRowStyle:{bg:{rgb:t}},lastRowStyle:{bg:{rgb:e}},lastColumnStyle:{bg:{rgb:t}}}),Fi=(o,e,t,n)=>new Ae(`dark-${o}`,{headerRowStyle:{bg:{rgb:e},cl:{rgb:"rgb(255, 255, 255)"},ht:i.HorizontalAlign.CENTER,bl:i.BooleanNumber.TRUE},firstRowStyle:{bg:{rgb:t}},secondRowStyle:{bg:{rgb:n}},lastRowStyle:{bg:{rgb:e}}}),Gi=[{baseName:"blue",header:"rgb(164, 202, 254)",color:"rgb(225, 239, 254)"},{baseName:"grey",header:"rgb(205, 208, 216)",color:"rgb(238, 239, 241)"},{baseName:"red",header:"rgb(248, 180, 180)",color:"rgb(253, 232, 232)"},{baseName:"orange",header:"rgb(253, 186, 140)",color:"rgb(254, 236, 220)"},{baseName:"yellow",header:"rgb(250, 200, 21)",color:"rgb(255, 244, 185)"},{baseName:"green",header:"rgb(132, 225, 188)",color:"rgb(222, 247, 236)"},{baseName:"azure",header:"rgb(126, 220, 226)",color:"rgb(213, 245, 246)"},{baseName:"indigo",header:"rgb(186, 198, 248)",color:"rgb(233, 237, 255)"},{baseName:"purple",header:"rgb(202, 191, 253)",color:"rgb(237, 235, 254)"},{baseName:"magenta",header:"rgb(248, 180, 217)",color:"rgb(252, 232, 243)"}],zi=[{baseName:"blue",rowHeader:"rgb(63, 131, 248)",colHeader:"rgb(195, 221, 253)"},{baseName:"grey",rowHeader:"rgb(95, 101, 116)",colHeader:"rgb(227, 229, 234)"},{baseName:"red",rowHeader:"rgb(240, 82, 82)",colHeader:"rgb(251, 213, 213)"},{baseName:"orange",rowHeader:"rgb(255, 90, 31)",colHeader:"rgb(252, 217, 189)"},{baseName:"yellow",rowHeader:"rgb(212, 157, 15)",colHeader:"rgb(252, 220, 106)"},{baseName:"green",rowHeader:"rgb(13, 164, 113)",colHeader:"rgb(188, 240, 218)"},{baseName:"azure",rowHeader:"rgb(6, 148, 162)",colHeader:"rgb(175, 236, 239)"},{baseName:"indigo",rowHeader:"rgb(70, 106, 247)",colHeader:"rgb(210, 218, 250)"},{baseName:"purple",rowHeader:"rgb(144, 97, 249)",colHeader:"rgb(220, 215, 254)"},{baseName:"magenta",rowHeader:"rgb(231, 70, 148)",colHeader:"rgb(250, 209, 232)"}],Yi=[{baseName:"blue",rowHeader:"rgb(30, 66, 159)",firstRow:"rgb(195, 221, 253)",secondRow:"rgb(118, 169, 250)"},{baseName:"grey",rowHeader:"rgb(44, 48, 64)",firstRow:"rgb(227, 229, 234)",secondRow:"rgb(151, 157, 172)"},{baseName:"red",rowHeader:"rgb(155, 28, 28)",firstRow:"rgb(251, 213, 213)",secondRow:"rgb(249, 128, 128)"},{baseName:"orange",rowHeader:"rgb(180, 52, 3)",firstRow:"rgb(252, 217, 189)",secondRow:"rgb(255, 138, 76)"},{baseName:"yellow",rowHeader:"rgb(154, 109, 21)",firstRow:"rgb(252, 220, 106)",secondRow:"rgb(212, 157, 15)"},{baseName:"green",rowHeader:"rgb(4, 108, 78)",firstRow:"rgb(188, 240, 218)",secondRow:"rgb(49, 196, 141)"},{baseName:"azure",rowHeader:"rgb(3, 102, 114)",firstRow:"rgb(175, 236, 239)",secondRow:"rgb(22, 189, 202)"},{baseName:"indigo",rowHeader:"rgb(16, 51, 191)",firstRow:"rgb(210, 218, 250)",secondRow:"rgb(98, 128, 249)"},{baseName:"purple",rowHeader:"rgb(74, 29, 150)",firstRow:"rgb(220, 215, 254)",secondRow:"rgb(172, 148, 250)"},{baseName:"magenta",rowHeader:"rgb(153, 21, 75)",firstRow:"rgb(250, 209, 232)",secondRow:"rgb(241, 126, 184)"}],qi=Gi.map(({baseName:o,header:e,color:t})=>Bi(o,e,t)),Ki=zi.map(({baseName:o,rowHeader:e,colHeader:t})=>ji(o,e,t)),Ji=Yi.map(({baseName:o,rowHeader:e,firstRow:t,secondRow:n})=>Fi(o,e,t,n)),Xi=[...qi,...Ki,...Ji],ys={headerRowStyle:{bg:{rgb:"rgb(68,114,196)"},cl:{rgb:"rgb(255,255,255)"},ht:i.HorizontalAlign.CENTER,bl:i.BooleanNumber.TRUE},firstRowStyle:{bg:{rgb:"rgb(217,225,242)"}}},Zi=new Ae("default",ys),Qi=new Ae("default-last-row",{...ys,lastRowStyle:{bd:{t:{s:i.BorderStyleTypes.THIN,cl:{rgb:"rgb(68,114,196)"}}},ht:i.HorizontalAlign.CENTER,bl:i.BooleanNumber.TRUE}});var ea=Object.getOwnPropertyDescriptor,ta=(o,e,t,n)=>{for(var s=n>1?void 0:n?ea(e,t):e,r=o.length-1,a;r>=0;r--)(a=o[r])&&(s=a(s)||s);return s},es=(o,e)=>(t,n)=>e(t,n,o);const na="SHEET_RANGE_THEME_MODEL_PLUGIN";exports.SheetRangeThemeModel=class extends i.Disposable{constructor(t,n){super();C(this,"_rangeThemeStyleMap",new Map);C(this,"_rangeThemeStyleRuleMap",new Map);C(this,"_rTreeCollection",new Map);C(this,"_defaultRangeThemeMap",new Map);C(this,"_rangeThemeMapChanged$",new x.Subject);C(this,"rangeThemeMapChange$",this._rangeThemeMapChanged$.asObservable());this._sheetInterceptorService=t,this._resourceManagerService=n,this._registerIntercept(),this._initSnapshot(),this._initDefaultTheme()}_initDefaultTheme(){this.registerDefaultRangeTheme(Zi),this.registerDefaultRangeTheme(Qi);for(const t of Xi)this.registerDefaultRangeTheme(t)}_ensureRangeThemeStyleMap(t){return this._rangeThemeStyleMap.has(t)||this._rangeThemeStyleMap.set(t,new Map),this._rangeThemeStyleMap.get(t)}_ensureRangeThemeStyleRuleMap(t){return this._rangeThemeStyleRuleMap.has(t)||this._rangeThemeStyleRuleMap.set(t,new Map),this._rangeThemeStyleRuleMap.get(t)}_ensureRTreeCollection(t){return this._rTreeCollection.has(t)||this._rTreeCollection.set(t,new i.RTree),this._rTreeCollection.get(t)}getDefaultRangeThemeStyle(t){return this._defaultRangeThemeMap.get(t)}getCustomRangeThemeStyle(t,n){return this._ensureRangeThemeStyleMap(t).get(n)}registerRangeThemeRule(t,n){const{unitId:s,subUnitId:r,range:a}=n,c=i.generateRandomId(),u=this._ensureRangeThemeStyleRuleMap(s),l=this._ensureRTreeCollection(s);u.set(c,{rangeInfo:n,themeName:t}),l.insert({unitId:s,sheetId:r,range:a,id:c})}getRegisteredRangeThemeStyle(t){const{unitId:n,subUnitId:s,range:r}=t,a=this._ensureRTreeCollection(n),c=Array.from(a.bulkSearch([{unitId:n,sheetId:s,range:r}]));if(c[0]){const l=this._ensureRangeThemeStyleRuleMap(n).get(c[0]);if(l)return l.themeName}}removeRangeThemeRule(t,n){const{unitId:s,subUnitId:r,range:a}=n,c=this._ensureRTreeCollection(s),u=Array.from(c.bulkSearch([{unitId:s,sheetId:r,range:a}])),l=this._ensureRangeThemeStyleRuleMap(s);for(let d=0;d<u.length;d++){const m=l.get(u[d]);if(m&&m.themeName===t){l.delete(u[d]),c.remove({unitId:s,sheetId:r,range:a,id:u[d]});break}}}registerDefaultRangeTheme(t){this._defaultRangeThemeMap.set(t.getName(),t),this._rangeThemeMapChanged$.next({type:"add",styleName:t.getName()})}unRegisterDefaultRangeTheme(t){this._defaultRangeThemeMap.delete(t),this._rangeThemeMapChanged$.next({type:"remove",styleName:t})}getRegisteredRangeThemes(){return Array.from(this._defaultRangeThemeMap.keys())}registerRangeThemeStyle(t,n){this._ensureRangeThemeStyleMap(t).set(n.getName(),n),this._rangeThemeMapChanged$.next({type:"add",styleName:n.getName()})}unregisterRangeThemeStyle(t,n){this._ensureRangeThemeStyleMap(t).delete(n),this._rangeThemeMapChanged$.next({type:"remove",styleName:n})}getALLRegisteredTheme(t){return Array.from(this._ensureRangeThemeStyleMap(t).keys())}getRangeThemeStyle(t,n){return this._defaultRangeThemeMap.has(n)?this._defaultRangeThemeMap.get(n):this._ensureRangeThemeStyleMap(t).get(n)}getCellStyle(t,n,s,r){const a={startRow:s,startColumn:r,endRow:s,endColumn:r},c=this._ensureRTreeCollection(t),u=Array.from(c.bulkSearch([{unitId:t,sheetId:n,range:a}]));if(u[0]){const d=this._ensureRangeThemeStyleRuleMap(t).get(u[0]);if(d){const{rangeInfo:m,themeName:h}=d,g=s-m.range.startRow,R=r-m.range.startColumn,S=this.getRangeThemeStyle(t,h);if(S)return S.getStyle(g,R,s===m.range.endRow,r===m.range.endColumn)}}}_registerIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(Pe.CELL_CONTENT,{id:Ms,effect:i.InterceptorEffectEnum.Style,handler:(t,n,s)=>{const{row:r,col:a,unitId:c,subUnitId:u}=n,l=this.getCellStyle(c,u,r,a);if(l){const d=!t||t===n.rawData?{...n.rawData}:t;return d.themeStyle=l,s(d)}return s(t)}}))}toJson(t){const n=this._ensureRangeThemeStyleRuleMap(t),s=this._ensureRangeThemeStyleMap(t);if(s.size===0&&n.size===0)return"{}";const r={};n.forEach((c,u)=>{r[u]=c});const a={};return s.forEach((c,u)=>{a[u]=c.toJson()}),JSON.stringify({rangeThemeStyleRuleMap:r,rangeThemeStyleMapJson:a})}fromJSON(t,n){const{rangeThemeStyleRuleMap:s,rangeThemeStyleMapJson:r}=n;s&&Object.keys(s).forEach(a=>{const c=s[a],{themeName:u,rangeInfo:l}=c;u.startsWith("table")||(this.registerRangeThemeRule(u,l),this._ensureRTreeCollection(l.unitId).insert({unitId:a,sheetId:l.subUnitId,range:l.range,id:a}))}),r&&Object.keys(r).forEach(a=>{const c=r[a],u=new Ae(c.name);u.fromJson(c),this._ensureRangeThemeStyleMap(t).set(u.getName(),u)})}deleteUnitId(t){this._rangeThemeStyleMap.delete(t),this._rangeThemeStyleRuleMap.delete(t),this._rTreeCollection.delete(t)}_initSnapshot(){this.disposeWithMe(this._resourceManagerService.registerPluginResource({toJson:t=>this.toJson(t),parseJson:t=>{if(!t)return{};try{return JSON.parse(t)}catch{return{}}},businesses:[i.UniverInstanceType.UNIVER_SHEET],pluginName:na,onLoad:(t,n)=>{this.fromJSON(t,n)},onUnLoad:t=>{this.deleteUnitId(t)}}))}dispose(){super.dispose(),this._rangeThemeStyleMap.clear(),this._rangeThemeStyleRuleMap.clear(),this._defaultRangeThemeMap.clear(),this._rTreeCollection.clear()}};exports.SheetRangeThemeModel=ta([es(0,i.Inject(exports.SheetInterceptorService)),es(1,i.Inject(i.IResourceManagerService))],exports.SheetRangeThemeModel);function Hn(o,e){const{unitId:t}=e,n=t?o.getUnit(t,i.UniverInstanceType.UNIVER_SHEET):o.getCurrentUnitOfType(i.UniverInstanceType.UNIVER_SHEET);return n?{workbook:n,unitId:n.getUnitId()}:null}function E(o,e={}){const{unitId:t,subUnitId:n}=e,s=t?o.getUnit(t,i.UniverInstanceType.UNIVER_SHEET):o.getCurrentUnitOfType(i.UniverInstanceType.UNIVER_SHEET);if(!s)return null;const r=n?s.getSheetBySheetId(n):s.getActiveSheet(!0);return r?{worksheet:r,workbook:s,unitId:s.getUnitId(),subUnitId:r.getSheetId()}:null}function pe(o,e){const{unitId:t,subUnitId:n}=e,s=o.getUnit(t,i.UniverInstanceType.UNIVER_SHEET);if(!s)return null;const r=s.getSheetBySheetId(n);return r?{worksheet:r,workbook:s}:null}const dt={id:"sheet.mutation.set-worksheet-range-theme-style",type:i.CommandType.MUTATION,handler:(o,e)=>{const{unitId:t,subUnitId:n,range:s,themeName:r}=e,a=o.get(i.IUniverInstanceService),c=E(a),u=o.get(exports.SheetRangeThemeModel);return c?(u.registerRangeThemeRule(r,{range:s,unitId:t,subUnitId:n}),!0):!1}},_s=(o,e)=>{const t=pe(o.get(i.IUniverInstanceService),e);if(!t)throw new Error("[SetWorksheetRangeThemeStyleMutation]: worksheet is null error!");const{worksheet:n}=t;return{unitId:e.unitId,subUnitId:n.getSheetId(),range:e.range,themeName:e.themeName}},mt={id:"sheet.mutation.remove-worksheet-range-theme-style",type:i.CommandType.MUTATION,handler:(o,e)=>{const{unitId:t,subUnitId:n,range:s,themeName:r}=e,a=o.get(i.IUniverInstanceService),c=E(a),u=o.get(exports.SheetRangeThemeModel);return c?(u.removeRangeThemeRule(r,{range:s,unitId:t,subUnitId:n}),!0):!1}},bs=(o,e)=>{const t=pe(o.get(i.IUniverInstanceService),e);if(!t)throw new Error("[DeleteWorksheetRangeThemeStyleMutationFactory]: worksheet is null error!");const{worksheet:n}=t;return{unitId:e.unitId,subUnitId:n.getSheetId(),range:e.range,themeName:e.themeName}},Es={type:i.CommandType.COMMAND,id:"sheet.command.set-worksheet-range-theme-style",handler:(o,e)=>{const t=o.get(i.ICommandService),n=o.get(i.IUndoRedoService),{unitId:s}=e,r=_s(o,e);return t.syncExecuteCommand(dt.id,e)?(n.pushUndoRedo({unitID:s,undoMutations:[{id:mt.id,params:r}],redoMutations:[{id:dt.id,params:e}]}),!0):!1}},mn=(o,e)=>{if(o.get(i.IUniverInstanceService).getUniverSheetInstance(e.unitId)==null)throw new Error("universheet is null error!");return{unitId:e.unitId,subUnitId:e.subUnitId,range:e.range}},Ie={id:"sheet.mutation.insert-row",type:i.CommandType.MUTATION,handler:(o,e)=>{var R;const{unitId:t,subUnitId:n,range:s,rowInfo:r}=e,c=o.get(i.IUniverInstanceService).getUniverSheetInstance(t);if(c==null)throw new Error("universheet is null error!");const u=c.getSheetBySheetId(n);if(u==null)throw new Error("worksheet is null error!");const l=u.getRowManager().getRowData(),d={h:u.getConfig().defaultRowHeight,hd:0},m=s.startRow,h=s.endRow-s.startRow+1;for(let S=m;S<m+h;S++)r?i.insertMatrixArray(S,(R=r[S-s.startRow])!=null?R:d,l):i.insertMatrixArray(S,d,l);return u.setRowCount(u.getRowCount()+s.endRow-s.startRow+1),u.getCellMatrix().insertRows(s.startRow,h),!0}},At=(o,e)=>{if(o.get(i.IUniverInstanceService).getUniverSheetInstance(e.unitId)==null)throw new Error("universheet is null error!");return{unitId:e.unitId,subUnitId:e.subUnitId,range:e.range}},Se={id:"sheet.mutation.insert-col",type:i.CommandType.MUTATION,handler:(o,e)=>{var R;const n=o.get(i.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(!s)return!1;const r=s.getColumnManager(),{range:a,colInfo:c}=e,l=r.getColumnData(),d=a.startColumn,m=a.endColumn-a.startColumn+1,h=s.getConfig().defaultColumnWidth;for(let S=d;S<d+m;S++){const f={w:h,hd:0};c?i.insertMatrixArray(S,(R=c[S-a.startColumn])!=null?R:f,l):i.insertMatrixArray(S,f,l)}return s.setColumnCount(s.getColumnCount()+a.endColumn-a.startColumn+1),s.getCellMatrix().insertColumns(a.startColumn,m),!0}},oa=(o,e)=>{const s=e.getRowManager().getRowData(),r={},a=o.range,c=i.sliceMatrixArray(a.startRow,a.endRow,s),u=i.concatMatrixArray(r,c);return{unitId:o.unitId,subUnitId:o.subUnitId,range:o.range,rowInfo:u}},ve={id:"sheet.mutation.remove-rows",type:i.CommandType.MUTATION,handler:(o,e)=>{const n=o.get(i.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(!s)return!1;const r=e.range,c=s.getRowManager().getRowData();for(let d=r.startRow;d<=r.endRow;d++)s.getRowFiltered(d);const u=r.endRow-r.startRow+1;return i.spliceArray(r.startRow,u,c),s.getCellMatrix().removeRows(r.startRow,u),s.setRowCount(s.getRowCount()-u),!0}},sa=(o,e)=>{const n=o.get(i.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(s==null)throw new Error("worksheet is null error!");const c=s.getColumnManager().getColumnData(),u={},l=e.range,d=i.sliceMatrixArray(l.startColumn,l.endColumn,c),m=i.concatMatrixArray(u,d);return{unitId:e.unitId,subUnitId:e.subUnitId,range:e.range,colInfo:m}},ce={id:"sheet.mutation.remove-col",type:i.CommandType.MUTATION,handler:(o,e)=>{const n=o.get(i.IUniverInstanceService).getUniverSheetInstance(e.unitId);if(n==null)throw new Error("universheet is null error!");const s=n.getSheetBySheetId(e.subUnitId);if(!s)return!1;const r=e.range,c=s.getColumnManager().getColumnData(),u=r.endColumn-r.startColumn+1;return i.spliceArray(r.startColumn,u,c),s.setColumnCount(s.getColumnCount()-u),s.getCellMatrix().removeColumns(r.startColumn,u),!0}};function ra(o,e,t){var a;const n=o.getStyleByCell(e);n==null&&delete e.s,typeof t.s=="string"&&(t.s=o.get(t.s));const s=en(n,t.s?t.s:null);s&&(i.Tools.removeNull(s),Object.entries(s).forEach(([c,u])=>{typeof u=="object"&&u!==null&&Object.keys(u).length===0&&delete s[c]})),i.Tools.isEmptyObject(s)?delete e.s:e.s=o.setValue(s);const r=t.v?`${t.v}\r `:"";!t.p&&e.p&&(r&&r!==((a=e.p.body)==null?void 0:a.dataStream)?delete e.p:ca(e.p,t.s?t.s:null))}function ia(o,e){if(!e||!Object.keys(e).length)return o;const t=i.Tools.deepClone(o!=null?o:{});for(const n in e)n==="bd"?t[n]=aa(t[n]||{},e[n]):n in t||(t[n]=null);return t}function aa(o,e){if(!e||!Object.keys(e).length)return o;for(const t in e)t in o||(o[t]=null);return o}function en(o,e,t=!1){if(e===null)return e;if(e===void 0)return o;const n=i.Tools.deepClone(o)||{};for(const s in e)t&&["bd","tr","td","ht","vt","tb","pd","bg"].includes(s)||(s in n&&s==="bd"?n[s]=Object.assign(n[s],e[s]):n[s]=e[s]);return"cl"in n&&("ul"in n&&n.ul&&(n.ul.cl=n.cl),"ol"in n&&n.ol&&(n.ol.cl=n.cl),"st"in n&&n.st&&(n.st.cl=n.cl)),n}function Ts(o,e){return o.some(t=>t.startIndex===e)?Ts(o,e+1):e}function ca(o,e){var a;if(o.body==null)return;Array.isArray(o.body.textRuns)||(o.body.textRuns=[]);let t=0;const n=[],s=((a=o.body)==null?void 0:a.paragraphs)||[];for(const c of o.body.textRuns){const{st:u,ed:l,ts:d={}}=c;if(t<u){const h={st:t,ed:u},g=en({},e,!0);g&&i.Tools.removeNull(g),i.Tools.isEmptyObject(g)||(h.ts=g),n.push(h)}const m=en(d,e,!0);m&&i.Tools.removeNull(m),i.Tools.isEmptyObject(m)?delete c.ts:c.ts=m,n.push(c),t=Ts(s,l)}const r=o.body.dataStream.endsWith(`\r `)?o.body.dataStream.length-2:o.body.dataStream.length;if(t<r){const c={st:t,ed:r},u=en({},e,!0);u&&i.Tools.removeNull(u),i.Tools.isEmptyObject(u)||(c.ts=u),n.push(c)}o.body.textRuns=i.normalizeTextRuns(n)}function ua(o,e,t){var r,a,c;if(e.t)return e.t;if(e.v===null)return null;const n=o.getStyleByCell(e),s=o.getStyleByCell(t);if(t.t===i.CellValueType.FORCE_STRING){if(!On.isTextFormat((r=s==null?void 0:s.n)==null?void 0:r.pattern)&&e.v!==void 0){if(i.isRealNum(e.v))return i.CellValueType.NUMBER;if(i.isBooleanString(`${e.v}`))return i.CellValueType.BOOLEAN}return i.CellValueType.FORCE_STRING}return la(n)?On.isTextFormat((a=n==null?void 0:n.n)==null?void 0:a.pattern)?i.CellValueType.STRING:ts(e,t):On.isTextFormat((c=s==null?void 0:s.n)==null?void 0:c.pattern)?i.CellValueType.STRING:ts(e,t)}function ts(o,e){return o.v!==void 0?Wn(o.v,o.t):Wn(e.v,e.t)}function la(o){var e;return!!((e=o==null?void 0:o.n)!=null&&e.pattern)}function Wn(o,e){return o===null?null:typeof o=="string"?i.isRealNum(o)?(+o==0||+o==1)&&e===i.CellValueType.BOOLEAN?i.CellValueType.BOOLEAN:i.willLoseNumericPrecision(o)?i.CellValueType.FORCE_STRING:i.CellValueType.NUMBER:i.isBooleanString(o)?i.CellValueType.BOOLEAN:i.CellValueType.STRING:typeof o=="number"?(o===0||o===1)&&e===i.CellValueType.BOOLEAN?i.CellValueType.BOOLEAN:i.CellValueType.NUMBER:typeof o=="boolean"?i.CellValueType.BOOLEAN:i.CellValueType.FORCE_STRING}function ns(o,e){return e.v===void 0||e.v===null?e.v:o===i.CellValueType.NUMBER?Number(e.v):o===i.CellValueType.BOOLEAN?da(e.v)?1:0:o===i.CellValueType.STRING||o===i.CellValueType.FORCE_STRING?`${e.v}`:e.v}function da(o){if(typeof o=="string"){if(o.toUpperCase()==="TRUE")return!0;if(o.toUpperCase()==="FALSE")return!1;if(i.isSafeNumeric(o)){if(Number(o)===0)return!1;if(Number(o)===1)return!0}}if(typeof o=="number"){if(o===0)return!1;if(o===1)return!0}return typeof o=="boolean"?o:null}function ma(o){return o==null?null:(o.f===void 0&&(o.f=null),o.si===void 0&&(o.si=null),o.p===void 0&&(o.p=null),o.v===void 0&&(o.v=null),o.t===void 0&&(o.t=null),o.s===void 0&&(o.s=null),o.custom===void 0&&(o.custom=null),o)}const ue=(o,e)=>{const{unitId:t,subUnitId:n,cellValue:s}=e,a=o.get(i.IUniverInstanceService).getUniverSheetInstance(t);if(a==null)throw new Error("workbook is null error!");const c=a.getSheetBySheetId(n);if(c==null)throw new Error("worksheet is null error!");const u=c.getCellMatrix(),l=a.getStyles(),d=new i.ObjectMatrix;return new i.ObjectMatrix(s).forValue((h,g,R)=>{const S=i.Tools.deepClone(u==null?void 0:u.getValue(h,g))||{},f=l.getStyleByCell(S),p=l.getStyleByCell(R);S.s=ia(f,p),d.setValue(h,g,ma(S))}),{...e,options:{},cellValue:d.getMatrix()}},H={id:"sheet.mutation.set-range-values",type:i.CommandType.MUTATION,handler:(o,e)=>{const{cellValue:t,subUnitId:n,unitId:s}=e,a=o.get(i.IUniverInstanceService).getUnit(s);if(!a)return!1;const c=a.getSheetBySheetId(n);if(!c)return!1;const u=c.getCellMatrix(),l=a.getStyles();return new i.ObjectMatrix(t).forValue((m,h,g)=>{if(!g)u.realDeleteValue(m,h);else{let R=u.getValue(m,h)||{};R=ga(g,R,l),i.Tools.isEmptyObject(R)?u.realDeleteValue(m,h):u.setValue(m,h,R)}}),!0}},ha=new Set(["f","p","si","custom","ref"]);function ga(o,e,t){const n=ua(t,o,e);return Object.keys(o).forEach(s=>{const r=s;if(ha.has(r)){const a=o[r];Ra(e,r,a)}else r==="v"?o.v!==void 0&&(e.v=ns(n,o)):r==="s"&&ra(t,e,o)}),e.v!==void 0&&(e.t=n,e.v=ns(n,e)),e.v===null&&(delete e.t,delete e.v),e}function Ra(o,e,t){t===void 0||(t===null?delete o[e]:o[e]=t)}const Sa="sheet.command.append-row",Us={type:i.CommandType.COMMAND,id:Sa,handler:(o,e)=>{const t=o.get(i.ICommandService),n=o.get(i.IUndoRedoService),{unitId:s,subUnitId:r,cellValue:a,insertRowNums:c,insertColumnNums:u,maxRows:l,maxColumns:d}=e,m={unitId:s,subUnitId:r,cellValue:a},h=ue(o,m),g=[{id:H.id,params:m}],R=[{id:H.id,params:h}];if(c){const f={unitId:s,subUnitId:r,range:{startRow:l,endRow:l,startColumn:0,endColumn:d-1}},p=mn(o,f);g.unshift({id:Ie.id,params:f}),R.push({id:ve.id,params:p})}if(u){const f={unitId:s,subUnitId:r,range:{startRow:0,endRow:l-1,startColumn:d,endColumn:d-1+u}},p=At(o,f);g.unshift({id:Se.id,params:f}),R.push({id:ce.id,params:p})}return i.sequenceExecute(g,t).result?(n.pushUndoRedo({unitID:s,undoMutations:R,redoMutations:g}),!0):!1}},Ca=(o,e,t="")=>o.reduce((n,s)=>{const r=s&&s[e];return typeof r!="string"?(console.warn(s,`${e} is not string`),n):(r?(n[r]||(n[r]=[]),n[r].push(s)):n[t].push(s),n)},{}),fa=(o=0)=>{let e=o;return function(){return e++}};function pa(o){return o==null?!1:o.v!==void 0&&o.v!==null&&o.v!==""||o.p!==void 0}function Ia(o,e){for(let t=o.startRow;t<=o.endRow;t++)for(let n=o.startColumn;n<=o.endColumn;n++){const s=e.getCell(t,n);if(pa(s))return{startRow:t,startColumn:n,endRow:t,endColumn:n}}return null}function Bn(o){const e=new i.ObjectMatrix;return o.forEach(t=>{const{startRow:n,startColumn:s,endRow:r,endColumn:a}=t;for(let c=n;c<=r;c++)for(let u=s;u<=a;u++)e.setValue(c,u,null)}),e.clone()}function Ps(o){const e=new i.ObjectMatrix;return o.forEach(t=>{const{startRow:n,startColumn:s,endRow:r,endColumn:a}=t;for(let c=n;c<=r;c++)for(let u=s;u<=a;u++)e.setValue(c,u,{v:null,p:null,f:null,si:null,custom:null})}),e.clone()}function va(o){const e=new i.ObjectMatrix;return o.forEach(t=>{const{startRow:n,startColumn:s,endRow:r,endColumn:a}=t;for(let c=n;c<=r;c++)for(let u=s;u<=a;u++)e.setValue(c,u,{s:null})}),e.clone()}function ks(o,e,t,n){const s=e.get(i.IUniverInstanceService),r=t?s.getUnit(t,i.UniverInstanceType.UNIVER_SHEET):s.getCurrentUnitForType(i.UniverInstanceType.UNIVER_SHEET),a=n?r==null?void 0:r.getSheetBySheetId(n):r==null?void 0:r.getActiveSheet();if(!a)return null;const{startRow:c,endRow:u,startColumn:l,endColumn:d}=o,m=[],h=[];for(let g=c;g<=u;g++)a.getRowFiltered(g)||m.push(g);for(let g=l;g<=d;g++)h.push(g);return{rows:m,cols:h}}function xt(o,e,t,n){const s=[],r=[];for(const h of o){const g=ks(h,e,t,n);g&&(s.push(...g.rows),r.push(...g.cols))}const a=Array.from(new Set(s)).sort((h,g)=>h-g),c=Array.from(new Set(r)).sort((h,g)=>h-g),u=[];function l(h){const g=[];let R=h[0];for(let S=1;S<h.length;S++)h[S]!==h[S-1]+1&&(g.push([R,h[S-1]]),R=h[S]);return g.push([R,h[h.length-1]]),g}const d=l(a),m=l(c);for(const[h,g]of d)for(const[R,S]of m)u.push({startRow:h,endRow:g,startColumn:R,endColumn:S});return u}var ee=(o=>(o[o.MOVE_START=0]="MOVE_START",o[o.MOVING=1]="MOVING",o[o.MOVE_END=2]="MOVE_END",o[o.ONLY_SET=3]="ONLY_SET",o))(ee||{});class Os extends i.Disposable{constructor(t){super();C(this,"_worksheetSelections",new Map);C(this,"_selectionMoveStart$",new x.Subject);C(this,"selectionMoveStart$",this._selectionMoveStart$.asObservable());C(this,"_selectionMoving$",new x.Subject);C(this,"selectionMoving$",this._selectionMoving$.asObservable());C(this,"_selectionMoveEnd$",new x.BehaviorSubject([]));C(this,"selectionMoveEnd$",this._selectionMoveEnd$.asObservable());C(this,"_selectionSet$",new x.BehaviorSubject([]));C(this,"selectionSet$",this._selectionSet$.asObservable());C(this,"selectionChanged$");C(this,"_beforeSelectionMoveEnd$",new x.BehaviorSubject([]));C(this,"beforeSelectionMoveEnd$",this._beforeSelectionMoveEnd$.asObservable());this._workbook=t,this.selectionChanged$=x.merge(this._selectionMoveEnd$,this._selectionSet$)}dispose(){super.dispose(),this._beforeSelectionMoveEnd$.complete(),this._selectionMoveEnd$.complete(),this._selectionMoving$.complete(),this._selectionMoveStart$.complete(),this._selectionSet$.complete()}addSelections(t,n){const s=this.getSelectionsOfWorksheet(t);s.push(...n),this._selectionSet$.next(s)}setSelections(t,n=[],s){switch(this.setSelectionsOfWorksheet(t,n),s){case ee.MOVE_START:this._selectionMoveStart$.next(n);break;case ee.MOVING:this._selectionMoving$.next(n);break;case ee.MOVE_END:this._beforeSelectionMoveEnd$.next(n),this._selectionMoveEnd$.next(n);break;case ee.ONLY_SET:{this._selectionSet$.next(n);break}default:this._selectionSet$.next(n);break}}getCurrentSelections(){return this._getCurrentSelections()}getSelectionOfWorksheet(t){return this.getSelectionsOfWorksheet(t)}getSelectionsOfWorksheet(t){return this._worksheetSelections.has(t)||this._worksheetSelections.set(t,[]),this._worksheetSelections.get(t)}setSelectionsOfWorksheet(t,n){this._worksheetSelections.set(t,[...n])}deleteSheetSelection(t){this._worksheetSelections.set(t,[])}clear(){this._worksheetSelections.clear(),this._selectionSet$.next([])}_getCurrentSelections(){return this.getSelectionsOfWorksheet(this._workbook.getActiveSheet().getSheetId())}getCurrentLastSelection(){const t=this._getCurrentSelections();return t[t.length-1]}}var wa=Object.getOwnPropertyDescriptor,Ma=(o,e,t,n)=>{for(var s=n>1?void 0:n?wa(e,t):e,r=o.length-1,a;r>=0;r--)(a=o[r])&&(s=a(s)||s);return s},ya=(o,e)=>(t,n)=>e(t,n,o);exports.SheetsSelectionsService=class extends i.RxDisposable{constructor(t){super();C(this,"selectionMoveStart$");C(this,"selectionMoving$");C(this,"selectionMoveEnd$");C(this,"selectionSet$");C(this,"selectionChanged$");C(this,"_workbookSelections",new Map);this._instanceSrv=t,this._init()}get _currentSelectionPos(){const t=this._instanceSrv.getCurrentUnitForType(i.UniverInstanceType.UNIVER_SHEET);if(!t)return null;const n=t.getActiveSheet();return{unitId:t.getUnitId(),sheetId:n.getSheetId()}}get currentSelectionParam(){return this._currentSelectionPos}_init(){const t=this._instanceSrv.getCurrentTypeOfUnit$(i.UniverInstanceType.UNIVER_SHEET).pipe(x.shareReplay(1),x.takeUntil(this.dispose$));this.selectionMoveStart$=t.pipe(x.switchMap(n=>n?this._ensureWorkbookSelection(n.getUnitId()).selectionMoveStart$:x.of())),this.selectionMoving$=t.pipe(x.switchMap(n=>n?this._ensureWorkbookSelection(n.getUnitId()).selectionMoving$:x.of())),this.selectionMoveEnd$=t.pipe(x.switchMap(n=>n?this._ensureWorkbookSelection(n.getUnitId()).selectionMoveEnd$:x.of([]))),this.selectionSet$=t.pipe(x.switchMap(n=>n?this._ensureWorkbookSelection(n.getUnitId()).selectionSet$:x.of([]))),this.selectionChanged$=t.pipe(x.switchMap(n=>n?this._ensureWorkbookSelection(n.getUnitId()).selectionChanged$:x.of([]))).pipe(x.distinctUntilChanged((n,s)=>n.length!==s.length?!1:n.length===0&&s.length===0?!0:n.every((r,a)=>JSON.stringify(r)===JSON.stringify(s[a]))),x.skip(1)),this._instanceSrv.getTypeOfUnitDisposed$(i.UniverInstanceType.UNIVER_SHEET).pipe(x.takeUntil(this.dispose$)).subscribe(n=>{this._removeWorkbookSelection(n.getUnitId())})}clear(){this._workbookSelections.forEach(t=>t.clear())}getCurrentSelections(){return this._getCurrentSelections()}getCurrentLastSelection(){const t=this._getCurrentSelections();return t==null?void 0:t[t.length-1]}addSelections(t,n,s){if(typeof t=="string"){this._ensureWorkbookSelection(t).addSelections(n,s);return}const r=this._currentSelectionPos;if(!r)throw new Error("[SheetsSelectionsService]: cannot find current selection position!");const{unitId:a,sheetId:c}=r;this._ensureWorkbookSelection(a).addSelections(c,t)}setSelections(t,n,s,r){if(typeof t=="string"&&typeof n=="string"){const l=t;this._ensureWorkbookSelection(l).setSelections(n,s||[],r!=null?r:ee.ONLY_SET);return}const a=this._currentSelectionPos;if(!a)throw new Error("[SheetsSelectionsService]: cannot find current selection position!");const{unitId:c,sheetId:u}=a;if(typeof t=="object"){const l=t!=null?t:s,d=n!=null?n:ee.ONLY_SET;this._ensureWorkbookSelection(c).setSelections(u,l,d)}}clearCurrentSelections(){this._getCurrentSelections().splice(0)}isOverlapping(){const t=this.getCurrentSelections();return t==null?!1:t.some(({range:n},s)=>t.some(({range:r},a)=>s===a?!1:n.startRow<=r.endRow&&n.endRow>=r.startRow&&n.startColumn<=r.endColumn&&n.endColumn>=r.startColumn))}_getCurrentSelections(){const t=this._currentSelectionPos;if(!t)return[];const{unitId:n,sheetId:s}=t;return this._ensureWorkbookSelection(n).getSelectionsOfWorksheet(s)}getWorkbookSelections(t){return this._ensureWorkbookSelection(t)}_ensureWorkbookSelection(t){let n=this._workbookSelections.get(t);if(!n){const s=this._instanceSrv.getUnit(t);if(!s)throw new Error(`[SheetsSelectionsService]: cannot resolve unit with id "${t}"!`);n=new Os(s),this._workbookSelections.set(t,n)}return n}_removeWorkbookSelection(t){this._workbookSelections.delete(t)}};exports.SheetsSelectionsService=Ma([ya(0,i.IUniverInstanceService)],exports.SheetsSelectionsService);const _a="DISABLE_NORMAL_SELECTIONS",ba="SELECTIONS_ENABLED",Ns="REF_SELECTIONS_ENABLED",hn={id:"sheet.command.clear-selection-all",type:i.CommandType.COMMAND,handler:(o,e)=>{var I;const t=o.get(i.IUniverInstanceService),n=o.get(i.ICommandService),s=o.get(exports.SheetsSelectionsService),r=o.get(i.IUndoRedoService),a=o.get(exports.SheetInterceptorService),c=t.getCurrentUnitForType(i.UniverInstanceType.UNIVER_SHEET);if(!c)return!1;const u=(e==null?void 0:e.unitId)||c.getUnitId(),l=c.getActiveSheet();if(!l)return!1;const d=(e==null?void 0:e.subUnitId)||l.getSheetId(),m=(e==null?void 0:e.ranges)||((I=s.getCurrentSelections())==null?void 0:I.map(v=>v.range));if(!(m!=null&&m.length))return!1;const h=xt(m,o,u,d),g=[],R=[],S={subUnitId:d,unitId:u,cellValue:Bn(h)},f=ue(o,S);g.push({id:H.id,params:S}),R.push({id:H.id,params:f});const p=a.onCommandExecute({id:hn.id});return g.push(...p.redos),R.unshift(...p.undos),i.sequenceExecute(g,n)?(r.pushUndoRedo({unitID:u,undoMutations:R,redoMutations:g}),!0):!1}},gn={id:"sheet.command.clear-selection-content",type:i.CommandType.COMMAND,handler:(o,e)=>{var I;const t=o.get(i.IUniverInstanceService),n=o.get(i.ICommandService),s=o.get(exports.SheetsSelectionsService),r=o.get(i.IUndoRedoService),a=o.get(exports.SheetInterceptorService),c=t.getCurrentUnitForType(i.UniverInstanceType.UNIVER_SHEET);if(!c)return!1;const u=(e==null?void 0:e.unitId)||c.getUnitId(),l=c.getActiveSheet();if(!l)return!1;const d=(e==null?void 0:e.subUnitId)||l.getSheetId(),m=(e==null?void 0:e.ranges)||((I=s.getCurrentSelections())==null?void 0:I.map(v=>v.range));if(!(m!=null&&m.length))return!1;const h=xt(m,o,u,d),g={subUnitId:d,unitId:u,cellValue:Ps(h)},R=ue(o,g),S=a.onCommandExec