@univerjs/docs 0.2.11 → 0.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/index.js +3 -3
- package/lib/es/index.js +68 -67
- package/lib/types/basics/custom-range-factory.d.ts +2 -1
- package/lib/types/basics/custom-range.d.ts +9 -1
- package/lib/types/controllers/config.schema.d.ts +20 -0
- package/lib/types/doc-plugin.d.ts +5 -5
- package/lib/types/index.d.ts +3 -4
- package/lib/umd/index.js +3 -3
- package/package.json +7 -7
- package/lib/types/services/doc-custom-range.service.d.ts +0 -19
package/lib/cjs/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const core=require("@univerjs/core"),engineRender=require("@univerjs/engine-render"),rxjs=require("rxjs"),docs=require("@univerjs/docs");function isCustomRangeSplitSymbol(text){return text===core.DataStreamTreeTokenType.CUSTOM_RANGE_END||text===core.DataStreamTreeTokenType.CUSTOM_RANGE_START}__name(isCustomRangeSplitSymbol,"isCustomRangeSplitSymbol");function isIntersecting(line1Start,line1End,line2Start,line2End){return line1Start<=line2Start&&line1End>=line2Start||line1Start>=line2Start&&line1Start<=line2End}__name(isIntersecting,"isIntersecting");function shouldDeleteCustomRange(deleteStart,deleteLen,customRange,dataStream){const dataStreamSlice=dataStream.slice(customRange.startIndex+1,customRange.endIndex),start=Math.max(deleteStart-(customRange.startIndex+1),0),end=deleteStart+deleteLen-1-(customRange.startIndex+1);if(end<0)return!1;if(start===0&&end>=dataStreamSlice.length)return!0;const result=dataStreamSlice.slice(0,start)+dataStreamSlice.slice(start+deleteLen);for(let i=0,len=result.length;i<len;i++){const letter=result[i];if(!isCustomRangeSplitSymbol(letter))return!1}return!0}__name(shouldDeleteCustomRange,"shouldDeleteCustomRange");function getCustomRangesInterestsWithRange(range,customRanges){const result=[];for(let i=0,len=customRanges.length;i<len;i++){const customRange=customRanges[i];range.collapsed?customRange.startIndex<range.startOffset&&range.startOffset<=customRange.endIndex&&result.push(customRange):isIntersecting(range.startOffset,range.endOffset,customRange.startIndex,customRange.endIndex)&&result.push(customRange)}return result}__name(getCustomRangesInterestsWithRange,"getCustomRangesInterestsWithRange");const SetTextSelectionsOperation={id:"doc.operation.set-selections",type:core.CommandType.OPERATION,handler:__name((_,__)=>!0,"handler")};var __defProp$9=Object.defineProperty,__getOwnPropDesc$9=Object.getOwnPropertyDescriptor,__decorateClass$9=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$9(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$9(target,key,result),result},"__decorateClass$9"),__decorateParam$9=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$9");function serializeDocRange(textRange){const{startOffset,endOffset,collapsed,rangeType}=textRange,serializedTextRange={startOffset,endOffset,collapsed,rangeType};return typeof textRange.isActive=="function"&&(serializedTextRange.isActive=textRange.isActive()),serializedTextRange}__name(serializeDocRange,"serializeDocRange");var _a;exports.TextSelectionManagerService=(_a=class extends core.RxDisposable{constructor(_textSelectionRenderManager,_commandService){super();__publicField(this,"_currentSelection",null);__publicField(this,"_textSelectionInfo",new Map);__publicField(this,"_textSelection$",new rxjs.BehaviorSubject(null));__publicField(this,"textSelection$",this._textSelection$.asObservable());this._textSelectionRenderManager=_textSelectionRenderManager,this._commandService=_commandService,this._syncSelectionFromRenderService()}getCurrentSelection(){return this._currentSelection}getCurrentSelectionInfo(){return this._getTextRanges(this._currentSelection)}dispose(){this._textSelection$.complete()}refreshSelection(){this._currentSelection!=null&&this._refresh(this._currentSelection)}setCurrentSelection(param){this._currentSelection=param,this._refresh(param)}setCurrentSelectionNotRefresh(param){this._currentSelection=param}getCurrentTextRanges(){var _a11;return(_a11=this._getTextRanges(this._currentSelection))==null?void 0:_a11.textRanges}getCurrentRectRanges(){var _a11;return(_a11=this._getTextRanges(this._currentSelection))==null?void 0:_a11.rectRanges}getDocRanges(){var _a11,_b;const textRanges=(_a11=this.getCurrentTextRanges())!=null?_a11:[],rectRanges=(_b=this.getCurrentRectRanges())!=null?_b:[];return[...textRanges,...rectRanges].filter(range=>range.startOffset!=null&&range.endOffset!=null).sort((a,b)=>a.startOffset>b.startOffset?1:a.startOffset<b.startOffset?-1:0)}getActiveTextRange(){const selectionInfo=this._getTextRanges(this._currentSelection);if(selectionInfo==null)return;const{textRanges}=selectionInfo;return textRanges.find(textRange=>textRange.isActive())}getActiveRectRange(){const selectionInfo=this._getTextRanges(this._currentSelection);if(selectionInfo==null)return;const{rectRanges}=selectionInfo;return rectRanges.find(rectRange=>rectRange.isActive())}getActiveTextRangeWithStyle(){const selectionInfo=this._getTextRanges(this._currentSelection);if(selectionInfo==null)return;const{textRanges,segmentId,style,segmentPage}=selectionInfo,activeTextRange=textRanges.find(textRange=>textRange.isActive());if(activeTextRange==null)return null;const{startOffset,endOffset,collapsed,startNodePosition,endNodePosition,direction}=activeTextRange;return startOffset==null||endOffset==null?null:{startOffset,endOffset,collapsed,startNodePosition,endNodePosition,direction,segmentId,segmentPage,style}}add(textRanges,isEditing=!0){this._currentSelection!=null&&this._addByParam({...this._currentSelection,textRanges,rectRanges:[],segmentId:"",segmentPage:-1,isEditing,style:engineRender.NORMAL_TEXT_SELECTION_PLUGIN_STYLE})}replaceTextRanges(docRanges,isEditing=!0,options){this._currentSelection!=null&&(this._textSelectionRenderManager.removeAllRanges(),this._textSelectionRenderManager.addDocRanges(docRanges,isEditing,options))}_syncSelectionFromRenderService(){this._textSelectionRenderManager.textSelectionInner$.pipe(rxjs.takeUntil(this.dispose$)).subscribe(params=>{params!=null&&this._replaceTextRangesWithNoRefresh(params)})}_replaceTextRangesWithNoRefresh(textSelectionInfo){if(this._currentSelection==null)return;const params={...this._currentSelection,...textSelectionInfo};this._replaceByParam(params),this._textSelection$.next(params);const{unitId,subUnitId,segmentId,style,textRanges,rectRanges,isEditing}=params,ranges=[...textRanges,...rectRanges].filter(range=>range.startOffset!=null&&range.endOffset!=null).sort((a,b)=>a.startOffset>b.startOffset?1:a.startOffset<b.startOffset?-1:0).map(serializeDocRange);this._commandService.executeCommand(SetTextSelectionsOperation.id,{unitId,subUnitId,segmentId,style,isEditing,ranges})}_getTextRanges(param){var _a11;if(param==null)return;const{unitId,subUnitId=""}=param;return(_a11=this._textSelectionInfo.get(unitId))==null?void 0:_a11.get(subUnitId)}_refresh(param){const allTextSelectionInfo=this._getTextRanges(param);if(this._textSelectionRenderManager.removeAllRanges(),allTextSelectionInfo==null)return;const{textRanges,rectRanges}=allTextSelectionInfo,docRanges=[...textRanges,...rectRanges];docRanges.length>0&&this._textSelectionRenderManager.addDocRanges(docRanges.map(serializeDocRange),!1)}_replaceByParam(insertParam){const{unitId,subUnitId,style,segmentId,textRanges,rectRanges,isEditing,segmentPage}=insertParam;this._textSelectionInfo.has(unitId)||this._textSelectionInfo.set(unitId,new Map),this._textSelectionInfo.get(unitId).set(subUnitId,{textRanges,rectRanges,style,segmentId,isEditing,segmentPage})}_addByParam(insertParam){const{unitId,subUnitId,textRanges,rectRanges,style,segmentId,isEditing,segmentPage}=insertParam;this._textSelectionInfo.has(unitId)||this._textSelectionInfo.set(unitId,new Map);const unitTextRange=this._textSelectionInfo.get(unitId);unitTextRange.has(subUnitId)?unitTextRange.get(subUnitId).textRanges.push(...textRanges):unitTextRange.set(subUnitId,{textRanges,rectRanges,style,segmentId,isEditing,segmentPage})}},__name(_a,"TextSelectionManagerService"),_a);exports.TextSelectionManagerService=__decorateClass$9([__decorateParam$9(0,engineRender.ITextSelectionRenderManager),__decorateParam$9(1,core.ICommandService)],exports.TextSelectionManagerService);var __defProp$8=Object.defineProperty,__getOwnPropDesc$8=Object.getOwnPropertyDescriptor,__decorateClass$8=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$8(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$8(target,key,result),result},"__decorateClass$8"),__decorateParam$8=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$8");const DEBOUNCE_DELAY=300;var _a2;exports.DocStateChangeManagerService=(_a2=class extends core.RxDisposable{constructor(_undoRedoService,_commandService,_univerInstanceService){super();__publicField(this,"_docStateChange$",new rxjs.BehaviorSubject(null));__publicField(this,"docStateChange$",this._docStateChange$.asObservable());__publicField(this,"_historyStateCache",new Map);__publicField(this,"_changeStateCache",new Map);__publicField(this,"_historyTimer",null);__publicField(this,"_changeStateCacheTimer",null);this._undoRedoService=_undoRedoService,this._commandService=_commandService,this._univerInstanceService=_univerInstanceService,this._initialize()}setChangeState(changeState){this._cacheChangeState(changeState,"history"),this._cacheChangeState(changeState,"collaboration")}_initialize(){this.disposeWithMe(this._commandService.beforeCommandExecuted(command=>{if(command.id===core.UndoCommandId||command.id===core.RedoCommandId){const univerDoc=this._univerInstanceService.getCurrentUniverDocInstance();if(univerDoc==null)return;const unitId=univerDoc.getUnitId();this._pushHistory(unitId),this._emitChangeState(unitId)}}))}_cacheChangeState(changeState,type="history"){const{trigger,unitId,noHistory,debounce=!1}=changeState;if(noHistory||trigger==null||type==="history"&&(trigger===core.RedoCommandId||trigger===core.UndoCommandId))return;const stateCache=type==="history"?this._historyStateCache:this._changeStateCache,cb=type==="history"?this._pushHistory.bind(this):this._emitChangeState.bind(this);if(stateCache.has(unitId)){const cacheStates=stateCache.get(unitId);cacheStates==null||cacheStates.push(changeState)}else stateCache.set(unitId,[changeState]);debounce?type==="history"?(this._historyTimer&&clearTimeout(this._historyTimer),this._historyTimer=setTimeout(()=>{cb(unitId)},DEBOUNCE_DELAY)):(this._changeStateCacheTimer&&clearTimeout(this._changeStateCacheTimer),this._changeStateCacheTimer=setTimeout(()=>{cb(unitId)},DEBOUNCE_DELAY)):cb(unitId)}_pushHistory(unitId){const undoRedoService=this._undoRedoService,cacheStates=this._historyStateCache.get(unitId);if(!Array.isArray(cacheStates)||cacheStates.length===0)return;const len=cacheStates.length,commandId=cacheStates[0].commandId,firstState=cacheStates[0],lastState=cacheStates[len-1],redoParams={unitId,actions:cacheStates.reduce((acc,cur)=>core.JSONX.compose(acc,cur.redoState.actions),null),textRanges:lastState.redoState.textRanges},undoParams={unitId,actions:cacheStates.reverse().reduce((acc,cur)=>core.JSONX.compose(acc,cur.undoState.actions),null),textRanges:firstState.undoState.textRanges};undoRedoService.pushUndoRedo({unitID:unitId,undoMutations:[{id:commandId,params:undoParams}],redoMutations:[{id:commandId,params:redoParams}]}),cacheStates.length=0}_emitChangeState(unitId){const cacheStates=this._changeStateCache.get(unitId);if(!Array.isArray(cacheStates)||cacheStates.length===0)return;const len=cacheStates.length,{commandId,trigger,segmentId,noHistory,debounce}=cacheStates[0],firstState=cacheStates[0],lastState=cacheStates[len-1],redoState={unitId,actions:cacheStates.reduce((acc,cur)=>core.JSONX.compose(acc,cur.redoState.actions),null),textRanges:lastState.redoState.textRanges},undoState={unitId,actions:cacheStates.reverse().reduce((acc,cur)=>core.JSONX.compose(acc,cur.undoState.actions),null),textRanges:firstState.undoState.textRanges},changeState={commandId,unitId,trigger,redoState,undoState,segmentId,noHistory,debounce};cacheStates.length=0,this._docStateChange$.next(changeState)}},__name(_a2,"DocStateChangeManagerService"),_a2);exports.DocStateChangeManagerService=__decorateClass$8([__decorateParam$8(0,core.Inject(core.IUndoRedoService)),__decorateParam$8(1,core.ICommandService),__decorateParam$8(2,core.IUniverInstanceService)],exports.DocStateChangeManagerService);const _IMEInputManagerService=class _IMEInputManagerService{constructor(){__publicField(this,"_previousActiveRange",null);__publicField(this,"_undoMutationParamsCache",[]);__publicField(this,"_redoMutationParamsCache",[])}clearUndoRedoMutationParamsCache(){this._undoMutationParamsCache=[],this._redoMutationParamsCache=[]}getUndoRedoMutationParamsCache(){return{undoCache:this._undoMutationParamsCache,redoCache:this._redoMutationParamsCache}}setUndoRedoMutationParamsCache({undoCache=[],redoCache=[]}){this._undoMutationParamsCache=undoCache,this._redoMutationParamsCache=redoCache}getActiveRange(){return this._previousActiveRange}setActiveRange(range){this._previousActiveRange=range}pushUndoRedoMutationParams(undoParams,redoParams){this._undoMutationParamsCache.push(undoParams),this._redoMutationParamsCache.push(redoParams)}fetchComposedUndoRedoMutationParams(){if(this._undoMutationParamsCache.length===0||this._previousActiveRange==null||this._redoMutationParamsCache.length===0)return null;const{unitId}=this._undoMutationParamsCache[0],undoMutationParams={unitId,actions:this._undoMutationParamsCache.reverse().reduce((acc,cur)=>core.JSONX.compose(acc,cur.actions),null),textRanges:[]};return{redoMutationParams:{unitId,actions:this._redoMutationParamsCache.reduce((acc,cur)=>core.JSONX.compose(acc,cur.actions),null),textRanges:[]},undoMutationParams,previousActiveRange:this._previousActiveRange}}dispose(){this._undoMutationParamsCache=[],this._redoMutationParamsCache=[],this._previousActiveRange=null}};__name(_IMEInputManagerService,"IMEInputManagerService");let IMEInputManagerService=_IMEInputManagerService;var __defProp$7=Object.defineProperty,__getOwnPropDesc$7=Object.getOwnPropertyDescriptor,__decorateClass$7=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$7(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$7(target,key,result),result},"__decorateClass$7"),__decorateParam$7=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$7"),_a3;exports.DocSkeletonManagerService=(_a3=class extends core.RxDisposable{constructor(_context,_localeService,_univerInstanceService){super();__publicField(this,"_skeleton");__publicField(this,"_docViewModel");__publicField(this,"_currentSkeleton$",new rxjs.BehaviorSubject(null));__publicField(this,"currentSkeleton$",this._currentSkeleton$.asObservable());__publicField(this,"_currentSkeletonBefore$",new rxjs.BehaviorSubject(null));__publicField(this,"currentSkeletonBefore$",this._currentSkeletonBefore$.asObservable());__publicField(this,"_currentViewModel$",new rxjs.BehaviorSubject(null));__publicField(this,"currentViewModel$",this._currentViewModel$.asObservable());this._context=_context,this._localeService=_localeService,this._univerInstanceService=_univerInstanceService,this._init(),this._univerInstanceService.getCurrentTypeOfUnit$(core.UniverInstanceType.UNIVER_DOC).pipe(rxjs.takeUntil(this.dispose$)).subscribe(documentModel=>{documentModel&&documentModel.getUnitId()===this._context.unitId&&this._update(documentModel)})}dispose(){super.dispose(),this._currentSkeletonBefore$.complete(),this._currentSkeleton$.complete()}getSkeleton(){return this._skeleton}getViewModel(){return this._docViewModel}_init(){const documentDataModel=this._context.unit;this._update(documentDataModel)}_update(documentDataModel){const unitId=this._context.unitId;if(documentDataModel.getBody()==null)return;this._docViewModel&&core.isInternalEditorID(unitId)?(this._docViewModel.reset(documentDataModel),this._context.unit=documentDataModel):this._docViewModel||(this._docViewModel=this._buildDocViewModel(documentDataModel)),this._skeleton||(this._skeleton=this._buildSkeleton(this._docViewModel));const skeleton=this._skeleton;skeleton.calculate(),this._currentSkeletonBefore$.next(skeleton),this._currentSkeleton$.next(skeleton),this._currentViewModel$.next(this._docViewModel)}_buildSkeleton(documentViewModel){return engineRender.DocumentSkeleton.create(documentViewModel,this._localeService)}_buildDocViewModel(documentDataModel){return new engineRender.DocumentViewModel(documentDataModel)}},__name(_a3,"DocSkeletonManagerService"),_a3);exports.DocSkeletonManagerService=__decorateClass$7([__decorateParam$7(1,core.Inject(core.LocaleService)),__decorateParam$7(2,core.IUniverInstanceService)],exports.DocSkeletonManagerService);const RichTextEditingMutationId="doc.mutation.rich-text-editing",RichTextEditingMutation={id:RichTextEditingMutationId,type:core.CommandType.MUTATION,handler:__name((accessor,params)=>{var _a11,_b;const{unitId,segmentId="",actions,textRanges,prevTextRanges,trigger,noHistory,isCompositionEnd,noNeedSetTextRange,debounce}=params,univerInstanceService=accessor.get(core.IUniverInstanceService),renderManagerService=accessor.get(engineRender.IRenderManagerService),documentDataModel=univerInstanceService.getUniverDocInstance(unitId),documentViewModel=(_a11=renderManagerService.getRenderById(unitId))==null?void 0:_a11.with(exports.DocSkeletonManagerService).getViewModel();if(documentDataModel==null||documentViewModel==null)throw new Error(`DocumentDataModel or documentViewModel not found for unitId: ${unitId}`);const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),serializedSelections=((_b=textSelectionManagerService.getDocRanges())!=null?_b:[]).map(serializeDocRange),docStateChangeManagerService=accessor.get(exports.DocStateChangeManagerService),imeInputManagerService=accessor.get(IMEInputManagerService),disabled=!!documentDataModel.getSnapshot().disabled;if(core.JSONX.isNoop(actions)||actions&&actions.length===0||disabled)return{unitId,actions:[],textRanges:serializedSelections};const undoActions=core.JSONX.invertWithDoc(actions,documentDataModel.getSnapshot());documentDataModel.apply(actions),documentViewModel.reset(documentDataModel),!noNeedSetTextRange&&textRanges&&trigger!=null&&queueMicrotask(()=>{textSelectionManagerService.replaceTextRanges(textRanges,!0,params.options)});const changeState={commandId:RichTextEditingMutationId,unitId,segmentId,trigger,noHistory,debounce,redoState:{actions,textRanges},undoState:{actions:undoActions,textRanges:prevTextRanges!=null?prevTextRanges:serializedSelections}};if(isCompositionEnd){const historyParams=imeInputManagerService.fetchComposedUndoRedoMutationParams();if(historyParams==null)throw new Error("historyParams is null in RichTextEditingMutation");const{undoMutationParams,redoMutationParams,previousActiveRange}=historyParams;changeState.redoState.actions=redoMutationParams.actions,changeState.undoState.actions=undoMutationParams.actions,changeState.undoState.textRanges=[previousActiveRange]}return docStateChangeManagerService.setChangeState(changeState),{unitId,actions:undoActions,textRanges:serializedSelections}},"handler")};function getCommandSkeleton(accessor,unitId){var _a11;return(_a11=accessor.get(engineRender.IRenderManagerService).getRenderById(unitId))==null?void 0:_a11.with(exports.DocSkeletonManagerService)}__name(getCommandSkeleton,"getCommandSkeleton");function getRichTextEditPath(docDataModel,segmentId=""){if(!segmentId)return["body"];const{headers,footers}=docDataModel.getSnapshot();if(headers==null&&footers==null)throw new Error("Document data model must have headers or footers when update by segment id");if((headers==null?void 0:headers[segmentId])!=null)return["headers",segmentId,"body"];if((footers==null?void 0:footers[segmentId])!=null)return["footers",segmentId,"body"];throw new Error("Segment id not found in headers or footers")}__name(getRichTextEditPath,"getRichTextEditPath");function hasParagraphInTable(paragraph,tables){return tables.some(table=>paragraph.startIndex>table.startIndex&¶graph.startIndex<table.endIndex)}__name(hasParagraphInTable,"hasParagraphInTable");const ListOperationCommand={id:"doc.command.list-operation",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{var _a11,_b,_c,_d,_e,_f;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService);let listType=params.listType;const docDataModel=univerInstanceService.getCurrentUniverDocInstance(),docRanges=(_a11=textSelectionManagerService.getDocRanges())!=null?_a11:[];if(docDataModel==null||docRanges.length===0)return!1;const segmentId=docRanges[0].segmentId,paragraphs=(_b=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_b.paragraphs,serializedSelections=docRanges.map(serializeDocRange);if(paragraphs==null)return!1;const sectionBreaks=(_d=(_c=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_c.sectionBreaks)!=null?_d:[],currentParagraphs=getParagraphsInRanges(docRanges,paragraphs),unitId=docDataModel.getUnitId(),isAlreadyList=currentParagraphs.every(paragraph=>{var _a12;return((_a12=paragraph.bullet)==null?void 0:_a12.listType.indexOf(listType))===0});let listId=core.Tools.generateRandomId(6);if(currentParagraphs.length===1){const curIndex=paragraphs.indexOf(currentParagraphs[0]),prevParagraph=paragraphs[curIndex-1],nextParagraph=paragraphs[curIndex+1];prevParagraph&&prevParagraph.bullet&&prevParagraph.bullet.listType.indexOf(listType)===0?(listId=prevParagraph.bullet.listId,listType!==core.PresetListType.CHECK_LIST&&(listType=prevParagraph.bullet.listType)):nextParagraph&&nextParagraph.bullet&&nextParagraph.bullet.listType.indexOf(listType)===0&&(listId=nextParagraph.bullet.listId,listType!==core.PresetListType.CHECK_LIST&&(listType=nextParagraph.bullet.listType))}const doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:serializedSelections}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance(),customLists=(_e=docDataModel.getSnapshot().lists)!=null?_e:{},lists={...core.PRESET_LIST_TYPE,...customLists},{defaultTabStop=36}=docDataModel.getSnapshot().documentStyle;for(const paragraph of currentParagraphs){const{startIndex,paragraphStyle={},bullet}=paragraph,{indentFirstLine,snapToGrid,indentStart}=paragraphStyle,paragraphProperties=lists[listType].nestingLevel[0].paragraphProperties||{},{hanging:listHanging,indentStart:listIndentStart}=paragraphProperties,{charSpace,gridType}=findNearestSectionBreak(startIndex,sectionBreaks)||{charSpace:0,gridType:core.GridType.LINES},charSpaceApply=engineRender.getCharSpaceApply(charSpace,defaultTabStop,gridType,snapToGrid);textX.push({t:core.TextXActionType.RETAIN,len:startIndex-memoryCursor.cursor,segmentId}),textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[isAlreadyList?{paragraphStyle:{...paragraphStyle,hanging:void 0,indentStart:indentStart?{v:Math.max(0,engineRender.getNumberUnitValue(indentStart,charSpaceApply)+engineRender.getNumberUnitValue(listHanging,charSpaceApply)-engineRender.getNumberUnitValue(listIndentStart,charSpaceApply))}:void 0},startIndex:0}:{startIndex:0,paragraphStyle:{...paragraphStyle,indentFirstLine:void 0,hanging:listHanging,indentStart:{v:engineRender.getNumberUnitValue(listIndentStart,charSpaceApply)-engineRender.getNumberUnitValue(listHanging,charSpaceApply)+engineRender.getNumberUnitValue(indentFirstLine,charSpaceApply)+engineRender.getNumberUnitValue(indentStart,charSpaceApply)}},bullet:{nestingLevel:(_f=bullet==null?void 0:bullet.nestingLevel)!=null?_f:0,textStyle:{fs:20},listType,listId}}]},segmentId,coverType:core.UpdateDocsAttributeType.REPLACE}),memoryCursor.moveCursorTo(startIndex+1)}const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},ChangeListTypeCommand={id:"doc.command.change-list-type",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{var _a11,_b,_c,_d,_e,_f;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),{listType}=params,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),activeRanges=textSelectionManagerService.getDocRanges();if(docDataModel==null||activeRanges==null||!activeRanges.length)return!1;const{segmentId}=activeRanges[0],selections=(_a11=textSelectionManagerService.getDocRanges())!=null?_a11:[],paragraphs=(_b=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_b.paragraphs,serializedSelections=selections.map(serializeDocRange);if(paragraphs==null)return!1;const sectionBreaks=(_d=(_c=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_c.sectionBreaks)!=null?_d:[],currentParagraphs=getParagraphsRelative(activeRanges,paragraphs),unitId=docDataModel.getUnitId(),listId=core.Tools.generateRandomId(6),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:serializedSelections}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance(),customLists=(_e=docDataModel.getSnapshot().lists)!=null?_e:{},lists={...core.PRESET_LIST_TYPE,...customLists},{defaultTabStop=36}=docDataModel.getSnapshot().documentStyle;for(const paragraph of currentParagraphs){const{startIndex,paragraphStyle={},bullet}=paragraph,{indentFirstLine,snapToGrid,indentStart}=paragraphStyle,paragraphProperties=lists[listType].nestingLevel[0].paragraphProperties||{},{hanging:listHanging,indentStart:listIndentStart}=paragraphProperties,{charSpace,gridType}=findNearestSectionBreak(startIndex,sectionBreaks)||{charSpace:0,gridType:core.GridType.LINES},charSpaceApply=engineRender.getCharSpaceApply(charSpace,defaultTabStop,gridType,snapToGrid);textX.push({t:core.TextXActionType.RETAIN,len:startIndex-memoryCursor.cursor,segmentId}),textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[{startIndex:0,paragraphStyle:{...paragraphStyle,indentFirstLine:void 0,hanging:listHanging,indentStart:{v:engineRender.getNumberUnitValue(listIndentStart,charSpaceApply)-engineRender.getNumberUnitValue(listHanging,charSpaceApply)+engineRender.getNumberUnitValue(indentFirstLine,charSpaceApply)+engineRender.getNumberUnitValue(indentStart,charSpaceApply)}},bullet:{nestingLevel:(_f=bullet==null?void 0:bullet.nestingLevel)!=null?_f:0,textStyle:(bullet==null?void 0:bullet.listType)===listType?bullet.textStyle:{fs:20},listType,listId}}]},segmentId,coverType:core.UpdateDocsAttributeType.REPLACE}),memoryCursor.moveCursorTo(startIndex+1)}const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")};var ChangeListNestingLevelType=(ChangeListNestingLevelType2=>(ChangeListNestingLevelType2[ChangeListNestingLevelType2.increase=1]="increase",ChangeListNestingLevelType2[ChangeListNestingLevelType2.decrease=-1]="decrease",ChangeListNestingLevelType2))(ChangeListNestingLevelType||{});const ChangeListNestingLevelCommand={id:"doc.command.change-list-nesting-level",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{var _a11,_b,_c,_d,_e;if(!params)return!1;const{type}=params,textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),docDataModel=univerInstanceService.getCurrentUniverDocInstance(),activeRange=textSelectionManagerService.getActiveTextRangeWithStyle();if(docDataModel==null||activeRange==null)return!1;const{segmentId}=activeRange,tables=(_b=(_a11=docDataModel.getBody())==null?void 0:_a11.tables)!=null?_b:[],selections=(_c=textSelectionManagerService.getDocRanges())!=null?_c:[],paragraphs=(_d=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_d.paragraphs,serializedSelections=selections.map(serializeDocRange);if(paragraphs==null)return!1;const currentParagraphs=getParagraphsInRange$1(activeRange,paragraphs),unitId=docDataModel.getUnitId(),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:serializedSelections}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance(),customLists=(_e=docDataModel.getSnapshot().lists)!=null?_e:{},lists={...core.PRESET_LIST_TYPE,...customLists};for(const paragraph of currentParagraphs){const{startIndex,paragraphStyle={},bullet}=paragraph,isInTable=hasParagraphInTable(paragraph,tables);if(textX.push({t:core.TextXActionType.RETAIN,len:startIndex-memoryCursor.cursor,segmentId}),bullet){const listType=bullet.listType;let maxLevel=lists[listType].nestingLevel.length-1;isInTable&&(maxLevel=Math.min(maxLevel,2)),textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[{startIndex:0,paragraphStyle:{...paragraphStyle},bullet:{...bullet,nestingLevel:Math.max(Math.min(bullet.nestingLevel+type,maxLevel),0)}}]},segmentId,coverType:core.UpdateDocsAttributeType.REPLACE})}else textX.push({t:core.TextXActionType.RETAIN,len:1});memoryCursor.moveCursorTo(startIndex+1)}const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},BulletListCommand={id:"doc.command.bullet-list",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{const commandService=accessor.get(core.ICommandService);return params!=null&¶ms.value?commandService.syncExecuteCommand(ChangeListTypeCommand.id,{listType:params.value}):commandService.syncExecuteCommand(ListOperationCommand.id,{listType:core.PresetListType.BULLET_LIST})},"handler")},CheckListCommand={id:"doc.command.check-list",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{const commandService=accessor.get(core.ICommandService);return params!=null&¶ms.value?commandService.syncExecuteCommand(ChangeListTypeCommand.id,{listType:params.value}):commandService.syncExecuteCommand(ListOperationCommand.id,{listType:core.PresetListType.CHECK_LIST})},"handler")},ToggleCheckListCommand={id:"doc.command.toggle-check-list",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{var _a11;if(!params)return!1;const univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),{index,segmentId}=params,docDataModel=univerInstanceService.getCurrentUniverDocInstance();if(docDataModel==null)return!1;const paragraphs=(_a11=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_a11.paragraphs;if(paragraphs==null)return!1;const currentParagraph=paragraphs.find(p=>p.startIndex===index),unitId=docDataModel.getUnitId();if(!(currentParagraph!=null&¤tParagraph.bullet)||currentParagraph.bullet.listType.indexOf(core.PresetListType.CHECK_LIST)===-1)return!1;const doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:[],segmentId}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance(),{startIndex,paragraphStyle={}}=currentParagraph,listType=currentParagraph.bullet.listType===core.PresetListType.CHECK_LIST?core.PresetListType.CHECK_LIST_CHECKED:core.PresetListType.CHECK_LIST;textX.push({t:core.TextXActionType.RETAIN,len:startIndex-memoryCursor.cursor,segmentId}),textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[{...currentParagraph,paragraphStyle,startIndex:0,bullet:{...currentParagraph.bullet,listType}}]},coverType:core.UpdateDocsAttributeType.REPLACE,segmentId}),memoryCursor.moveCursorTo(startIndex+1);const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},OrderListCommand={id:"doc.command.order-list",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{const commandService=accessor.get(core.ICommandService);return params!=null&¶ms.value?commandService.syncExecuteCommand(ChangeListTypeCommand.id,{listType:params.value}):commandService.syncExecuteCommand(ListOperationCommand.id,{listType:core.PresetListType.ORDER_LIST})},"handler")},QuickListCommand={id:"doc.command.quick-list",type:core.CommandType.COMMAND,handler(accessor,params){var _a11,_b,_c,_d,_e;if(!params)return!1;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),docDataModel=univerInstanceService.getCurrentUniverDocInstance(),activeRange=textSelectionManagerService.getActiveTextRange();if(docDataModel==null||activeRange==null)return!1;const{segmentId}=activeRange,{listType,paragraph}=params,{paragraphStart,paragraphEnd}=paragraph,textX=new core.TextX,jsonX=core.JSONX.getInstance(),{defaultTabStop=36}=docDataModel.getSnapshot().documentStyle,sectionBreaks=(_b=(_a11=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_a11.sectionBreaks)!=null?_b:[],{startIndex,paragraphStyle={}}=paragraph,{indentFirstLine,snapToGrid,indentStart}=paragraphStyle,paragraphProperties=core.PRESET_LIST_TYPE[listType].nestingLevel[0].paragraphProperties||{},{hanging:listHanging,indentStart:listIndentStart}=paragraphProperties,bulletParagraphTextStyle=paragraphProperties.textStyle,{charSpace,gridType}=findNearestSectionBreak(startIndex,sectionBreaks)||{charSpace:0,gridType:core.GridType.LINES},charSpaceApply=engineRender.getCharSpaceApply(charSpace,defaultTabStop,gridType,snapToGrid);let listId=core.Tools.generateRandomId(6);const paragraphs=(_d=(_c=docDataModel.getBody())==null?void 0:_c.paragraphs)!=null?_d:[],curIndex=paragraphs.findIndex(i=>i.startIndex===paragraph.startIndex),prevParagraph=paragraphs[curIndex-1],nextParagraph=paragraphs[curIndex+1];prevParagraph&&prevParagraph.bullet&&prevParagraph.bullet.listType.indexOf(listType)===0?listId=prevParagraph.bullet.listId:nextParagraph&&nextParagraph.bullet&&nextParagraph.bullet.listType.indexOf(listType)===0&&(listId=nextParagraph.bullet.listId);const doMutation={id:RichTextEditingMutation.id,params:{unitId:docDataModel.getUnitId(),actions:[],textRanges:[{startOffset:paragraphStart,endOffset:paragraphStart,collapsed:!0}]}};textX.push({t:core.TextXActionType.RETAIN,len:paragraphStart}),textX.push({t:core.TextXActionType.DELETE,len:paragraphEnd-paragraphStart,line:1}),textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[{startIndex:0,paragraphStyle:{...paragraphStyle,textStyle:{...paragraphStyle.textStyle,...bulletParagraphTextStyle},indentFirstLine:void 0,hanging:listHanging,indentStart:{v:engineRender.getNumberUnitValue(listIndentStart,charSpaceApply)-engineRender.getNumberUnitValue(listHanging,charSpaceApply)+engineRender.getNumberUnitValue(indentFirstLine,charSpaceApply)+engineRender.getNumberUnitValue(indentStart,charSpaceApply)}},bullet:{...(_e=paragraph.bullet)!=null?_e:{nestingLevel:0,textStyle:{fs:20}},listType,listId}}]}});const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)}};function getParagraphsInRange$1(activeRange,paragraphs){const{startOffset,endOffset}=activeRange,results=[];let start=-1;for(const paragraph of paragraphs){const{startIndex}=paragraph;(startOffset>start&&startOffset<=startIndex||endOffset>start&&endOffset<=startIndex||startIndex>=startOffset&&startIndex<=endOffset)&&results.push(paragraph),start=startIndex}return results}__name(getParagraphsInRange$1,"getParagraphsInRange$1");function getParagraphsRelative(ranges,paragraphs){const selectionParagraphs=getParagraphsInRanges(ranges,paragraphs),startIndex=paragraphs.indexOf(selectionParagraphs[0]),endIndex=paragraphs.indexOf(selectionParagraphs[selectionParagraphs.length-1]);if(selectionParagraphs[0].bullet)for(let i=startIndex-1;i>=0;i--){const prevParagraph=paragraphs[i];prevParagraph.bullet&&prevParagraph.bullet.listId===selectionParagraphs[0].bullet.listId&&selectionParagraphs.unshift(prevParagraph)}const lastParagraph=selectionParagraphs[selectionParagraphs.length-1];if(lastParagraph.bullet)for(let i=endIndex+1;i<paragraphs.length;i++){const nextParagraph=paragraphs[i];nextParagraph.bullet&&nextParagraph.bullet.listId===lastParagraph.bullet.listId&&selectionParagraphs.push(nextParagraph)}return selectionParagraphs}__name(getParagraphsRelative,"getParagraphsRelative");function getParagraphsInRanges(ranges,paragraphs){const results=[];for(const range of ranges){const ps=getParagraphsInRange$1(range,paragraphs);results.push(...ps)}return results}__name(getParagraphsInRanges,"getParagraphsInRanges");function findNearestSectionBreak(currentIndex,sectionBreaks){const sortedSectionBreaks=sectionBreaks.sort(core.sortRulesFactory("startIndex"));for(let i=0;i<sortedSectionBreaks.length;i++){const sectionBreak=sectionBreaks[i];if(sectionBreak.startIndex>=currentIndex)return sectionBreak}}__name(findNearestSectionBreak,"findNearestSectionBreak");var DeleteDirection=(DeleteDirection2=>(DeleteDirection2[DeleteDirection2.LEFT=0]="LEFT",DeleteDirection2[DeleteDirection2.RIGHT=1]="RIGHT",DeleteDirection2))(DeleteDirection||{});function makeSelection(startOffset,endOffset){if(typeof endOffset>"u")return{startOffset,endOffset:startOffset,collapsed:!0};if(endOffset<startOffset)throw new Error(`Cannot make a doc selection when endOffset ${endOffset} is less than startOffset ${startOffset}.`);return{startOffset,endOffset,collapsed:startOffset===endOffset}}__name(makeSelection,"makeSelection");function normalizeSelection(selection){const{startOffset,endOffset,collapsed}=selection,start=Math.min(startOffset,endOffset),end=Math.max(startOffset,endOffset);return{startOffset:start,endOffset:end,collapsed}}__name(normalizeSelection,"normalizeSelection");function getSelectionWithSymbolMax(selection,body){let{startOffset,endOffset}=normalizeSelection(selection);for(;body.dataStream[startOffset-1]===core.DataStreamTreeTokenType.CUSTOM_RANGE_START;)startOffset-=1;for(;body.dataStream[endOffset]===core.DataStreamTreeTokenType.CUSTOM_RANGE_END;)endOffset+=1;return{startOffset,endOffset}}__name(getSelectionWithSymbolMax,"getSelectionWithSymbolMax");function getDeleteSelection(selection,body,direction=DeleteDirection.LEFT){var _a11;let{startOffset,endOffset,collapsed}=normalizeSelection(selection);if(collapsed)if(direction===DeleteDirection.LEFT)for(;isCustomRangeSplitSymbol(body.dataStream[startOffset-1]);)endOffset-=1,startOffset-=1;else for(;isCustomRangeSplitSymbol(body.dataStream[startOffset]);)endOffset+=1,startOffset+=1;else{const selectionWithSymbolMax=getSelectionWithSymbolMax(selection,body);startOffset=selectionWithSymbolMax.startOffset,endOffset=selectionWithSymbolMax.endOffset}collapsed=startOffset===endOffset;const customRanges=(_a11=body.customRanges)==null?void 0:_a11.filter(range=>!range.wholeEntity||startOffset<=range.startIndex&&endOffset>range.endIndex?!1:isSegmentIntersects(startOffset,collapsed?endOffset:endOffset-1,range.startIndex,range.endIndex));return customRanges!=null&&customRanges.length&&customRanges.forEach(range=>{startOffset=Math.min(range.startIndex,startOffset),endOffset=Math.max(range.endIndex+1,endOffset)}),{...selection,startOffset,endOffset,collapsed:startOffset===endOffset}}__name(getDeleteSelection,"getDeleteSelection");function getInsertSelection(selection,body){let{startOffset,endOffset,collapsed}=normalizeSelection(selection);if(collapsed){for(;body.dataStream[endOffset]===core.DataStreamTreeTokenType.CUSTOM_RANGE_END;)endOffset+=1,startOffset+=1;for(;body.dataStream[endOffset-1]===core.DataStreamTreeTokenType.CUSTOM_RANGE_START;)endOffset-=1,startOffset-=1;return{...selection,startOffset,endOffset,collapsed}}else return{...selection,...getSelectionWithSymbolMax(selection,body),collapsed:!1}}__name(getInsertSelection,"getInsertSelection");function getSelectionForAddCustomRange(selection,body){if(selection.startOffset===selection.endOffset)return null;const customRanges=body.customRanges;if(!customRanges)return normalizeSelection(selection);let{startOffset,endOffset}=getSelectionWithSymbolMax(selection,body);for(;isCustomRangeSplitSymbol(body.dataStream[startOffset]);){if(body.dataStream[startOffset]===core.DataStreamTreeTokenType.CUSTOM_RANGE_START){const customRange=customRanges.find(range=>range.startIndex===startOffset);if(!customRange)throw new Error("No custom-range matched");if(customRange.endIndex===endOffset-1)return{startOffset,endOffset,collapsed:!1};if(customRange.endIndex<endOffset-1)break}startOffset+=1}for(;isCustomRangeSplitSymbol(body.dataStream[endOffset-1]);){if(body.dataStream[startOffset]===core.DataStreamTreeTokenType.CUSTOM_RANGE_END){const customRange=customRanges.find(range=>range.endIndex===endOffset-1);if(!customRange)throw new Error("No custom-range matched");if(customRange.startIndex===startOffset)return{startOffset,endOffset,collapsed:!1};if(customRange.startIndex>startOffset)break}endOffset-=1}return endOffset<=startOffset?null:{startOffset,endOffset,collapsed:!1}}__name(getSelectionForAddCustomRange,"getSelectionForAddCustomRange");const tags=[core.DataStreamTreeTokenType.PARAGRAPH,core.DataStreamTreeTokenType.SECTION_BREAK,core.DataStreamTreeTokenType.TABLE_START,core.DataStreamTreeTokenType.TABLE_ROW_START,core.DataStreamTreeTokenType.TABLE_CELL_START,core.DataStreamTreeTokenType.TABLE_CELL_END,core.DataStreamTreeTokenType.TABLE_ROW_END,core.DataStreamTreeTokenType.TABLE_END,core.DataStreamTreeTokenType.CUSTOM_RANGE_START,core.DataStreamTreeTokenType.CUSTOM_RANGE_END,core.DataStreamTreeTokenType.COLUMN_BREAK,core.DataStreamTreeTokenType.PAGE_BREAK,core.DataStreamTreeTokenType.DOCS_END,core.DataStreamTreeTokenType.TAB,core.DataStreamTreeTokenType.CUSTOM_BLOCK];function getSelectionText(dataStream,start,end){const text=dataStream.slice(start,end);return tags.reduce((res,curr)=>res.replaceAll(curr,""),text)}__name(getSelectionText,"getSelectionText");function isSegmentIntersects(start,end,start2,end2){return Math.max(start,start2)<=Math.min(end,end2)}__name(isSegmentIntersects,"isSegmentIntersects");function getRetainAndDeleteAndExcludeLineBreak(selection,body,segmentId="",memoryCursor=0,preserveLineBreak=!0){var _a11;const{startOffset,endOffset}=getDeleteSelection(selection,body),dos=[],{paragraphs=[],dataStream}=body,textStart=startOffset-memoryCursor,textEnd=endOffset-memoryCursor,paragraphInRange=paragraphs==null?void 0:paragraphs.find(p=>p.startIndex-memoryCursor>=textStart&&p.startIndex-memoryCursor<textEnd),relativeCustomRanges=(_a11=body.customRanges)==null?void 0:_a11.filter(customRange=>isIntersecting(customRange.startIndex,customRange.endIndex,startOffset,endOffset)),toDeleteRanges=new Set(relativeCustomRanges==null?void 0:relativeCustomRanges.filter(customRange=>shouldDeleteCustomRange(startOffset,endOffset-startOffset,customRange,dataStream))),retainPoints=new Set;if(relativeCustomRanges==null||relativeCustomRanges.forEach(range=>{toDeleteRanges.has(range)||(range.startIndex-memoryCursor>=textStart&&range.startIndex-memoryCursor<=textEnd&&range.endIndex-memoryCursor>textEnd&&retainPoints.add(range.startIndex),range.endIndex-memoryCursor>=textStart&&range.endIndex-memoryCursor<=textEnd&&range.startIndex<textStart&&retainPoints.add(range.endIndex))}),textStart>0&&dos.push({t:core.TextXActionType.RETAIN,len:textStart,segmentId}),preserveLineBreak&¶graphInRange&¶graphInRange.startIndex-memoryCursor>textStart){const paragraphIndex=paragraphInRange.startIndex-memoryCursor;retainPoints.add(paragraphIndex)}const sortedRetains=[...retainPoints].sort((pre,aft)=>pre-aft);let cursor=textStart;return sortedRetains.forEach(pos=>{const len=pos-cursor;len>0&&dos.push({t:core.TextXActionType.DELETE,len,line:0,segmentId}),dos.push({t:core.TextXActionType.RETAIN,len:1,segmentId}),cursor=pos+1}),cursor<textEnd&&dos.push({t:core.TextXActionType.DELETE,len:textEnd-cursor,line:0,segmentId}),dos}__name(getRetainAndDeleteAndExcludeLineBreak,"getRetainAndDeleteAndExcludeLineBreak");function replaceSelectionFactory(accessor,params){var _a11,_b,_c,_d;const{unitId,originBody,body:insertBody}=params,docDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId);if(!docDataModel)return!1;const segmentId=(_a11=params.selection)==null?void 0:_a11.segmentId;let body;if(params.originBody?body=originBody:body=(_b=docDataModel.getSelfOrHeaderFooterModel(segmentId))==null?void 0:_b.getBody(),!body)return!1;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),selection=(_c=params.selection)!=null?_c:textSelectionManagerService.getActiveTextRangeWithStyle();if(!selection||!body)return!1;const textRanges=(_d=params.textRanges)!=null?_d:[{startOffset:selection.startOffset+insertBody.dataStream.length,endOffset:selection.startOffset+insertBody.dataStream.length,collapsed:!0,segmentId}],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges,debounce:!0,segmentId}},textX=new core.TextX,jsonX=core.JSONX.getInstance();textX.push(...getRetainAndDeleteAndExcludeLineBreak(selection,body,segmentId)),textX.push({t:core.TextXActionType.INSERT,body:insertBody,len:insertBody.dataStream.length,line:0,segmentId});const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),doMutation}__name(replaceSelectionFactory,"replaceSelectionFactory");var DOCS_VIEW_KEY=(DOCS_VIEW_KEY2=>(DOCS_VIEW_KEY2.MAIN="__Document_Render_Main__",DOCS_VIEW_KEY2.BACKGROUND="__Document_Render_Background__",DOCS_VIEW_KEY2))(DOCS_VIEW_KEY||{}),VIEWPORT_KEY=(VIEWPORT_KEY2=>(VIEWPORT_KEY2.VIEW_MAIN="viewMain",VIEWPORT_KEY2.VIEW_TOP="viewTop",VIEWPORT_KEY2.VIEW_LEFT="viewLeft",VIEWPORT_KEY2.VIEW_LEFT_TOP="viewLeftTop",VIEWPORT_KEY2))(VIEWPORT_KEY||{});const DOCS_COMPONENT_BACKGROUND_LAYER_INDEX=0,DOCS_COMPONENT_MAIN_LAYER_INDEX=2,DOCS_COMPONENT_HEADER_LAYER_INDEX=4,DOCS_COMPONENT_DEFAULT_Z_INDEX=10,NORMAL_TEXT_SELECTION_PLUGIN_NAME="normalTextSelectionPluginName";function neoGetDocObject(renderContext){const{mainComponent,scene,engine,components}=renderContext,document=mainComponent,docBackground=components.get(DOCS_VIEW_KEY.BACKGROUND);return{document,docBackground,scene,engine}}__name(neoGetDocObject,"neoGetDocObject");function getDocObject(univerInstanceService,renderManagerService){const documentModel=univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_DOC);if(!documentModel)return null;const unitId=documentModel.getUnitId(),currentRender=renderManagerService.getRenderById(unitId);if(currentRender==null)return;const{mainComponent,scene,engine,components}=currentRender,document=mainComponent,docBackground=components.get(DOCS_VIEW_KEY.BACKGROUND);return{document,docBackground,scene,engine}}__name(getDocObject,"getDocObject");function getDocObjectById(unitId,renderManagerService){const currentRender=renderManagerService.getRenderById(unitId);if(currentRender==null)return;const{mainComponent,scene,engine,components}=currentRender,document=mainComponent,docBackground=components.get(DOCS_VIEW_KEY.BACKGROUND);return{document,docBackground,scene,engine}}__name(getDocObjectById,"getDocObjectById");const _DocCustomRangeService=class _DocCustomRangeService{constructor(){__publicField(this,"_customRangeHooks",[])}addClipboardHook(hook){return this._customRangeHooks.push(hook),core.toDisposable(()=>{const index=this._customRangeHooks.indexOf(hook);index>-1&&this._customRangeHooks.splice(index,1)})}copyCustomRange(unitId,range){let copy={...range};return this._customRangeHooks.forEach(hook=>{hook.onCopyCustomRange&&(copy=hook.onCopyCustomRange(unitId,copy))}),copy}};__name(_DocCustomRangeService,"DocCustomRangeService");let DocCustomRangeService=_DocCustomRangeService;function getRetainAndDeleteFromReplace(range,segmentId="",memoryCursor,body){var _a11;const{startOffset,endOffset}=range,dos=[],textStart=startOffset-memoryCursor,textEnd=endOffset-memoryCursor,dataStream=body.dataStream,relativeCustomRanges=(_a11=body.customRanges)==null?void 0:_a11.filter(customRange=>isIntersecting(customRange.startIndex,customRange.endIndex,startOffset,endOffset)),toDeleteRanges=new Set(relativeCustomRanges==null?void 0:relativeCustomRanges.filter(customRange=>shouldDeleteCustomRange(startOffset,endOffset-startOffset,customRange,dataStream))),retainPoints=new Set;relativeCustomRanges==null||relativeCustomRanges.forEach(range2=>{toDeleteRanges.has(range2)||(range2.startIndex-memoryCursor>=textStart&&range2.startIndex-memoryCursor<=textEnd&&range2.endIndex-memoryCursor>textEnd&&retainPoints.add(range2.startIndex),range2.endIndex-memoryCursor>=textStart&&range2.endIndex-memoryCursor<=textEnd&&range2.startIndex<textStart&&retainPoints.add(range2.endIndex))}),textStart>0&&dos.push({t:core.TextXActionType.RETAIN,len:textStart,segmentId});const sortedRetains=[...retainPoints].sort((pre,aft)=>pre-aft);let cursor=textStart;return sortedRetains.forEach(pos=>{const len=pos-cursor;len>0&&dos.push({t:core.TextXActionType.DELETE,len,line:0,segmentId}),dos.push({t:core.TextXActionType.RETAIN,len:1,segmentId}),cursor=pos+1}),cursor<textEnd&&(dos.push({t:core.TextXActionType.DELETE,len:textEnd-cursor,line:0,segmentId}),cursor=textEnd+1),{dos,cursor,retain:retainPoints.size}}__name(getRetainAndDeleteFromReplace,"getRetainAndDeleteFromReplace");const EditorInsertTextCommandId="doc.command.insert-text",InsertCommand={id:EditorInsertTextCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11;const commandService=accessor.get(core.ICommandService),{range,segmentId,body,unitId,cursorOffset}=params,textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),docDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId,core.UniverInstanceType.UNIVER_DOC);if(docDataModel==null)return!1;const activeRange=textSelectionManagerService.getActiveTextRangeWithStyle(),originBody=docDataModel.getSelfOrHeaderFooterModel((_a11=activeRange==null?void 0:activeRange.segmentId)!=null?_a11:"").getBody();if(!originBody)return!1;const actualRange=getInsertSelection(range,originBody),{startOffset,collapsed}=actualRange,cursorMove=cursorOffset!=null?cursorOffset:body.dataStream.length,textRanges=[{startOffset:startOffset+cursorMove,endOffset:startOffset+cursorMove,style:activeRange==null?void 0:activeRange.style,collapsed}],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges,debounce:!0}},textX=new core.TextX,jsonX=core.JSONX.getInstance();if(collapsed)startOffset>0&&textX.push({t:core.TextXActionType.RETAIN,len:startOffset,segmentId});else{const{dos,retain}=getRetainAndDeleteFromReplace(actualRange,segmentId,0,originBody);textX.push(...dos),doMutation.params.textRanges=[{startOffset:startOffset+cursorMove+retain,endOffset:startOffset+cursorMove+retain,collapsed}]}textX.push({t:core.TextXActionType.INSERT,body,len:body.dataStream.length,line:0,segmentId});const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DeleteCommand={id:"doc.command.delete-text",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11;const commandService=accessor.get(core.ICommandService),univerInstanceService=accessor.get(core.IUniverInstanceService),{range,segmentId,unitId,direction,len=1}=params,docDataModel=univerInstanceService.getUnit(unitId,core.UniverInstanceType.UNIVER_DOC),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const{startOffset}=range,dataStream=body.dataStream,start=direction===DeleteDirection.LEFT?startOffset-len:startOffset,end=start+len-1,relativeCustomRanges=(_a11=body.customRanges)==null?void 0:_a11.filter(customRange=>isIntersecting(customRange.startIndex,customRange.endIndex,start,end)),toDeleteRanges=relativeCustomRanges==null?void 0:relativeCustomRanges.filter(customRange=>shouldDeleteCustomRange(start,len,customRange,dataStream)),deleteIndexes=[];for(let i=0;i<len;i++)deleteIndexes.push(start+i);toDeleteRanges==null||toDeleteRanges.forEach(range2=>{deleteIndexes.push(range2.startIndex,range2.endIndex)}),deleteIndexes.sort((pre,aft)=>pre-aft);const deleteStart=deleteIndexes[0],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:[{startOffset:deleteStart,endOffset:deleteStart,collapsed:!0}],debounce:!0}},textX=new core.TextX,jsonX=core.JSONX.getInstance();let cursor=0;for(let i=0;i<deleteIndexes.length;i++){const deleteIndex=deleteIndexes[i];deleteIndex-cursor>0&&textX.push({t:core.TextXActionType.RETAIN,len:deleteIndex-cursor,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:1,segmentId,line:0}),cursor=deleteIndex+1}const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},UpdateCommand={id:"doc.command.update-text",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{range,segmentId,updateBody,coverType,unitId,textRanges}=params,commandService=accessor.get(core.ICommandService),docDataModel=accessor.get(core.IUniverInstanceService).getCurrentUniverDocInstance();if(docDataModel==null)return!1;const doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}},textX=new core.TextX,jsonX=core.JSONX.getInstance(),{startOffset,endOffset}=range;textX.push({t:core.TextXActionType.RETAIN,len:startOffset,segmentId}),textX.push({t:core.TextXActionType.RETAIN,body:updateBody,len:endOffset-startOffset,segmentId,coverType});const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")};function generateParagraphs(dataStream,prevParagraph){var _a11,_b;const paragraphs=[];for(let i=0,len=dataStream.length;i<len;i++)dataStream[i]===core.DataStreamTreeTokenType.PARAGRAPH&¶graphs.push({startIndex:i});if(prevParagraph)for(const paragraph of paragraphs)prevParagraph.bullet&&(paragraph.bullet=core.Tools.deepClone(prevParagraph.bullet),paragraph.bullet.listType===core.PresetListType.CHECK_LIST_CHECKED&&(paragraph.bullet.listType=core.PresetListType.CHECK_LIST)),prevParagraph.paragraphStyle&&(paragraph.paragraphStyle=core.Tools.deepClone(prevParagraph.paragraphStyle),((_a11=prevParagraph.bullet)==null?void 0:_a11.listType)===core.PresetListType.CHECK_LIST_CHECKED&&(_b=paragraph.paragraphStyle)!=null&&_b.textStyle&&(paragraph.paragraphStyle.textStyle.st={s:core.BooleanNumber.FALSE}));return paragraphs}__name(generateParagraphs,"generateParagraphs");const BreakLineCommand={id:"doc.command.break-line",type:core.CommandType.COMMAND,handler:__name(async accessor=>{var _a11,_b;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),customRangeService=accessor.get(DocCustomRangeService),activeTextRange=textSelectionManagerService.getActiveTextRangeWithStyle(),rectRanges=textSelectionManagerService.getCurrentRectRanges();if(activeTextRange==null)return!1;if(rectRanges&&rectRanges.length){const{startOffset:startOffset2}=activeTextRange;return textSelectionManagerService.replaceTextRanges([{startOffset:startOffset2,endOffset:startOffset2}]),!0}const{segmentId}=activeTextRange,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(!docDataModel||!body)return!1;const unitId=docDataModel.getUnitId(),{startOffset,endOffset}=getInsertSelection(activeTextRange,body),prevParagraph=((_a11=body.paragraphs)!=null?_a11:[]).find(p=>p.startIndex>=startOffset);if(prevParagraph&&prevParagraph.startIndex>endOffset){const bodyAfter=core.normalizeBody(core.getBodySlice(body,endOffset,prevParagraph.startIndex+1));bodyAfter.customRanges=(_b=bodyAfter.customRanges)==null?void 0:_b.map(range=>customRangeService.copyCustomRange(unitId,range));const deleteRange={startOffset,endOffset:prevParagraph.startIndex+1,collapsed:!1};return core.updateAttributeByInsert(bodyAfter,{dataStream:core.DataStreamTreeTokenType.PARAGRAPH,paragraphs:generateParagraphs(core.DataStreamTreeTokenType.PARAGRAPH,prevParagraph)},1,0),await commandService.executeCommand(InsertCommand.id,{unitId,body:bodyAfter,range:deleteRange,segmentId,cursorOffset:1})}else return await commandService.executeCommand(InsertCommand.id,{unitId,body:{dataStream:core.DataStreamTreeTokenType.PARAGRAPH,paragraphs:generateParagraphs(core.DataStreamTreeTokenType.PARAGRAPH,prevParagraph)},range:activeTextRange,segmentId})},"handler")};var INSERT_ROW_POSITION=(INSERT_ROW_POSITION2=>(INSERT_ROW_POSITION2[INSERT_ROW_POSITION2.ABOVE=0]="ABOVE",INSERT_ROW_POSITION2[INSERT_ROW_POSITION2.BELLOW=1]="BELLOW",INSERT_ROW_POSITION2))(INSERT_ROW_POSITION||{}),INSERT_COLUMN_POSITION=(INSERT_COLUMN_POSITION2=>(INSERT_COLUMN_POSITION2[INSERT_COLUMN_POSITION2.LEFT=0]="LEFT",INSERT_COLUMN_POSITION2[INSERT_COLUMN_POSITION2.RIGHT=1]="RIGHT",INSERT_COLUMN_POSITION2))(INSERT_COLUMN_POSITION||{});function genEmptyTable(rowCount,colCount){let dataStream=core.DataStreamTreeTokenType.TABLE_START;const paragraphs=[],sectionBreaks=[];for(let i=0;i<rowCount;i++){dataStream+=core.DataStreamTreeTokenType.TABLE_ROW_START;for(let j=0;j<colCount;j++)dataStream+=`${core.DataStreamTreeTokenType.TABLE_CELL_START}\r
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const core=require("@univerjs/core"),engineRender=require("@univerjs/engine-render"),rxjs=require("rxjs"),docs=require("@univerjs/docs"),SetTextSelectionsOperation={id:"doc.operation.set-selections",type:core.CommandType.OPERATION,handler:__name((_,__)=>!0,"handler")};var __defProp$9=Object.defineProperty,__getOwnPropDesc$9=Object.getOwnPropertyDescriptor,__decorateClass$9=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$9(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$9(target,key,result),result},"__decorateClass$9"),__decorateParam$9=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$9");function serializeDocRange(textRange){const{startOffset,endOffset,collapsed,rangeType}=textRange,serializedTextRange={startOffset,endOffset,collapsed,rangeType};return typeof textRange.isActive=="function"&&(serializedTextRange.isActive=textRange.isActive()),serializedTextRange}__name(serializeDocRange,"serializeDocRange");var _a;exports.TextSelectionManagerService=(_a=class extends core.RxDisposable{constructor(_textSelectionRenderManager,_commandService){super();__publicField(this,"_currentSelection",null);__publicField(this,"_textSelectionInfo",new Map);__publicField(this,"_textSelection$",new rxjs.BehaviorSubject(null));__publicField(this,"textSelection$",this._textSelection$.asObservable());this._textSelectionRenderManager=_textSelectionRenderManager,this._commandService=_commandService,this._syncSelectionFromRenderService()}getCurrentSelection(){return this._currentSelection}getCurrentSelectionInfo(){return this._getTextRanges(this._currentSelection)}dispose(){this._textSelection$.complete()}refreshSelection(){this._currentSelection!=null&&this._refresh(this._currentSelection)}setCurrentSelection(param){this._currentSelection=param,this._refresh(param)}setCurrentSelectionNotRefresh(param){this._currentSelection=param}getCurrentTextRanges(){var _a11;return(_a11=this._getTextRanges(this._currentSelection))==null?void 0:_a11.textRanges}getCurrentRectRanges(){var _a11;return(_a11=this._getTextRanges(this._currentSelection))==null?void 0:_a11.rectRanges}getDocRanges(){var _a11,_b;const textRanges=(_a11=this.getCurrentTextRanges())!=null?_a11:[],rectRanges=(_b=this.getCurrentRectRanges())!=null?_b:[];return[...textRanges,...rectRanges].filter(range=>range.startOffset!=null&&range.endOffset!=null).sort((a,b)=>a.startOffset>b.startOffset?1:a.startOffset<b.startOffset?-1:0)}getActiveTextRange(){const selectionInfo=this._getTextRanges(this._currentSelection);if(selectionInfo==null)return;const{textRanges}=selectionInfo;return textRanges.find(textRange=>textRange.isActive())}getActiveRectRange(){const selectionInfo=this._getTextRanges(this._currentSelection);if(selectionInfo==null)return;const{rectRanges}=selectionInfo;return rectRanges.find(rectRange=>rectRange.isActive())}getActiveTextRangeWithStyle(){const selectionInfo=this._getTextRanges(this._currentSelection);if(selectionInfo==null)return;const{textRanges,segmentId,style,segmentPage}=selectionInfo,activeTextRange=textRanges.find(textRange=>textRange.isActive());if(activeTextRange==null)return null;const{startOffset,endOffset,collapsed,startNodePosition,endNodePosition,direction}=activeTextRange;return startOffset==null||endOffset==null?null:{startOffset,endOffset,collapsed,startNodePosition,endNodePosition,direction,segmentId,segmentPage,style}}add(textRanges,isEditing=!0){this._currentSelection!=null&&this._addByParam({...this._currentSelection,textRanges,rectRanges:[],segmentId:"",segmentPage:-1,isEditing,style:engineRender.NORMAL_TEXT_SELECTION_PLUGIN_STYLE})}replaceTextRanges(docRanges,isEditing=!0,options){this._currentSelection!=null&&(this._textSelectionRenderManager.removeAllRanges(),this._textSelectionRenderManager.addDocRanges(docRanges,isEditing,options))}_syncSelectionFromRenderService(){this._textSelectionRenderManager.textSelectionInner$.pipe(rxjs.takeUntil(this.dispose$)).subscribe(params=>{params!=null&&this._replaceTextRangesWithNoRefresh(params)})}_replaceTextRangesWithNoRefresh(textSelectionInfo){if(this._currentSelection==null)return;const params={...this._currentSelection,...textSelectionInfo};this._replaceByParam(params),this._textSelection$.next(params);const{unitId,subUnitId,segmentId,style,textRanges,rectRanges,isEditing}=params,ranges=[...textRanges,...rectRanges].filter(range=>range.startOffset!=null&&range.endOffset!=null).sort((a,b)=>a.startOffset>b.startOffset?1:a.startOffset<b.startOffset?-1:0).map(serializeDocRange);this._commandService.executeCommand(SetTextSelectionsOperation.id,{unitId,subUnitId,segmentId,style,isEditing,ranges})}_getTextRanges(param){var _a11;if(param==null)return;const{unitId,subUnitId=""}=param;return(_a11=this._textSelectionInfo.get(unitId))==null?void 0:_a11.get(subUnitId)}_refresh(param){const allTextSelectionInfo=this._getTextRanges(param);if(this._textSelectionRenderManager.removeAllRanges(),allTextSelectionInfo==null)return;const{textRanges,rectRanges}=allTextSelectionInfo,docRanges=[...textRanges,...rectRanges];docRanges.length>0&&this._textSelectionRenderManager.addDocRanges(docRanges.map(serializeDocRange),!1)}_replaceByParam(insertParam){const{unitId,subUnitId,style,segmentId,textRanges,rectRanges,isEditing,segmentPage}=insertParam;this._textSelectionInfo.has(unitId)||this._textSelectionInfo.set(unitId,new Map),this._textSelectionInfo.get(unitId).set(subUnitId,{textRanges,rectRanges,style,segmentId,isEditing,segmentPage})}_addByParam(insertParam){const{unitId,subUnitId,textRanges,rectRanges,style,segmentId,isEditing,segmentPage}=insertParam;this._textSelectionInfo.has(unitId)||this._textSelectionInfo.set(unitId,new Map);const unitTextRange=this._textSelectionInfo.get(unitId);unitTextRange.has(subUnitId)?unitTextRange.get(subUnitId).textRanges.push(...textRanges):unitTextRange.set(subUnitId,{textRanges,rectRanges,style,segmentId,isEditing,segmentPage})}},__name(_a,"TextSelectionManagerService"),_a);exports.TextSelectionManagerService=__decorateClass$9([__decorateParam$9(0,engineRender.ITextSelectionRenderManager),__decorateParam$9(1,core.ICommandService)],exports.TextSelectionManagerService);var __defProp$8=Object.defineProperty,__getOwnPropDesc$8=Object.getOwnPropertyDescriptor,__decorateClass$8=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$8(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$8(target,key,result),result},"__decorateClass$8"),__decorateParam$8=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$8");const DEBOUNCE_DELAY=300;var _a2;exports.DocStateChangeManagerService=(_a2=class extends core.RxDisposable{constructor(_undoRedoService,_commandService,_univerInstanceService){super();__publicField(this,"_docStateChange$",new rxjs.BehaviorSubject(null));__publicField(this,"docStateChange$",this._docStateChange$.asObservable());__publicField(this,"_historyStateCache",new Map);__publicField(this,"_changeStateCache",new Map);__publicField(this,"_historyTimer",null);__publicField(this,"_changeStateCacheTimer",null);this._undoRedoService=_undoRedoService,this._commandService=_commandService,this._univerInstanceService=_univerInstanceService,this._initialize()}setChangeState(changeState){this._cacheChangeState(changeState,"history"),this._cacheChangeState(changeState,"collaboration")}_initialize(){this.disposeWithMe(this._commandService.beforeCommandExecuted(command=>{if(command.id===core.UndoCommandId||command.id===core.RedoCommandId){const univerDoc=this._univerInstanceService.getCurrentUniverDocInstance();if(univerDoc==null)return;const unitId=univerDoc.getUnitId();this._pushHistory(unitId),this._emitChangeState(unitId)}}))}_cacheChangeState(changeState,type="history"){const{trigger,unitId,noHistory,debounce=!1}=changeState;if(noHistory||trigger==null||type==="history"&&(trigger===core.RedoCommandId||trigger===core.UndoCommandId))return;const stateCache=type==="history"?this._historyStateCache:this._changeStateCache,cb=type==="history"?this._pushHistory.bind(this):this._emitChangeState.bind(this);if(stateCache.has(unitId)){const cacheStates=stateCache.get(unitId);cacheStates==null||cacheStates.push(changeState)}else stateCache.set(unitId,[changeState]);debounce?type==="history"?(this._historyTimer&&clearTimeout(this._historyTimer),this._historyTimer=setTimeout(()=>{cb(unitId)},DEBOUNCE_DELAY)):(this._changeStateCacheTimer&&clearTimeout(this._changeStateCacheTimer),this._changeStateCacheTimer=setTimeout(()=>{cb(unitId)},DEBOUNCE_DELAY)):cb(unitId)}_pushHistory(unitId){const undoRedoService=this._undoRedoService,cacheStates=this._historyStateCache.get(unitId);if(!Array.isArray(cacheStates)||cacheStates.length===0)return;const len=cacheStates.length,commandId=cacheStates[0].commandId,firstState=cacheStates[0],lastState=cacheStates[len-1],redoParams={unitId,actions:cacheStates.reduce((acc,cur)=>core.JSONX.compose(acc,cur.redoState.actions),null),textRanges:lastState.redoState.textRanges},undoParams={unitId,actions:cacheStates.reverse().reduce((acc,cur)=>core.JSONX.compose(acc,cur.undoState.actions),null),textRanges:firstState.undoState.textRanges};undoRedoService.pushUndoRedo({unitID:unitId,undoMutations:[{id:commandId,params:undoParams}],redoMutations:[{id:commandId,params:redoParams}]}),cacheStates.length=0}_emitChangeState(unitId){const cacheStates=this._changeStateCache.get(unitId);if(!Array.isArray(cacheStates)||cacheStates.length===0)return;const len=cacheStates.length,{commandId,trigger,segmentId,noHistory,debounce}=cacheStates[0],firstState=cacheStates[0],lastState=cacheStates[len-1],redoState={unitId,actions:cacheStates.reduce((acc,cur)=>core.JSONX.compose(acc,cur.redoState.actions),null),textRanges:lastState.redoState.textRanges},undoState={unitId,actions:cacheStates.reverse().reduce((acc,cur)=>core.JSONX.compose(acc,cur.undoState.actions),null),textRanges:firstState.undoState.textRanges},changeState={commandId,unitId,trigger,redoState,undoState,segmentId,noHistory,debounce};cacheStates.length=0,this._docStateChange$.next(changeState)}},__name(_a2,"DocStateChangeManagerService"),_a2);exports.DocStateChangeManagerService=__decorateClass$8([__decorateParam$8(0,core.Inject(core.IUndoRedoService)),__decorateParam$8(1,core.ICommandService),__decorateParam$8(2,core.IUniverInstanceService)],exports.DocStateChangeManagerService);const _IMEInputManagerService=class _IMEInputManagerService{constructor(){__publicField(this,"_previousActiveRange",null);__publicField(this,"_undoMutationParamsCache",[]);__publicField(this,"_redoMutationParamsCache",[])}clearUndoRedoMutationParamsCache(){this._undoMutationParamsCache=[],this._redoMutationParamsCache=[]}getUndoRedoMutationParamsCache(){return{undoCache:this._undoMutationParamsCache,redoCache:this._redoMutationParamsCache}}setUndoRedoMutationParamsCache({undoCache=[],redoCache=[]}){this._undoMutationParamsCache=undoCache,this._redoMutationParamsCache=redoCache}getActiveRange(){return this._previousActiveRange}setActiveRange(range){this._previousActiveRange=range}pushUndoRedoMutationParams(undoParams,redoParams){this._undoMutationParamsCache.push(undoParams),this._redoMutationParamsCache.push(redoParams)}fetchComposedUndoRedoMutationParams(){if(this._undoMutationParamsCache.length===0||this._previousActiveRange==null||this._redoMutationParamsCache.length===0)return null;const{unitId}=this._undoMutationParamsCache[0],undoMutationParams={unitId,actions:this._undoMutationParamsCache.reverse().reduce((acc,cur)=>core.JSONX.compose(acc,cur.actions),null),textRanges:[]};return{redoMutationParams:{unitId,actions:this._redoMutationParamsCache.reduce((acc,cur)=>core.JSONX.compose(acc,cur.actions),null),textRanges:[]},undoMutationParams,previousActiveRange:this._previousActiveRange}}dispose(){this._undoMutationParamsCache=[],this._redoMutationParamsCache=[],this._previousActiveRange=null}};__name(_IMEInputManagerService,"IMEInputManagerService");let IMEInputManagerService=_IMEInputManagerService;var __defProp$7=Object.defineProperty,__getOwnPropDesc$7=Object.getOwnPropertyDescriptor,__decorateClass$7=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$7(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$7(target,key,result),result},"__decorateClass$7"),__decorateParam$7=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$7"),_a3;exports.DocSkeletonManagerService=(_a3=class extends core.RxDisposable{constructor(_context,_localeService,_univerInstanceService){super();__publicField(this,"_skeleton");__publicField(this,"_docViewModel");__publicField(this,"_currentSkeleton$",new rxjs.BehaviorSubject(null));__publicField(this,"currentSkeleton$",this._currentSkeleton$.asObservable());__publicField(this,"_currentSkeletonBefore$",new rxjs.BehaviorSubject(null));__publicField(this,"currentSkeletonBefore$",this._currentSkeletonBefore$.asObservable());__publicField(this,"_currentViewModel$",new rxjs.BehaviorSubject(null));__publicField(this,"currentViewModel$",this._currentViewModel$.asObservable());this._context=_context,this._localeService=_localeService,this._univerInstanceService=_univerInstanceService,this._init(),this._univerInstanceService.getCurrentTypeOfUnit$(core.UniverInstanceType.UNIVER_DOC).pipe(rxjs.takeUntil(this.dispose$)).subscribe(documentModel=>{documentModel&&documentModel.getUnitId()===this._context.unitId&&this._update(documentModel)})}dispose(){super.dispose(),this._currentSkeletonBefore$.complete(),this._currentSkeleton$.complete()}getSkeleton(){return this._skeleton}getViewModel(){return this._docViewModel}_init(){const documentDataModel=this._context.unit;this._update(documentDataModel)}_update(documentDataModel){const unitId=this._context.unitId;if(documentDataModel.getBody()==null)return;this._docViewModel&&core.isInternalEditorID(unitId)?(this._docViewModel.reset(documentDataModel),this._context.unit=documentDataModel):this._docViewModel||(this._docViewModel=this._buildDocViewModel(documentDataModel)),this._skeleton||(this._skeleton=this._buildSkeleton(this._docViewModel));const skeleton=this._skeleton;skeleton.calculate(),this._currentSkeletonBefore$.next(skeleton),this._currentSkeleton$.next(skeleton),this._currentViewModel$.next(this._docViewModel)}_buildSkeleton(documentViewModel){return engineRender.DocumentSkeleton.create(documentViewModel,this._localeService)}_buildDocViewModel(documentDataModel){return new engineRender.DocumentViewModel(documentDataModel)}},__name(_a3,"DocSkeletonManagerService"),_a3);exports.DocSkeletonManagerService=__decorateClass$7([__decorateParam$7(1,core.Inject(core.LocaleService)),__decorateParam$7(2,core.IUniverInstanceService)],exports.DocSkeletonManagerService);const RichTextEditingMutationId="doc.mutation.rich-text-editing",RichTextEditingMutation={id:RichTextEditingMutationId,type:core.CommandType.MUTATION,handler:__name((accessor,params)=>{var _a11,_b;const{unitId,segmentId="",actions,textRanges,prevTextRanges,trigger,noHistory,isCompositionEnd,noNeedSetTextRange,debounce}=params,univerInstanceService=accessor.get(core.IUniverInstanceService),renderManagerService=accessor.get(engineRender.IRenderManagerService),documentDataModel=univerInstanceService.getUniverDocInstance(unitId),documentViewModel=(_a11=renderManagerService.getRenderById(unitId))==null?void 0:_a11.with(exports.DocSkeletonManagerService).getViewModel();if(documentDataModel==null||documentViewModel==null)throw new Error(`DocumentDataModel or documentViewModel not found for unitId: ${unitId}`);const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),serializedSelections=((_b=textSelectionManagerService.getDocRanges())!=null?_b:[]).map(serializeDocRange),docStateChangeManagerService=accessor.get(exports.DocStateChangeManagerService),imeInputManagerService=accessor.get(IMEInputManagerService),disabled=!!documentDataModel.getSnapshot().disabled;if(core.JSONX.isNoop(actions)||actions&&actions.length===0||disabled)return{unitId,actions:[],textRanges:serializedSelections};const undoActions=core.JSONX.invertWithDoc(actions,documentDataModel.getSnapshot());documentDataModel.apply(actions),documentViewModel.reset(documentDataModel),!noNeedSetTextRange&&textRanges&&trigger!=null&&queueMicrotask(()=>{textSelectionManagerService.replaceTextRanges(textRanges,!0,params.options)});const changeState={commandId:RichTextEditingMutationId,unitId,segmentId,trigger,noHistory,debounce,redoState:{actions,textRanges},undoState:{actions:undoActions,textRanges:prevTextRanges!=null?prevTextRanges:serializedSelections}};if(isCompositionEnd){const historyParams=imeInputManagerService.fetchComposedUndoRedoMutationParams();if(historyParams==null)throw new Error("historyParams is null in RichTextEditingMutation");const{undoMutationParams,redoMutationParams,previousActiveRange}=historyParams;changeState.redoState.actions=redoMutationParams.actions,changeState.undoState.actions=undoMutationParams.actions,changeState.undoState.textRanges=[previousActiveRange]}return docStateChangeManagerService.setChangeState(changeState),{unitId,actions:undoActions,textRanges:serializedSelections}},"handler")};function getCommandSkeleton(accessor,unitId){var _a11;return(_a11=accessor.get(engineRender.IRenderManagerService).getRenderById(unitId))==null?void 0:_a11.with(exports.DocSkeletonManagerService)}__name(getCommandSkeleton,"getCommandSkeleton");function getRichTextEditPath(docDataModel,segmentId=""){if(!segmentId)return["body"];const{headers,footers}=docDataModel.getSnapshot();if(headers==null&&footers==null)throw new Error("Document data model must have headers or footers when update by segment id");if((headers==null?void 0:headers[segmentId])!=null)return["headers",segmentId,"body"];if((footers==null?void 0:footers[segmentId])!=null)return["footers",segmentId,"body"];throw new Error("Segment id not found in headers or footers")}__name(getRichTextEditPath,"getRichTextEditPath");function hasParagraphInTable(paragraph,tables){return tables.some(table=>paragraph.startIndex>table.startIndex&¶graph.startIndex<table.endIndex)}__name(hasParagraphInTable,"hasParagraphInTable");const ListOperationCommand={id:"doc.command.list-operation",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{var _a11,_b,_c,_d,_e,_f;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService);let listType=params.listType;const docDataModel=univerInstanceService.getCurrentUniverDocInstance(),docRanges=(_a11=textSelectionManagerService.getDocRanges())!=null?_a11:[];if(docDataModel==null||docRanges.length===0)return!1;const segmentId=docRanges[0].segmentId,paragraphs=(_b=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_b.paragraphs,serializedSelections=docRanges.map(serializeDocRange);if(paragraphs==null)return!1;const sectionBreaks=(_d=(_c=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_c.sectionBreaks)!=null?_d:[],currentParagraphs=getParagraphsInRanges(docRanges,paragraphs),unitId=docDataModel.getUnitId(),isAlreadyList=currentParagraphs.every(paragraph=>{var _a12;return((_a12=paragraph.bullet)==null?void 0:_a12.listType.indexOf(listType))===0});let listId=core.Tools.generateRandomId(6);if(currentParagraphs.length===1){const curIndex=paragraphs.indexOf(currentParagraphs[0]),prevParagraph=paragraphs[curIndex-1],nextParagraph=paragraphs[curIndex+1];prevParagraph&&prevParagraph.bullet&&prevParagraph.bullet.listType.indexOf(listType)===0?(listId=prevParagraph.bullet.listId,listType!==core.PresetListType.CHECK_LIST&&(listType=prevParagraph.bullet.listType)):nextParagraph&&nextParagraph.bullet&&nextParagraph.bullet.listType.indexOf(listType)===0&&(listId=nextParagraph.bullet.listId,listType!==core.PresetListType.CHECK_LIST&&(listType=nextParagraph.bullet.listType))}const doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:serializedSelections}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance(),customLists=(_e=docDataModel.getSnapshot().lists)!=null?_e:{},lists={...core.PRESET_LIST_TYPE,...customLists},{defaultTabStop=36}=docDataModel.getSnapshot().documentStyle;for(const paragraph of currentParagraphs){const{startIndex,paragraphStyle={},bullet}=paragraph,{indentFirstLine,snapToGrid,indentStart}=paragraphStyle,paragraphProperties=lists[listType].nestingLevel[0].paragraphProperties||{},{hanging:listHanging,indentStart:listIndentStart}=paragraphProperties,{charSpace,gridType}=findNearestSectionBreak(startIndex,sectionBreaks)||{charSpace:0,gridType:core.GridType.LINES},charSpaceApply=engineRender.getCharSpaceApply(charSpace,defaultTabStop,gridType,snapToGrid);textX.push({t:core.TextXActionType.RETAIN,len:startIndex-memoryCursor.cursor,segmentId}),textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[isAlreadyList?{paragraphStyle:{...paragraphStyle,hanging:void 0,indentStart:indentStart?{v:Math.max(0,engineRender.getNumberUnitValue(indentStart,charSpaceApply)+engineRender.getNumberUnitValue(listHanging,charSpaceApply)-engineRender.getNumberUnitValue(listIndentStart,charSpaceApply))}:void 0},startIndex:0}:{startIndex:0,paragraphStyle:{...paragraphStyle,indentFirstLine:void 0,hanging:listHanging,indentStart:{v:engineRender.getNumberUnitValue(listIndentStart,charSpaceApply)-engineRender.getNumberUnitValue(listHanging,charSpaceApply)+engineRender.getNumberUnitValue(indentFirstLine,charSpaceApply)+engineRender.getNumberUnitValue(indentStart,charSpaceApply)}},bullet:{nestingLevel:(_f=bullet==null?void 0:bullet.nestingLevel)!=null?_f:0,textStyle:{fs:20},listType,listId}}]},segmentId,coverType:core.UpdateDocsAttributeType.REPLACE}),memoryCursor.moveCursorTo(startIndex+1)}const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},ChangeListTypeCommand={id:"doc.command.change-list-type",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{var _a11,_b,_c,_d,_e,_f;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),{listType}=params,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),activeRanges=textSelectionManagerService.getDocRanges();if(docDataModel==null||activeRanges==null||!activeRanges.length)return!1;const{segmentId}=activeRanges[0],selections=(_a11=textSelectionManagerService.getDocRanges())!=null?_a11:[],paragraphs=(_b=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_b.paragraphs,serializedSelections=selections.map(serializeDocRange);if(paragraphs==null)return!1;const sectionBreaks=(_d=(_c=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_c.sectionBreaks)!=null?_d:[],currentParagraphs=getParagraphsRelative(activeRanges,paragraphs),unitId=docDataModel.getUnitId(),listId=core.Tools.generateRandomId(6),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:serializedSelections}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance(),customLists=(_e=docDataModel.getSnapshot().lists)!=null?_e:{},lists={...core.PRESET_LIST_TYPE,...customLists},{defaultTabStop=36}=docDataModel.getSnapshot().documentStyle;for(const paragraph of currentParagraphs){const{startIndex,paragraphStyle={},bullet}=paragraph,{indentFirstLine,snapToGrid,indentStart}=paragraphStyle,paragraphProperties=lists[listType].nestingLevel[0].paragraphProperties||{},{hanging:listHanging,indentStart:listIndentStart}=paragraphProperties,{charSpace,gridType}=findNearestSectionBreak(startIndex,sectionBreaks)||{charSpace:0,gridType:core.GridType.LINES},charSpaceApply=engineRender.getCharSpaceApply(charSpace,defaultTabStop,gridType,snapToGrid);textX.push({t:core.TextXActionType.RETAIN,len:startIndex-memoryCursor.cursor,segmentId}),textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[{startIndex:0,paragraphStyle:{...paragraphStyle,indentFirstLine:void 0,hanging:listHanging,indentStart:{v:engineRender.getNumberUnitValue(listIndentStart,charSpaceApply)-engineRender.getNumberUnitValue(listHanging,charSpaceApply)+engineRender.getNumberUnitValue(indentFirstLine,charSpaceApply)+engineRender.getNumberUnitValue(indentStart,charSpaceApply)}},bullet:{nestingLevel:(_f=bullet==null?void 0:bullet.nestingLevel)!=null?_f:0,textStyle:(bullet==null?void 0:bullet.listType)===listType?bullet.textStyle:{fs:20},listType,listId}}]},segmentId,coverType:core.UpdateDocsAttributeType.REPLACE}),memoryCursor.moveCursorTo(startIndex+1)}const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")};var ChangeListNestingLevelType=(ChangeListNestingLevelType2=>(ChangeListNestingLevelType2[ChangeListNestingLevelType2.increase=1]="increase",ChangeListNestingLevelType2[ChangeListNestingLevelType2.decrease=-1]="decrease",ChangeListNestingLevelType2))(ChangeListNestingLevelType||{});const ChangeListNestingLevelCommand={id:"doc.command.change-list-nesting-level",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{var _a11,_b,_c,_d,_e;if(!params)return!1;const{type}=params,textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),docDataModel=univerInstanceService.getCurrentUniverDocInstance(),activeRange=textSelectionManagerService.getActiveTextRangeWithStyle();if(docDataModel==null||activeRange==null)return!1;const{segmentId}=activeRange,tables=(_b=(_a11=docDataModel.getBody())==null?void 0:_a11.tables)!=null?_b:[],selections=(_c=textSelectionManagerService.getDocRanges())!=null?_c:[],paragraphs=(_d=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_d.paragraphs,serializedSelections=selections.map(serializeDocRange);if(paragraphs==null)return!1;const currentParagraphs=getParagraphsInRange$1(activeRange,paragraphs),unitId=docDataModel.getUnitId(),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:serializedSelections}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance(),customLists=(_e=docDataModel.getSnapshot().lists)!=null?_e:{},lists={...core.PRESET_LIST_TYPE,...customLists};for(const paragraph of currentParagraphs){const{startIndex,paragraphStyle={},bullet}=paragraph,isInTable=hasParagraphInTable(paragraph,tables);if(textX.push({t:core.TextXActionType.RETAIN,len:startIndex-memoryCursor.cursor,segmentId}),bullet){const listType=bullet.listType;let maxLevel=lists[listType].nestingLevel.length-1;isInTable&&(maxLevel=Math.min(maxLevel,2)),textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[{startIndex:0,paragraphStyle:{...paragraphStyle},bullet:{...bullet,nestingLevel:Math.max(Math.min(bullet.nestingLevel+type,maxLevel),0)}}]},segmentId,coverType:core.UpdateDocsAttributeType.REPLACE})}else textX.push({t:core.TextXActionType.RETAIN,len:1});memoryCursor.moveCursorTo(startIndex+1)}const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},BulletListCommand={id:"doc.command.bullet-list",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{const commandService=accessor.get(core.ICommandService);return params!=null&¶ms.value?commandService.syncExecuteCommand(ChangeListTypeCommand.id,{listType:params.value}):commandService.syncExecuteCommand(ListOperationCommand.id,{listType:core.PresetListType.BULLET_LIST})},"handler")},CheckListCommand={id:"doc.command.check-list",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{const commandService=accessor.get(core.ICommandService);return params!=null&¶ms.value?commandService.syncExecuteCommand(ChangeListTypeCommand.id,{listType:params.value}):commandService.syncExecuteCommand(ListOperationCommand.id,{listType:core.PresetListType.CHECK_LIST})},"handler")},ToggleCheckListCommand={id:"doc.command.toggle-check-list",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{var _a11;if(!params)return!1;const univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),{index,segmentId}=params,docDataModel=univerInstanceService.getCurrentUniverDocInstance();if(docDataModel==null)return!1;const paragraphs=(_a11=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_a11.paragraphs;if(paragraphs==null)return!1;const currentParagraph=paragraphs.find(p=>p.startIndex===index),unitId=docDataModel.getUnitId();if(!(currentParagraph!=null&¤tParagraph.bullet)||currentParagraph.bullet.listType.indexOf(core.PresetListType.CHECK_LIST)===-1)return!1;const doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:[],segmentId}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance(),{startIndex,paragraphStyle={}}=currentParagraph,listType=currentParagraph.bullet.listType===core.PresetListType.CHECK_LIST?core.PresetListType.CHECK_LIST_CHECKED:core.PresetListType.CHECK_LIST;textX.push({t:core.TextXActionType.RETAIN,len:startIndex-memoryCursor.cursor,segmentId}),textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[{...currentParagraph,paragraphStyle,startIndex:0,bullet:{...currentParagraph.bullet,listType}}]},coverType:core.UpdateDocsAttributeType.REPLACE,segmentId}),memoryCursor.moveCursorTo(startIndex+1);const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},OrderListCommand={id:"doc.command.order-list",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{const commandService=accessor.get(core.ICommandService);return params!=null&¶ms.value?commandService.syncExecuteCommand(ChangeListTypeCommand.id,{listType:params.value}):commandService.syncExecuteCommand(ListOperationCommand.id,{listType:core.PresetListType.ORDER_LIST})},"handler")},QuickListCommand={id:"doc.command.quick-list",type:core.CommandType.COMMAND,handler(accessor,params){var _a11,_b,_c,_d,_e;if(!params)return!1;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),docDataModel=univerInstanceService.getCurrentUniverDocInstance(),activeRange=textSelectionManagerService.getActiveTextRange();if(docDataModel==null||activeRange==null)return!1;const{segmentId}=activeRange,{listType,paragraph}=params,{paragraphStart,paragraphEnd}=paragraph,textX=new core.TextX,jsonX=core.JSONX.getInstance(),{defaultTabStop=36}=docDataModel.getSnapshot().documentStyle,sectionBreaks=(_b=(_a11=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_a11.sectionBreaks)!=null?_b:[],{startIndex,paragraphStyle={}}=paragraph,{indentFirstLine,snapToGrid,indentStart}=paragraphStyle,paragraphProperties=core.PRESET_LIST_TYPE[listType].nestingLevel[0].paragraphProperties||{},{hanging:listHanging,indentStart:listIndentStart}=paragraphProperties,bulletParagraphTextStyle=paragraphProperties.textStyle,{charSpace,gridType}=findNearestSectionBreak(startIndex,sectionBreaks)||{charSpace:0,gridType:core.GridType.LINES},charSpaceApply=engineRender.getCharSpaceApply(charSpace,defaultTabStop,gridType,snapToGrid);let listId=core.Tools.generateRandomId(6);const paragraphs=(_d=(_c=docDataModel.getBody())==null?void 0:_c.paragraphs)!=null?_d:[],curIndex=paragraphs.findIndex(i=>i.startIndex===paragraph.startIndex),prevParagraph=paragraphs[curIndex-1],nextParagraph=paragraphs[curIndex+1];prevParagraph&&prevParagraph.bullet&&prevParagraph.bullet.listType.indexOf(listType)===0?listId=prevParagraph.bullet.listId:nextParagraph&&nextParagraph.bullet&&nextParagraph.bullet.listType.indexOf(listType)===0&&(listId=nextParagraph.bullet.listId);const doMutation={id:RichTextEditingMutation.id,params:{unitId:docDataModel.getUnitId(),actions:[],textRanges:[{startOffset:paragraphStart,endOffset:paragraphStart,collapsed:!0}]}};textX.push({t:core.TextXActionType.RETAIN,len:paragraphStart}),textX.push({t:core.TextXActionType.DELETE,len:paragraphEnd-paragraphStart,line:1}),textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[{startIndex:0,paragraphStyle:{...paragraphStyle,textStyle:{...paragraphStyle.textStyle,...bulletParagraphTextStyle},indentFirstLine:void 0,hanging:listHanging,indentStart:{v:engineRender.getNumberUnitValue(listIndentStart,charSpaceApply)-engineRender.getNumberUnitValue(listHanging,charSpaceApply)+engineRender.getNumberUnitValue(indentFirstLine,charSpaceApply)+engineRender.getNumberUnitValue(indentStart,charSpaceApply)}},bullet:{...(_e=paragraph.bullet)!=null?_e:{nestingLevel:0,textStyle:{fs:20}},listType,listId}}]}});const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)}};function getParagraphsInRange$1(activeRange,paragraphs){const{startOffset,endOffset}=activeRange,results=[];let start=-1;for(const paragraph of paragraphs){const{startIndex}=paragraph;(startOffset>start&&startOffset<=startIndex||endOffset>start&&endOffset<=startIndex||startIndex>=startOffset&&startIndex<=endOffset)&&results.push(paragraph),start=startIndex}return results}__name(getParagraphsInRange$1,"getParagraphsInRange$1");function getParagraphsRelative(ranges,paragraphs){const selectionParagraphs=getParagraphsInRanges(ranges,paragraphs),startIndex=paragraphs.indexOf(selectionParagraphs[0]),endIndex=paragraphs.indexOf(selectionParagraphs[selectionParagraphs.length-1]);if(selectionParagraphs[0].bullet)for(let i=startIndex-1;i>=0;i--){const prevParagraph=paragraphs[i];prevParagraph.bullet&&prevParagraph.bullet.listId===selectionParagraphs[0].bullet.listId&&selectionParagraphs.unshift(prevParagraph)}const lastParagraph=selectionParagraphs[selectionParagraphs.length-1];if(lastParagraph.bullet)for(let i=endIndex+1;i<paragraphs.length;i++){const nextParagraph=paragraphs[i];nextParagraph.bullet&&nextParagraph.bullet.listId===lastParagraph.bullet.listId&&selectionParagraphs.push(nextParagraph)}return selectionParagraphs}__name(getParagraphsRelative,"getParagraphsRelative");function getParagraphsInRanges(ranges,paragraphs){const results=[];for(const range of ranges){const ps=getParagraphsInRange$1(range,paragraphs);results.push(...ps)}return results}__name(getParagraphsInRanges,"getParagraphsInRanges");function findNearestSectionBreak(currentIndex,sectionBreaks){const sortedSectionBreaks=sectionBreaks.sort(core.sortRulesFactory("startIndex"));for(let i=0;i<sortedSectionBreaks.length;i++){const sectionBreak=sectionBreaks[i];if(sectionBreak.startIndex>=currentIndex)return sectionBreak}}__name(findNearestSectionBreak,"findNearestSectionBreak");function isCustomRangeSplitSymbol(text){return text===core.DataStreamTreeTokenType.CUSTOM_RANGE_END||text===core.DataStreamTreeTokenType.CUSTOM_RANGE_START}__name(isCustomRangeSplitSymbol,"isCustomRangeSplitSymbol");function isIntersecting(line1Start,line1End,line2Start,line2End){return line1Start<=line2Start&&line1End>=line2Start||line1Start>=line2Start&&line1Start<=line2End}__name(isIntersecting,"isIntersecting");function shouldDeleteCustomRange(deleteStart,deleteLen,customRange,dataStream){const dataStreamSlice=dataStream.slice(customRange.startIndex+1,customRange.endIndex),start=Math.max(deleteStart-(customRange.startIndex+1),0),end=deleteStart+deleteLen-1-(customRange.startIndex+1);if(end<0)return!1;if(start===0&&end>=dataStreamSlice.length)return!0;const result=dataStreamSlice.slice(0,start)+dataStreamSlice.slice(start+deleteLen);for(let i=0,len=result.length;i<len;i++){const letter=result[i];if(!isCustomRangeSplitSymbol(letter))return!1}return!0}__name(shouldDeleteCustomRange,"shouldDeleteCustomRange");function getCustomRangesInterestsWithRange(range,customRanges){const result=[];for(let i=0,len=customRanges.length;i<len;i++){const customRange=customRanges[i];range.collapsed?customRange.startIndex<range.startOffset&&range.startOffset<=customRange.endIndex&&result.push(customRange):isIntersecting(range.startOffset,range.endOffset,customRange.startIndex,customRange.endIndex)&&result.push(customRange)}return result}__name(getCustomRangesInterestsWithRange,"getCustomRangesInterestsWithRange");function copyCustomRange(range){return{...core.Tools.deepClone(range),rangeId:core.generateRandomId()}}__name(copyCustomRange,"copyCustomRange");var DeleteDirection=(DeleteDirection2=>(DeleteDirection2[DeleteDirection2.LEFT=0]="LEFT",DeleteDirection2[DeleteDirection2.RIGHT=1]="RIGHT",DeleteDirection2))(DeleteDirection||{});function makeSelection(startOffset,endOffset){if(typeof endOffset>"u")return{startOffset,endOffset:startOffset,collapsed:!0};if(endOffset<startOffset)throw new Error(`Cannot make a doc selection when endOffset ${endOffset} is less than startOffset ${startOffset}.`);return{startOffset,endOffset,collapsed:startOffset===endOffset}}__name(makeSelection,"makeSelection");function normalizeSelection(selection){const{startOffset,endOffset,collapsed}=selection,start=Math.min(startOffset,endOffset),end=Math.max(startOffset,endOffset);return{startOffset:start,endOffset:end,collapsed}}__name(normalizeSelection,"normalizeSelection");function getSelectionWithSymbolMax(selection,body){let{startOffset,endOffset}=normalizeSelection(selection);for(;body.dataStream[startOffset-1]===core.DataStreamTreeTokenType.CUSTOM_RANGE_START;)startOffset-=1;for(;body.dataStream[endOffset]===core.DataStreamTreeTokenType.CUSTOM_RANGE_END;)endOffset+=1;return{startOffset,endOffset}}__name(getSelectionWithSymbolMax,"getSelectionWithSymbolMax");function getDeleteSelection(selection,body,direction=DeleteDirection.LEFT){var _a11;let{startOffset,endOffset,collapsed}=normalizeSelection(selection);if(collapsed)if(direction===DeleteDirection.LEFT)for(;isCustomRangeSplitSymbol(body.dataStream[startOffset-1]);)endOffset-=1,startOffset-=1;else for(;isCustomRangeSplitSymbol(body.dataStream[startOffset]);)endOffset+=1,startOffset+=1;else{const selectionWithSymbolMax=getSelectionWithSymbolMax(selection,body);startOffset=selectionWithSymbolMax.startOffset,endOffset=selectionWithSymbolMax.endOffset}collapsed=startOffset===endOffset;const customRanges=(_a11=body.customRanges)==null?void 0:_a11.filter(range=>!range.wholeEntity||startOffset<=range.startIndex&&endOffset>range.endIndex?!1:isSegmentIntersects(startOffset,collapsed?endOffset:endOffset-1,range.startIndex,range.endIndex));return customRanges!=null&&customRanges.length&&customRanges.forEach(range=>{startOffset=Math.min(range.startIndex,startOffset),endOffset=Math.max(range.endIndex+1,endOffset)}),{...selection,startOffset,endOffset,collapsed:startOffset===endOffset}}__name(getDeleteSelection,"getDeleteSelection");function getInsertSelection(selection,body){let{startOffset,endOffset,collapsed}=normalizeSelection(selection);if(collapsed){for(;body.dataStream[endOffset]===core.DataStreamTreeTokenType.CUSTOM_RANGE_END;)endOffset+=1,startOffset+=1;for(;body.dataStream[endOffset-1]===core.DataStreamTreeTokenType.CUSTOM_RANGE_START;)endOffset-=1,startOffset-=1;return{...selection,startOffset,endOffset,collapsed}}else return{...selection,...getSelectionWithSymbolMax(selection,body),collapsed:!1}}__name(getInsertSelection,"getInsertSelection");function getSelectionForAddCustomRange(selection,body){if(selection.startOffset===selection.endOffset)return null;const customRanges=body.customRanges;if(!customRanges)return normalizeSelection(selection);let{startOffset,endOffset}=getSelectionWithSymbolMax(selection,body);for(;isCustomRangeSplitSymbol(body.dataStream[startOffset]);){if(body.dataStream[startOffset]===core.DataStreamTreeTokenType.CUSTOM_RANGE_START){const customRange=customRanges.find(range=>range.startIndex===startOffset);if(!customRange)throw new Error("No custom-range matched");if(customRange.endIndex===endOffset-1)return{startOffset,endOffset,collapsed:!1};if(customRange.endIndex<endOffset-1)break}startOffset+=1}for(;isCustomRangeSplitSymbol(body.dataStream[endOffset-1]);){if(body.dataStream[startOffset]===core.DataStreamTreeTokenType.CUSTOM_RANGE_END){const customRange=customRanges.find(range=>range.endIndex===endOffset-1);if(!customRange)throw new Error("No custom-range matched");if(customRange.startIndex===startOffset)return{startOffset,endOffset,collapsed:!1};if(customRange.startIndex>startOffset)break}endOffset-=1}return endOffset<=startOffset?null:{startOffset,endOffset,collapsed:!1}}__name(getSelectionForAddCustomRange,"getSelectionForAddCustomRange");const tags=[core.DataStreamTreeTokenType.PARAGRAPH,core.DataStreamTreeTokenType.SECTION_BREAK,core.DataStreamTreeTokenType.TABLE_START,core.DataStreamTreeTokenType.TABLE_ROW_START,core.DataStreamTreeTokenType.TABLE_CELL_START,core.DataStreamTreeTokenType.TABLE_CELL_END,core.DataStreamTreeTokenType.TABLE_ROW_END,core.DataStreamTreeTokenType.TABLE_END,core.DataStreamTreeTokenType.CUSTOM_RANGE_START,core.DataStreamTreeTokenType.CUSTOM_RANGE_END,core.DataStreamTreeTokenType.COLUMN_BREAK,core.DataStreamTreeTokenType.PAGE_BREAK,core.DataStreamTreeTokenType.DOCS_END,core.DataStreamTreeTokenType.TAB,core.DataStreamTreeTokenType.CUSTOM_BLOCK];function getSelectionText(dataStream,start,end){const text=dataStream.slice(start,end);return tags.reduce((res,curr)=>res.replaceAll(curr,""),text)}__name(getSelectionText,"getSelectionText");function isSegmentIntersects(start,end,start2,end2){return Math.max(start,start2)<=Math.min(end,end2)}__name(isSegmentIntersects,"isSegmentIntersects");function getRetainAndDeleteAndExcludeLineBreak(selection,body,segmentId="",memoryCursor=0,preserveLineBreak=!0){var _a11;const{startOffset,endOffset}=getDeleteSelection(selection,body),dos=[],{paragraphs=[],dataStream}=body,textStart=startOffset-memoryCursor,textEnd=endOffset-memoryCursor,paragraphInRange=paragraphs==null?void 0:paragraphs.find(p=>p.startIndex-memoryCursor>=textStart&&p.startIndex-memoryCursor<textEnd),relativeCustomRanges=(_a11=body.customRanges)==null?void 0:_a11.filter(customRange=>isIntersecting(customRange.startIndex,customRange.endIndex,startOffset,endOffset)),toDeleteRanges=new Set(relativeCustomRanges==null?void 0:relativeCustomRanges.filter(customRange=>shouldDeleteCustomRange(startOffset,endOffset-startOffset,customRange,dataStream))),retainPoints=new Set;if(relativeCustomRanges==null||relativeCustomRanges.forEach(range=>{toDeleteRanges.has(range)||(range.startIndex-memoryCursor>=textStart&&range.startIndex-memoryCursor<=textEnd&&range.endIndex-memoryCursor>textEnd&&retainPoints.add(range.startIndex),range.endIndex-memoryCursor>=textStart&&range.endIndex-memoryCursor<=textEnd&&range.startIndex<textStart&&retainPoints.add(range.endIndex))}),textStart>0&&dos.push({t:core.TextXActionType.RETAIN,len:textStart,segmentId}),preserveLineBreak&¶graphInRange&¶graphInRange.startIndex-memoryCursor>textStart){const paragraphIndex=paragraphInRange.startIndex-memoryCursor;retainPoints.add(paragraphIndex)}const sortedRetains=[...retainPoints].sort((pre,aft)=>pre-aft);let cursor=textStart;return sortedRetains.forEach(pos=>{const len=pos-cursor;len>0&&dos.push({t:core.TextXActionType.DELETE,len,line:0,segmentId}),dos.push({t:core.TextXActionType.RETAIN,len:1,segmentId}),cursor=pos+1}),cursor<textEnd&&dos.push({t:core.TextXActionType.DELETE,len:textEnd-cursor,line:0,segmentId}),dos}__name(getRetainAndDeleteAndExcludeLineBreak,"getRetainAndDeleteAndExcludeLineBreak");function replaceSelectionFactory(accessor,params){var _a11,_b,_c,_d;const{unitId,originBody,body:insertBody}=params,docDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId);if(!docDataModel)return!1;const segmentId=(_a11=params.selection)==null?void 0:_a11.segmentId;let body;if(params.originBody?body=originBody:body=(_b=docDataModel.getSelfOrHeaderFooterModel(segmentId))==null?void 0:_b.getBody(),!body)return!1;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),selection=(_c=params.selection)!=null?_c:textSelectionManagerService.getActiveTextRangeWithStyle();if(!selection||!body)return!1;const textRanges=(_d=params.textRanges)!=null?_d:[{startOffset:selection.startOffset+insertBody.dataStream.length,endOffset:selection.startOffset+insertBody.dataStream.length,collapsed:!0,segmentId}],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges,debounce:!0,segmentId}},textX=new core.TextX,jsonX=core.JSONX.getInstance();textX.push(...getRetainAndDeleteAndExcludeLineBreak(selection,body,segmentId)),textX.push({t:core.TextXActionType.INSERT,body:insertBody,len:insertBody.dataStream.length,line:0,segmentId});const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),doMutation}__name(replaceSelectionFactory,"replaceSelectionFactory");var DOCS_VIEW_KEY=(DOCS_VIEW_KEY2=>(DOCS_VIEW_KEY2.MAIN="__Document_Render_Main__",DOCS_VIEW_KEY2.BACKGROUND="__Document_Render_Background__",DOCS_VIEW_KEY2))(DOCS_VIEW_KEY||{}),VIEWPORT_KEY=(VIEWPORT_KEY2=>(VIEWPORT_KEY2.VIEW_MAIN="viewMain",VIEWPORT_KEY2.VIEW_TOP="viewTop",VIEWPORT_KEY2.VIEW_LEFT="viewLeft",VIEWPORT_KEY2.VIEW_LEFT_TOP="viewLeftTop",VIEWPORT_KEY2))(VIEWPORT_KEY||{});const DOCS_COMPONENT_BACKGROUND_LAYER_INDEX=0,DOCS_COMPONENT_MAIN_LAYER_INDEX=2,DOCS_COMPONENT_HEADER_LAYER_INDEX=4,DOCS_COMPONENT_DEFAULT_Z_INDEX=10,NORMAL_TEXT_SELECTION_PLUGIN_NAME="normalTextSelectionPluginName";function neoGetDocObject(renderContext){const{mainComponent,scene,engine,components}=renderContext,document=mainComponent,docBackground=components.get(DOCS_VIEW_KEY.BACKGROUND);return{document,docBackground,scene,engine}}__name(neoGetDocObject,"neoGetDocObject");function getDocObject(univerInstanceService,renderManagerService){const documentModel=univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_DOC);if(!documentModel)return null;const unitId=documentModel.getUnitId(),currentRender=renderManagerService.getRenderById(unitId);if(currentRender==null)return;const{mainComponent,scene,engine,components}=currentRender,document=mainComponent,docBackground=components.get(DOCS_VIEW_KEY.BACKGROUND);return{document,docBackground,scene,engine}}__name(getDocObject,"getDocObject");function getDocObjectById(unitId,renderManagerService){const currentRender=renderManagerService.getRenderById(unitId);if(currentRender==null)return;const{mainComponent,scene,engine,components}=currentRender,document=mainComponent,docBackground=components.get(DOCS_VIEW_KEY.BACKGROUND);return{document,docBackground,scene,engine}}__name(getDocObjectById,"getDocObjectById");function getRetainAndDeleteFromReplace(range,segmentId="",memoryCursor,body){var _a11;const{startOffset,endOffset}=range,dos=[],textStart=startOffset-memoryCursor,textEnd=endOffset-memoryCursor,dataStream=body.dataStream,relativeCustomRanges=(_a11=body.customRanges)==null?void 0:_a11.filter(customRange=>isIntersecting(customRange.startIndex,customRange.endIndex,startOffset,endOffset)),toDeleteRanges=new Set(relativeCustomRanges==null?void 0:relativeCustomRanges.filter(customRange=>shouldDeleteCustomRange(startOffset,endOffset-startOffset,customRange,dataStream))),retainPoints=new Set;relativeCustomRanges==null||relativeCustomRanges.forEach(range2=>{toDeleteRanges.has(range2)||(range2.startIndex-memoryCursor>=textStart&&range2.startIndex-memoryCursor<=textEnd&&range2.endIndex-memoryCursor>textEnd&&retainPoints.add(range2.startIndex),range2.endIndex-memoryCursor>=textStart&&range2.endIndex-memoryCursor<=textEnd&&range2.startIndex<textStart&&retainPoints.add(range2.endIndex))}),textStart>0&&dos.push({t:core.TextXActionType.RETAIN,len:textStart,segmentId});const sortedRetains=[...retainPoints].sort((pre,aft)=>pre-aft);let cursor=textStart;return sortedRetains.forEach(pos=>{const len=pos-cursor;len>0&&dos.push({t:core.TextXActionType.DELETE,len,line:0,segmentId}),dos.push({t:core.TextXActionType.RETAIN,len:1,segmentId}),cursor=pos+1}),cursor<textEnd&&(dos.push({t:core.TextXActionType.DELETE,len:textEnd-cursor,line:0,segmentId}),cursor=textEnd+1),{dos,cursor,retain:retainPoints.size}}__name(getRetainAndDeleteFromReplace,"getRetainAndDeleteFromReplace");const EditorInsertTextCommandId="doc.command.insert-text",InsertCommand={id:EditorInsertTextCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11;const commandService=accessor.get(core.ICommandService),{range,segmentId,body,unitId,cursorOffset}=params,textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),docDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId,core.UniverInstanceType.UNIVER_DOC);if(docDataModel==null)return!1;const activeRange=textSelectionManagerService.getActiveTextRangeWithStyle(),originBody=docDataModel.getSelfOrHeaderFooterModel((_a11=activeRange==null?void 0:activeRange.segmentId)!=null?_a11:"").getBody();if(!originBody)return!1;const actualRange=getInsertSelection(range,originBody),{startOffset,collapsed}=actualRange,cursorMove=cursorOffset!=null?cursorOffset:body.dataStream.length,textRanges=[{startOffset:startOffset+cursorMove,endOffset:startOffset+cursorMove,style:activeRange==null?void 0:activeRange.style,collapsed}],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges,debounce:!0}},textX=new core.TextX,jsonX=core.JSONX.getInstance();if(collapsed)startOffset>0&&textX.push({t:core.TextXActionType.RETAIN,len:startOffset,segmentId});else{const{dos,retain}=getRetainAndDeleteFromReplace(actualRange,segmentId,0,originBody);textX.push(...dos),doMutation.params.textRanges=[{startOffset:startOffset+cursorMove+retain,endOffset:startOffset+cursorMove+retain,collapsed}]}textX.push({t:core.TextXActionType.INSERT,body,len:body.dataStream.length,line:0,segmentId});const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DeleteCommand={id:"doc.command.delete-text",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11;const commandService=accessor.get(core.ICommandService),univerInstanceService=accessor.get(core.IUniverInstanceService),{range,segmentId,unitId,direction,len=1}=params,docDataModel=univerInstanceService.getUnit(unitId,core.UniverInstanceType.UNIVER_DOC),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const{startOffset}=range,dataStream=body.dataStream,start=direction===DeleteDirection.LEFT?startOffset-len:startOffset,end=start+len-1,relativeCustomRanges=(_a11=body.customRanges)==null?void 0:_a11.filter(customRange=>isIntersecting(customRange.startIndex,customRange.endIndex,start,end)),toDeleteRanges=relativeCustomRanges==null?void 0:relativeCustomRanges.filter(customRange=>shouldDeleteCustomRange(start,len,customRange,dataStream)),deleteIndexes=[];for(let i=0;i<len;i++)deleteIndexes.push(start+i);toDeleteRanges==null||toDeleteRanges.forEach(range2=>{deleteIndexes.push(range2.startIndex,range2.endIndex)}),deleteIndexes.sort((pre,aft)=>pre-aft);const deleteStart=deleteIndexes[0],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:[{startOffset:deleteStart,endOffset:deleteStart,collapsed:!0}],debounce:!0}},textX=new core.TextX,jsonX=core.JSONX.getInstance();let cursor=0;for(let i=0;i<deleteIndexes.length;i++){const deleteIndex=deleteIndexes[i];deleteIndex-cursor>0&&textX.push({t:core.TextXActionType.RETAIN,len:deleteIndex-cursor,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:1,segmentId,line:0}),cursor=deleteIndex+1}const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},UpdateCommand={id:"doc.command.update-text",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{range,segmentId,updateBody,coverType,unitId,textRanges}=params,commandService=accessor.get(core.ICommandService),docDataModel=accessor.get(core.IUniverInstanceService).getCurrentUniverDocInstance();if(docDataModel==null)return!1;const doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}},textX=new core.TextX,jsonX=core.JSONX.getInstance(),{startOffset,endOffset}=range;textX.push({t:core.TextXActionType.RETAIN,len:startOffset,segmentId}),textX.push({t:core.TextXActionType.RETAIN,body:updateBody,len:endOffset-startOffset,segmentId,coverType});const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")};function generateParagraphs(dataStream,prevParagraph){var _a11,_b;const paragraphs=[];for(let i=0,len=dataStream.length;i<len;i++)dataStream[i]===core.DataStreamTreeTokenType.PARAGRAPH&¶graphs.push({startIndex:i});if(prevParagraph)for(const paragraph of paragraphs)prevParagraph.bullet&&(paragraph.bullet=core.Tools.deepClone(prevParagraph.bullet),paragraph.bullet.listType===core.PresetListType.CHECK_LIST_CHECKED&&(paragraph.bullet.listType=core.PresetListType.CHECK_LIST)),prevParagraph.paragraphStyle&&(paragraph.paragraphStyle=core.Tools.deepClone(prevParagraph.paragraphStyle),((_a11=prevParagraph.bullet)==null?void 0:_a11.listType)===core.PresetListType.CHECK_LIST_CHECKED&&(_b=paragraph.paragraphStyle)!=null&&_b.textStyle&&(paragraph.paragraphStyle.textStyle.st={s:core.BooleanNumber.FALSE}));return paragraphs}__name(generateParagraphs,"generateParagraphs");const BreakLineCommand={id:"doc.command.break-line",type:core.CommandType.COMMAND,handler:__name(async accessor=>{var _a11,_b;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeTextRange=textSelectionManagerService.getActiveTextRangeWithStyle(),rectRanges=textSelectionManagerService.getCurrentRectRanges();if(activeTextRange==null)return!1;if(rectRanges&&rectRanges.length){const{startOffset:startOffset2}=activeTextRange;return textSelectionManagerService.replaceTextRanges([{startOffset:startOffset2,endOffset:startOffset2}]),!0}const{segmentId}=activeTextRange,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(!docDataModel||!body)return!1;const unitId=docDataModel.getUnitId(),{startOffset,endOffset}=getInsertSelection(activeTextRange,body),prevParagraph=((_a11=body.paragraphs)!=null?_a11:[]).find(p=>p.startIndex>=startOffset);if(prevParagraph&&prevParagraph.startIndex>endOffset){const bodyAfter=core.normalizeBody(core.getBodySlice(body,endOffset,prevParagraph.startIndex+1));bodyAfter.customRanges=(_b=bodyAfter.customRanges)==null?void 0:_b.map(copyCustomRange);const deleteRange={startOffset,endOffset:prevParagraph.startIndex+1,collapsed:!1};return core.updateAttributeByInsert(bodyAfter,{dataStream:core.DataStreamTreeTokenType.PARAGRAPH,paragraphs:generateParagraphs(core.DataStreamTreeTokenType.PARAGRAPH,prevParagraph)},1,0),await commandService.executeCommand(InsertCommand.id,{unitId,body:bodyAfter,range:deleteRange,segmentId,cursorOffset:1})}else return await commandService.executeCommand(InsertCommand.id,{unitId,body:{dataStream:core.DataStreamTreeTokenType.PARAGRAPH,paragraphs:generateParagraphs(core.DataStreamTreeTokenType.PARAGRAPH,prevParagraph)},range:activeTextRange,segmentId})},"handler")};var INSERT_ROW_POSITION=(INSERT_ROW_POSITION2=>(INSERT_ROW_POSITION2[INSERT_ROW_POSITION2.ABOVE=0]="ABOVE",INSERT_ROW_POSITION2[INSERT_ROW_POSITION2.BELLOW=1]="BELLOW",INSERT_ROW_POSITION2))(INSERT_ROW_POSITION||{}),INSERT_COLUMN_POSITION=(INSERT_COLUMN_POSITION2=>(INSERT_COLUMN_POSITION2[INSERT_COLUMN_POSITION2.LEFT=0]="LEFT",INSERT_COLUMN_POSITION2[INSERT_COLUMN_POSITION2.RIGHT=1]="RIGHT",INSERT_COLUMN_POSITION2))(INSERT_COLUMN_POSITION||{});function genEmptyTable(rowCount,colCount){let dataStream=core.DataStreamTreeTokenType.TABLE_START;const paragraphs=[],sectionBreaks=[];for(let i=0;i<rowCount;i++){dataStream+=core.DataStreamTreeTokenType.TABLE_ROW_START;for(let j=0;j<colCount;j++)dataStream+=`${core.DataStreamTreeTokenType.TABLE_CELL_START}\r
|
|
2
2
|
${core.DataStreamTreeTokenType.TABLE_CELL_END}`,paragraphs.push({startIndex:dataStream.length-3,paragraphStyle:{spaceAbove:{v:3},lineSpacing:2,spaceBelow:{v:0}}}),sectionBreaks.push({startIndex:dataStream.length-2});dataStream+=core.DataStreamTreeTokenType.TABLE_ROW_END}return dataStream+=core.DataStreamTreeTokenType.TABLE_END,{dataStream,paragraphs,sectionBreaks}}__name(genEmptyTable,"genEmptyTable");function getEmptyTableCell(){return{margin:{start:{v:10},end:{v:10},top:{v:5},bottom:{v:5}}}}__name(getEmptyTableCell,"getEmptyTableCell");function getEmptyTableRow(col){const tableCell=getEmptyTableCell();return{tableCells:[...new Array(col).fill(null).map(()=>core.Tools.deepClone(tableCell))],trHeight:{val:{v:30},hRule:core.TableCellHeightRule.AUTO}}}__name(getEmptyTableRow,"getEmptyTableRow");function getTableColumn(width){return{size:{type:core.TableSizeType.SPECIFIED,width:{v:width}}}}__name(getTableColumn,"getTableColumn");function genTableSource(rowCount,colCount,pageContentWidth){const tableColumn=getTableColumn(pageContentWidth/colCount),tableRow=getEmptyTableRow(colCount),tableRows=[...new Array(rowCount).fill(null).map(()=>core.Tools.deepClone(tableRow))],tableColumns=[...new Array(colCount).fill(null).map(()=>core.Tools.deepClone(tableColumn))],tableId=core.generateRandomId(6);return{tableRows,tableColumns,tableId,align:core.TableAlignmentType.START,indent:{v:0},textWrap:core.TableTextWrapType.NONE,position:{positionH:{relativeFrom:core.ObjectRelativeFromH.PAGE,posOffset:0},positionV:{relativeFrom:core.ObjectRelativeFromV.PAGE,posOffset:0}},dist:{distB:0,distL:0,distR:0,distT:0},cellMargin:{start:{v:10},end:{v:10},top:{v:5},bottom:{v:5}},size:{type:core.TableSizeType.UNSPECIFIED,width:{v:pageContentWidth}}}}__name(genTableSource,"genTableSource");function getRangeInfoFromRanges(textRange,rectRanges){if(!textRange&&!rectRanges)return null;if(rectRanges&&rectRanges.length>0){let startOffset=Number.POSITIVE_INFINITY,endOffset=Number.NEGATIVE_INFINITY;const segmentId="";for(const rectRange of rectRanges){const{startOffset:st,endOffset:ed,segmentId:sid}=rectRange;st==null||ed==null||sid==null||(startOffset=Math.min(startOffset,st),endOffset=Math.max(endOffset,ed))}if(Number.isFinite(startOffset)&&Number.isFinite(endOffset))return{startOffset,endOffset,segmentId}}else if(textRange){const{startOffset,endOffset,segmentId}=textRange;return startOffset==null||endOffset==null||segmentId==null?null:{startOffset,endOffset,segmentId}}}__name(getRangeInfoFromRanges,"getRangeInfoFromRanges");function getInsertRowBody(col){let dataStream=core.DataStreamTreeTokenType.TABLE_ROW_START;const paragraphs=[],sectionBreaks=[];for(let i=0;i<col;i++)dataStream+=`${core.DataStreamTreeTokenType.TABLE_CELL_START}\r
|
|
3
3
|
${core.DataStreamTreeTokenType.TABLE_CELL_END}`,paragraphs.push({startIndex:dataStream.length-3,paragraphStyle:{spaceAbove:{v:3},lineSpacing:2,spaceBelow:{v:0}}}),sectionBreaks.push({startIndex:dataStream.length-2});return dataStream+=core.DataStreamTreeTokenType.TABLE_ROW_END,{dataStream,paragraphs,sectionBreaks}}__name(getInsertRowBody,"getInsertRowBody");function getInsertColumnBody(){const dataStream=`${core.DataStreamTreeTokenType.TABLE_CELL_START}\r
|
|
4
|
-
${core.DataStreamTreeTokenType.TABLE_CELL_END}`,paragraphs=[],sectionBreaks=[];return paragraphs.push({startIndex:1,paragraphStyle:{spaceAbove:{v:3},lineSpacing:2,spaceBelow:{v:0}}}),sectionBreaks.push({startIndex:2}),{dataStream,paragraphs,sectionBreaks}}__name(getInsertColumnBody,"getInsertColumnBody");function getInsertRowActionsParams(rangeInfo,position,viewModel){var _a11,_b,_c;const{startOffset,endOffset,segmentId}=rangeInfo,vm=viewModel.getSelfOrHeaderFooterViewModel(segmentId),index=position===0?startOffset:endOffset;let tableRow=null;const tableId=(_c=(_b=(_a11=viewModel.getBody())==null?void 0:_a11.tables)==null?void 0:_b.find(t=>index>=t.startIndex&&index<=t.endIndex))==null?void 0:_c.tableId;let rowIndex=0;for(const section of vm.children){for(const paragraph of section.children){const{children}=paragraph,table=children[0];if(table){for(const row of table.children)if(row.startIndex<=index&&index<=row.endIndex){rowIndex=table.children.indexOf(row),tableRow=row;break}}if(tableRow)break}if(tableRow)break}return tableRow==null||tableId==null?null:{offset:position===0?tableRow.startIndex:tableRow.endIndex+1,colCount:tableRow.children.length,tableId,insertRowIndex:position===0?rowIndex:rowIndex+1}}__name(getInsertRowActionsParams,"getInsertRowActionsParams");function getInsertColumnActionsParams(rangeInfo,position,viewModel){var _a11,_b,_c;const{startOffset,endOffset,segmentId}=rangeInfo,vm=viewModel.getSelfOrHeaderFooterViewModel(segmentId),index=position===0?startOffset:endOffset,tableId=(_c=(_b=(_a11=viewModel.getBody())==null?void 0:_a11.tables)==null?void 0:_b.find(t=>index>=t.startIndex&&index<=t.endIndex))==null?void 0:_c.tableId,offsets=[];let table=null,columnIndex=-1;for(const section of vm.children){for(const paragraph of section.children){const{children}=paragraph,tableNode=children[0];if(tableNode){if(index<tableNode.startIndex||index>tableNode.endIndex)continue;table=tableNode;for(const row of tableNode.children){for(const cell of row.children){const cellIndex=row.children.indexOf(cell);if(index>=cell.startIndex&&index<=cell.endIndex){columnIndex=cellIndex;break}}if(columnIndex!==-1)break}}if(table)break}if(table)break}if(table==null||tableId==null||columnIndex===-1)return null;let cursor=0;for(const row of table.children){const cell=row.children[columnIndex],insertIndex=position===0?cell.startIndex:cell.endIndex+1;offsets.push(insertIndex-cursor),cursor=insertIndex}return{offsets,tableId,columnIndex,rowCount:table.children.length}}__name(getInsertColumnActionsParams,"getInsertColumnActionsParams");function getColumnWidths(pageWidth,tableColumns,insertColumnIndex){const widths=[];let newColWidth=tableColumns[insertColumnIndex].size.width.v,totalWidth=0;for(let i=0;i<tableColumns.length;i++)totalWidth+=tableColumns[i].size.width.v;totalWidth+=newColWidth;for(let i=0;i<tableColumns.length;i++)widths.push(tableColumns[i].size.width.v/totalWidth*pageWidth);return newColWidth=newColWidth/totalWidth*pageWidth,{widths,newColWidth}}__name(getColumnWidths,"getColumnWidths");function getDeleteRowsActionsParams(rangeInfo,viewModel){var _a11,_b,_c;const{startOffset,endOffset,segmentId}=rangeInfo,vm=viewModel.getSelfOrHeaderFooterViewModel(segmentId),tableId=(_c=(_b=(_a11=viewModel.getBody())==null?void 0:_a11.tables)==null?void 0:_b.find(t=>startOffset>=t.startIndex&&endOffset<=t.endIndex))==null?void 0:_c.tableId,rowIndexes=[];let offset=-1,len=0,cursor=-1,selectWholeTable=!1;for(const section of vm.children){for(const paragraph of section.children){const{children}=paragraph,table=children[0];if(table){if(startOffset<table.startIndex||endOffset>table.endIndex)continue;cursor=table.startIndex+3;for(const row of table.children){const rowIndex=table.children.indexOf(row),{startIndex,endIndex}=row;startOffset>=startIndex&&startOffset<=endIndex?(offset=startIndex,rowIndexes.push(rowIndex),len+=endIndex-startIndex+1):(startIndex>startOffset&&endIndex<endOffset||endOffset>=startIndex&&endOffset<=endIndex)&&(rowIndexes.push(rowIndex),len+=endIndex-startIndex+1),rowIndexes.length===table.children.length&&(selectWholeTable=!0)}}if(rowIndexes.length)break}if(rowIndexes.length)break}return tableId==null||rowIndexes.length===0?null:{tableId,rowIndexes,offset,len,cursor,selectWholeTable}}__name(getDeleteRowsActionsParams,"getDeleteRowsActionsParams");function getDeleteColumnsActionParams(rangeInfo,viewModel){var _a11,_b,_c;const{startOffset,endOffset,segmentId}=rangeInfo,vm=viewModel.getSelfOrHeaderFooterViewModel(segmentId),tableId=(_c=(_b=(_a11=viewModel.getBody())==null?void 0:_a11.tables)==null?void 0:_b.find(t=>startOffset>=t.startIndex&&endOffset<=t.endIndex))==null?void 0:_c.tableId,offsets=[];let table=null;const columnIndexes=[];let cursor=-1,startColumnIndex=-1,endColumnIndex=-1;for(const section of vm.children){for(const paragraph of section.children){const{children}=paragraph,tableNode=children[0];if(tableNode){if(startOffset<tableNode.startIndex||endOffset>tableNode.endIndex)continue;table=tableNode;for(const row of tableNode.children)for(const cell of row.children){const cellIndex=row.children.indexOf(cell);startOffset>=cell.startIndex&&startOffset<=cell.endIndex&&(startColumnIndex=cellIndex),endOffset>=cell.startIndex&&endOffset<=cell.endIndex&&(endColumnIndex=cellIndex)}}if(table)break}if(table)break}if(table==null||tableId==null)return null;for(let i=startColumnIndex;i<=endColumnIndex;i++)columnIndexes.push(i);let delta=0;for(const row of table.children){const startCell=row.children[startColumnIndex],endCell=row.children[endColumnIndex];offsets.push({retain:startCell.startIndex-delta,delete:endCell.endIndex-startCell.startIndex+1}),delta=endCell.endIndex+1}return cursor=table.startIndex+3,{offsets,tableId,columnIndexes,cursor,selectWholeTable:columnIndexes.length===table.children[0].children.length,rowCount:table.children.length}}__name(getDeleteColumnsActionParams,"getDeleteColumnsActionParams");function getDeleteTableActionParams(rangeInfo,viewModel){var _a11,_b,_c;const{startOffset,endOffset,segmentId}=rangeInfo,vm=viewModel.getSelfOrHeaderFooterViewModel(segmentId),tableId=(_c=(_b=(_a11=viewModel.getBody())==null?void 0:_a11.tables)==null?void 0:_b.find(t=>startOffset>=t.startIndex&&endOffset<=t.endIndex))==null?void 0:_c.tableId;let offset=-1,len=0,cursor=-1;for(const section of vm.children){for(const paragraph of section.children){const{children}=paragraph,table=children[0];if(table){if(startOffset<table.startIndex||endOffset>table.endIndex)continue;offset=table.startIndex,len=table.endIndex-table.startIndex+1,cursor=table.startIndex}if(table)break}if(len>0)break}return tableId==null?null:{tableId,offset,len,cursor}}__name(getDeleteTableActionParams,"getDeleteTableActionParams");function getDeleteRowContentActionParams(rangeInfo,viewModel){var _a11,_b,_c;const{startOffset,endOffset,segmentId}=rangeInfo,vm=viewModel.getSelfOrHeaderFooterViewModel(segmentId),tableId=(_c=(_b=(_a11=viewModel.getBody())==null?void 0:_a11.tables)==null?void 0:_b.find(t=>startOffset>=t.startIndex&&endOffset<=t.endIndex))==null?void 0:_c.tableId,offsets=[];let table=null,cursor=-1,rowIndex=-1,startColumnIndex=-1,endColumnIndex=-1;for(const section of vm.children){for(const paragraph of section.children){const{children}=paragraph,tableNode=children[0];if(tableNode){if(startOffset<tableNode.startIndex||endOffset>tableNode.endIndex)continue;table=tableNode;for(const row2 of tableNode.children){const rIndex=tableNode.children.indexOf(row2);for(const cell of row2.children){const cellIndex=row2.children.indexOf(cell);startOffset>=cell.startIndex&&startOffset<=cell.endIndex&&(rowIndex=rIndex,startColumnIndex=cellIndex),endOffset>=cell.startIndex&&endOffset<=cell.endIndex&&(endColumnIndex=cellIndex)}}}if(table)break}if(table)break}if(table==null||tableId==null||rowIndex===-1)return null;const row=table.children[rowIndex];for(let i=startColumnIndex;i<=endColumnIndex;i++){const cell=row.children[i];offsets.push({retain:cell.startIndex+1,delete:cell.endIndex-cell.startIndex-3})}return cursor=table.startIndex+3,{offsets,tableId,cursor,rowCount:table.children.length}}__name(getDeleteRowContentActionParams,"getDeleteRowContentActionParams");var CellPosition=(CellPosition2=>(CellPosition2[CellPosition2.NEXT=0]="NEXT",CellPosition2[CellPosition2.PREV=1]="PREV",CellPosition2))(CellPosition||{});function getCellOffsets(viewModel,range,position){const{startOffset}=range;let targetTable=null;for(const section of viewModel.children){for(const paragraph of section.children){const table=paragraph.children[0];if(table&&startOffset>table.startIndex&&startOffset<table.endIndex){targetTable=table;break}}if(targetTable)break}if(targetTable==null)return null;let cellIndex=-1,rowIndex=-1,targetRow=null;for(const row of targetTable.children){for(const cell of row.children)if(startOffset>cell.startIndex&&startOffset<cell.endIndex){cellIndex=row.children.indexOf(cell),rowIndex=targetTable.children.indexOf(row),targetRow=row;break}if(cellIndex>-1)break}if(cellIndex===-1||rowIndex===-1||targetRow==null)return null;let newCell=null;if(position===0){if(newCell=targetRow.children[cellIndex+1],!newCell){const nextRow=targetTable.children[rowIndex+1];nextRow&&(newCell=nextRow.children[0])}}else if(newCell=targetRow.children[cellIndex-1],!newCell){const prevRow=targetTable.children[rowIndex-1];prevRow&&(newCell=prevRow.children[prevRow.children.length-1])}if(newCell){const{startIndex,endIndex}=newCell;return{startOffset:startIndex+1,endOffset:endIndex-2}}}__name(getCellOffsets,"getCellOffsets");function getCustomBlockIdsInSelections(body,selections){const customBlockIds=[],{customBlocks=[]}=body;for(const selection of selections){const{startOffset,endOffset}=selection;if(!(startOffset==null||endOffset==null))for(const customBlock of customBlocks){const{startIndex}=customBlock;startIndex>=startOffset&&startIndex<endOffset&&customBlockIds.push(customBlock.blockId)}}return customBlockIds}__name(getCustomBlockIdsInSelections,"getCustomBlockIdsInSelections");function hasRangeInTable(ranges){return ranges.some(range=>{const{anchorNodePosition}=range;return anchorNodePosition?(anchorNodePosition==null?void 0:anchorNodePosition.path.indexOf("cells"))>-1:!1})}__name(hasRangeInTable,"hasRangeInTable");const InnerPasteCommand={id:"doc.command.inner-paste",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11,_b,_c,_d;const{segmentId,textRanges,doc}=params,commandService=accessor.get(core.ICommandService),textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selections=textSelectionManagerService.getCurrentTextRanges(),{body,tableSource,drawings}=doc;if(!Array.isArray(selections)||selections.length===0||body==null)return!1;const docDataModel=univerInstanceService.getCurrentUniverDocInstance(),originBody=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||originBody==null)return!1;const unitId=docDataModel.getUnitId(),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges,segmentId}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance(),rawActions=[],hasTable=!!((_a11=body.tables)!=null&&_a11.length),hasCustomBlock=!!((_b=body.customBlocks)!=null&&_b.length);if(hasTable&&segmentId||hasTable&&hasRangeInTable(selections))return!1;for(const selection of selections){const{startOffset,endOffset,collapsed}=selection,len=startOffset-memoryCursor.cursor,cloneBody=core.Tools.deepClone(body);if(hasTable)for(const t of cloneBody.tables){const{tableId:oldTableId}=t,tableId=core.Tools.generateRandomId(6);t.tableId=tableId;const table=core.Tools.deepClone(tableSource[oldTableId]);table.tableId=tableId;const action=jsonX.insertOp(["tableSource",tableId],table);rawActions.push(action)}if(hasCustomBlock&&drawings){const drawingLen=(_d=(_c=docDataModel.getSnapshot().drawingsOrder)==null?void 0:_c.length)!=null?_d:0;for(const block of cloneBody.customBlocks){const{blockId}=block,drawingId=core.Tools.generateRandomId(6);block.blockId=drawingId;const drawing=core.Tools.deepClone(drawings[blockId]);drawing.drawingId=drawingId;const action=jsonX.insertOp(["drawings",drawingId],drawing),orderAction=jsonX.insertOp(["drawingsOrder",drawingLen],drawingId);rawActions.push(action),rawActions.push(orderAction)}}if(collapsed)textX.push({t:core.TextXActionType.RETAIN,len,segmentId});else{const{dos}=getRetainAndDeleteFromReplace(selection,segmentId,memoryCursor.cursor,originBody);textX.push(...dos)}textX.push({t:core.TextXActionType.INSERT,body:cloneBody,len:body.dataStream.length,line:0,segmentId}),memoryCursor.reset(),memoryCursor.moveCursor(endOffset)}const path=getRichTextEditPath(docDataModel,segmentId);return rawActions.push(jsonX.editOp(textX.serialize(),path)),doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")};function getCutActionsFromTextRanges(selections,docDataModel,segmentId){var _a11,_b;const originBody=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody(),textX=new core.TextX,jsonX=core.JSONX.getInstance(),rawActions=[];if(originBody==null)return rawActions;const memoryCursor=new core.MemoryCursor;memoryCursor.reset();for(const selection of selections){const{startOffset,endOffset,collapsed}=selection;if(startOffset==null||endOffset==null)continue;const len=startOffset-memoryCursor.cursor;collapsed?textX.push({t:core.TextXActionType.RETAIN,len,segmentId}):textX.push(...getRetainAndDeleteAndExcludeLineBreak(selection,originBody,segmentId,memoryCursor.cursor,!1)),memoryCursor.reset(),memoryCursor.moveCursor(endOffset)}const path=getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));const removedCustomBlockIds=getCustomBlockIdsInSelections(originBody,selections),drawings=(_a11=docDataModel.getDrawings())!=null?_a11:{},drawingOrder=(_b=docDataModel.getDrawingsOrder())!=null?_b:[],sortedRemovedCustomBlockIds=removedCustomBlockIds.sort((a,b)=>drawingOrder.indexOf(a)>drawingOrder.indexOf(b)?-1:drawingOrder.indexOf(a)<drawingOrder.indexOf(b)?1:0);if(sortedRemovedCustomBlockIds.length>0)for(const blockId of sortedRemovedCustomBlockIds){const drawing=drawings[blockId],drawingIndex=drawingOrder.indexOf(blockId);if(drawing==null||drawingIndex<0)continue;const removeDrawingAction=jsonX.removeOp(["drawings",blockId],drawing),removeDrawingOrderAction=jsonX.removeOp(["drawingsOrder",drawingIndex],blockId);rawActions.push(removeDrawingAction),rawActions.push(removeDrawingOrderAction)}return rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null)}__name(getCutActionsFromTextRanges,"getCutActionsFromTextRanges");function getCutActionsFromRectRanges(ranges,docDataModel,viewModel,segmentId){const rawActions=[];if(docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody()==null)return rawActions;const textX=new core.TextX,jsonX=core.JSONX.getInstance(),memoryCursor=new core.MemoryCursor;memoryCursor.reset();for(const range of ranges){const{startOffset,endOffset,spanEntireRow,spanEntireTable}=range;if(!(startOffset==null||endOffset==null))if(spanEntireTable){const actionParams=getDeleteTableActionParams({startOffset,endOffset,segmentId},viewModel);if(actionParams==null)continue;const{offset,len,tableId}=actionParams;offset-memoryCursor.cursor>0&&textX.push({t:core.TextXActionType.RETAIN,len:offset-memoryCursor.cursor,segmentId}),textX.push({t:core.TextXActionType.DELETE,len,line:0,segmentId});const action=jsonX.removeOp(["tableSource",tableId]);rawActions.push(action),memoryCursor.moveCursorTo(offset+len)}else if(spanEntireRow){const actionParams=getDeleteRowsActionsParams({startOffset,endOffset,segmentId},viewModel);if(actionParams==null)continue;const{offset,rowIndexes,len,tableId}=actionParams;offset-memoryCursor.cursor>0&&textX.push({t:core.TextXActionType.RETAIN,len:offset-memoryCursor.cursor,segmentId}),textX.push({t:core.TextXActionType.DELETE,len,line:0,segmentId});for(const index of rowIndexes.reverse()){const action=jsonX.removeOp(["tableSource",tableId,"tableRows",index]);rawActions.push(action)}memoryCursor.moveCursorTo(offset+len)}else{const actionParams=getDeleteRowContentActionParams({startOffset,endOffset,segmentId},viewModel);if(actionParams==null)continue;const{offsets}=actionParams;for(const offset of offsets){const{retain,delete:delLen}=offset;retain-memoryCursor.cursor>0&&textX.push({t:core.TextXActionType.RETAIN,len:retain-memoryCursor.cursor,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:delLen,line:0,segmentId}),memoryCursor.moveCursorTo(retain+delLen)}}}const path=getRichTextEditPath(docDataModel,segmentId);return rawActions.push(jsonX.editOp(textX.serialize(),path)),rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null)}__name(getCutActionsFromRectRanges,"getCutActionsFromRectRanges");function getCutActionsFromDocRanges(textRanges,rectRanges,docDataModel,viewModel,segmentId){let rawActions=[];if(Array.isArray(textRanges)&&(textRanges==null?void 0:textRanges.length)!==0&&(rawActions=getCutActionsFromTextRanges(textRanges,docDataModel,segmentId)),Array.isArray(rectRanges)&&(rectRanges==null?void 0:rectRanges.length)!==0){const actions=getCutActionsFromRectRanges(rectRanges,docDataModel,viewModel,segmentId);rawActions==null||rawActions.length===0?rawActions=actions:rawActions=core.JSONX.compose(rawActions,core.JSONX.transform(actions,rawActions,"right"))}return rawActions}__name(getCutActionsFromDocRanges,"getCutActionsFromDocRanges");const INNER_CUT_COMMAND_ID="doc.command.inner-cut",CutContentCommand={id:INNER_CUT_COMMAND_ID,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11,_b;const{segmentId,textRanges}=params,commandService=accessor.get(core.ICommandService),textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selections=(_a11=params.selections)!=null?_a11:textSelectionManagerService.getCurrentTextRanges(),rectRanges=textSelectionManagerService.getCurrentRectRanges();if((!Array.isArray(selections)||selections.length===0)&&(!Array.isArray(rectRanges)||rectRanges.length===0))return!1;const unitId=(_b=univerInstanceService.getCurrentUniverDocInstance())==null?void 0:_b.getUnitId();if(!unitId)return!1;const docDataModel=univerInstanceService.getUniverDocInstance(unitId);if(docDataModel==null)return!1;const docSkeletonManagerService=getCommandSkeleton(accessor,unitId);if(docSkeletonManagerService==null)return!1;const viewModel=docSkeletonManagerService.getViewModel(),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};return doMutation.params.actions=getCutActionsFromDocRanges(selections,rectRanges,docDataModel,viewModel,segmentId),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DeleteCustomBlockCommand={id:"doc.command.delete-custom-block",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRange=textSelectionManagerService.getActiveTextRangeWithStyle(),documentDataModel=univerInstanceService.getCurrentUniverDocInstance();if(activeRange==null||documentDataModel==null)return!1;const{direction,range,unitId,drawingId}=params,{startOffset,segmentId,style}=activeRange,cursor=direction===DeleteDirection.LEFT?startOffset-1:startOffset,textRanges=[{startOffset:cursor,endOffset:cursor,style}],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges,prevTextRanges:[range]}},textX=new core.TextX,jsonX=core.JSONX.getInstance(),rawActions=[];startOffset>0&&textX.push({t:core.TextXActionType.RETAIN,len:direction===DeleteDirection.LEFT?startOffset-1:startOffset,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:1,line:0,segmentId});const path=getRichTextEditPath(documentDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));const drawing=((_a11=documentDataModel.getDrawings())!=null?_a11:{})[drawingId],drawingIndex=documentDataModel.getDrawingsOrder().indexOf(drawingId),removeDrawingAction=jsonX.removeOp(["drawings",drawingId],drawing),removeDrawingOrderAction=jsonX.removeOp(["drawingsOrder",drawingIndex],drawingId);return rawActions.push(removeDrawingAction),rawActions.push(removeDrawingOrderAction),doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},MergeTwoParagraphCommand={id:"doc.command.merge-two-paragraph",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),{direction,range}=params,activeRange=textSelectionManagerService.getActiveTextRangeWithStyle(),ranges=textSelectionManagerService.getCurrentTextRanges();if(activeRange==null||ranges==null)return!1;const{segmentId,style}=activeRange,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),originBody=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(!docDataModel||!originBody)return!1;const actualRange=getDeleteSelection(activeRange,originBody),unitId=docDataModel.getUnitId(),{startOffset,collapsed}=actualRange;if(!collapsed)return!1;const startIndex=direction===DeleteDirection.LEFT?startOffset:startOffset+1,endIndex=originBody.paragraphs.find(p=>p.startIndex>=startIndex).startIndex,body=getParagraphBody(accessor,unitId,originBody,startIndex,endIndex),cursor=direction===DeleteDirection.LEFT?startOffset-1:startOffset,textRanges=[{startOffset:cursor,endOffset:cursor,style}],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges,prevTextRanges:[range]}},textX=new core.TextX,jsonX=core.JSONX.getInstance();textX.push({t:core.TextXActionType.RETAIN,len:direction===DeleteDirection.LEFT?startOffset-1:startOffset,segmentId}),body.dataStream.length&&textX.push({t:core.TextXActionType.INSERT,body,len:body.dataStream.length,line:0,segmentId}),textX.push({t:core.TextXActionType.RETAIN,len:1,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:endIndex+1-startIndex,line:0,segmentId});const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")};function getCursorWhenDelete(textRanges,rectRanges){let cursor=0;if(textRanges==null||textRanges.length===0){if(typeof rectRanges[0].startOffset=="number"){const rectRange=rectRanges[0],{spanEntireRow,spanEntireTable}=rectRange;spanEntireTable?cursor=rectRange.startOffset-3:spanEntireRow?rectRange.startRow>0?cursor=rectRange.startOffset-6:cursor=rectRange.startOffset:cursor=rectRanges[0].startOffset}}else if(textRanges.length>0&&rectRanges.length>0){const textRange=textRanges[0],rectRange=rectRanges[0];if(textRange.startOffset!=null&&rectRange.startOffset!=null){if(textRange.startOffset<rectRange.startOffset)cursor=textRange.startOffset;else if(textRange.startOffset>=rectRange.startOffset){const{spanEntireRow,spanEntireTable}=rectRange;spanEntireTable?cursor=rectRange.startOffset-3:spanEntireRow&&(cursor=rectRange.startOffset-6)}}}return cursor}__name(getCursorWhenDelete,"getCursorWhenDelete");const DeleteLeftCommand={id:"doc.command.delete-left",type:core.CommandType.COMMAND,handler:__name(async accessor=>{var _a11,_b;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService);let result=!0;const docDataModel=univerInstanceService.getCurrentUniverDocInstance();if(!docDataModel)return!1;const unitId=docDataModel.getUnitId(),docSkeletonManagerService=getCommandSkeleton(accessor,unitId),activeRange=textSelectionManagerService.getActiveTextRangeWithStyle(),rectRanges=textSelectionManagerService.getCurrentRectRanges(),ranges=textSelectionManagerService.getCurrentTextRanges(),skeleton=docSkeletonManagerService==null?void 0:docSkeletonManagerService.getSkeleton();if(skeleton==null)return!1;if(rectRanges!=null&&rectRanges.length){const cursor2=getCursorWhenDelete(ranges,rectRanges),segmentId2=rectRanges[0].segmentId,textRanges=[{startOffset:cursor2,endOffset:cursor2}];return commandService.executeCommand(CutContentCommand.id,{segmentId:segmentId2,textRanges})}if(activeRange==null||ranges==null)return!1;const{segmentId,style,segmentPage}=activeRange,body=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(body==null)return!1;const actualRange=getDeleteSelection(activeRange,body),{startOffset,collapsed}=actualRange,curGlyph=skeleton.findNodeByCharIndex(startOffset,segmentId,segmentPage),isBullet=engineRender.hasListGlyph(curGlyph),isIndent=engineRender.isIndentByGlyph(curGlyph,body);let cursor=startOffset;const preGlyph=skeleton.findNodeByCharIndex(startOffset-1,segmentId,segmentPage);if(engineRender.isFirstGlyph(curGlyph)&&preGlyph!==curGlyph&&(isBullet===!0||isIndent===!0)&&collapsed){const paragraph=engineRender.getParagraphByGlyph(curGlyph,body);if(paragraph==null)return!1;const paragraphIndex=paragraph==null?void 0:paragraph.startIndex,updateParagraph={startIndex:0},paragraphStyle=paragraph.paragraphStyle;if(isBullet===!0){const paragraphStyle2=paragraph.paragraphStyle;if(paragraphStyle2){updateParagraph.paragraphStyle=paragraphStyle2;const{hanging}=paragraphStyle2;hanging&&(updateParagraph.paragraphStyle.indentStart=hanging,updateParagraph.paragraphStyle.hanging=void 0)}}else if(isIndent===!0){const bullet=paragraph.bullet;bullet&&(updateParagraph.bullet=bullet),paragraphStyle!=null&&(updateParagraph.paragraphStyle={...paragraphStyle},delete updateParagraph.paragraphStyle.hanging,delete updateParagraph.paragraphStyle.indentStart)}const textRanges=[{startOffset:cursor,endOffset:cursor,style}];result=await commandService.executeCommand(UpdateCommand.id,{unitId:docDataModel.getUnitId(),updateBody:{dataStream:"",paragraphs:[{...updateParagraph}]},range:{startOffset:paragraphIndex,endOffset:paragraphIndex+1},textRanges,coverType:core.UpdateDocsAttributeType.REPLACE,segmentId})}else if(collapsed===!0){if(preGlyph==null)return!0;if(preGlyph.content==="\r")result=await commandService.executeCommand(MergeTwoParagraphCommand.id,{direction:DeleteDirection.LEFT,range:actualRange});else if(preGlyph.streamType==="\b"){const drawing=(_b=docDataModel.getSnapshot().drawings)==null?void 0:_b[(_a11=preGlyph.drawingId)!=null?_a11:""];if(drawing==null)return!0;if(drawing.layoutType===core.PositionedObjectLayoutType.INLINE){const unitId2=docDataModel.getUnitId();result=await commandService.executeCommand(DeleteCustomBlockCommand.id,{direction:DeleteDirection.LEFT,range:activeRange,unitId:unitId2,drawingId:preGlyph.drawingId})}else{const prePreGlyph=skeleton.findNodeByCharIndex(startOffset-2);if(prePreGlyph==null)return!0;cursor-=preGlyph.count,cursor-=prePreGlyph.count;const textRanges=[{startOffset:cursor,endOffset:cursor,style}];result=await commandService.executeCommand(DeleteCommand.id,{unitId:docDataModel.getUnitId(),range:{...activeRange,startOffset:activeRange.startOffset-1,endOffset:activeRange.endOffset-1},segmentId,direction:DeleteDirection.LEFT,len:prePreGlyph.count,textRanges})}}else cursor-=preGlyph.count,result=await commandService.executeCommand(DeleteCommand.id,{unitId:docDataModel.getUnitId(),range:actualRange,segmentId,direction:DeleteDirection.LEFT,len:preGlyph.count})}else{const textRanges=getTextRangesWhenDelete(actualRange,[actualRange]);result=await commandService.executeCommand(CutContentCommand.id,{segmentId,textRanges,selections:[actualRange]})}return result},"handler")},DeleteRightCommand={id:"doc.command.delete-right",type:core.CommandType.COMMAND,handler:__name(async accessor=>{var _a11,_b;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),docDataModel=accessor.get(core.IUniverInstanceService).getCurrentUniverDocInstance();if(!docDataModel)return!1;const docSkeletonManagerService=getCommandSkeleton(accessor,docDataModel.getUnitId()),commandService=accessor.get(core.ICommandService),activeRange=textSelectionManagerService.getActiveTextRangeWithStyle(),rectRanges=textSelectionManagerService.getCurrentRectRanges(),ranges=textSelectionManagerService.getCurrentTextRanges(),skeleton=docSkeletonManagerService==null?void 0:docSkeletonManagerService.getSkeleton();if(rectRanges!=null&&rectRanges.length){const cursor=getCursorWhenDelete(ranges,rectRanges),segmentId2=rectRanges[0].segmentId,textRanges=[{startOffset:cursor,endOffset:cursor}];return commandService.executeCommand(CutContentCommand.id,{segmentId:segmentId2,textRanges})}if(activeRange==null||skeleton==null||ranges==null)return!1;const{segmentId,style,segmentPage}=activeRange,body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(!docDataModel||!body)return!1;const actualRange=getDeleteSelection(activeRange,body,DeleteDirection.RIGHT),{startOffset,endOffset,collapsed}=actualRange;if(startOffset===body.dataStream.length-2&&collapsed)return!0;let result=!1;if(collapsed===!0){const needDeleteGlyph=skeleton.findNodeByCharIndex(startOffset,segmentId,segmentPage),nextGlyph=skeleton.findNodeByCharIndex(startOffset+1);if(needDeleteGlyph.streamType===core.DataStreamTreeTokenType.PARAGRAPH&&(nextGlyph==null?void 0:nextGlyph.streamType)===core.DataStreamTreeTokenType.SECTION_BREAK)return!1;if(needDeleteGlyph.content==="\r")result=await commandService.executeCommand(MergeTwoParagraphCommand.id,{direction:DeleteDirection.RIGHT,range:activeRange});else if(needDeleteGlyph.streamType==="\b"){const drawing=(_b=docDataModel.getSnapshot().drawings)==null?void 0:_b[(_a11=needDeleteGlyph.drawingId)!=null?_a11:""];if(drawing==null)return!0;if(drawing.layoutType===core.PositionedObjectLayoutType.INLINE){const unitId=docDataModel.getUnitId();result=await commandService.executeCommand(DeleteCustomBlockCommand.id,{direction:DeleteDirection.RIGHT,range:activeRange,unitId,drawingId:needDeleteGlyph.drawingId})}else{if(nextGlyph==null)return!0;const textRanges=[{startOffset:startOffset+1,endOffset:startOffset+1,style}];result=await commandService.executeCommand(DeleteCommand.id,{unitId:docDataModel.getUnitId(),range:{...activeRange,startOffset:startOffset+1,endOffset:endOffset+1},segmentId,direction:DeleteDirection.RIGHT,textRanges,len:nextGlyph.count})}}else{const textRanges=[{startOffset,endOffset:startOffset,style}];result=await commandService.executeCommand(DeleteCommand.id,{unitId:docDataModel.getUnitId(),range:actualRange,segmentId,direction:DeleteDirection.RIGHT,textRanges,len:needDeleteGlyph.count})}}else{const textRanges=getTextRangesWhenDelete(actualRange,[actualRange]);result=await commandService.executeCommand(CutContentCommand.id,{segmentId,textRanges,selections:[actualRange]})}return result},"handler")};function getParagraphBody(accessor,unitId,body,start,end){const{textRuns:originTextRuns=[],customBlocks:originCustomBlocks=[]}=body,dataStream=body.dataStream.substring(start,end),customRangeService=accessor.get(DocCustomRangeService),bodySlice={dataStream,customRanges:core.getCustomRangeSlice(body,start,end).customRanges.map(range=>customRangeService.copyCustomRange(unitId,range)),customDecorations:core.getCustomDecorationSlice(body,start,end)},textRuns=[];for(const textRun of originTextRuns){const{st,ed}=textRun;ed<=start||st>=end||(st<start?textRuns.push({...textRun,st:0,ed:ed-start}):ed>end?textRuns.push({...textRun,st:st-start,ed:end-start}):textRuns.push({...textRun,st:st-start,ed:ed-start}))}textRuns.length>0&&(bodySlice.textRuns=textRuns);const customBlocks=[];for(const block of originCustomBlocks){const{startIndex}=block;startIndex>=start&&startIndex<=end&&customBlocks.push({...block,startIndex:startIndex-start})}return customBlocks.length>0&&(bodySlice.customBlocks=customBlocks),bodySlice}__name(getParagraphBody,"getParagraphBody");function getTextRangesWhenDelete(activeRange,ranges){let cursor=activeRange.endOffset;for(const range of ranges){const{startOffset,endOffset}=range;startOffset==null||endOffset==null||endOffset<=activeRange.endOffset&&(cursor-=endOffset-startOffset)}return[{startOffset:cursor,endOffset:cursor,style:activeRange.style}]}__name(getTextRangesWhenDelete,"getTextRangesWhenDelete");const IMEInputCommand={id:"doc.command.ime-input",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{unitId,newText,oldTextLen,isCompositionEnd,isCompositionStart}=params,commandService=accessor.get(core.ICommandService),imeInputManagerService=accessor.get(IMEInputManagerService),docDataModel=accessor.get(core.IUniverInstanceService).getCurrentUniverDocInstance();if(docDataModel==null)return!1;const previousActiveRange=imeInputManagerService.getActiveRange();if(!previousActiveRange)return!1;const{style,segmentId}=previousActiveRange,body=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(body==null)return!1;const insertRange=getInsertSelection(previousActiveRange,body);Object.assign(previousActiveRange,insertRange);const{startOffset}=previousActiveRange,len=newText.length,textRanges=[{startOffset:startOffset+len,endOffset:startOffset+len,collapsed:!0,style}],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}},textX=new core.TextX,jsonX=core.JSONX.getInstance();if(!previousActiveRange.collapsed&&isCompositionStart){const{dos,retain,cursor}=getRetainAndDeleteFromReplace(previousActiveRange,segmentId,0,body);textX.push(...dos),doMutation.params.textRanges=[{startOffset:startOffset+len+retain,endOffset:startOffset+len+retain,collapsed:!0}]}else textX.push({t:core.TextXActionType.RETAIN,len:startOffset,segmentId});oldTextLen>0&&textX.push({t:core.TextXActionType.DELETE,len:oldTextLen,line:0,segmentId}),textX.push({t:core.TextXActionType.INSERT,body:{dataStream:newText},len:newText.length,line:0,segmentId});const path=getRichTextEditPath(docDataModel,segmentId);doMutation.params.actions=jsonX.editOp(textX.serialize(),path),doMutation.params.noHistory=!isCompositionEnd,doMutation.params.isCompositionEnd=isCompositionEnd;const result=commandService.syncExecuteCommand(doMutation.id,doMutation.params);return imeInputManagerService.pushUndoRedoMutationParams(result,doMutation.params),!!result},"handler")};function handleInlineFormat(preCommandId,params,commandService){return commandService.executeCommand(SetInlineFormatCommand.id,{preCommandId,...params!=null?params:{}})}__name(handleInlineFormat,"handleInlineFormat");const SetInlineFormatBoldCommandId="doc.command.set-inline-format-bold",SetInlineFormatBoldCommand={id:SetInlineFormatBoldCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatBoldCommandId,params,commandService)},"handler")},SetInlineFormatItalicCommandId="doc.command.set-inline-format-italic",SetInlineFormatItalicCommand={id:SetInlineFormatItalicCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatItalicCommandId,params,commandService)},"handler")},SetInlineFormatUnderlineCommandId="doc.command.set-inline-format-underline",SetInlineFormatUnderlineCommand={id:SetInlineFormatUnderlineCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatUnderlineCommandId,params,commandService)},"handler")},SetInlineFormatStrikethroughCommandId="doc.command.set-inline-format-strikethrough",SetInlineFormatStrikethroughCommand={id:SetInlineFormatStrikethroughCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatStrikethroughCommandId,params,commandService)},"handler")},SetInlineFormatSubscriptCommandId="doc.command.set-inline-format-subscript",SetInlineFormatSubscriptCommand={id:SetInlineFormatSubscriptCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatSubscriptCommandId,params,commandService)},"handler")},SetInlineFormatSuperscriptCommandId="doc.command.set-inline-format-superscript",SetInlineFormatSuperscriptCommand={id:SetInlineFormatSuperscriptCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatSuperscriptCommandId,params,commandService)},"handler")},SetInlineFormatFontSizeCommandId="doc.command.set-inline-format-fontsize",SetInlineFormatFontSizeCommand={id:SetInlineFormatFontSizeCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatFontSizeCommandId,params,commandService)},"handler")},SetInlineFormatFontFamilyCommandId="doc.command.set-inline-format-font-family",SetInlineFormatFontFamilyCommand={id:SetInlineFormatFontFamilyCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatFontFamilyCommandId,params,commandService)},"handler")},SetInlineFormatTextColorCommandId="doc.command.set-inline-format-text-color",SetInlineFormatTextColorCommand={id:SetInlineFormatTextColorCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatTextColorCommandId,params,commandService)},"handler")},SetInlineFormatTextBackgroundColorCommandId="doc.command.set-inline-format-text-background-color",SetInlineFormatTextBackgroundColorCommand={id:SetInlineFormatTextBackgroundColorCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatTextBackgroundColorCommandId,params,commandService)},"handler")},ResetInlineFormatTextBackgroundColorCommandId="doc.command.reset-inline-format-text-background-color",ResetInlineFormatTextBackgroundColorCommand={id:ResetInlineFormatTextBackgroundColorCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(ResetInlineFormatTextBackgroundColorCommandId,params,commandService)},"handler")},COMMAND_ID_TO_FORMAT_KEY_MAP={[SetInlineFormatBoldCommand.id]:"bl",[SetInlineFormatItalicCommand.id]:"it",[SetInlineFormatUnderlineCommand.id]:"ul",[SetInlineFormatStrikethroughCommand.id]:"st",[SetInlineFormatFontSizeCommand.id]:"fs",[SetInlineFormatFontFamilyCommand.id]:"ff",[SetInlineFormatTextColorCommand.id]:"cl",[SetInlineFormatTextBackgroundColorCommand.id]:"bg",[ResetInlineFormatTextBackgroundColorCommand.id]:"bg",[SetInlineFormatSubscriptCommand.id]:"va",[SetInlineFormatSuperscriptCommand.id]:"va"},SetInlineFormatCommand={id:"doc.command.set-inline-format",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{value,preCommandId}=params,commandService=accessor.get(core.ICommandService),textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),docRanges=textSelectionManagerService.getDocRanges();if(docRanges.length===0)return!1;const segmentId=docRanges[0].segmentId,docDataModel=univerInstanceService.getCurrentUniverDocInstance();if(docDataModel==null)return!1;const unitId=docDataModel.getUnitId();let formatValue;switch(preCommandId){case SetInlineFormatBoldCommand.id:case SetInlineFormatItalicCommand.id:case SetInlineFormatUnderlineCommand.id:case SetInlineFormatStrikethroughCommand.id:case SetInlineFormatSubscriptCommand.id:case SetInlineFormatSuperscriptCommand.id:{formatValue=getReverseFormatValueInSelection(docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody().textRuns,preCommandId,docRanges);break}case SetInlineFormatFontSizeCommand.id:case SetInlineFormatFontFamilyCommand.id:{formatValue=value;break}case SetInlineFormatTextColorCommand.id:case SetInlineFormatTextBackgroundColorCommand.id:{formatValue={rgb:value};break}case ResetInlineFormatTextBackgroundColorCommand.id:{formatValue={rgb:null};break}default:throw new Error(`Unknown command: ${preCommandId} in handleInlineFormat`)}const doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:docRanges.map(serializeDocRange)}},textX=new core.TextX,jsonX=core.JSONX.getInstance(),memoryCursor=new core.MemoryCursor;memoryCursor.reset();for(const range of docRanges){const{startOffset,endOffset}=range;if(startOffset==null||endOffset==null)continue;const body={dataStream:"",textRuns:[{st:0,ed:endOffset-startOffset,ts:{[COMMAND_ID_TO_FORMAT_KEY_MAP[preCommandId]]:formatValue}}]},len=startOffset-memoryCursor.cursor;len!==0&&textX.push({t:core.TextXActionType.RETAIN,len,segmentId}),textX.push({t:core.TextXActionType.RETAIN,body,len:endOffset-startOffset,segmentId}),memoryCursor.reset(),memoryCursor.moveCursor(endOffset)}const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")};function isTextDecoration(value){return value!==null&&typeof value=="object"}__name(isTextDecoration,"isTextDecoration");function getReverseFormatValueInSelection(textRuns,preCommandId,docRanges){let ti=0,si=0;const key=COMMAND_ID_TO_FORMAT_KEY_MAP[preCommandId];for(;ti!==textRuns.length&&si!==docRanges.length;){const{startOffset,endOffset}=docRanges[si],{st,ed,ts}=textRuns[ti];if(endOffset<=st)si++;else if(ed<=startOffset)ti++;else{if(/bl|it/.test(key))return(ts==null?void 0:ts[key])===core.BooleanNumber.TRUE?core.BooleanNumber.FALSE:core.BooleanNumber.TRUE;if(/ul|st/.test(key))return isTextDecoration(ts==null?void 0:ts[key])&&(ts==null?void 0:ts[key]).s===core.BooleanNumber.TRUE?{s:core.BooleanNumber.FALSE}:{s:core.BooleanNumber.TRUE};if(/va/.test(key))return preCommandId===SetInlineFormatSubscriptCommand.id?(ts==null?void 0:ts[key])===core.BaselineOffset.SUBSCRIPT?core.BaselineOffset.NORMAL:core.BaselineOffset.SUBSCRIPT:(ts==null?void 0:ts[key])===core.BaselineOffset.SUPERSCRIPT?core.BaselineOffset.NORMAL:core.BaselineOffset.SUPERSCRIPT;ti++}}return/bl|it/.test(key)?core.BooleanNumber.TRUE:/ul|st/.test(key)?{s:core.BooleanNumber.TRUE}:preCommandId===SetInlineFormatSubscriptCommand.id?core.BaselineOffset.SUBSCRIPT:core.BaselineOffset.SUPERSCRIPT}__name(getReverseFormatValueInSelection,"getReverseFormatValueInSelection");const ReplaceContentCommand={id:"doc.command-replace-content",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{unitId,body,textRanges,segmentId="",options}=params,univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),docDataModel=univerInstanceService.getUniverDocInstance(unitId),prevBody=docDataModel==null?void 0:docDataModel.getSnapshot().body,selections=textSelectionManagerService.getCurrentTextRanges();if(docDataModel==null||prevBody==null||!Array.isArray(selections)||selections.length===0)return!1;const doMutation=getMutationParams(unitId,segmentId,docDataModel,prevBody,body);return doMutation.params.textRanges=textRanges,options&&(doMutation.params.options=options),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},CoverContentCommand={id:"doc.command-cover-content",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{unitId,body,segmentId=""}=params,univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),docDatModel=univerInstanceService.getUniverDocInstance(unitId),prevBody=docDatModel==null?void 0:docDatModel.getSnapshot().body;if(docDatModel==null||prevBody==null)return!1;const doMutation=getMutationParams(unitId,segmentId,docDatModel,prevBody,body);return doMutation.params.noNeedSetTextRange=!0,doMutation.params.noHistory=!0,commandService.syncExecuteCommand(doMutation.id,doMutation.params),undoRedoService.clearUndoRedo(unitId),!0},"handler")};function getMutationParams(unitId,segmentId,docDatModel,prevBody,body){const doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:[]}},textX=new core.TextX,jsonX=core.JSONX.getInstance(),deleteLen=(prevBody==null?void 0:prevBody.dataStream.length)-2;deleteLen>0&&textX.push({t:core.TextXActionType.DELETE,len:deleteLen,line:0,segmentId}),body.dataStream.length>0&&textX.push({t:core.TextXActionType.INSERT,body,len:body.dataStream.length,line:0,segmentId});const path=getRichTextEditPath(docDatModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),doMutation}__name(getMutationParams,"getMutationParams");core.CommandType.COMMAND;const SetDocZoomRatioUndoMutationFactory=__name((accessor,params)=>{const documentModel=accessor.get(core.IUniverInstanceService).getUniverDocInstance(params.unitId),old=(documentModel==null?void 0:documentModel.zoomRatio)||1;return{...core.Tools.deepClone(params),zoomRatio:old}},"SetDocZoomRatioUndoMutationFactory"),SetDocZoomRatioOperation={id:"doc.operation.set-zoom-ratio",type:core.CommandType.OPERATION,handler:__name((accessor,params)=>{const documentModel=accessor.get(core.IUniverInstanceService).getUniverDocInstance(params.unitId);if(!documentModel)return!1;const documentData=documentModel.getSnapshot();return documentData.settings==null?documentData.settings={zoomRatio:params.zoomRatio}:documentData.settings.zoomRatio=params.zoomRatio,!0},"handler")},SetDocZoomRatioCommand={type:core.CommandType.COMMAND,id:"doc.command.set-zoom-ratio",handler:__name(async(accessor,params)=>{var _a11,_b,_c;const commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),univerInstanceService=accessor.get(core.IUniverInstanceService);let documentId=(_a11=univerInstanceService.getCurrentUniverDocInstance())==null?void 0:_a11.getUnitId();if(!documentId)return!1;let zoomRatio=1;if(params&&(documentId=(_b=params.documentId)!=null?_b:documentId,zoomRatio=(_c=params.zoomRatio)!=null?_c:zoomRatio),!univerInstanceService.getUniverDocInstance(documentId))return!1;const setZoomRatioMutationParams={zoomRatio,unitId:documentId},undoMutationParams=SetDocZoomRatioUndoMutationFactory(accessor,setZoomRatioMutationParams);return commandService.syncExecuteCommand(SetDocZoomRatioOperation.id,setZoomRatioMutationParams)?(undoRedoService.pushUndoRedo({unitID:documentId,undoMutations:[{id:SetDocZoomRatioOperation.id,params:undoMutationParams}],redoMutations:[{id:SetDocZoomRatioOperation.id,params:setZoomRatioMutationParams}]}),!0):!1},"handler")},MoveCursorOperation={id:"doc.operation.move-cursor",type:core.CommandType.OPERATION,handler:__name((accessor,params)=>!!params,"handler")},MoveSelectionOperation={id:"doc.operation.move-selection",type:core.CommandType.OPERATION,handler:__name((accessor,params)=>!!params,"handler")},SelectAllOperation={id:"doc.operation.select-all",type:core.CommandType.COMMAND,handler:__name(async accessor=>{const univerInstanceService=accessor.get(core.IUniverInstanceService),textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),docDataModel=univerInstanceService.getCurrentUniverDocInstance(),activeTextRange=textSelectionManagerService.getActiveTextRangeWithStyle();if(docDataModel==null||activeTextRange==null)return!1;const{segmentId}=activeTextRange,prevBody=docDataModel.getSelfOrHeaderFooterModel(segmentId).getSnapshot().body;if(prevBody==null)return!1;const textRanges=[{startOffset:0,endOffset:prevBody.dataStream.length-2}];return textSelectionManagerService.replaceTextRanges(textRanges,!1),!0},"handler")};var __defProp$6=Object.defineProperty,__getOwnPropDesc$6=Object.getOwnPropertyDescriptor,__decorateClass$6=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$6(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$6(target,key,result),result},"__decorateClass$6"),__decorateParam$6=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$6"),_a4;let IMEInputController=(_a4=class extends core.Disposable{constructor(_univerInstanceService,_renderManagerSrv,_textSelectionRenderManager,_textSelectionManagerService,_imeInputManagerService,_commandService){super();__publicField(this,"_previousIMEContent","");__publicField(this,"_isCompositionStart",!0);__publicField(this,"_onStartSubscription");__publicField(this,"_onUpdateSubscription");__publicField(this,"_onEndSubscription");this._univerInstanceService=_univerInstanceService,this._renderManagerSrv=_renderManagerSrv,this._textSelectionRenderManager=_textSelectionRenderManager,this._textSelectionManagerService=_textSelectionManagerService,this._imeInputManagerService=_imeInputManagerService,this._commandService=_commandService,this._initialize()}dispose(){var _a11,_b,_c;(_a11=this._onStartSubscription)==null||_a11.unsubscribe(),(_b=this._onUpdateSubscription)==null||_b.unsubscribe(),(_c=this._onEndSubscription)==null||_c.unsubscribe()}_initialize(){this._initialOnCompositionstart(),this._initialOnCompositionUpdate(),this._initialOnCompositionend()}_initialOnCompositionstart(){this._onStartSubscription=this._textSelectionRenderManager.onCompositionstart$.subscribe(config=>{if(config==null)return;this._resetIME();const{activeRange}=config;activeRange!=null&&this._imeInputManagerService.setActiveRange(core.Tools.deepClone(activeRange))})}_initialOnCompositionUpdate(){this._onUpdateSubscription=this._textSelectionRenderManager.onCompositionupdate$.subscribe(async config=>{this._updateContent(config,!0)})}_initialOnCompositionend(){this._onEndSubscription=this._textSelectionRenderManager.onCompositionend$.subscribe(config=>{this._updateContent(config,!1)})}async _updateContent(config,isUpdate){var _a11;if(config==null)return;const documentModel=this._univerInstanceService.getCurrentUniverDocInstance();if(!documentModel)return;const skeleton=(_a11=this._renderManagerSrv.getRenderById(documentModel.getUnitId()))==null?void 0:_a11.with(exports.DocSkeletonManagerService).getSkeleton(),{event,activeRange}=config;if(skeleton==null||activeRange==null)return;const content=event.data;content===this._previousIMEContent&&isUpdate||(await this._commandService.executeCommand(IMEInputCommand.id,{unitId:documentModel.getUnitId(),newText:content,oldTextLen:this._previousIMEContent.length,isCompositionStart:this._isCompositionStart,isCompositionEnd:!isUpdate}),isUpdate?(this._isCompositionStart&&(this._isCompositionStart=!1),this._previousIMEContent=content):this._resetIME())}_resetIME(){this._previousIMEContent="",this._isCompositionStart=!0,this._imeInputManagerService.clearUndoRedoMutationParamsCache(),this._imeInputManagerService.setActiveRange(null)}},__name(_a4,"IMEInputController"),_a4);IMEInputController=__decorateClass$6([core.OnLifecycle(core.LifecycleStages.Rendered,IMEInputController),__decorateParam$6(0,core.IUniverInstanceService),__decorateParam$6(1,engineRender.IRenderManagerService),__decorateParam$6(2,engineRender.ITextSelectionRenderManager),__decorateParam$6(3,core.Inject(exports.TextSelectionManagerService)),__decorateParam$6(4,core.Inject(IMEInputManagerService)),__decorateParam$6(5,core.ICommandService)],IMEInputController);function firstLineInTable(table){return table.rows[0].cells[0].sections[0].columns[0].lines[0]}__name(firstLineInTable,"firstLineInTable");function lastLineInTable(table){const lastRow=table.rows[table.rows.length-1],lastCell=lastRow.cells[lastRow.cells.length-1];return engineRender.getLastLine(lastCell)}__name(lastLineInTable,"lastLineInTable");function findTableAfterLine(line,page){const{ed}=line,{skeTables}=page;let table=null;for(const t of skeTables.values())if(t.st===ed+1){table=t;break}return table}__name(findTableAfterLine,"findTableAfterLine");function findLineBeforeAndAfterTable(table){const tablePage=table==null?void 0:table.parent;let lineBeforeTable=null,lineAfterTable=null;if(table==null||tablePage==null)return{lineBeforeTable,lineAfterTable};const{st,ed}=table,pages=tablePage.type===engineRender.DocumentSkeletonPageType.CELL?[tablePage]:tablePage.parent.pages;return engineRender.lineIterator(pages,l=>{l.st===ed+1?lineAfterTable=l:l.ed===st-1&&(lineBeforeTable=l)}),{lineBeforeTable,lineAfterTable}}__name(findLineBeforeAndAfterTable,"findLineBeforeAndAfterTable");function findBellowCell(cell){const row=cell.parent,table=row==null?void 0:row.parent;if(row==null||table==null)return;const bellowRow=table.rows[table.rows.indexOf(row)+1];if(bellowRow==null)return;const col=row.cells.indexOf(cell);return bellowRow.cells[col]}__name(findBellowCell,"findBellowCell");function findAboveCell(cell){const row=cell.parent,table=row==null?void 0:row.parent;if(row==null||table==null)return;const aboveRow=table.rows[table.rows.indexOf(row)-1];if(aboveRow==null)return;const col=row.cells.indexOf(cell);return aboveRow.cells[col]}__name(findAboveCell,"findAboveCell");function findTableBeforeLine(line,page){const{st}=line,{skeTables}=page;let table=null;for(const t of skeTables.values())if(t.ed===st-1){table=t;break}return table}__name(findTableBeforeLine,"findTableBeforeLine");function firstLineInCell(cell){return cell.sections[0].columns[0].lines[0]}__name(firstLineInCell,"firstLineInCell");function lastLineInCell(cell){return engineRender.getLastLine(cell)}__name(lastLineInCell,"lastLineInCell");var __defProp$5=Object.defineProperty,__getOwnPropDesc$5=Object.getOwnPropertyDescriptor,__decorateClass$5=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$5(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$5(target,key,result),result},"__decorateClass$5"),__decorateParam$5=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$5"),_a5;let MoveCursorController=(_a5=class extends core.Disposable{constructor(_univerInstanceService,_renderManagerService,_textSelectionManagerService,_commandService){super();__publicField(this,"_onInputSubscription");this._univerInstanceService=_univerInstanceService,this._renderManagerService=_renderManagerService,this._textSelectionManagerService=_textSelectionManagerService,this._commandService=_commandService,this._commandExecutedListener()}dispose(){var _a11;super.dispose(),(_a11=this._onInputSubscription)==null||_a11.unsubscribe()}_commandExecutedListener(){const updateCommandList=[MoveCursorOperation.id,MoveSelectionOperation.id];this.disposeWithMe(this._commandService.onCommandExecuted(command=>{if(!updateCommandList.includes(command.id))return;const param=command.params;switch(command.id){case MoveCursorOperation.id:return this._handleMoveCursor(param.direction);case MoveSelectionOperation.id:return this._handleShiftMoveSelection(param.direction);default:throw new Error("Unknown command")}}))}_handleShiftMoveSelection(direction){var _a11,_b,_c;const activeRange=this._textSelectionManagerService.getActiveTextRangeWithStyle(),allRanges=this._textSelectionManagerService.getCurrentTextRanges(),docDataModel=this._univerInstanceService.getCurrentUniverDocInstance();if(docDataModel==null)return;const skeleton=(_a11=this._renderManagerService.getRenderById(docDataModel.getUnitId()))==null?void 0:_a11.with(exports.DocSkeletonManagerService).getSkeleton(),docObject=this._getDocObject();if(activeRange==null||skeleton==null||docObject==null)return;const{startOffset,endOffset,style,collapsed,direction:rangeDirection,segmentId,startNodePosition,endNodePosition,segmentPage}=activeRange;if(allRanges.length>1){let min=Number.POSITIVE_INFINITY,max=Number.NEGATIVE_INFINITY;for(const range of allRanges)min=Math.min(min,range.startOffset),max=Math.max(max,range.endOffset);this._textSelectionManagerService.replaceTextRanges([{startOffset:direction===core.Direction.LEFT||direction===core.Direction.UP?max:min,endOffset:direction===core.Direction.LEFT||direction===core.Direction.UP?min:max,style}],!1);return}const anchorOffset=collapsed||rangeDirection===engineRender.RANGE_DIRECTION.FORWARD?startOffset:endOffset;let focusOffset=collapsed||rangeDirection===engineRender.RANGE_DIRECTION.FORWARD?endOffset:startOffset;const dataStreamLength=(_b=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody().dataStream.length)!=null?_b:Number.POSITIVE_INFINITY;if(direction===core.Direction.LEFT||direction===core.Direction.RIGHT){const preGlyph=skeleton.findNodeByCharIndex(focusOffset-1,segmentId,segmentPage),curGlyph=skeleton.findNodeByCharIndex(focusOffset,segmentId,segmentPage);focusOffset=direction===core.Direction.RIGHT?focusOffset+curGlyph.count:focusOffset-((_c=preGlyph==null?void 0:preGlyph.count)!=null?_c:0),focusOffset=Math.min(dataStreamLength-2,Math.max(0,focusOffset)),this._textSelectionManagerService.replaceTextRanges([{startOffset:anchorOffset,endOffset:focusOffset,style}],!1)}else{const focusGlyph=skeleton.findNodeByCharIndex(focusOffset,segmentId,segmentPage),documentOffsetConfig=docObject.document.getOffsetConfig(),focusNodePosition=collapsed?startNodePosition:rangeDirection===engineRender.RANGE_DIRECTION.FORWARD?endNodePosition:startNodePosition,newPos=this._getTopOrBottomPosition(skeleton,focusGlyph,focusNodePosition,direction===core.Direction.DOWN,!0);if(newPos==null){const newFocusOffset=direction===core.Direction.UP?0:dataStreamLength-2;if(newFocusOffset===focusOffset)return;this._textSelectionManagerService.replaceTextRanges([{startOffset:anchorOffset,endOffset:newFocusOffset,style}],!1);return}const newActiveRange=new engineRender.NodePositionConvertToCursor(documentOffsetConfig,skeleton).getRangePointData(newPos,newPos).cursorList[0];this._textSelectionManagerService.replaceTextRanges([{startOffset:anchorOffset,endOffset:newActiveRange.endOffset,style}],!1)}}_handleMoveCursor(direction){var _a11,_b,_c,_d;const activeRange=this._textSelectionManagerService.getActiveTextRangeWithStyle(),allRanges=this._textSelectionManagerService.getCurrentTextRanges(),docDataModel=this._univerInstanceService.getCurrentUniverDocInstance();if(docDataModel==null)return!1;const skeleton=(_a11=this._renderManagerService.getRenderById(docDataModel.getUnitId()))==null?void 0:_a11.with(exports.DocSkeletonManagerService).getSkeleton(),docObject=this._getDocObject();if(activeRange==null||skeleton==null||docObject==null||allRanges==null)return;const{startOffset,endOffset,style,collapsed,segmentId,startNodePosition,endNodePosition,segmentPage}=activeRange,body=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(body==null)return;const dataStreamLength=(_b=body.dataStream.length)!=null?_b:Number.POSITIVE_INFINITY,customRanges=(_c=docDataModel.getCustomRanges())!=null?_c:[];if(direction===core.Direction.LEFT||direction===core.Direction.RIGHT){let cursor;if(!activeRange.collapsed||allRanges.length>1){let min=Number.POSITIVE_INFINITY,max=Number.NEGATIVE_INFINITY;for(const range of allRanges)min=Math.min(min,range.startOffset),max=Math.max(max,range.endOffset);cursor=direction===core.Direction.LEFT?min:max}else{const preSpan=skeleton.findNodeByCharIndex(startOffset-1,segmentId,segmentPage),curSpan=skeleton.findNodeByCharIndex(startOffset,segmentId,segmentPage),nextGlyph=skeleton.findNodeByCharIndex(startOffset+1,segmentId,segmentPage);direction===core.Direction.LEFT?cursor=Math.max(0,startOffset-((_d=preSpan==null?void 0:preSpan.count)!=null?_d:1)):cursor=Math.min(dataStreamLength-2,endOffset+curSpan.count+((nextGlyph==null?void 0:nextGlyph.streamType)===core.DataStreamTreeTokenType.SECTION_BREAK?1:0))}const skipTokens=[core.DataStreamTreeTokenType.CUSTOM_RANGE_START,core.DataStreamTreeTokenType.CUSTOM_RANGE_END,core.DataStreamTreeTokenType.TABLE_START,core.DataStreamTreeTokenType.TABLE_END,core.DataStreamTreeTokenType.TABLE_ROW_START,core.DataStreamTreeTokenType.TABLE_ROW_END,core.DataStreamTreeTokenType.TABLE_CELL_START,core.DataStreamTreeTokenType.TABLE_CELL_END,core.DataStreamTreeTokenType.SECTION_BREAK];if(direction===core.Direction.LEFT)for(;skipTokens.includes(body.dataStream[cursor]);)cursor--;else for(;skipTokens.includes(body.dataStream[cursor]);)cursor++;customRanges.filter(range=>range.wholeEntity&&range.startIndex<cursor&&range.endIndex>=cursor).forEach(range=>{direction===core.Direction.LEFT?cursor=Math.min(range.startIndex,cursor):cursor=Math.max(range.endIndex+1,cursor)}),this._textSelectionManagerService.replaceTextRanges([{startOffset:cursor,endOffset:cursor,style}],!1)}else{const startNode=skeleton.findNodeByCharIndex(startOffset,segmentId,segmentPage),endNode=skeleton.findNodeByCharIndex(endOffset,segmentId,segmentPage),documentOffsetConfig=docObject.document.getOffsetConfig(),newPos=this._getTopOrBottomPosition(skeleton,direction===core.Direction.UP||collapsed?startNode:endNode,direction===core.Direction.UP||collapsed?startNodePosition:endNodePosition,direction===core.Direction.DOWN);if(newPos==null){let cursor;collapsed?cursor=direction===core.Direction.UP?0:dataStreamLength-2:cursor=direction===core.Direction.UP?startOffset:endOffset,this._textSelectionManagerService.replaceTextRanges([{startOffset:cursor,endOffset:cursor,style}],!1);return}const newActiveRange=new engineRender.NodePositionConvertToCursor(documentOffsetConfig,skeleton).getRangePointData(newPos,newPos).cursorList[0];this._textSelectionManagerService.replaceTextRanges([{...newActiveRange,style}],!1)}}_getTopOrBottomPosition(docSkeleton,glyph,nodePosition,direction,skipCellContent=!1){if(glyph==null||nodePosition==null)return;const offsetLeft=this._getGlyphLeftOffsetInLine(glyph),line=this._getNextOrPrevLine(glyph,direction,skipCellContent);if(line==null)return;const position=this._matchPositionByLeftOffset(docSkeleton,line,offsetLeft,nodePosition);if(position!=null)return{...position,isBack:!0}}_getGlyphLeftOffsetInLine(glyph){const divide=glyph.parent;if(divide==null)return Number.NEGATIVE_INFINITY;const divideLeft=divide.left,{left}=glyph;return divideLeft+left}_matchPositionByLeftOffset(docSkeleton,line,offsetLeft,nodePosition){const nearestNode={distance:Number.POSITIVE_INFINITY};for(const divide of line.divides){const divideLeft=divide.left;for(const glyph of divide.glyphGroup){if(glyph.streamType===core.DataStreamTreeTokenType.SECTION_BREAK)continue;const{left}=glyph,leftSide=divideLeft+left,distance=Math.abs(offsetLeft-leftSide);distance<nearestNode.distance&&(nearestNode.glyph=glyph,nearestNode.distance=distance)}}if(nearestNode.glyph==null)return;const{segmentPage}=nodePosition;return docSkeleton.findPositionByGlyph(nearestNode.glyph,segmentPage)}_getNextOrPrevLine(glyph,direction,skipCellContent=!1){var _a11,_b,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l;const divide=glyph.parent,line=divide==null?void 0:divide.parent,column=line==null?void 0:line.parent,section=column==null?void 0:column.parent,page=section==null?void 0:section.parent;if(divide==null||line==null||column==null||section==null||page==null)return;const currentLineIndex=column.lines.indexOf(line);if(currentLineIndex===-1)return;let newLine;if(page.type===engineRender.DocumentSkeletonPageType.CELL&&skipCellContent){const nLine=findAboveOrBellowCellLine(page,direction);if(nLine)return nLine}if(direction===!0){newLine=column.lines[currentLineIndex+1];const tableAfterLine=findTableAfterLine(line,page);if(tableAfterLine){const firstLine=firstLineInTable(tableAfterLine);firstLine&&(newLine=firstLine)}}else{newLine=column.lines[currentLineIndex-1];const tableBeforeLine=findTableBeforeLine(line,page);if(tableBeforeLine){const lastLine=lastLineInTable(tableBeforeLine);lastLine&&(newLine=lastLine)}}if(newLine!=null)return newLine;const currentColumnIndex=section.columns.indexOf(column);if(currentColumnIndex===-1)return;if(direction===!0)newLine=(_a11=section.columns[currentColumnIndex+1])==null?void 0:_a11.lines[0];else{const prevColumnLines=(_c=(_b=section.columns)==null?void 0:_b[currentColumnIndex-1])==null?void 0:_c.lines;newLine=prevColumnLines==null?void 0:prevColumnLines[prevColumnLines.length-1]}if(newLine!=null)return newLine;const currentSectionIndex=page.sections.indexOf(section);if(currentSectionIndex===-1)return;if(direction===!0)newLine=(_e=(_d=page.sections[currentSectionIndex-1])==null?void 0:_d.columns[0])==null?void 0:_e.lines[0];else{const prevColumns=(_g=(_f=page.sections)==null?void 0:_f[currentSectionIndex-1])==null?void 0:_g.columns,column2=prevColumns==null?void 0:prevColumns[prevColumns.length-1],prevColumnLines=column2==null?void 0:column2.lines;newLine=prevColumnLines==null?void 0:prevColumnLines[prevColumnLines.length-1]}if(newLine!=null)return newLine;if(page.type===engineRender.DocumentSkeletonPageType.CELL)return findAboveOrBellowCellLine(page,direction);const skeleton=page.parent;if(skeleton==null)return;const currentPageIndex=skeleton.pages.indexOf(page);if(currentPageIndex!==-1){if(direction===!0)newLine=(_j=(_i=(_h=skeleton.pages[currentPageIndex+1])==null?void 0:_h.sections[0])==null?void 0:_i.columns[0])==null?void 0:_j.lines[0];else{const prevSections=(_k=skeleton.pages[currentPageIndex-1])==null?void 0:_k.sections;if(prevSections==null)return;const prevColumns=(_l=prevSections[prevSections.length-1])==null?void 0:_l.columns,column2=prevColumns[prevColumns.length-1],prevColumnLines=column2==null?void 0:column2.lines;newLine=prevColumnLines[prevColumnLines.length-1]}if(newLine!=null)return newLine}}_getDocObject(){return getDocObject(this._univerInstanceService,this._renderManagerService)}},__name(_a5,"MoveCursorController"),_a5);MoveCursorController=__decorateClass$5([core.OnLifecycle(core.LifecycleStages.Rendered,MoveCursorController),__decorateParam$5(0,core.IUniverInstanceService),__decorateParam$5(1,engineRender.IRenderManagerService),__decorateParam$5(2,core.Inject(exports.TextSelectionManagerService)),__decorateParam$5(3,core.ICommandService)],MoveCursorController);function findAboveOrBellowCellLine(page,direction){var _a11,_b;let newLine=null;if(direction===!0){const bellowCell=findBellowCell(page);if(bellowCell)newLine=firstLineInCell(bellowCell);else{const table=(_a11=page.parent)==null?void 0:_a11.parent,{lineAfterTable}=findLineBeforeAndAfterTable(table);lineAfterTable&&(newLine=lineAfterTable)}}else{const aboveCell=findAboveCell(page);if(aboveCell)newLine=lastLineInCell(aboveCell);else{const table=(_b=page.parent)==null?void 0:_b.parent,{lineBeforeTable}=findLineBeforeAndAfterTable(table);lineBeforeTable&&(newLine=lineBeforeTable)}}return newLine!=null,newLine}__name(findAboveOrBellowCellLine,"findAboveOrBellowCellLine");var __defProp$4=Object.defineProperty,__getOwnPropDesc$4=Object.getOwnPropertyDescriptor,__decorateClass$4=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$4(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$4(target,key,result),result},"__decorateClass$4"),__decorateParam$4=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$4");function getParagraphsInRange(activeRange,paragraphs){var _a11,_b;const{startOffset,endOffset}=activeRange,results=[];let start=-1;for(let i=0;i<paragraphs.length;i++){const paragraph=paragraphs[i],prevParagraph=paragraphs[i-1],{startIndex}=paragraph;startOffset>start&&startOffset<=startIndex||endOffset>start&&endOffset<=startIndex?results.push({...paragraph,paragraphStart:((_a11=prevParagraph==null?void 0:prevParagraph.startIndex)!=null?_a11:-1)+1,paragraphEnd:paragraph.startIndex}):startIndex>=startOffset&&startIndex<=endOffset&&results.push({...paragraph,paragraphStart:((_b=prevParagraph==null?void 0:prevParagraph.startIndex)!=null?_b:-1)+1,paragraphEnd:paragraph.startIndex}),start=startIndex}return results}__name(getParagraphsInRange,"getParagraphsInRange");var _a6;exports.DocAutoFormatService=(_a6=class extends core.Disposable{constructor(_univerInstanceService,_textSelectionManagerService){super();__publicField(this,"_matches",new Map);this._univerInstanceService=_univerInstanceService,this._textSelectionManagerService=_textSelectionManagerService}registerAutoFormat(match){const matchList=this._matches.get(match.id);return matchList?(matchList.push(match),matchList.sort((a,b)=>{var _a11,_b;return((_a11=b.priority)!=null?_a11:0)-((_b=a.priority)!=null?_b:0)})):this._matches.set(match.id,[match]),core.toDisposable(()=>{const matchList2=this._matches.get(match.id);if(matchList2){const index=matchList2.findIndex(i=>i===match);index>=0&&matchList2.splice(index,1)}})}onAutoFormat(id,params){var _a11,_b,_c,_d,_e,_f;const autoFormats=(_a11=this._matches.get(id))!=null?_a11:[],unit=this._univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_DOC),selection=this._textSelectionManagerService.getActiveTextRangeWithStyle();if(unit&&selection){const doc=unit.getSelfOrHeaderFooterModel(selection.segmentId),context={unit:doc,selection,isBody:!selection.segmentId,paragraphs:getParagraphsInRange(selection,(_c=(_b=doc.getBody())==null?void 0:_b.paragraphs)!=null?_c:[]),customRanges:getCustomRangesInterestsWithRange(selection,(_e=(_d=doc.getBody())==null?void 0:_d.customRanges)!=null?_e:[]),commandId:id,commandParams:params},matched=autoFormats.find(i=>i.match(context));return(_f=matched==null?void 0:matched.getMutations(context))!=null?_f:[]}return[]}},__name(_a6,"DocAutoFormatService"),_a6);exports.DocAutoFormatService=__decorateClass$4([__decorateParam$4(0,core.IUniverInstanceService),__decorateParam$4(1,core.Inject(exports.TextSelectionManagerService))],exports.DocAutoFormatService);const TabCommandId="doc.command.tab",TabCommand={id:TabCommandId,type:core.CommandType.COMMAND,async handler(accessor,params){const mutations=accessor.get(exports.DocAutoFormatService).onAutoFormat(TabCommand.id,params);return(await core.sequenceExecuteAsync(mutations,accessor.get(core.ICommandService))).result}},AfterSpaceCommandId="doc.command.after-space",AfterSpaceCommand={id:AfterSpaceCommandId,type:core.CommandType.COMMAND,async handler(accessor){const mutations=accessor.get(exports.DocAutoFormatService).onAutoFormat(AfterSpaceCommand.id);return(await core.sequenceExecuteAsync(mutations,accessor.get(core.ICommandService))).result}},EnterCommand={id:"doc.command.enter",type:core.CommandType.COMMAND,async handler(accessor){const mutations=accessor.get(exports.DocAutoFormatService).onAutoFormat(EnterCommand.id);return(await core.sequenceExecuteAsync(mutations,accessor.get(core.ICommandService))).result}};var __defProp$3=Object.defineProperty,__getOwnPropDesc$3=Object.getOwnPropertyDescriptor,__decorateClass$3=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$3(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$3(target,key,result),result},"__decorateClass$3"),__decorateParam$3=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$3"),_a7;let NormalInputController=(_a7=class extends core.Disposable{constructor(_univerInstanceService,_renderManagerService,_textSelectionRenderManager,_commandService){super();__publicField(this,"_onInputSubscription");this._univerInstanceService=_univerInstanceService,this._renderManagerService=_renderManagerService,this._textSelectionRenderManager=_textSelectionRenderManager,this._commandService=_commandService,this._init()}dispose(){var _a11;super.dispose(),(_a11=this._onInputSubscription)==null||_a11.unsubscribe()}_init(){this._initialNormalInput()}_initialNormalInput(){this._onInputSubscription=this._textSelectionRenderManager.onInput$.subscribe(async config=>{var _a11;if(config==null)return;const documentModel=this._univerInstanceService.getCurrentUniverDocInstance();if(!documentModel)return;const unitId=documentModel.getUnitId(),{event,content="",activeRange}=config,e=event,skeleton=(_a11=this._renderManagerService.getRenderById(documentModel.getUnitId()))==null?void 0:_a11.with(exports.DocSkeletonManagerService).getSkeleton();if(e.data==null||skeleton==null||!skeleton||!activeRange)return;const{segmentId}=activeRange;await this._commandService.executeCommand(InsertCommand.id,{unitId,body:{dataStream:content},range:activeRange,segmentId}),content===" "&&await this._commandService.executeCommand(AfterSpaceCommand.id)})}},__name(_a7,"NormalInputController"),_a7);NormalInputController=__decorateClass$3([core.OnLifecycle(core.LifecycleStages.Rendered,NormalInputController),__decorateParam$3(0,core.IUniverInstanceService),__decorateParam$3(1,engineRender.IRenderManagerService),__decorateParam$3(2,engineRender.ITextSelectionRenderManager),__decorateParam$3(3,core.ICommandService)],NormalInputController);const AlignOperationCommand={id:"doc.command.align-action",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{var _a11;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),{alignType}=params,docDataModel=univerInstanceService.getCurrentUniverDocInstance();if(docDataModel==null)return!1;const allRanges=textSelectionManagerService.getDocRanges();if(allRanges.length===0)return!1;const segmentId=allRanges[0].segmentId,paragraphs=(_a11=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_a11.paragraphs,serializedSelections=allRanges.map(serializeDocRange);if(paragraphs==null)return!1;const currentParagraphs=getParagraphsInRanges(allRanges,paragraphs),unitId=docDataModel.getUnitId(),isAlreadyAligned=currentParagraphs.every(paragraph=>{var _a12;return((_a12=paragraph.paragraphStyle)==null?void 0:_a12.horizontalAlign)===alignType}),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:serializedSelections}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance();for(const paragraph of currentParagraphs){const{startIndex}=paragraph;textX.push({t:core.TextXActionType.RETAIN,len:startIndex-memoryCursor.cursor,segmentId});const paragraphStyle={...paragraph.paragraphStyle,horizontalAlign:isAlreadyAligned?core.HorizontalAlign.UNSPECIFIED:alignType};textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[{...paragraph,paragraphStyle,startIndex:0}]},segmentId,coverType:core.UpdateDocsAttributeType.REPLACE}),memoryCursor.moveCursorTo(startIndex+1)}const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},AlignLeftCommand={id:"doc.command.align-left",type:core.CommandType.COMMAND,handler:__name(accessor=>accessor.get(core.ICommandService).syncExecuteCommand(AlignOperationCommand.id,{alignType:core.HorizontalAlign.LEFT}),"handler")},AlignCenterCommand={id:"doc.command.align-center",type:core.CommandType.COMMAND,handler:__name(accessor=>accessor.get(core.ICommandService).syncExecuteCommand(AlignOperationCommand.id,{alignType:core.HorizontalAlign.CENTER}),"handler")},AlignRightCommand={id:"doc.command.align-right",type:core.CommandType.COMMAND,handler:__name(accessor=>accessor.get(core.ICommandService).syncExecuteCommand(AlignOperationCommand.id,{alignType:core.HorizontalAlign.RIGHT}),"handler")},AlignJustifyCommand={id:"doc.command.align-justify",type:core.CommandType.COMMAND,handler:__name(accessor=>accessor.get(core.ICommandService).syncExecuteCommand(AlignOperationCommand.id,{alignType:core.HorizontalAlign.JUSTIFIED}),"handler")};var __defProp$2=Object.defineProperty,__getOwnPropDesc$2=Object.getOwnPropertyDescriptor,__decorateClass$2=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$2(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$2(target,key,result),result},"__decorateClass$2"),__decorateParam$2=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$2"),_a8;let DocCustomRangeController=(_a8=class extends core.Disposable{constructor(_commandService,_textSelectionManagerService,_univerInstanceService){super(),this._commandService=_commandService,this._textSelectionManagerService=_textSelectionManagerService,this._univerInstanceService=_univerInstanceService,this._initSelectionChange()}_transformCustomRange(doc,selection){var _a11;const{startOffset,endOffset,collapsed}=selection,customRanges=(_a11=doc.getCustomRanges())==null?void 0:_a11.filter(range=>!range.wholeEntity||startOffset<=range.startIndex&&endOffset>range.endIndex?!1:collapsed?range.startIndex<startOffset&&range.endIndex>=endOffset:isSegmentIntersects(startOffset,endOffset-1,range.startIndex,range.endIndex));if(customRanges!=null&&customRanges.length){let start=startOffset,end=endOffset;return customRanges.forEach(range=>{start=Math.min(range.startIndex,start),end=Math.max(range.endIndex+1,end)}),{...selection,startOffset:start,endOffset:end,collapsed:start===end}}return selection}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(commandInfo=>{if(commandInfo.id===SetTextSelectionsOperation.id){const params=commandInfo.params,{unitId,ranges,isEditing}=params,doc=this._univerInstanceService.getUnit(unitId);if(!doc)return;const transformedRanges=ranges.map(range=>this._transformCustomRange(doc,range));transformedRanges.some((range,i)=>ranges[i]!==range)&&this._textSelectionManagerService.replaceTextRanges(transformedRanges,isEditing)}}))}},__name(_a8,"DocCustomRangeController"),_a8);DocCustomRangeController=__decorateClass$2([core.OnLifecycle(core.LifecycleStages.Ready,DocCustomRangeController),__decorateParam$2(0,core.ICommandService),__decorateParam$2(1,core.Inject(exports.TextSelectionManagerService)),__decorateParam$2(2,core.IUniverInstanceService)],DocCustomRangeController);const DocsRenameMutation={id:"doc.mutation.rename-doc",type:core.CommandType.MUTATION,handler:__name((accessor,params)=>{const doc=accessor.get(core.IUniverInstanceService).getUnit(params.unitId,core.UniverInstanceType.UNIVER_DOC);return doc?(doc.setName(params.name),!0):!1},"handler")},CreateDocTableCommandId="doc.command.create-table",CreateDocTableCommand={id:CreateDocTableCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11,_b,_c,_d,_e,_f;const{rowCount,colCount}=params,textSelectionManagerService=accessor.get(docs.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRange=textSelectionManagerService.getActiveTextRangeWithStyle();if(activeRange==null)return!1;const{segmentId,segmentPage}=activeRange,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const unitId=docDataModel.getUnitId(),docSkeletonManagerService=docs.getCommandSkeleton(accessor,unitId),skeleton=docSkeletonManagerService==null?void 0:docSkeletonManagerService.getSkeleton();if(skeleton==null)return!1;const{startOffset}=docs.getInsertSelection(activeRange,body),prevParagraph=((_a11=body.paragraphs)!=null?_a11:[]).find(p=>p.startIndex>=startOffset),curGlyph=skeleton.findNodeByCharIndex(startOffset,segmentId,segmentPage),line=(_b=curGlyph==null?void 0:curGlyph.parent)==null?void 0:_b.parent,preGlyph=skeleton.findNodeByCharIndex(startOffset-1,segmentId,segmentPage),isInParagraph=preGlyph&&preGlyph.content!=="\r";if(curGlyph==null||line==null)return!1;const needCreateParagraph=isInParagraph||line.isBehindTable,textX=new core.TextX,jsonX=core.JSONX.getInstance(),rawActions=[],cursor=startOffset+(needCreateParagraph?4:3),textRanges=[{startOffset:cursor,endOffset:cursor,collapsed:!0}],doMutation={id:docs.RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};startOffset>0&&textX.push({t:core.TextXActionType.RETAIN,len:startOffset,segmentId}),needCreateParagraph&&textX.push({t:core.TextXActionType.INSERT,body:{dataStream:core.DataStreamTreeTokenType.PARAGRAPH,paragraphs:docs.generateParagraphs(core.DataStreamTreeTokenType.PARAGRAPH,prevParagraph)},len:1,line:0,segmentId});const{dataStream:tableDataStream,paragraphs:tableParagraphs,sectionBreaks}=genEmptyTable(rowCount,colCount),page=(_f=(_e=(_d=(_c=curGlyph.parent)==null?void 0:_c.parent)==null?void 0:_d.parent)==null?void 0:_e.parent)==null?void 0:_f.parent;if(page==null)return!1;const{pageWidth,marginLeft,marginRight}=page,tableSource=genTableSource(rowCount,colCount,pageWidth-marginLeft-marginRight);textX.push({t:core.TextXActionType.INSERT,body:{dataStream:tableDataStream,paragraphs:tableParagraphs,sectionBreaks,tables:[{startIndex:0,endIndex:tableDataStream.length,tableId:tableSource.tableId}]},len:tableDataStream.length,line:0,segmentId});const path=docs.getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));const insertTableSource=jsonX.insertOp(["tableSource",tableSource.tableId],tableSource);return rawActions.push(insertTableSource),doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DocTableDeleteRowsCommand={id:"doc.table.delete-rows",type:core.CommandType.COMMAND,handler:__name(async accessor=>{const textSelectionManagerService=accessor.get(docs.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRectRanges=textSelectionManagerService.getCurrentRectRanges(),activeTextRange=textSelectionManagerService.getActiveTextRange(),rangeInfo=getRangeInfoFromRanges(activeTextRange,activeRectRanges);if(rangeInfo==null)return!1;const{segmentId}=rangeInfo,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const docSkeletonManagerService=docs.getCommandSkeleton(accessor,docDataModel.getUnitId());if(docSkeletonManagerService==null)return!1;const viewModel=docSkeletonManagerService.getViewModel(),unitId=docDataModel==null?void 0:docDataModel.getUnitId(),textX=new core.TextX,jsonX=core.JSONX.getInstance(),actionParams=getDeleteRowsActionsParams(rangeInfo,viewModel);if(actionParams==null)return!1;const{offset,rowIndexes,len,tableId,cursor,selectWholeTable}=actionParams;if(selectWholeTable)return commandService.executeCommand(DocTableDeleteTableCommand.id);const rawActions=[],textRanges=[{startOffset:cursor,endOffset:cursor,collapsed:!0}],doMutation={id:docs.RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};offset>0&&textX.push({t:core.TextXActionType.RETAIN,len:offset,segmentId}),textX.push({t:core.TextXActionType.DELETE,len,line:0,segmentId});const path=docs.getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));for(const index of rowIndexes.reverse()){const action=jsonX.removeOp(["tableSource",tableId,"tableRows",index]);rawActions.push(action)}return doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DocTableDeleteColumnsCommand={id:"doc.table.delete-columns",type:core.CommandType.COMMAND,handler:__name(async accessor=>{const textSelectionManagerService=accessor.get(docs.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRectRanges=textSelectionManagerService.getCurrentRectRanges(),activeTextRange=textSelectionManagerService.getActiveTextRange(),rangeInfo=getRangeInfoFromRanges(activeTextRange,activeRectRanges);if(rangeInfo==null)return!1;const{segmentId}=rangeInfo,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const docSkeletonManagerService=docs.getCommandSkeleton(accessor,docDataModel.getUnitId());if(docSkeletonManagerService==null)return!1;const viewModel=docSkeletonManagerService.getViewModel(),unitId=docDataModel==null?void 0:docDataModel.getUnitId(),textX=new core.TextX,jsonX=core.JSONX.getInstance(),actionParams=getDeleteColumnsActionParams(rangeInfo,viewModel);if(actionParams==null)return!1;const{offsets,columnIndexes,tableId,cursor,rowCount,selectWholeTable}=actionParams;if(selectWholeTable)return commandService.executeCommand(DocTableDeleteTableCommand.id);const rawActions=[],textRanges=[{startOffset:cursor,endOffset:cursor,collapsed:!0}],doMutation={id:docs.RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};for(const offset of offsets){const{retain,delete:deleteLen}=offset;retain>0&&textX.push({t:core.TextXActionType.RETAIN,len:retain,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:deleteLen,line:0,segmentId})}const path=docs.getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path)),columnIndexes.reverse();for(let i=0;i<rowCount;i++)for(const index of columnIndexes){const action=jsonX.removeOp(["tableSource",tableId,"tableRows",i,"tableCells",index]);rawActions.push(action)}for(const index of columnIndexes){const action=jsonX.removeOp(["tableSource",tableId,"tableColumns",index]);rawActions.push(action)}return doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DocTableDeleteTableCommand={id:"doc.table.delete-table",type:core.CommandType.COMMAND,handler:__name(async accessor=>{const textSelectionManagerService=accessor.get(docs.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRectRanges=textSelectionManagerService.getCurrentRectRanges(),activeTextRange=textSelectionManagerService.getActiveTextRange(),rangeInfo=getRangeInfoFromRanges(activeTextRange,activeRectRanges);if(rangeInfo==null)return!1;const{segmentId}=rangeInfo,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const docSkeletonManagerService=docs.getCommandSkeleton(accessor,docDataModel.getUnitId());if(docSkeletonManagerService==null)return!1;const viewModel=docSkeletonManagerService.getViewModel(),unitId=docDataModel==null?void 0:docDataModel.getUnitId(),textX=new core.TextX,jsonX=core.JSONX.getInstance(),actionParams=getDeleteTableActionParams(rangeInfo,viewModel);if(actionParams==null)return!1;const{offset,len,tableId,cursor}=actionParams,rawActions=[],textRanges=[{startOffset:cursor,endOffset:cursor,collapsed:!0}],doMutation={id:docs.RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};offset>0&&textX.push({t:core.TextXActionType.RETAIN,len:offset,segmentId}),textX.push({t:core.TextXActionType.DELETE,len,line:0,segmentId});const path=docs.getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));const action=jsonX.removeOp(["tableSource",tableId]);return rawActions.push(action),doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DocTableInsertRowCommandId="doc.command.table-insert-row",DocTableInsertColumnCommandId="doc.command.table-insert-column",DocTableInsertRowAboveCommandId="doc.command.table-insert-row-above",DocTableInsertRowBellowCommandId="doc.command.table-insert-row-bellow",DocTableInsertColumnLeftCommandId="doc.command.table-insert-column-left",DocTableInsertColumnRightCommandId="doc.command.table-insert-column-right",DocTableInsertRowAboveCommand={id:DocTableInsertRowAboveCommandId,type:core.CommandType.COMMAND,handler:__name(async accessor=>accessor.get(core.ICommandService).executeCommand(DocTableInsertRowCommandId,{position:INSERT_ROW_POSITION.ABOVE}),"handler")},DocTableInsertRowBellowCommand={id:DocTableInsertRowBellowCommandId,type:core.CommandType.COMMAND,handler:__name(async accessor=>accessor.get(core.ICommandService).executeCommand(DocTableInsertRowCommandId,{position:INSERT_ROW_POSITION.BELLOW}),"handler")},DocTableInsertColumnLeftCommand={id:DocTableInsertColumnLeftCommandId,type:core.CommandType.COMMAND,handler:__name(async accessor=>accessor.get(core.ICommandService).executeCommand(DocTableInsertColumnCommandId,{position:INSERT_COLUMN_POSITION.LEFT}),"handler")},DocTableInsertColumnRightCommand={id:DocTableInsertColumnRightCommandId,type:core.CommandType.COMMAND,handler:__name(async accessor=>accessor.get(core.ICommandService).executeCommand(DocTableInsertColumnCommandId,{position:INSERT_COLUMN_POSITION.RIGHT}),"handler")},DocTableInsertRowCommand={id:DocTableInsertRowCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{position}=params,textSelectionManagerService=accessor.get(docs.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRectRanges=textSelectionManagerService.getCurrentRectRanges(),activeTextRange=textSelectionManagerService.getActiveTextRange(),rangeInfo=getRangeInfoFromRanges(activeTextRange,activeRectRanges);if(rangeInfo==null)return!1;const{segmentId}=rangeInfo,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const docSkeletonManagerService=docs.getCommandSkeleton(accessor,docDataModel.getUnitId());if(docSkeletonManagerService==null)return!1;const viewModel=docSkeletonManagerService.getViewModel(),unitId=docDataModel==null?void 0:docDataModel.getUnitId(),textX=new core.TextX,jsonX=core.JSONX.getInstance(),actionParams=getInsertRowActionsParams(rangeInfo,position,viewModel);if(actionParams==null)return!1;const{offset,colCount,tableId,insertRowIndex}=actionParams,rawActions=[],cursor=offset+2,textRanges=[{startOffset:cursor,endOffset:cursor,collapsed:!0}],doMutation={id:docs.RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};offset>0&&textX.push({t:core.TextXActionType.RETAIN,len:offset,segmentId});const insertBody=getInsertRowBody(colCount);textX.push({t:core.TextXActionType.INSERT,body:insertBody,len:insertBody.dataStream.length,line:0,segmentId});const path=docs.getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));const insertRow=getEmptyTableRow(colCount),insertTableSource=jsonX.insertOp(["tableSource",tableId,"tableRows",insertRowIndex],insertRow);return rawActions.push(insertTableSource),doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DocTableInsertColumnCommand={id:DocTableInsertColumnCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11,_b,_c;const{position}=params,textSelectionManagerService=accessor.get(docs.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRectRanges=textSelectionManagerService.getCurrentRectRanges(),activeTextRange=textSelectionManagerService.getActiveTextRange(),rangeInfo=getRangeInfoFromRanges(activeTextRange,activeRectRanges);if(rangeInfo==null)return!1;const{segmentId}=rangeInfo,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const docSkeletonManagerService=docs.getCommandSkeleton(accessor,docDataModel.getUnitId());if(docSkeletonManagerService==null)return!1;const viewModel=docSkeletonManagerService.getViewModel(),unitId=docDataModel==null?void 0:docDataModel.getUnitId(),textX=new core.TextX,jsonX=core.JSONX.getInstance(),actionParams=getInsertColumnActionsParams(rangeInfo,position,viewModel);if(actionParams==null)return!1;const{offsets,columnIndex,tableId,rowCount}=actionParams,rawActions=[],cursor=offsets[0]+1,textRanges=[{startOffset:cursor,endOffset:cursor,collapsed:!0}],doMutation={id:docs.RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};for(const offset of offsets){textX.push({t:core.TextXActionType.RETAIN,len:offset,segmentId});const insertBody=getInsertColumnBody();textX.push({t:core.TextXActionType.INSERT,body:insertBody,len:insertBody.dataStream.length,line:0,segmentId})}const path=docs.getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));for(let i=0;i<rowCount;i++){const insertCell=getEmptyTableCell(),insertTableSource=jsonX.insertOp(["tableSource",tableId,"tableRows",i,"tableCells",columnIndex],insertCell);rawActions.push(insertTableSource)}const snapshot=docDataModel.getSnapshot(),documentStyle=snapshot.documentStyle,{marginLeft=0,marginRight=0}=documentStyle,pageWidth=((_b=(_a11=documentStyle.pageSize)==null?void 0:_a11.width)!=null?_b:800)-marginLeft-marginRight,tableColumns=(_c=snapshot==null?void 0:snapshot.tableSource)==null?void 0:_c[tableId].tableColumns,{newColWidth,widths}=getColumnWidths(pageWidth,tableColumns,columnIndex);for(let i=0;i<widths.length;i++){const action=jsonX.replaceOp(["tableSource",tableId,"tableColumns",i,"size","width","v"],tableColumns[i].size.width.v,widths[i]);rawActions.push(action)}const insertCol=getTableColumn(newColWidth),insertTableColumn=jsonX.insertOp(["tableSource",tableId,"tableColumns",columnIndex],insertCol);return rawActions.push(insertTableColumn),doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DocTableTabCommand={id:"doc.table.tab-in-table",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{shift}=params,textSelectionManager=accessor.get(exports.TextSelectionManagerService),activeTextRange=textSelectionManager.getActiveTextRangeWithStyle(),commandService=accessor.get(core.ICommandService),docDataModel=accessor.get(core.IUniverInstanceService).getCurrentUniverDocInstance();if(!docDataModel)return!1;const unitId=docDataModel.getUnitId(),docSkeletonManagerService=getCommandSkeleton(accessor,unitId),skeleton=docSkeletonManagerService==null?void 0:docSkeletonManagerService.getSkeleton(),viewModel=skeleton==null?void 0:skeleton.getViewModel().getSelfOrHeaderFooterViewModel(activeTextRange==null?void 0:activeTextRange.segmentId);if(viewModel==null||activeTextRange==null)return!1;let offsets=null;if(shift?offsets=getCellOffsets(viewModel,activeTextRange,CellPosition.PREV):offsets=getCellOffsets(viewModel,activeTextRange,CellPosition.NEXT),offsets){const{startOffset,endOffset}=offsets,textRanges=[{startOffset,endOffset}];return textSelectionManager.replaceTextRanges(textRanges),!0}return shift===!1?await commandService.executeCommand(DocTableInsertRowCommand.id,{position:INSERT_ROW_POSITION.BELLOW}):!0},"handler")};var __defProp$1=Object.defineProperty,__getOwnPropDesc$1=Object.getOwnPropertyDescriptor,__decorateClass$1=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$1(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$1(target,key,result),result},"__decorateClass$1"),__decorateParam$1=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$1");const PLUGIN_NAME="DOCS_PLUGIN";var _a9;exports.UniverDocsPlugin=(_a9=class extends core.Plugin{constructor(_config={},_injector){super(),this._injector=_injector,this._initializeDependencies(_injector),this._initializeCommands()}_initializeCommands(){[MoveCursorOperation,MoveSelectionOperation,DeleteLeftCommand,DeleteRightCommand,SetInlineFormatBoldCommand,SetInlineFormatItalicCommand,SetInlineFormatUnderlineCommand,SetInlineFormatStrikethroughCommand,SetInlineFormatSubscriptCommand,SetInlineFormatSuperscriptCommand,SetInlineFormatFontSizeCommand,SetInlineFormatFontFamilyCommand,SetInlineFormatTextColorCommand,ResetInlineFormatTextBackgroundColorCommand,SetInlineFormatTextBackgroundColorCommand,SetInlineFormatCommand,BreakLineCommand,InsertCommand,DeleteCommand,DeleteCustomBlockCommand,UpdateCommand,IMEInputCommand,MergeTwoParagraphCommand,RichTextEditingMutation,ReplaceContentCommand,CoverContentCommand,SetDocZoomRatioCommand,SetDocZoomRatioOperation,SetTextSelectionsOperation,SelectAllOperation,OrderListCommand,BulletListCommand,ListOperationCommand,AlignLeftCommand,AlignCenterCommand,AlignRightCommand,AlignOperationCommand,AlignJustifyCommand,CreateDocTableCommand,DocTableInsertRowCommand,DocTableInsertRowAboveCommand,DocTableInsertRowBellowCommand,DocTableInsertColumnCommand,DocTableInsertColumnLeftCommand,DocTableInsertColumnRightCommand,DocTableDeleteRowsCommand,DocTableDeleteColumnsCommand,DocTableDeleteTableCommand,DocTableTabCommand,DocsRenameMutation,TabCommand,AfterSpaceCommand,EnterCommand,ChangeListNestingLevelCommand,ChangeListTypeCommand,CheckListCommand,ToggleCheckListCommand,QuickListCommand].forEach(command=>{this._injector.get(core.ICommandService).registerCommand(command)})}_initializeDependencies(docInjector){[[exports.DocStateChangeManagerService],[IMEInputManagerService],[engineRender.ITextSelectionRenderManager,{useClass:engineRender.TextSelectionRenderManager}],[exports.TextSelectionManagerService],[DocCustomRangeService],[exports.DocAutoFormatService],[NormalInputController],[IMEInputController],[MoveCursorController],[DocCustomRangeController]].forEach(d=>docInjector.add(d))}},__name(_a9,"UniverDocsPlugin"),__publicField(_a9,"pluginName",PLUGIN_NAME),__publicField(_a9,"type",core.UniverInstanceType.UNIVER_DOC),_a9);exports.UniverDocsPlugin=__decorateClass$1([__decorateParam$1(1,core.Inject(core.Injector))],exports.UniverDocsPlugin);const getPlainTextFormBody=__name(body=>{let str=body.dataStream;return body.dataStream.endsWith(`\r
|
|
5
|
-
`)&&(str=body.dataStream.slice(0,-2)),str.replaceAll(core.DataStreamTreeTokenType.CUSTOM_RANGE_START,"").replaceAll(core.DataStreamTreeTokenType.CUSTOM_RANGE_END,"")},"getPlainTextFormBody"),getPlainTextFormDocument=__name(data=>data.body?getPlainTextFormBody(data.body):"","getPlainTextFormDocument");function addCustomRangeTextX(param,body){const{range,rangeId,rangeType,segmentId}=param,actualRange=getSelectionForAddCustomRange(range,body);if(!actualRange)return null;const{startOffset:start,endOffset:end}=actualRange,textX=new core.TextX;return start>0&&textX.push({t:core.TextXActionType.RETAIN,len:start,segmentId}),textX.push({t:core.TextXActionType.INSERT,body:{dataStream:core.DataStreamTreeTokenType.CUSTOM_RANGE_START},len:1,line:0}),textX.push({t:core.TextXActionType.RETAIN,body:{dataStream:""},len:end-start,segmentId}),textX.push({t:core.TextXActionType.INSERT,body:{dataStream:core.DataStreamTreeTokenType.CUSTOM_RANGE_END,customRanges:[{rangeId,rangeType,startIndex:-(end-start)-1,endIndex:0}]},len:1,line:0}),textX}__name(addCustomRangeTextX,"addCustomRangeTextX");function addCustomRangeFactory(param,body){const doMutation={id:RichTextEditingMutation.id,params:{unitId:param.unitId,actions:[],textRanges:void 0}},jsonX=core.JSONX.getInstance(),textX=addCustomRangeTextX(param,body);return textX?(doMutation.params.actions=jsonX.editOp(textX.serialize()),doMutation):!1}__name(addCustomRangeFactory,"addCustomRangeFactory");function addCustomRangeBySelectionFactory(accessor,param){var _a11;const{rangeId,rangeType,wholeEntity}=param,textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selection=textSelectionManagerService.getActiveTextRangeWithStyle(),segmentId=selection==null?void 0:selection.segmentId;if(!selection)return!1;const documentDataModel=univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_DOC);if(!documentDataModel)return!1;const body=documentDataModel.getSelfOrHeaderFooterModel(selection.segmentId).getBody(),unitId=documentDataModel.getUnitId();if(!body)return!1;const{startOffset,endOffset}=normalizeSelection(selection),customRanges=(_a11=body.customRanges)!=null?_a11:[],relativeCustomRanges=[];for(let i=0,len=customRanges.length;i<len;i++){const customRange=customRanges[i];if(customRange.rangeType===rangeType&&Math.max(customRange.startIndex,startOffset)<=Math.min(customRange.endIndex,endOffset-1)&&relativeCustomRanges.push({...customRange}),customRange.startIndex>=endOffset)break}const deletes=relativeCustomRanges.map(i=>[i.startIndex,i.endIndex]).flat().sort((pre,aft)=>pre-aft);let cursor=0;const textX=new core.TextX,range=deletes.length?{startOffset:Math.min(deletes[0],startOffset),endOffset:Math.max(deletes[deletes.length-1]+1,endOffset)}:selection;range.startOffset!==cursor&&(textX.push({t:core.TextXActionType.RETAIN,len:range.startOffset-cursor,segmentId}),cursor=range.startOffset),textX.push({t:core.TextXActionType.INSERT,body:{dataStream:core.DataStreamTreeTokenType.CUSTOM_RANGE_START},len:1,line:0,segmentId}),deletes.forEach((index,i)=>{index!==cursor&&(textX.push({t:core.TextXActionType.RETAIN,len:index-cursor,segmentId}),cursor=index),textX.push({t:core.TextXActionType.DELETE,len:1,line:0,segmentId}),cursor++}),cursor!==range.endOffset&&(textX.push({t:core.TextXActionType.RETAIN,len:range.endOffset-cursor,segmentId}),cursor=range.endOffset),textX.push({t:core.TextXActionType.INSERT,body:{dataStream:core.DataStreamTreeTokenType.CUSTOM_RANGE_END,customRanges:[{rangeId,rangeType,startIndex:-(range.endOffset-range.startOffset-deletes.length+1),endIndex:0,wholeEntity}]},len:1,line:0,segmentId});const jsonX=core.JSONX.getInstance(),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:void 0}},path=getRichTextEditPath(documentDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),doMutation}__name(addCustomRangeBySelectionFactory,"addCustomRangeBySelectionFactory");function deleteCustomRangeTextX(accessor,params){var _a11,_b;const{unitId,rangeId,segmentId}=params,documentDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId);if(!documentDataModel)return!1;const range=(_b=(_a11=documentDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_a11.customRanges)==null?void 0:_b.find(r=>r.rangeId===rangeId);if(!range)return!1;const{startIndex,endIndex}=range,textX=new core.TextX,len=endIndex-startIndex+1;return startIndex>0&&textX.push({t:core.TextXActionType.RETAIN,len:startIndex,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:1,segmentId,line:0}),len-2>0&&textX.push({t:core.TextXActionType.RETAIN,len:len-2,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:1,segmentId,line:0}),textX}__name(deleteCustomRangeTextX,"deleteCustomRangeTextX");function deleteCustomRangeFactory(accessor,params){const{unitId,segmentId}=params,documentDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId);if(!documentDataModel)return!1;const doMutation={id:RichTextEditingMutation.id,params:{unitId:params.unitId,actions:[],textRanges:void 0,segmentId}},jsonX=core.JSONX.getInstance(),textX=deleteCustomRangeTextX(accessor,params);if(!textX)return!1;const path=getRichTextEditPath(documentDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),doMutation}__name(deleteCustomRangeFactory,"deleteCustomRangeFactory");function addCustomDecorationFactory(param){const{unitId,ranges,id,type,segmentId}=param,doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:void 0}},textX=new core.TextX,jsonX=core.JSONX.getInstance();let cursor=0;for(let i=0;i<ranges.length;i++){const range=ranges[i],{startOffset:start,endOffset:end}=range;start>0&&textX.push({t:core.TextXActionType.RETAIN,len:start-cursor,segmentId}),textX.push({t:core.TextXActionType.RETAIN,body:{dataStream:"",customDecorations:[{id,type,startIndex:0,endIndex:end-start-1}]},len:end-start,segmentId}),cursor=end}return doMutation.params.actions=jsonX.editOp(textX.serialize()),doMutation}__name(addCustomDecorationFactory,"addCustomDecorationFactory");function addCustomDecorationBySelectionFactory(accessor,param){const{segmentId,id,type}=param,textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selections=textSelectionManagerService.getCurrentTextRanges();if(!selections)return!1;const documentDataModel=univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_DOC);if(!documentDataModel)return!1;const body=documentDataModel.getBody(),unitId=documentDataModel.getUnitId();return body?addCustomDecorationFactory({unitId,ranges:selections.map(serializeDocRange),id,type,segmentId}):!1}__name(addCustomDecorationBySelectionFactory,"addCustomDecorationBySelectionFactory");function deleteCustomDecorationFactory(accessor,params){var _a11,_b;const{unitId,id,segmentId}=params,documentDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId),body=documentDataModel==null?void 0:documentDataModel.getBody();if(!documentDataModel||!body)return!1;const decorations=(_b=(_a11=documentDataModel.getBody())==null?void 0:_a11.customDecorations)==null?void 0:_b.filter(d=>d.id===id);if(!(decorations!=null&&decorations.length))return!1;const oldBodySlices=decorations.map(i=>core.getBodySlice(body,i.startIndex,i.endIndex+1)),bodySlices=oldBodySlices.map(bodySlice=>{var _a12;const copy=core.Tools.deepClone(bodySlice);return copy.customDecorations=(_a12=copy.customDecorations)==null?void 0:_a12.filter(decoration=>decoration.id!==id),copy}),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:void 0}},textX=new core.TextX,jsonX=core.JSONX.getInstance();let cursor=0;return decorations.forEach((decoration,i)=>{const bodySlice=bodySlices[i],oldBody=oldBodySlices[i];decoration.startIndex!==cursor&&textX.push({t:core.TextXActionType.RETAIN,len:decoration.startIndex-cursor,segmentId}),cursor=decoration.startIndex,textX.push({t:core.TextXActionType.RETAIN,len:decoration.endIndex-decoration.startIndex+1,segmentId,body:bodySlice,oldBody,coverType:core.UpdateDocsAttributeType.REPLACE}),cursor=cursor+(decoration.endIndex-decoration.startIndex+1)}),doMutation.params.actions=jsonX.editOp(textX.serialize()),doMutation}__name(deleteCustomDecorationFactory,"deleteCustomDecorationFactory");const CUSTOM_RANGE=core.createInterceptorKey("CUSTOM_RANGE"),CUSTOM_DECORATION=core.createInterceptorKey("CUSTOM_DECORATION"),DOC_INTERCEPTOR_POINT={CUSTOM_RANGE,CUSTOM_DECORATION};var __defProp2=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__decorateClass=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp2(target,key,result),result},"__decorateClass"),__decorateParam=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam"),_a10;exports.DocInterceptorService=(_a10=class extends core.Disposable{constructor(_context,_docSkeletonManagerService){super();__publicField(this,"_interceptorsByName",new Map);this._context=_context,this._docSkeletonManagerService=_docSkeletonManagerService;const viewModel=this._docSkeletonManagerService.getViewModel(),unitId=viewModel.getDataModel().getUnitId();if(unitId===core.DOCS_NORMAL_EDITOR_UNIT_ID_KEY||unitId===core.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY)return;this.disposeWithMe(this.interceptDocumentViewModel(viewModel)),this.disposeWithMe(this.intercept(DOC_INTERCEPTOR_POINT.CUSTOM_RANGE,{priority:-1,handler:__name((data,pos,next)=>next(data),"handler")}));let disposableCollection=new core.DisposableCollection;viewModel.segmentViewModels$.subscribe(segmentViewModels=>{disposableCollection.dispose(),disposableCollection=new core.DisposableCollection,segmentViewModels.forEach(segmentViewModel=>{disposableCollection.add(this.interceptDocumentViewModel(segmentViewModel))})}),this.disposeWithMe(disposableCollection)}intercept(name,interceptor){const key=name;this._interceptorsByName.has(key)||this._interceptorsByName.set(key,[]);const interceptors=this._interceptorsByName.get(key);return interceptors.push(interceptor),this._interceptorsByName.set(key,interceptors.sort((a,b)=>{var _a11,_b;return((_a11=b.priority)!=null?_a11:0)-((_b=a.priority)!=null?_b:0)})),this.disposeWithMe(core.toDisposable(()=>core.remove(this._interceptorsByName.get(key),interceptor)))}fetchThroughInterceptors(name){const key=name,interceptors=this._interceptorsByName.get(key);return core.composeInterceptors(interceptors||[])}interceptDocumentViewModel(viewModel){const disposableCollection=new core.DisposableCollection;return disposableCollection.add(viewModel.registerCustomRangeInterceptor({getCustomRange:__name(index=>{var _a11;return this.fetchThroughInterceptors(DOC_INTERCEPTOR_POINT.CUSTOM_RANGE)(viewModel.getCustomRangeRaw(index),{index,unitId:viewModel.getDataModel().getUnitId(),customRanges:(_a11=viewModel.getDataModel().getCustomRanges())!=null?_a11:[]})},"getCustomRange"),getCustomDecoration:__name(index=>{var _a11;return this.fetchThroughInterceptors(DOC_INTERCEPTOR_POINT.CUSTOM_DECORATION)(viewModel.getCustomDecorationRaw(index),{index,unitId:viewModel.getDataModel().getUnitId(),customDecorations:(_a11=viewModel.getDataModel().getCustomDecorations())!=null?_a11:[]})},"getCustomDecoration")})),disposableCollection}},__name(_a10,"DocInterceptorService"),_a10);exports.DocInterceptorService=__decorateClass([core.OnLifecycle(core.LifecycleStages.Starting,exports.DocInterceptorService),__decorateParam(1,core.Inject(exports.DocSkeletonManagerService))],exports.DocInterceptorService);exports.AfterSpaceCommand=AfterSpaceCommand;exports.AlignCenterCommand=AlignCenterCommand;exports.AlignJustifyCommand=AlignJustifyCommand;exports.AlignLeftCommand=AlignLeftCommand;exports.AlignOperationCommand=AlignOperationCommand;exports.AlignRightCommand=AlignRightCommand;exports.BreakLineCommand=BreakLineCommand;exports.BulletListCommand=BulletListCommand;exports.ChangeListNestingLevelCommand=ChangeListNestingLevelCommand;exports.ChangeListNestingLevelType=ChangeListNestingLevelType;exports.ChangeListTypeCommand=ChangeListTypeCommand;exports.CheckListCommand=CheckListCommand;exports.CoverContentCommand=CoverContentCommand;exports.CreateDocTableCommand=CreateDocTableCommand;exports.CutContentCommand=CutContentCommand;exports.DOCS_COMPONENT_BACKGROUND_LAYER_INDEX=DOCS_COMPONENT_BACKGROUND_LAYER_INDEX;exports.DOCS_COMPONENT_DEFAULT_Z_INDEX=DOCS_COMPONENT_DEFAULT_Z_INDEX;exports.DOCS_COMPONENT_HEADER_LAYER_INDEX=DOCS_COMPONENT_HEADER_LAYER_INDEX;exports.DOCS_COMPONENT_MAIN_LAYER_INDEX=DOCS_COMPONENT_MAIN_LAYER_INDEX;exports.DOCS_VIEW_KEY=DOCS_VIEW_KEY;exports.DOC_INTERCEPTOR_POINT=DOC_INTERCEPTOR_POINT;exports.DeleteCommand=DeleteCommand;exports.DeleteCustomBlockCommand=DeleteCustomBlockCommand;exports.DeleteLeftCommand=DeleteLeftCommand;exports.DeleteRightCommand=DeleteRightCommand;exports.DocCustomRangeService=DocCustomRangeService;exports.DocTableDeleteColumnsCommand=DocTableDeleteColumnsCommand;exports.DocTableDeleteRowsCommand=DocTableDeleteRowsCommand;exports.DocTableDeleteTableCommand=DocTableDeleteTableCommand;exports.DocTableInsertColumnCommand=DocTableInsertColumnCommand;exports.DocTableInsertColumnLeftCommand=DocTableInsertColumnLeftCommand;exports.DocTableInsertColumnRightCommand=DocTableInsertColumnRightCommand;exports.DocTableInsertRowAboveCommand=DocTableInsertRowAboveCommand;exports.DocTableInsertRowBellowCommand=DocTableInsertRowBellowCommand;exports.DocTableInsertRowCommand=DocTableInsertRowCommand;exports.DocTableTabCommand=DocTableTabCommand;exports.EditorInsertTextCommandId=EditorInsertTextCommandId;exports.EnterCommand=EnterCommand;exports.IMEInputCommand=IMEInputCommand;exports.IMEInputManagerService=IMEInputManagerService;exports.InnerPasteCommand=InnerPasteCommand;exports.InsertCommand=InsertCommand;exports.ListOperationCommand=ListOperationCommand;exports.MergeTwoParagraphCommand=MergeTwoParagraphCommand;exports.MoveCursorOperation=MoveCursorOperation;exports.MoveSelectionOperation=MoveSelectionOperation;exports.NORMAL_TEXT_SELECTION_PLUGIN_NAME=NORMAL_TEXT_SELECTION_PLUGIN_NAME;exports.OrderListCommand=OrderListCommand;exports.QuickListCommand=QuickListCommand;exports.ReplaceContentCommand=ReplaceContentCommand;exports.ResetInlineFormatTextBackgroundColorCommand=ResetInlineFormatTextBackgroundColorCommand;exports.RichTextEditingMutation=RichTextEditingMutation;exports.SelectAllOperation=SelectAllOperation;exports.SetDocZoomRatioCommand=SetDocZoomRatioCommand;exports.SetDocZoomRatioOperation=SetDocZoomRatioOperation;exports.SetInlineFormatBoldCommand=SetInlineFormatBoldCommand;exports.SetInlineFormatCommand=SetInlineFormatCommand;exports.SetInlineFormatFontFamilyCommand=SetInlineFormatFontFamilyCommand;exports.SetInlineFormatFontSizeCommand=SetInlineFormatFontSizeCommand;exports.SetInlineFormatItalicCommand=SetInlineFormatItalicCommand;exports.SetInlineFormatStrikethroughCommand=SetInlineFormatStrikethroughCommand;exports.SetInlineFormatSubscriptCommand=SetInlineFormatSubscriptCommand;exports.SetInlineFormatSuperscriptCommand=SetInlineFormatSuperscriptCommand;exports.SetInlineFormatTextBackgroundColorCommand=SetInlineFormatTextBackgroundColorCommand;exports.SetInlineFormatTextColorCommand=SetInlineFormatTextColorCommand;exports.SetInlineFormatUnderlineCommand=SetInlineFormatUnderlineCommand;exports.SetTextSelectionsOperation=SetTextSelectionsOperation;exports.TabCommand=TabCommand;exports.ToggleCheckListCommand=ToggleCheckListCommand;exports.UpdateCommand=UpdateCommand;exports.VIEWPORT_KEY=VIEWPORT_KEY;exports.addCustomDecorationBySelectionFactory=addCustomDecorationBySelectionFactory;exports.addCustomDecorationFactory=addCustomDecorationFactory;exports.addCustomRangeBySelectionFactory=addCustomRangeBySelectionFactory;exports.addCustomRangeFactory=addCustomRangeFactory;exports.deleteCustomDecorationFactory=deleteCustomDecorationFactory;exports.deleteCustomRangeFactory=deleteCustomRangeFactory;exports.genTableSource=genTableSource;exports.generateParagraphs=generateParagraphs;exports.getCommandSkeleton=getCommandSkeleton;exports.getCursorWhenDelete=getCursorWhenDelete;exports.getCustomBlockIdsInSelections=getCustomBlockIdsInSelections;exports.getCustomRangesInterestsWithRange=getCustomRangesInterestsWithRange;exports.getCutActionsFromDocRanges=getCutActionsFromDocRanges;exports.getDeleteSelection=getDeleteSelection;exports.getDocObject=getDocObject;exports.getDocObjectById=getDocObjectById;exports.getEmptyTableCell=getEmptyTableCell;exports.getEmptyTableRow=getEmptyTableRow;exports.getInsertSelection=getInsertSelection;exports.getParagraphsInRange=getParagraphsInRange$1;exports.getParagraphsInRanges=getParagraphsInRanges;exports.getPlainTextFormBody=getPlainTextFormBody;exports.getPlainTextFormDocument=getPlainTextFormDocument;exports.getRetainAndDeleteFromReplace=getRetainAndDeleteFromReplace;exports.getRichTextEditPath=getRichTextEditPath;exports.getSelectionText=getSelectionText;exports.getTableColumn=getTableColumn;exports.hasParagraphInTable=hasParagraphInTable;exports.isSegmentIntersects=isSegmentIntersects;exports.makeSelection=makeSelection;exports.neoGetDocObject=neoGetDocObject;exports.replaceSelectionFactory=replaceSelectionFactory;exports.serializeDocRange=serializeDocRange;
|
|
4
|
+
${core.DataStreamTreeTokenType.TABLE_CELL_END}`,paragraphs=[],sectionBreaks=[];return paragraphs.push({startIndex:1,paragraphStyle:{spaceAbove:{v:3},lineSpacing:2,spaceBelow:{v:0}}}),sectionBreaks.push({startIndex:2}),{dataStream,paragraphs,sectionBreaks}}__name(getInsertColumnBody,"getInsertColumnBody");function getInsertRowActionsParams(rangeInfo,position,viewModel){var _a11,_b,_c;const{startOffset,endOffset,segmentId}=rangeInfo,vm=viewModel.getSelfOrHeaderFooterViewModel(segmentId),index=position===0?startOffset:endOffset;let tableRow=null;const tableId=(_c=(_b=(_a11=viewModel.getBody())==null?void 0:_a11.tables)==null?void 0:_b.find(t=>index>=t.startIndex&&index<=t.endIndex))==null?void 0:_c.tableId;let rowIndex=0;for(const section of vm.children){for(const paragraph of section.children){const{children}=paragraph,table=children[0];if(table){for(const row of table.children)if(row.startIndex<=index&&index<=row.endIndex){rowIndex=table.children.indexOf(row),tableRow=row;break}}if(tableRow)break}if(tableRow)break}return tableRow==null||tableId==null?null:{offset:position===0?tableRow.startIndex:tableRow.endIndex+1,colCount:tableRow.children.length,tableId,insertRowIndex:position===0?rowIndex:rowIndex+1}}__name(getInsertRowActionsParams,"getInsertRowActionsParams");function getInsertColumnActionsParams(rangeInfo,position,viewModel){var _a11,_b,_c;const{startOffset,endOffset,segmentId}=rangeInfo,vm=viewModel.getSelfOrHeaderFooterViewModel(segmentId),index=position===0?startOffset:endOffset,tableId=(_c=(_b=(_a11=viewModel.getBody())==null?void 0:_a11.tables)==null?void 0:_b.find(t=>index>=t.startIndex&&index<=t.endIndex))==null?void 0:_c.tableId,offsets=[];let table=null,columnIndex=-1;for(const section of vm.children){for(const paragraph of section.children){const{children}=paragraph,tableNode=children[0];if(tableNode){if(index<tableNode.startIndex||index>tableNode.endIndex)continue;table=tableNode;for(const row of tableNode.children){for(const cell of row.children){const cellIndex=row.children.indexOf(cell);if(index>=cell.startIndex&&index<=cell.endIndex){columnIndex=cellIndex;break}}if(columnIndex!==-1)break}}if(table)break}if(table)break}if(table==null||tableId==null||columnIndex===-1)return null;let cursor=0;for(const row of table.children){const cell=row.children[columnIndex],insertIndex=position===0?cell.startIndex:cell.endIndex+1;offsets.push(insertIndex-cursor),cursor=insertIndex}return{offsets,tableId,columnIndex,rowCount:table.children.length}}__name(getInsertColumnActionsParams,"getInsertColumnActionsParams");function getColumnWidths(pageWidth,tableColumns,insertColumnIndex){const widths=[];let newColWidth=tableColumns[insertColumnIndex].size.width.v,totalWidth=0;for(let i=0;i<tableColumns.length;i++)totalWidth+=tableColumns[i].size.width.v;totalWidth+=newColWidth;for(let i=0;i<tableColumns.length;i++)widths.push(tableColumns[i].size.width.v/totalWidth*pageWidth);return newColWidth=newColWidth/totalWidth*pageWidth,{widths,newColWidth}}__name(getColumnWidths,"getColumnWidths");function getDeleteRowsActionsParams(rangeInfo,viewModel){var _a11,_b,_c;const{startOffset,endOffset,segmentId}=rangeInfo,vm=viewModel.getSelfOrHeaderFooterViewModel(segmentId),tableId=(_c=(_b=(_a11=viewModel.getBody())==null?void 0:_a11.tables)==null?void 0:_b.find(t=>startOffset>=t.startIndex&&endOffset<=t.endIndex))==null?void 0:_c.tableId,rowIndexes=[];let offset=-1,len=0,cursor=-1,selectWholeTable=!1;for(const section of vm.children){for(const paragraph of section.children){const{children}=paragraph,table=children[0];if(table){if(startOffset<table.startIndex||endOffset>table.endIndex)continue;cursor=table.startIndex+3;for(const row of table.children){const rowIndex=table.children.indexOf(row),{startIndex,endIndex}=row;startOffset>=startIndex&&startOffset<=endIndex?(offset=startIndex,rowIndexes.push(rowIndex),len+=endIndex-startIndex+1):(startIndex>startOffset&&endIndex<endOffset||endOffset>=startIndex&&endOffset<=endIndex)&&(rowIndexes.push(rowIndex),len+=endIndex-startIndex+1),rowIndexes.length===table.children.length&&(selectWholeTable=!0)}}if(rowIndexes.length)break}if(rowIndexes.length)break}return tableId==null||rowIndexes.length===0?null:{tableId,rowIndexes,offset,len,cursor,selectWholeTable}}__name(getDeleteRowsActionsParams,"getDeleteRowsActionsParams");function getDeleteColumnsActionParams(rangeInfo,viewModel){var _a11,_b,_c;const{startOffset,endOffset,segmentId}=rangeInfo,vm=viewModel.getSelfOrHeaderFooterViewModel(segmentId),tableId=(_c=(_b=(_a11=viewModel.getBody())==null?void 0:_a11.tables)==null?void 0:_b.find(t=>startOffset>=t.startIndex&&endOffset<=t.endIndex))==null?void 0:_c.tableId,offsets=[];let table=null;const columnIndexes=[];let cursor=-1,startColumnIndex=-1,endColumnIndex=-1;for(const section of vm.children){for(const paragraph of section.children){const{children}=paragraph,tableNode=children[0];if(tableNode){if(startOffset<tableNode.startIndex||endOffset>tableNode.endIndex)continue;table=tableNode;for(const row of tableNode.children)for(const cell of row.children){const cellIndex=row.children.indexOf(cell);startOffset>=cell.startIndex&&startOffset<=cell.endIndex&&(startColumnIndex=cellIndex),endOffset>=cell.startIndex&&endOffset<=cell.endIndex&&(endColumnIndex=cellIndex)}}if(table)break}if(table)break}if(table==null||tableId==null)return null;for(let i=startColumnIndex;i<=endColumnIndex;i++)columnIndexes.push(i);let delta=0;for(const row of table.children){const startCell=row.children[startColumnIndex],endCell=row.children[endColumnIndex];offsets.push({retain:startCell.startIndex-delta,delete:endCell.endIndex-startCell.startIndex+1}),delta=endCell.endIndex+1}return cursor=table.startIndex+3,{offsets,tableId,columnIndexes,cursor,selectWholeTable:columnIndexes.length===table.children[0].children.length,rowCount:table.children.length}}__name(getDeleteColumnsActionParams,"getDeleteColumnsActionParams");function getDeleteTableActionParams(rangeInfo,viewModel){var _a11,_b,_c;const{startOffset,endOffset,segmentId}=rangeInfo,vm=viewModel.getSelfOrHeaderFooterViewModel(segmentId),tableId=(_c=(_b=(_a11=viewModel.getBody())==null?void 0:_a11.tables)==null?void 0:_b.find(t=>startOffset>=t.startIndex&&endOffset<=t.endIndex))==null?void 0:_c.tableId;let offset=-1,len=0,cursor=-1;for(const section of vm.children){for(const paragraph of section.children){const{children}=paragraph,table=children[0];if(table){if(startOffset<table.startIndex||endOffset>table.endIndex)continue;offset=table.startIndex,len=table.endIndex-table.startIndex+1,cursor=table.startIndex}if(table)break}if(len>0)break}return tableId==null?null:{tableId,offset,len,cursor}}__name(getDeleteTableActionParams,"getDeleteTableActionParams");function getDeleteRowContentActionParams(rangeInfo,viewModel){var _a11,_b,_c;const{startOffset,endOffset,segmentId}=rangeInfo,vm=viewModel.getSelfOrHeaderFooterViewModel(segmentId),tableId=(_c=(_b=(_a11=viewModel.getBody())==null?void 0:_a11.tables)==null?void 0:_b.find(t=>startOffset>=t.startIndex&&endOffset<=t.endIndex))==null?void 0:_c.tableId,offsets=[];let table=null,cursor=-1,rowIndex=-1,startColumnIndex=-1,endColumnIndex=-1;for(const section of vm.children){for(const paragraph of section.children){const{children}=paragraph,tableNode=children[0];if(tableNode){if(startOffset<tableNode.startIndex||endOffset>tableNode.endIndex)continue;table=tableNode;for(const row2 of tableNode.children){const rIndex=tableNode.children.indexOf(row2);for(const cell of row2.children){const cellIndex=row2.children.indexOf(cell);startOffset>=cell.startIndex&&startOffset<=cell.endIndex&&(rowIndex=rIndex,startColumnIndex=cellIndex),endOffset>=cell.startIndex&&endOffset<=cell.endIndex&&(endColumnIndex=cellIndex)}}}if(table)break}if(table)break}if(table==null||tableId==null||rowIndex===-1)return null;const row=table.children[rowIndex];for(let i=startColumnIndex;i<=endColumnIndex;i++){const cell=row.children[i];offsets.push({retain:cell.startIndex+1,delete:cell.endIndex-cell.startIndex-3})}return cursor=table.startIndex+3,{offsets,tableId,cursor,rowCount:table.children.length}}__name(getDeleteRowContentActionParams,"getDeleteRowContentActionParams");var CellPosition=(CellPosition2=>(CellPosition2[CellPosition2.NEXT=0]="NEXT",CellPosition2[CellPosition2.PREV=1]="PREV",CellPosition2))(CellPosition||{});function getCellOffsets(viewModel,range,position){const{startOffset}=range;let targetTable=null;for(const section of viewModel.children){for(const paragraph of section.children){const table=paragraph.children[0];if(table&&startOffset>table.startIndex&&startOffset<table.endIndex){targetTable=table;break}}if(targetTable)break}if(targetTable==null)return null;let cellIndex=-1,rowIndex=-1,targetRow=null;for(const row of targetTable.children){for(const cell of row.children)if(startOffset>cell.startIndex&&startOffset<cell.endIndex){cellIndex=row.children.indexOf(cell),rowIndex=targetTable.children.indexOf(row),targetRow=row;break}if(cellIndex>-1)break}if(cellIndex===-1||rowIndex===-1||targetRow==null)return null;let newCell=null;if(position===0){if(newCell=targetRow.children[cellIndex+1],!newCell){const nextRow=targetTable.children[rowIndex+1];nextRow&&(newCell=nextRow.children[0])}}else if(newCell=targetRow.children[cellIndex-1],!newCell){const prevRow=targetTable.children[rowIndex-1];prevRow&&(newCell=prevRow.children[prevRow.children.length-1])}if(newCell){const{startIndex,endIndex}=newCell;return{startOffset:startIndex+1,endOffset:endIndex-2}}}__name(getCellOffsets,"getCellOffsets");function getCustomBlockIdsInSelections(body,selections){const customBlockIds=[],{customBlocks=[]}=body;for(const selection of selections){const{startOffset,endOffset}=selection;if(!(startOffset==null||endOffset==null))for(const customBlock of customBlocks){const{startIndex}=customBlock;startIndex>=startOffset&&startIndex<endOffset&&customBlockIds.push(customBlock.blockId)}}return customBlockIds}__name(getCustomBlockIdsInSelections,"getCustomBlockIdsInSelections");function hasRangeInTable(ranges){return ranges.some(range=>{const{anchorNodePosition}=range;return anchorNodePosition?(anchorNodePosition==null?void 0:anchorNodePosition.path.indexOf("cells"))>-1:!1})}__name(hasRangeInTable,"hasRangeInTable");const InnerPasteCommand={id:"doc.command.inner-paste",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11,_b,_c,_d;const{segmentId,textRanges,doc}=params,commandService=accessor.get(core.ICommandService),textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selections=textSelectionManagerService.getCurrentTextRanges(),{body,tableSource,drawings}=doc;if(!Array.isArray(selections)||selections.length===0||body==null)return!1;const docDataModel=univerInstanceService.getCurrentUniverDocInstance(),originBody=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||originBody==null)return!1;const unitId=docDataModel.getUnitId(),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges,segmentId}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance(),rawActions=[],hasTable=!!((_a11=body.tables)!=null&&_a11.length),hasCustomBlock=!!((_b=body.customBlocks)!=null&&_b.length);if(hasTable&&segmentId||hasTable&&hasRangeInTable(selections))return!1;for(const selection of selections){const{startOffset,endOffset,collapsed}=selection,len=startOffset-memoryCursor.cursor,cloneBody=core.Tools.deepClone(body);if(hasTable)for(const t of cloneBody.tables){const{tableId:oldTableId}=t,tableId=core.Tools.generateRandomId(6);t.tableId=tableId;const table=core.Tools.deepClone(tableSource[oldTableId]);table.tableId=tableId;const action=jsonX.insertOp(["tableSource",tableId],table);rawActions.push(action)}if(hasCustomBlock&&drawings){const drawingLen=(_d=(_c=docDataModel.getSnapshot().drawingsOrder)==null?void 0:_c.length)!=null?_d:0;for(const block of cloneBody.customBlocks){const{blockId}=block,drawingId=core.Tools.generateRandomId(6);block.blockId=drawingId;const drawing=core.Tools.deepClone(drawings[blockId]);drawing.drawingId=drawingId;const action=jsonX.insertOp(["drawings",drawingId],drawing),orderAction=jsonX.insertOp(["drawingsOrder",drawingLen],drawingId);rawActions.push(action),rawActions.push(orderAction)}}if(collapsed)textX.push({t:core.TextXActionType.RETAIN,len,segmentId});else{const{dos}=getRetainAndDeleteFromReplace(selection,segmentId,memoryCursor.cursor,originBody);textX.push(...dos)}textX.push({t:core.TextXActionType.INSERT,body:cloneBody,len:body.dataStream.length,line:0,segmentId}),memoryCursor.reset(),memoryCursor.moveCursor(endOffset)}const path=getRichTextEditPath(docDataModel,segmentId);return rawActions.push(jsonX.editOp(textX.serialize(),path)),doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")};function getCutActionsFromTextRanges(selections,docDataModel,segmentId){var _a11,_b;const originBody=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody(),textX=new core.TextX,jsonX=core.JSONX.getInstance(),rawActions=[];if(originBody==null)return rawActions;const memoryCursor=new core.MemoryCursor;memoryCursor.reset();for(const selection of selections){const{startOffset,endOffset,collapsed}=selection;if(startOffset==null||endOffset==null)continue;const len=startOffset-memoryCursor.cursor;collapsed?textX.push({t:core.TextXActionType.RETAIN,len,segmentId}):textX.push(...getRetainAndDeleteAndExcludeLineBreak(selection,originBody,segmentId,memoryCursor.cursor,!1)),memoryCursor.reset(),memoryCursor.moveCursor(endOffset)}const path=getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));const removedCustomBlockIds=getCustomBlockIdsInSelections(originBody,selections),drawings=(_a11=docDataModel.getDrawings())!=null?_a11:{},drawingOrder=(_b=docDataModel.getDrawingsOrder())!=null?_b:[],sortedRemovedCustomBlockIds=removedCustomBlockIds.sort((a,b)=>drawingOrder.indexOf(a)>drawingOrder.indexOf(b)?-1:drawingOrder.indexOf(a)<drawingOrder.indexOf(b)?1:0);if(sortedRemovedCustomBlockIds.length>0)for(const blockId of sortedRemovedCustomBlockIds){const drawing=drawings[blockId],drawingIndex=drawingOrder.indexOf(blockId);if(drawing==null||drawingIndex<0)continue;const removeDrawingAction=jsonX.removeOp(["drawings",blockId],drawing),removeDrawingOrderAction=jsonX.removeOp(["drawingsOrder",drawingIndex],blockId);rawActions.push(removeDrawingAction),rawActions.push(removeDrawingOrderAction)}return rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null)}__name(getCutActionsFromTextRanges,"getCutActionsFromTextRanges");function getCutActionsFromRectRanges(ranges,docDataModel,viewModel,segmentId){const rawActions=[];if(docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody()==null)return rawActions;const textX=new core.TextX,jsonX=core.JSONX.getInstance(),memoryCursor=new core.MemoryCursor;memoryCursor.reset();for(const range of ranges){const{startOffset,endOffset,spanEntireRow,spanEntireTable}=range;if(!(startOffset==null||endOffset==null))if(spanEntireTable){const actionParams=getDeleteTableActionParams({startOffset,endOffset,segmentId},viewModel);if(actionParams==null)continue;const{offset,len,tableId}=actionParams;offset-memoryCursor.cursor>0&&textX.push({t:core.TextXActionType.RETAIN,len:offset-memoryCursor.cursor,segmentId}),textX.push({t:core.TextXActionType.DELETE,len,line:0,segmentId});const action=jsonX.removeOp(["tableSource",tableId]);rawActions.push(action),memoryCursor.moveCursorTo(offset+len)}else if(spanEntireRow){const actionParams=getDeleteRowsActionsParams({startOffset,endOffset,segmentId},viewModel);if(actionParams==null)continue;const{offset,rowIndexes,len,tableId}=actionParams;offset-memoryCursor.cursor>0&&textX.push({t:core.TextXActionType.RETAIN,len:offset-memoryCursor.cursor,segmentId}),textX.push({t:core.TextXActionType.DELETE,len,line:0,segmentId});for(const index of rowIndexes.reverse()){const action=jsonX.removeOp(["tableSource",tableId,"tableRows",index]);rawActions.push(action)}memoryCursor.moveCursorTo(offset+len)}else{const actionParams=getDeleteRowContentActionParams({startOffset,endOffset,segmentId},viewModel);if(actionParams==null)continue;const{offsets}=actionParams;for(const offset of offsets){const{retain,delete:delLen}=offset;retain-memoryCursor.cursor>0&&textX.push({t:core.TextXActionType.RETAIN,len:retain-memoryCursor.cursor,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:delLen,line:0,segmentId}),memoryCursor.moveCursorTo(retain+delLen)}}}const path=getRichTextEditPath(docDataModel,segmentId);return rawActions.push(jsonX.editOp(textX.serialize(),path)),rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null)}__name(getCutActionsFromRectRanges,"getCutActionsFromRectRanges");function getCutActionsFromDocRanges(textRanges,rectRanges,docDataModel,viewModel,segmentId){let rawActions=[];if(Array.isArray(textRanges)&&(textRanges==null?void 0:textRanges.length)!==0&&(rawActions=getCutActionsFromTextRanges(textRanges,docDataModel,segmentId)),Array.isArray(rectRanges)&&(rectRanges==null?void 0:rectRanges.length)!==0){const actions=getCutActionsFromRectRanges(rectRanges,docDataModel,viewModel,segmentId);rawActions==null||rawActions.length===0?rawActions=actions:rawActions=core.JSONX.compose(rawActions,core.JSONX.transform(actions,rawActions,"right"))}return rawActions}__name(getCutActionsFromDocRanges,"getCutActionsFromDocRanges");const INNER_CUT_COMMAND_ID="doc.command.inner-cut",CutContentCommand={id:INNER_CUT_COMMAND_ID,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11,_b;const{segmentId,textRanges}=params,commandService=accessor.get(core.ICommandService),textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selections=(_a11=params.selections)!=null?_a11:textSelectionManagerService.getCurrentTextRanges(),rectRanges=textSelectionManagerService.getCurrentRectRanges();if((!Array.isArray(selections)||selections.length===0)&&(!Array.isArray(rectRanges)||rectRanges.length===0))return!1;const unitId=(_b=univerInstanceService.getCurrentUniverDocInstance())==null?void 0:_b.getUnitId();if(!unitId)return!1;const docDataModel=univerInstanceService.getUniverDocInstance(unitId);if(docDataModel==null)return!1;const docSkeletonManagerService=getCommandSkeleton(accessor,unitId);if(docSkeletonManagerService==null)return!1;const viewModel=docSkeletonManagerService.getViewModel(),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};return doMutation.params.actions=getCutActionsFromDocRanges(selections,rectRanges,docDataModel,viewModel,segmentId),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DeleteCustomBlockCommand={id:"doc.command.delete-custom-block",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRange=textSelectionManagerService.getActiveTextRangeWithStyle(),documentDataModel=univerInstanceService.getCurrentUniverDocInstance();if(activeRange==null||documentDataModel==null)return!1;const{direction,range,unitId,drawingId}=params,{startOffset,segmentId,style}=activeRange,cursor=direction===DeleteDirection.LEFT?startOffset-1:startOffset,textRanges=[{startOffset:cursor,endOffset:cursor,style}],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges,prevTextRanges:[range]}},textX=new core.TextX,jsonX=core.JSONX.getInstance(),rawActions=[];startOffset>0&&textX.push({t:core.TextXActionType.RETAIN,len:direction===DeleteDirection.LEFT?startOffset-1:startOffset,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:1,line:0,segmentId});const path=getRichTextEditPath(documentDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));const drawing=((_a11=documentDataModel.getDrawings())!=null?_a11:{})[drawingId],drawingIndex=documentDataModel.getDrawingsOrder().indexOf(drawingId),removeDrawingAction=jsonX.removeOp(["drawings",drawingId],drawing),removeDrawingOrderAction=jsonX.removeOp(["drawingsOrder",drawingIndex],drawingId);return rawActions.push(removeDrawingAction),rawActions.push(removeDrawingOrderAction),doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},MergeTwoParagraphCommand={id:"doc.command.merge-two-paragraph",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),{direction,range}=params,activeRange=textSelectionManagerService.getActiveTextRangeWithStyle(),ranges=textSelectionManagerService.getCurrentTextRanges();if(activeRange==null||ranges==null)return!1;const{segmentId,style}=activeRange,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),originBody=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(!docDataModel||!originBody)return!1;const actualRange=getDeleteSelection(activeRange,originBody),unitId=docDataModel.getUnitId(),{startOffset,collapsed}=actualRange;if(!collapsed)return!1;const startIndex=direction===DeleteDirection.LEFT?startOffset:startOffset+1,endIndex=originBody.paragraphs.find(p=>p.startIndex>=startIndex).startIndex,body=getParagraphBody(accessor,unitId,originBody,startIndex,endIndex),cursor=direction===DeleteDirection.LEFT?startOffset-1:startOffset,textRanges=[{startOffset:cursor,endOffset:cursor,style}],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges,prevTextRanges:[range]}},textX=new core.TextX,jsonX=core.JSONX.getInstance();textX.push({t:core.TextXActionType.RETAIN,len:direction===DeleteDirection.LEFT?startOffset-1:startOffset,segmentId}),body.dataStream.length&&textX.push({t:core.TextXActionType.INSERT,body,len:body.dataStream.length,line:0,segmentId}),textX.push({t:core.TextXActionType.RETAIN,len:1,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:endIndex+1-startIndex,line:0,segmentId});const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")};function getCursorWhenDelete(textRanges,rectRanges){let cursor=0;if(textRanges==null||textRanges.length===0){if(typeof rectRanges[0].startOffset=="number"){const rectRange=rectRanges[0],{spanEntireRow,spanEntireTable}=rectRange;spanEntireTable?cursor=rectRange.startOffset-3:spanEntireRow?rectRange.startRow>0?cursor=rectRange.startOffset-6:cursor=rectRange.startOffset:cursor=rectRanges[0].startOffset}}else if(textRanges.length>0&&rectRanges.length>0){const textRange=textRanges[0],rectRange=rectRanges[0];if(textRange.startOffset!=null&&rectRange.startOffset!=null){if(textRange.startOffset<rectRange.startOffset)cursor=textRange.startOffset;else if(textRange.startOffset>=rectRange.startOffset){const{spanEntireRow,spanEntireTable}=rectRange;spanEntireTable?cursor=rectRange.startOffset-3:spanEntireRow&&(cursor=rectRange.startOffset-6)}}}return cursor}__name(getCursorWhenDelete,"getCursorWhenDelete");const DeleteLeftCommand={id:"doc.command.delete-left",type:core.CommandType.COMMAND,handler:__name(async accessor=>{var _a11,_b;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService);let result=!0;const docDataModel=univerInstanceService.getCurrentUniverDocInstance();if(!docDataModel)return!1;const unitId=docDataModel.getUnitId(),docSkeletonManagerService=getCommandSkeleton(accessor,unitId),activeRange=textSelectionManagerService.getActiveTextRangeWithStyle(),rectRanges=textSelectionManagerService.getCurrentRectRanges(),ranges=textSelectionManagerService.getCurrentTextRanges(),skeleton=docSkeletonManagerService==null?void 0:docSkeletonManagerService.getSkeleton();if(skeleton==null)return!1;if(rectRanges!=null&&rectRanges.length){const cursor2=getCursorWhenDelete(ranges,rectRanges),segmentId2=rectRanges[0].segmentId,textRanges=[{startOffset:cursor2,endOffset:cursor2}];return commandService.executeCommand(CutContentCommand.id,{segmentId:segmentId2,textRanges})}if(activeRange==null||ranges==null)return!1;const{segmentId,style,segmentPage}=activeRange,body=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(body==null)return!1;const actualRange=getDeleteSelection(activeRange,body),{startOffset,collapsed}=actualRange,curGlyph=skeleton.findNodeByCharIndex(startOffset,segmentId,segmentPage),isBullet=engineRender.hasListGlyph(curGlyph),isIndent=engineRender.isIndentByGlyph(curGlyph,body);let cursor=startOffset;const preGlyph=skeleton.findNodeByCharIndex(startOffset-1,segmentId,segmentPage);if(engineRender.isFirstGlyph(curGlyph)&&preGlyph!==curGlyph&&(isBullet===!0||isIndent===!0)&&collapsed){const paragraph=engineRender.getParagraphByGlyph(curGlyph,body);if(paragraph==null)return!1;const paragraphIndex=paragraph==null?void 0:paragraph.startIndex,updateParagraph={startIndex:0},paragraphStyle=paragraph.paragraphStyle;if(isBullet===!0){const paragraphStyle2=paragraph.paragraphStyle;if(paragraphStyle2){updateParagraph.paragraphStyle=paragraphStyle2;const{hanging}=paragraphStyle2;hanging&&(updateParagraph.paragraphStyle.indentStart=hanging,updateParagraph.paragraphStyle.hanging=void 0)}}else if(isIndent===!0){const bullet=paragraph.bullet;bullet&&(updateParagraph.bullet=bullet),paragraphStyle!=null&&(updateParagraph.paragraphStyle={...paragraphStyle},delete updateParagraph.paragraphStyle.hanging,delete updateParagraph.paragraphStyle.indentStart)}const textRanges=[{startOffset:cursor,endOffset:cursor,style}];result=await commandService.executeCommand(UpdateCommand.id,{unitId:docDataModel.getUnitId(),updateBody:{dataStream:"",paragraphs:[{...updateParagraph}]},range:{startOffset:paragraphIndex,endOffset:paragraphIndex+1},textRanges,coverType:core.UpdateDocsAttributeType.REPLACE,segmentId})}else if(collapsed===!0){if(preGlyph==null)return!0;if(preGlyph.content==="\r")result=await commandService.executeCommand(MergeTwoParagraphCommand.id,{direction:DeleteDirection.LEFT,range:actualRange});else if(preGlyph.streamType==="\b"){const drawing=(_b=docDataModel.getSnapshot().drawings)==null?void 0:_b[(_a11=preGlyph.drawingId)!=null?_a11:""];if(drawing==null)return!0;if(drawing.layoutType===core.PositionedObjectLayoutType.INLINE){const unitId2=docDataModel.getUnitId();result=await commandService.executeCommand(DeleteCustomBlockCommand.id,{direction:DeleteDirection.LEFT,range:activeRange,unitId:unitId2,drawingId:preGlyph.drawingId})}else{const prePreGlyph=skeleton.findNodeByCharIndex(startOffset-2);if(prePreGlyph==null)return!0;cursor-=preGlyph.count,cursor-=prePreGlyph.count;const textRanges=[{startOffset:cursor,endOffset:cursor,style}];result=await commandService.executeCommand(DeleteCommand.id,{unitId:docDataModel.getUnitId(),range:{...activeRange,startOffset:activeRange.startOffset-1,endOffset:activeRange.endOffset-1},segmentId,direction:DeleteDirection.LEFT,len:prePreGlyph.count,textRanges})}}else cursor-=preGlyph.count,result=await commandService.executeCommand(DeleteCommand.id,{unitId:docDataModel.getUnitId(),range:actualRange,segmentId,direction:DeleteDirection.LEFT,len:preGlyph.count})}else{const textRanges=getTextRangesWhenDelete(actualRange,[actualRange]);result=await commandService.executeCommand(CutContentCommand.id,{segmentId,textRanges,selections:[actualRange]})}return result},"handler")},DeleteRightCommand={id:"doc.command.delete-right",type:core.CommandType.COMMAND,handler:__name(async accessor=>{var _a11,_b;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),docDataModel=accessor.get(core.IUniverInstanceService).getCurrentUniverDocInstance();if(!docDataModel)return!1;const docSkeletonManagerService=getCommandSkeleton(accessor,docDataModel.getUnitId()),commandService=accessor.get(core.ICommandService),activeRange=textSelectionManagerService.getActiveTextRangeWithStyle(),rectRanges=textSelectionManagerService.getCurrentRectRanges(),ranges=textSelectionManagerService.getCurrentTextRanges(),skeleton=docSkeletonManagerService==null?void 0:docSkeletonManagerService.getSkeleton();if(rectRanges!=null&&rectRanges.length){const cursor=getCursorWhenDelete(ranges,rectRanges),segmentId2=rectRanges[0].segmentId,textRanges=[{startOffset:cursor,endOffset:cursor}];return commandService.executeCommand(CutContentCommand.id,{segmentId:segmentId2,textRanges})}if(activeRange==null||skeleton==null||ranges==null)return!1;const{segmentId,style,segmentPage}=activeRange,body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(!docDataModel||!body)return!1;const actualRange=getDeleteSelection(activeRange,body,DeleteDirection.RIGHT),{startOffset,endOffset,collapsed}=actualRange;if(startOffset===body.dataStream.length-2&&collapsed)return!0;let result=!1;if(collapsed===!0){const needDeleteGlyph=skeleton.findNodeByCharIndex(startOffset,segmentId,segmentPage),nextGlyph=skeleton.findNodeByCharIndex(startOffset+1);if(needDeleteGlyph.streamType===core.DataStreamTreeTokenType.PARAGRAPH&&(nextGlyph==null?void 0:nextGlyph.streamType)===core.DataStreamTreeTokenType.SECTION_BREAK)return!1;if(needDeleteGlyph.content==="\r")result=await commandService.executeCommand(MergeTwoParagraphCommand.id,{direction:DeleteDirection.RIGHT,range:activeRange});else if(needDeleteGlyph.streamType==="\b"){const drawing=(_b=docDataModel.getSnapshot().drawings)==null?void 0:_b[(_a11=needDeleteGlyph.drawingId)!=null?_a11:""];if(drawing==null)return!0;if(drawing.layoutType===core.PositionedObjectLayoutType.INLINE){const unitId=docDataModel.getUnitId();result=await commandService.executeCommand(DeleteCustomBlockCommand.id,{direction:DeleteDirection.RIGHT,range:activeRange,unitId,drawingId:needDeleteGlyph.drawingId})}else{if(nextGlyph==null)return!0;const textRanges=[{startOffset:startOffset+1,endOffset:startOffset+1,style}];result=await commandService.executeCommand(DeleteCommand.id,{unitId:docDataModel.getUnitId(),range:{...activeRange,startOffset:startOffset+1,endOffset:endOffset+1},segmentId,direction:DeleteDirection.RIGHT,textRanges,len:nextGlyph.count})}}else{const textRanges=[{startOffset,endOffset:startOffset,style}];result=await commandService.executeCommand(DeleteCommand.id,{unitId:docDataModel.getUnitId(),range:actualRange,segmentId,direction:DeleteDirection.RIGHT,textRanges,len:needDeleteGlyph.count})}}else{const textRanges=getTextRangesWhenDelete(actualRange,[actualRange]);result=await commandService.executeCommand(CutContentCommand.id,{segmentId,textRanges,selections:[actualRange]})}return result},"handler")};function getParagraphBody(accessor,unitId,body,start,end){const{textRuns:originTextRuns=[],customBlocks:originCustomBlocks=[]}=body,bodySlice={dataStream:body.dataStream.substring(start,end),customRanges:core.getCustomRangeSlice(body,start,end).customRanges.map(range=>({...core.Tools.deepClone(range),rangeId:core.generateRandomId()})),customDecorations:core.getCustomDecorationSlice(body,start,end)},textRuns=[];for(const textRun of originTextRuns){const{st,ed}=textRun;ed<=start||st>=end||(st<start?textRuns.push({...textRun,st:0,ed:ed-start}):ed>end?textRuns.push({...textRun,st:st-start,ed:end-start}):textRuns.push({...textRun,st:st-start,ed:ed-start}))}textRuns.length>0&&(bodySlice.textRuns=textRuns);const customBlocks=[];for(const block of originCustomBlocks){const{startIndex}=block;startIndex>=start&&startIndex<=end&&customBlocks.push({...block,startIndex:startIndex-start})}return customBlocks.length>0&&(bodySlice.customBlocks=customBlocks),bodySlice}__name(getParagraphBody,"getParagraphBody");function getTextRangesWhenDelete(activeRange,ranges){let cursor=activeRange.endOffset;for(const range of ranges){const{startOffset,endOffset}=range;startOffset==null||endOffset==null||endOffset<=activeRange.endOffset&&(cursor-=endOffset-startOffset)}return[{startOffset:cursor,endOffset:cursor,style:activeRange.style}]}__name(getTextRangesWhenDelete,"getTextRangesWhenDelete");const IMEInputCommand={id:"doc.command.ime-input",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{unitId,newText,oldTextLen,isCompositionEnd,isCompositionStart}=params,commandService=accessor.get(core.ICommandService),imeInputManagerService=accessor.get(IMEInputManagerService),docDataModel=accessor.get(core.IUniverInstanceService).getCurrentUniverDocInstance();if(docDataModel==null)return!1;const previousActiveRange=imeInputManagerService.getActiveRange();if(!previousActiveRange)return!1;const{style,segmentId}=previousActiveRange,body=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(body==null)return!1;const insertRange=getInsertSelection(previousActiveRange,body);Object.assign(previousActiveRange,insertRange);const{startOffset}=previousActiveRange,len=newText.length,textRanges=[{startOffset:startOffset+len,endOffset:startOffset+len,collapsed:!0,style}],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}},textX=new core.TextX,jsonX=core.JSONX.getInstance();if(!previousActiveRange.collapsed&&isCompositionStart){const{dos,retain,cursor}=getRetainAndDeleteFromReplace(previousActiveRange,segmentId,0,body);textX.push(...dos),doMutation.params.textRanges=[{startOffset:startOffset+len+retain,endOffset:startOffset+len+retain,collapsed:!0}]}else textX.push({t:core.TextXActionType.RETAIN,len:startOffset,segmentId});oldTextLen>0&&textX.push({t:core.TextXActionType.DELETE,len:oldTextLen,line:0,segmentId}),textX.push({t:core.TextXActionType.INSERT,body:{dataStream:newText},len:newText.length,line:0,segmentId});const path=getRichTextEditPath(docDataModel,segmentId);doMutation.params.actions=jsonX.editOp(textX.serialize(),path),doMutation.params.noHistory=!isCompositionEnd,doMutation.params.isCompositionEnd=isCompositionEnd;const result=commandService.syncExecuteCommand(doMutation.id,doMutation.params);return imeInputManagerService.pushUndoRedoMutationParams(result,doMutation.params),!!result},"handler")};function handleInlineFormat(preCommandId,params,commandService){return commandService.executeCommand(SetInlineFormatCommand.id,{preCommandId,...params!=null?params:{}})}__name(handleInlineFormat,"handleInlineFormat");const SetInlineFormatBoldCommandId="doc.command.set-inline-format-bold",SetInlineFormatBoldCommand={id:SetInlineFormatBoldCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatBoldCommandId,params,commandService)},"handler")},SetInlineFormatItalicCommandId="doc.command.set-inline-format-italic",SetInlineFormatItalicCommand={id:SetInlineFormatItalicCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatItalicCommandId,params,commandService)},"handler")},SetInlineFormatUnderlineCommandId="doc.command.set-inline-format-underline",SetInlineFormatUnderlineCommand={id:SetInlineFormatUnderlineCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatUnderlineCommandId,params,commandService)},"handler")},SetInlineFormatStrikethroughCommandId="doc.command.set-inline-format-strikethrough",SetInlineFormatStrikethroughCommand={id:SetInlineFormatStrikethroughCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatStrikethroughCommandId,params,commandService)},"handler")},SetInlineFormatSubscriptCommandId="doc.command.set-inline-format-subscript",SetInlineFormatSubscriptCommand={id:SetInlineFormatSubscriptCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatSubscriptCommandId,params,commandService)},"handler")},SetInlineFormatSuperscriptCommandId="doc.command.set-inline-format-superscript",SetInlineFormatSuperscriptCommand={id:SetInlineFormatSuperscriptCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatSuperscriptCommandId,params,commandService)},"handler")},SetInlineFormatFontSizeCommandId="doc.command.set-inline-format-fontsize",SetInlineFormatFontSizeCommand={id:SetInlineFormatFontSizeCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatFontSizeCommandId,params,commandService)},"handler")},SetInlineFormatFontFamilyCommandId="doc.command.set-inline-format-font-family",SetInlineFormatFontFamilyCommand={id:SetInlineFormatFontFamilyCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatFontFamilyCommandId,params,commandService)},"handler")},SetInlineFormatTextColorCommandId="doc.command.set-inline-format-text-color",SetInlineFormatTextColorCommand={id:SetInlineFormatTextColorCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatTextColorCommandId,params,commandService)},"handler")},SetInlineFormatTextBackgroundColorCommandId="doc.command.set-inline-format-text-background-color",SetInlineFormatTextBackgroundColorCommand={id:SetInlineFormatTextBackgroundColorCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(SetInlineFormatTextBackgroundColorCommandId,params,commandService)},"handler")},ResetInlineFormatTextBackgroundColorCommandId="doc.command.reset-inline-format-text-background-color",ResetInlineFormatTextBackgroundColorCommand={id:ResetInlineFormatTextBackgroundColorCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const commandService=accessor.get(core.ICommandService);return handleInlineFormat(ResetInlineFormatTextBackgroundColorCommandId,params,commandService)},"handler")},COMMAND_ID_TO_FORMAT_KEY_MAP={[SetInlineFormatBoldCommand.id]:"bl",[SetInlineFormatItalicCommand.id]:"it",[SetInlineFormatUnderlineCommand.id]:"ul",[SetInlineFormatStrikethroughCommand.id]:"st",[SetInlineFormatFontSizeCommand.id]:"fs",[SetInlineFormatFontFamilyCommand.id]:"ff",[SetInlineFormatTextColorCommand.id]:"cl",[SetInlineFormatTextBackgroundColorCommand.id]:"bg",[ResetInlineFormatTextBackgroundColorCommand.id]:"bg",[SetInlineFormatSubscriptCommand.id]:"va",[SetInlineFormatSuperscriptCommand.id]:"va"},SetInlineFormatCommand={id:"doc.command.set-inline-format",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{value,preCommandId}=params,commandService=accessor.get(core.ICommandService),textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),docRanges=textSelectionManagerService.getDocRanges();if(docRanges.length===0)return!1;const segmentId=docRanges[0].segmentId,docDataModel=univerInstanceService.getCurrentUniverDocInstance();if(docDataModel==null)return!1;const unitId=docDataModel.getUnitId();let formatValue;switch(preCommandId){case SetInlineFormatBoldCommand.id:case SetInlineFormatItalicCommand.id:case SetInlineFormatUnderlineCommand.id:case SetInlineFormatStrikethroughCommand.id:case SetInlineFormatSubscriptCommand.id:case SetInlineFormatSuperscriptCommand.id:{formatValue=getReverseFormatValueInSelection(docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody().textRuns,preCommandId,docRanges);break}case SetInlineFormatFontSizeCommand.id:case SetInlineFormatFontFamilyCommand.id:{formatValue=value;break}case SetInlineFormatTextColorCommand.id:case SetInlineFormatTextBackgroundColorCommand.id:{formatValue={rgb:value};break}case ResetInlineFormatTextBackgroundColorCommand.id:{formatValue={rgb:null};break}default:throw new Error(`Unknown command: ${preCommandId} in handleInlineFormat`)}const doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:docRanges.map(serializeDocRange)}},textX=new core.TextX,jsonX=core.JSONX.getInstance(),memoryCursor=new core.MemoryCursor;memoryCursor.reset();for(const range of docRanges){const{startOffset,endOffset}=range;if(startOffset==null||endOffset==null)continue;const body={dataStream:"",textRuns:[{st:0,ed:endOffset-startOffset,ts:{[COMMAND_ID_TO_FORMAT_KEY_MAP[preCommandId]]:formatValue}}]},len=startOffset-memoryCursor.cursor;len!==0&&textX.push({t:core.TextXActionType.RETAIN,len,segmentId}),textX.push({t:core.TextXActionType.RETAIN,body,len:endOffset-startOffset,segmentId}),memoryCursor.reset(),memoryCursor.moveCursor(endOffset)}const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")};function isTextDecoration(value){return value!==null&&typeof value=="object"}__name(isTextDecoration,"isTextDecoration");function getReverseFormatValueInSelection(textRuns,preCommandId,docRanges){let ti=0,si=0;const key=COMMAND_ID_TO_FORMAT_KEY_MAP[preCommandId];for(;ti!==textRuns.length&&si!==docRanges.length;){const{startOffset,endOffset}=docRanges[si],{st,ed,ts}=textRuns[ti];if(endOffset<=st)si++;else if(ed<=startOffset)ti++;else{if(/bl|it/.test(key))return(ts==null?void 0:ts[key])===core.BooleanNumber.TRUE?core.BooleanNumber.FALSE:core.BooleanNumber.TRUE;if(/ul|st/.test(key))return isTextDecoration(ts==null?void 0:ts[key])&&(ts==null?void 0:ts[key]).s===core.BooleanNumber.TRUE?{s:core.BooleanNumber.FALSE}:{s:core.BooleanNumber.TRUE};if(/va/.test(key))return preCommandId===SetInlineFormatSubscriptCommand.id?(ts==null?void 0:ts[key])===core.BaselineOffset.SUBSCRIPT?core.BaselineOffset.NORMAL:core.BaselineOffset.SUBSCRIPT:(ts==null?void 0:ts[key])===core.BaselineOffset.SUPERSCRIPT?core.BaselineOffset.NORMAL:core.BaselineOffset.SUPERSCRIPT;ti++}}return/bl|it/.test(key)?core.BooleanNumber.TRUE:/ul|st/.test(key)?{s:core.BooleanNumber.TRUE}:preCommandId===SetInlineFormatSubscriptCommand.id?core.BaselineOffset.SUBSCRIPT:core.BaselineOffset.SUPERSCRIPT}__name(getReverseFormatValueInSelection,"getReverseFormatValueInSelection");const ReplaceContentCommand={id:"doc.command-replace-content",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{unitId,body,textRanges,segmentId="",options}=params,univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),docDataModel=univerInstanceService.getUniverDocInstance(unitId),prevBody=docDataModel==null?void 0:docDataModel.getSnapshot().body,selections=textSelectionManagerService.getCurrentTextRanges();if(docDataModel==null||prevBody==null||!Array.isArray(selections)||selections.length===0)return!1;const doMutation=getMutationParams(unitId,segmentId,docDataModel,prevBody,body);return doMutation.params.textRanges=textRanges,options&&(doMutation.params.options=options),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},CoverContentCommand={id:"doc.command-cover-content",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{unitId,body,segmentId=""}=params,univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),docDatModel=univerInstanceService.getUniverDocInstance(unitId),prevBody=docDatModel==null?void 0:docDatModel.getSnapshot().body;if(docDatModel==null||prevBody==null)return!1;const doMutation=getMutationParams(unitId,segmentId,docDatModel,prevBody,body);return doMutation.params.noNeedSetTextRange=!0,doMutation.params.noHistory=!0,commandService.syncExecuteCommand(doMutation.id,doMutation.params),undoRedoService.clearUndoRedo(unitId),!0},"handler")};function getMutationParams(unitId,segmentId,docDatModel,prevBody,body){const doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:[]}},textX=new core.TextX,jsonX=core.JSONX.getInstance(),deleteLen=(prevBody==null?void 0:prevBody.dataStream.length)-2;deleteLen>0&&textX.push({t:core.TextXActionType.DELETE,len:deleteLen,line:0,segmentId}),body.dataStream.length>0&&textX.push({t:core.TextXActionType.INSERT,body,len:body.dataStream.length,line:0,segmentId});const path=getRichTextEditPath(docDatModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),doMutation}__name(getMutationParams,"getMutationParams");core.CommandType.COMMAND;const SetDocZoomRatioUndoMutationFactory=__name((accessor,params)=>{const documentModel=accessor.get(core.IUniverInstanceService).getUniverDocInstance(params.unitId),old=(documentModel==null?void 0:documentModel.zoomRatio)||1;return{...core.Tools.deepClone(params),zoomRatio:old}},"SetDocZoomRatioUndoMutationFactory"),SetDocZoomRatioOperation={id:"doc.operation.set-zoom-ratio",type:core.CommandType.OPERATION,handler:__name((accessor,params)=>{const documentModel=accessor.get(core.IUniverInstanceService).getUniverDocInstance(params.unitId);if(!documentModel)return!1;const documentData=documentModel.getSnapshot();return documentData.settings==null?documentData.settings={zoomRatio:params.zoomRatio}:documentData.settings.zoomRatio=params.zoomRatio,!0},"handler")},SetDocZoomRatioCommand={type:core.CommandType.COMMAND,id:"doc.command.set-zoom-ratio",handler:__name(async(accessor,params)=>{var _a11,_b,_c;const commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),univerInstanceService=accessor.get(core.IUniverInstanceService);let documentId=(_a11=univerInstanceService.getCurrentUniverDocInstance())==null?void 0:_a11.getUnitId();if(!documentId)return!1;let zoomRatio=1;if(params&&(documentId=(_b=params.documentId)!=null?_b:documentId,zoomRatio=(_c=params.zoomRatio)!=null?_c:zoomRatio),!univerInstanceService.getUniverDocInstance(documentId))return!1;const setZoomRatioMutationParams={zoomRatio,unitId:documentId},undoMutationParams=SetDocZoomRatioUndoMutationFactory(accessor,setZoomRatioMutationParams);return commandService.syncExecuteCommand(SetDocZoomRatioOperation.id,setZoomRatioMutationParams)?(undoRedoService.pushUndoRedo({unitID:documentId,undoMutations:[{id:SetDocZoomRatioOperation.id,params:undoMutationParams}],redoMutations:[{id:SetDocZoomRatioOperation.id,params:setZoomRatioMutationParams}]}),!0):!1},"handler")},MoveCursorOperation={id:"doc.operation.move-cursor",type:core.CommandType.OPERATION,handler:__name((accessor,params)=>!!params,"handler")},MoveSelectionOperation={id:"doc.operation.move-selection",type:core.CommandType.OPERATION,handler:__name((accessor,params)=>!!params,"handler")},SelectAllOperation={id:"doc.operation.select-all",type:core.CommandType.COMMAND,handler:__name(async accessor=>{const univerInstanceService=accessor.get(core.IUniverInstanceService),textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),docDataModel=univerInstanceService.getCurrentUniverDocInstance(),activeTextRange=textSelectionManagerService.getActiveTextRangeWithStyle();if(docDataModel==null||activeTextRange==null)return!1;const{segmentId}=activeTextRange,prevBody=docDataModel.getSelfOrHeaderFooterModel(segmentId).getSnapshot().body;if(prevBody==null)return!1;const textRanges=[{startOffset:0,endOffset:prevBody.dataStream.length-2}];return textSelectionManagerService.replaceTextRanges(textRanges,!1),!0},"handler")};var __defProp$6=Object.defineProperty,__getOwnPropDesc$6=Object.getOwnPropertyDescriptor,__decorateClass$6=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$6(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$6(target,key,result),result},"__decorateClass$6"),__decorateParam$6=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$6"),_a4;let IMEInputController=(_a4=class extends core.Disposable{constructor(_univerInstanceService,_renderManagerSrv,_textSelectionRenderManager,_textSelectionManagerService,_imeInputManagerService,_commandService){super();__publicField(this,"_previousIMEContent","");__publicField(this,"_isCompositionStart",!0);__publicField(this,"_onStartSubscription");__publicField(this,"_onUpdateSubscription");__publicField(this,"_onEndSubscription");this._univerInstanceService=_univerInstanceService,this._renderManagerSrv=_renderManagerSrv,this._textSelectionRenderManager=_textSelectionRenderManager,this._textSelectionManagerService=_textSelectionManagerService,this._imeInputManagerService=_imeInputManagerService,this._commandService=_commandService,this._initialize()}dispose(){var _a11,_b,_c;(_a11=this._onStartSubscription)==null||_a11.unsubscribe(),(_b=this._onUpdateSubscription)==null||_b.unsubscribe(),(_c=this._onEndSubscription)==null||_c.unsubscribe()}_initialize(){this._initialOnCompositionstart(),this._initialOnCompositionUpdate(),this._initialOnCompositionend()}_initialOnCompositionstart(){this._onStartSubscription=this._textSelectionRenderManager.onCompositionstart$.subscribe(config=>{if(config==null)return;this._resetIME();const{activeRange}=config;activeRange!=null&&this._imeInputManagerService.setActiveRange(core.Tools.deepClone(activeRange))})}_initialOnCompositionUpdate(){this._onUpdateSubscription=this._textSelectionRenderManager.onCompositionupdate$.subscribe(async config=>{this._updateContent(config,!0)})}_initialOnCompositionend(){this._onEndSubscription=this._textSelectionRenderManager.onCompositionend$.subscribe(config=>{this._updateContent(config,!1)})}async _updateContent(config,isUpdate){var _a11;if(config==null)return;const documentModel=this._univerInstanceService.getCurrentUniverDocInstance();if(!documentModel)return;const skeleton=(_a11=this._renderManagerSrv.getRenderById(documentModel.getUnitId()))==null?void 0:_a11.with(exports.DocSkeletonManagerService).getSkeleton(),{event,activeRange}=config;if(skeleton==null||activeRange==null)return;const content=event.data;content===this._previousIMEContent&&isUpdate||(await this._commandService.executeCommand(IMEInputCommand.id,{unitId:documentModel.getUnitId(),newText:content,oldTextLen:this._previousIMEContent.length,isCompositionStart:this._isCompositionStart,isCompositionEnd:!isUpdate}),isUpdate?(this._isCompositionStart&&(this._isCompositionStart=!1),this._previousIMEContent=content):this._resetIME())}_resetIME(){this._previousIMEContent="",this._isCompositionStart=!0,this._imeInputManagerService.clearUndoRedoMutationParamsCache(),this._imeInputManagerService.setActiveRange(null)}},__name(_a4,"IMEInputController"),_a4);IMEInputController=__decorateClass$6([core.OnLifecycle(core.LifecycleStages.Rendered,IMEInputController),__decorateParam$6(0,core.IUniverInstanceService),__decorateParam$6(1,engineRender.IRenderManagerService),__decorateParam$6(2,engineRender.ITextSelectionRenderManager),__decorateParam$6(3,core.Inject(exports.TextSelectionManagerService)),__decorateParam$6(4,core.Inject(IMEInputManagerService)),__decorateParam$6(5,core.ICommandService)],IMEInputController);function firstLineInTable(table){return table.rows[0].cells[0].sections[0].columns[0].lines[0]}__name(firstLineInTable,"firstLineInTable");function lastLineInTable(table){const lastRow=table.rows[table.rows.length-1],lastCell=lastRow.cells[lastRow.cells.length-1];return engineRender.getLastLine(lastCell)}__name(lastLineInTable,"lastLineInTable");function findTableAfterLine(line,page){const{ed}=line,{skeTables}=page;let table=null;for(const t of skeTables.values())if(t.st===ed+1){table=t;break}return table}__name(findTableAfterLine,"findTableAfterLine");function findLineBeforeAndAfterTable(table){const tablePage=table==null?void 0:table.parent;let lineBeforeTable=null,lineAfterTable=null;if(table==null||tablePage==null)return{lineBeforeTable,lineAfterTable};const{st,ed}=table,pages=tablePage.type===engineRender.DocumentSkeletonPageType.CELL?[tablePage]:tablePage.parent.pages;return engineRender.lineIterator(pages,l=>{l.st===ed+1?lineAfterTable=l:l.ed===st-1&&(lineBeforeTable=l)}),{lineBeforeTable,lineAfterTable}}__name(findLineBeforeAndAfterTable,"findLineBeforeAndAfterTable");function findBellowCell(cell){const row=cell.parent,table=row==null?void 0:row.parent;if(row==null||table==null)return;const bellowRow=table.rows[table.rows.indexOf(row)+1];if(bellowRow==null)return;const col=row.cells.indexOf(cell);return bellowRow.cells[col]}__name(findBellowCell,"findBellowCell");function findAboveCell(cell){const row=cell.parent,table=row==null?void 0:row.parent;if(row==null||table==null)return;const aboveRow=table.rows[table.rows.indexOf(row)-1];if(aboveRow==null)return;const col=row.cells.indexOf(cell);return aboveRow.cells[col]}__name(findAboveCell,"findAboveCell");function findTableBeforeLine(line,page){const{st}=line,{skeTables}=page;let table=null;for(const t of skeTables.values())if(t.ed===st-1){table=t;break}return table}__name(findTableBeforeLine,"findTableBeforeLine");function firstLineInCell(cell){return cell.sections[0].columns[0].lines[0]}__name(firstLineInCell,"firstLineInCell");function lastLineInCell(cell){return engineRender.getLastLine(cell)}__name(lastLineInCell,"lastLineInCell");var __defProp$5=Object.defineProperty,__getOwnPropDesc$5=Object.getOwnPropertyDescriptor,__decorateClass$5=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$5(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$5(target,key,result),result},"__decorateClass$5"),__decorateParam$5=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$5"),_a5;let MoveCursorController=(_a5=class extends core.Disposable{constructor(_univerInstanceService,_renderManagerService,_textSelectionManagerService,_commandService){super();__publicField(this,"_onInputSubscription");this._univerInstanceService=_univerInstanceService,this._renderManagerService=_renderManagerService,this._textSelectionManagerService=_textSelectionManagerService,this._commandService=_commandService,this._commandExecutedListener()}dispose(){var _a11;super.dispose(),(_a11=this._onInputSubscription)==null||_a11.unsubscribe()}_commandExecutedListener(){const updateCommandList=[MoveCursorOperation.id,MoveSelectionOperation.id];this.disposeWithMe(this._commandService.onCommandExecuted(command=>{if(!updateCommandList.includes(command.id))return;const param=command.params;switch(command.id){case MoveCursorOperation.id:return this._handleMoveCursor(param.direction);case MoveSelectionOperation.id:return this._handleShiftMoveSelection(param.direction);default:throw new Error("Unknown command")}}))}_handleShiftMoveSelection(direction){var _a11,_b,_c;const activeRange=this._textSelectionManagerService.getActiveTextRangeWithStyle(),allRanges=this._textSelectionManagerService.getCurrentTextRanges(),docDataModel=this._univerInstanceService.getCurrentUniverDocInstance();if(docDataModel==null)return;const skeleton=(_a11=this._renderManagerService.getRenderById(docDataModel.getUnitId()))==null?void 0:_a11.with(exports.DocSkeletonManagerService).getSkeleton(),docObject=this._getDocObject();if(activeRange==null||skeleton==null||docObject==null)return;const{startOffset,endOffset,style,collapsed,direction:rangeDirection,segmentId,startNodePosition,endNodePosition,segmentPage}=activeRange;if(allRanges.length>1){let min=Number.POSITIVE_INFINITY,max=Number.NEGATIVE_INFINITY;for(const range of allRanges)min=Math.min(min,range.startOffset),max=Math.max(max,range.endOffset);this._textSelectionManagerService.replaceTextRanges([{startOffset:direction===core.Direction.LEFT||direction===core.Direction.UP?max:min,endOffset:direction===core.Direction.LEFT||direction===core.Direction.UP?min:max,style}],!1);return}const anchorOffset=collapsed||rangeDirection===engineRender.RANGE_DIRECTION.FORWARD?startOffset:endOffset;let focusOffset=collapsed||rangeDirection===engineRender.RANGE_DIRECTION.FORWARD?endOffset:startOffset;const dataStreamLength=(_b=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody().dataStream.length)!=null?_b:Number.POSITIVE_INFINITY;if(direction===core.Direction.LEFT||direction===core.Direction.RIGHT){const preGlyph=skeleton.findNodeByCharIndex(focusOffset-1,segmentId,segmentPage),curGlyph=skeleton.findNodeByCharIndex(focusOffset,segmentId,segmentPage);focusOffset=direction===core.Direction.RIGHT?focusOffset+curGlyph.count:focusOffset-((_c=preGlyph==null?void 0:preGlyph.count)!=null?_c:0),focusOffset=Math.min(dataStreamLength-2,Math.max(0,focusOffset)),this._textSelectionManagerService.replaceTextRanges([{startOffset:anchorOffset,endOffset:focusOffset,style}],!1)}else{const focusGlyph=skeleton.findNodeByCharIndex(focusOffset,segmentId,segmentPage),documentOffsetConfig=docObject.document.getOffsetConfig(),focusNodePosition=collapsed?startNodePosition:rangeDirection===engineRender.RANGE_DIRECTION.FORWARD?endNodePosition:startNodePosition,newPos=this._getTopOrBottomPosition(skeleton,focusGlyph,focusNodePosition,direction===core.Direction.DOWN,!0);if(newPos==null){const newFocusOffset=direction===core.Direction.UP?0:dataStreamLength-2;if(newFocusOffset===focusOffset)return;this._textSelectionManagerService.replaceTextRanges([{startOffset:anchorOffset,endOffset:newFocusOffset,style}],!1);return}const newActiveRange=new engineRender.NodePositionConvertToCursor(documentOffsetConfig,skeleton).getRangePointData(newPos,newPos).cursorList[0];this._textSelectionManagerService.replaceTextRanges([{startOffset:anchorOffset,endOffset:newActiveRange.endOffset,style}],!1)}}_handleMoveCursor(direction){var _a11,_b,_c,_d;const activeRange=this._textSelectionManagerService.getActiveTextRangeWithStyle(),allRanges=this._textSelectionManagerService.getCurrentTextRanges(),docDataModel=this._univerInstanceService.getCurrentUniverDocInstance();if(docDataModel==null)return!1;const skeleton=(_a11=this._renderManagerService.getRenderById(docDataModel.getUnitId()))==null?void 0:_a11.with(exports.DocSkeletonManagerService).getSkeleton(),docObject=this._getDocObject();if(activeRange==null||skeleton==null||docObject==null||allRanges==null)return;const{startOffset,endOffset,style,collapsed,segmentId,startNodePosition,endNodePosition,segmentPage}=activeRange,body=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(body==null)return;const dataStreamLength=(_b=body.dataStream.length)!=null?_b:Number.POSITIVE_INFINITY,customRanges=(_c=docDataModel.getCustomRanges())!=null?_c:[];if(direction===core.Direction.LEFT||direction===core.Direction.RIGHT){let cursor;if(!activeRange.collapsed||allRanges.length>1){let min=Number.POSITIVE_INFINITY,max=Number.NEGATIVE_INFINITY;for(const range of allRanges)min=Math.min(min,range.startOffset),max=Math.max(max,range.endOffset);cursor=direction===core.Direction.LEFT?min:max}else{const preSpan=skeleton.findNodeByCharIndex(startOffset-1,segmentId,segmentPage),curSpan=skeleton.findNodeByCharIndex(startOffset,segmentId,segmentPage),nextGlyph=skeleton.findNodeByCharIndex(startOffset+1,segmentId,segmentPage);direction===core.Direction.LEFT?cursor=Math.max(0,startOffset-((_d=preSpan==null?void 0:preSpan.count)!=null?_d:1)):cursor=Math.min(dataStreamLength-2,endOffset+curSpan.count+((nextGlyph==null?void 0:nextGlyph.streamType)===core.DataStreamTreeTokenType.SECTION_BREAK?1:0))}const skipTokens=[core.DataStreamTreeTokenType.CUSTOM_RANGE_START,core.DataStreamTreeTokenType.CUSTOM_RANGE_END,core.DataStreamTreeTokenType.TABLE_START,core.DataStreamTreeTokenType.TABLE_END,core.DataStreamTreeTokenType.TABLE_ROW_START,core.DataStreamTreeTokenType.TABLE_ROW_END,core.DataStreamTreeTokenType.TABLE_CELL_START,core.DataStreamTreeTokenType.TABLE_CELL_END,core.DataStreamTreeTokenType.SECTION_BREAK];if(direction===core.Direction.LEFT)for(;skipTokens.includes(body.dataStream[cursor]);)cursor--;else for(;skipTokens.includes(body.dataStream[cursor]);)cursor++;customRanges.filter(range=>range.wholeEntity&&range.startIndex<cursor&&range.endIndex>=cursor).forEach(range=>{direction===core.Direction.LEFT?cursor=Math.min(range.startIndex,cursor):cursor=Math.max(range.endIndex+1,cursor)}),this._textSelectionManagerService.replaceTextRanges([{startOffset:cursor,endOffset:cursor,style}],!1)}else{const startNode=skeleton.findNodeByCharIndex(startOffset,segmentId,segmentPage),endNode=skeleton.findNodeByCharIndex(endOffset,segmentId,segmentPage),documentOffsetConfig=docObject.document.getOffsetConfig(),newPos=this._getTopOrBottomPosition(skeleton,direction===core.Direction.UP||collapsed?startNode:endNode,direction===core.Direction.UP||collapsed?startNodePosition:endNodePosition,direction===core.Direction.DOWN);if(newPos==null){let cursor;collapsed?cursor=direction===core.Direction.UP?0:dataStreamLength-2:cursor=direction===core.Direction.UP?startOffset:endOffset,this._textSelectionManagerService.replaceTextRanges([{startOffset:cursor,endOffset:cursor,style}],!1);return}const newActiveRange=new engineRender.NodePositionConvertToCursor(documentOffsetConfig,skeleton).getRangePointData(newPos,newPos).cursorList[0];this._textSelectionManagerService.replaceTextRanges([{...newActiveRange,style}],!1)}}_getTopOrBottomPosition(docSkeleton,glyph,nodePosition,direction,skipCellContent=!1){if(glyph==null||nodePosition==null)return;const offsetLeft=this._getGlyphLeftOffsetInLine(glyph),line=this._getNextOrPrevLine(glyph,direction,skipCellContent);if(line==null)return;const position=this._matchPositionByLeftOffset(docSkeleton,line,offsetLeft,nodePosition);if(position!=null)return{...position,isBack:!0}}_getGlyphLeftOffsetInLine(glyph){const divide=glyph.parent;if(divide==null)return Number.NEGATIVE_INFINITY;const divideLeft=divide.left,{left}=glyph;return divideLeft+left}_matchPositionByLeftOffset(docSkeleton,line,offsetLeft,nodePosition){const nearestNode={distance:Number.POSITIVE_INFINITY};for(const divide of line.divides){const divideLeft=divide.left;for(const glyph of divide.glyphGroup){if(glyph.streamType===core.DataStreamTreeTokenType.SECTION_BREAK)continue;const{left}=glyph,leftSide=divideLeft+left,distance=Math.abs(offsetLeft-leftSide);distance<nearestNode.distance&&(nearestNode.glyph=glyph,nearestNode.distance=distance)}}if(nearestNode.glyph==null)return;const{segmentPage}=nodePosition;return docSkeleton.findPositionByGlyph(nearestNode.glyph,segmentPage)}_getNextOrPrevLine(glyph,direction,skipCellContent=!1){var _a11,_b,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l;const divide=glyph.parent,line=divide==null?void 0:divide.parent,column=line==null?void 0:line.parent,section=column==null?void 0:column.parent,page=section==null?void 0:section.parent;if(divide==null||line==null||column==null||section==null||page==null)return;const currentLineIndex=column.lines.indexOf(line);if(currentLineIndex===-1)return;let newLine;if(page.type===engineRender.DocumentSkeletonPageType.CELL&&skipCellContent){const nLine=findAboveOrBellowCellLine(page,direction);if(nLine)return nLine}if(direction===!0){newLine=column.lines[currentLineIndex+1];const tableAfterLine=findTableAfterLine(line,page);if(tableAfterLine){const firstLine=firstLineInTable(tableAfterLine);firstLine&&(newLine=firstLine)}}else{newLine=column.lines[currentLineIndex-1];const tableBeforeLine=findTableBeforeLine(line,page);if(tableBeforeLine){const lastLine=lastLineInTable(tableBeforeLine);lastLine&&(newLine=lastLine)}}if(newLine!=null)return newLine;const currentColumnIndex=section.columns.indexOf(column);if(currentColumnIndex===-1)return;if(direction===!0)newLine=(_a11=section.columns[currentColumnIndex+1])==null?void 0:_a11.lines[0];else{const prevColumnLines=(_c=(_b=section.columns)==null?void 0:_b[currentColumnIndex-1])==null?void 0:_c.lines;newLine=prevColumnLines==null?void 0:prevColumnLines[prevColumnLines.length-1]}if(newLine!=null)return newLine;const currentSectionIndex=page.sections.indexOf(section);if(currentSectionIndex===-1)return;if(direction===!0)newLine=(_e=(_d=page.sections[currentSectionIndex-1])==null?void 0:_d.columns[0])==null?void 0:_e.lines[0];else{const prevColumns=(_g=(_f=page.sections)==null?void 0:_f[currentSectionIndex-1])==null?void 0:_g.columns,column2=prevColumns==null?void 0:prevColumns[prevColumns.length-1],prevColumnLines=column2==null?void 0:column2.lines;newLine=prevColumnLines==null?void 0:prevColumnLines[prevColumnLines.length-1]}if(newLine!=null)return newLine;if(page.type===engineRender.DocumentSkeletonPageType.CELL)return findAboveOrBellowCellLine(page,direction);const skeleton=page.parent;if(skeleton==null)return;const currentPageIndex=skeleton.pages.indexOf(page);if(currentPageIndex!==-1){if(direction===!0)newLine=(_j=(_i=(_h=skeleton.pages[currentPageIndex+1])==null?void 0:_h.sections[0])==null?void 0:_i.columns[0])==null?void 0:_j.lines[0];else{const prevSections=(_k=skeleton.pages[currentPageIndex-1])==null?void 0:_k.sections;if(prevSections==null)return;const prevColumns=(_l=prevSections[prevSections.length-1])==null?void 0:_l.columns,column2=prevColumns[prevColumns.length-1],prevColumnLines=column2==null?void 0:column2.lines;newLine=prevColumnLines[prevColumnLines.length-1]}if(newLine!=null)return newLine}}_getDocObject(){return getDocObject(this._univerInstanceService,this._renderManagerService)}},__name(_a5,"MoveCursorController"),_a5);MoveCursorController=__decorateClass$5([core.OnLifecycle(core.LifecycleStages.Rendered,MoveCursorController),__decorateParam$5(0,core.IUniverInstanceService),__decorateParam$5(1,engineRender.IRenderManagerService),__decorateParam$5(2,core.Inject(exports.TextSelectionManagerService)),__decorateParam$5(3,core.ICommandService)],MoveCursorController);function findAboveOrBellowCellLine(page,direction){var _a11,_b;let newLine=null;if(direction===!0){const bellowCell=findBellowCell(page);if(bellowCell)newLine=firstLineInCell(bellowCell);else{const table=(_a11=page.parent)==null?void 0:_a11.parent,{lineAfterTable}=findLineBeforeAndAfterTable(table);lineAfterTable&&(newLine=lineAfterTable)}}else{const aboveCell=findAboveCell(page);if(aboveCell)newLine=lastLineInCell(aboveCell);else{const table=(_b=page.parent)==null?void 0:_b.parent,{lineBeforeTable}=findLineBeforeAndAfterTable(table);lineBeforeTable&&(newLine=lineBeforeTable)}}return newLine!=null,newLine}__name(findAboveOrBellowCellLine,"findAboveOrBellowCellLine");var __defProp$4=Object.defineProperty,__getOwnPropDesc$4=Object.getOwnPropertyDescriptor,__decorateClass$4=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$4(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$4(target,key,result),result},"__decorateClass$4"),__decorateParam$4=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$4");function getParagraphsInRange(activeRange,paragraphs){var _a11,_b;const{startOffset,endOffset}=activeRange,results=[];let start=-1;for(let i=0;i<paragraphs.length;i++){const paragraph=paragraphs[i],prevParagraph=paragraphs[i-1],{startIndex}=paragraph;startOffset>start&&startOffset<=startIndex||endOffset>start&&endOffset<=startIndex?results.push({...paragraph,paragraphStart:((_a11=prevParagraph==null?void 0:prevParagraph.startIndex)!=null?_a11:-1)+1,paragraphEnd:paragraph.startIndex}):startIndex>=startOffset&&startIndex<=endOffset&&results.push({...paragraph,paragraphStart:((_b=prevParagraph==null?void 0:prevParagraph.startIndex)!=null?_b:-1)+1,paragraphEnd:paragraph.startIndex}),start=startIndex}return results}__name(getParagraphsInRange,"getParagraphsInRange");var _a6;exports.DocAutoFormatService=(_a6=class extends core.Disposable{constructor(_univerInstanceService,_textSelectionManagerService){super();__publicField(this,"_matches",new Map);this._univerInstanceService=_univerInstanceService,this._textSelectionManagerService=_textSelectionManagerService}registerAutoFormat(match){const matchList=this._matches.get(match.id);return matchList?(matchList.push(match),matchList.sort((a,b)=>{var _a11,_b;return((_a11=b.priority)!=null?_a11:0)-((_b=a.priority)!=null?_b:0)})):this._matches.set(match.id,[match]),core.toDisposable(()=>{const matchList2=this._matches.get(match.id);if(matchList2){const index=matchList2.findIndex(i=>i===match);index>=0&&matchList2.splice(index,1)}})}onAutoFormat(id,params){var _a11,_b,_c,_d,_e,_f;const autoFormats=(_a11=this._matches.get(id))!=null?_a11:[],unit=this._univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_DOC),selection=this._textSelectionManagerService.getActiveTextRangeWithStyle();if(unit&&selection){const doc=unit.getSelfOrHeaderFooterModel(selection.segmentId),context={unit:doc,selection,isBody:!selection.segmentId,paragraphs:getParagraphsInRange(selection,(_c=(_b=doc.getBody())==null?void 0:_b.paragraphs)!=null?_c:[]),customRanges:getCustomRangesInterestsWithRange(selection,(_e=(_d=doc.getBody())==null?void 0:_d.customRanges)!=null?_e:[]),commandId:id,commandParams:params},matched=autoFormats.find(i=>i.match(context));return(_f=matched==null?void 0:matched.getMutations(context))!=null?_f:[]}return[]}},__name(_a6,"DocAutoFormatService"),_a6);exports.DocAutoFormatService=__decorateClass$4([__decorateParam$4(0,core.IUniverInstanceService),__decorateParam$4(1,core.Inject(exports.TextSelectionManagerService))],exports.DocAutoFormatService);const TabCommandId="doc.command.tab",TabCommand={id:TabCommandId,type:core.CommandType.COMMAND,async handler(accessor,params){const mutations=accessor.get(exports.DocAutoFormatService).onAutoFormat(TabCommand.id,params);return(await core.sequenceExecuteAsync(mutations,accessor.get(core.ICommandService))).result}},AfterSpaceCommandId="doc.command.after-space",AfterSpaceCommand={id:AfterSpaceCommandId,type:core.CommandType.COMMAND,async handler(accessor){const mutations=accessor.get(exports.DocAutoFormatService).onAutoFormat(AfterSpaceCommand.id);return(await core.sequenceExecuteAsync(mutations,accessor.get(core.ICommandService))).result}},EnterCommand={id:"doc.command.enter",type:core.CommandType.COMMAND,async handler(accessor){const mutations=accessor.get(exports.DocAutoFormatService).onAutoFormat(EnterCommand.id);return(await core.sequenceExecuteAsync(mutations,accessor.get(core.ICommandService))).result}};var __defProp$3=Object.defineProperty,__getOwnPropDesc$3=Object.getOwnPropertyDescriptor,__decorateClass$3=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$3(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$3(target,key,result),result},"__decorateClass$3"),__decorateParam$3=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$3"),_a7;let NormalInputController=(_a7=class extends core.Disposable{constructor(_univerInstanceService,_renderManagerService,_textSelectionRenderManager,_commandService){super();__publicField(this,"_onInputSubscription");this._univerInstanceService=_univerInstanceService,this._renderManagerService=_renderManagerService,this._textSelectionRenderManager=_textSelectionRenderManager,this._commandService=_commandService,this._init()}dispose(){var _a11;super.dispose(),(_a11=this._onInputSubscription)==null||_a11.unsubscribe()}_init(){this._initialNormalInput()}_initialNormalInput(){this._onInputSubscription=this._textSelectionRenderManager.onInput$.subscribe(async config=>{var _a11;if(config==null)return;const documentModel=this._univerInstanceService.getCurrentUniverDocInstance();if(!documentModel)return;const unitId=documentModel.getUnitId(),{event,content="",activeRange}=config,e=event,skeleton=(_a11=this._renderManagerService.getRenderById(documentModel.getUnitId()))==null?void 0:_a11.with(exports.DocSkeletonManagerService).getSkeleton();if(e.data==null||skeleton==null||!skeleton||!activeRange)return;const{segmentId}=activeRange;await this._commandService.executeCommand(InsertCommand.id,{unitId,body:{dataStream:content},range:activeRange,segmentId}),content===" "&&await this._commandService.executeCommand(AfterSpaceCommand.id)})}},__name(_a7,"NormalInputController"),_a7);NormalInputController=__decorateClass$3([core.OnLifecycle(core.LifecycleStages.Rendered,NormalInputController),__decorateParam$3(0,core.IUniverInstanceService),__decorateParam$3(1,engineRender.IRenderManagerService),__decorateParam$3(2,engineRender.ITextSelectionRenderManager),__decorateParam$3(3,core.ICommandService)],NormalInputController);const AlignOperationCommand={id:"doc.command.align-action",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{var _a11;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),{alignType}=params,docDataModel=univerInstanceService.getCurrentUniverDocInstance();if(docDataModel==null)return!1;const allRanges=textSelectionManagerService.getDocRanges();if(allRanges.length===0)return!1;const segmentId=allRanges[0].segmentId,paragraphs=(_a11=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_a11.paragraphs,serializedSelections=allRanges.map(serializeDocRange);if(paragraphs==null)return!1;const currentParagraphs=getParagraphsInRanges(allRanges,paragraphs),unitId=docDataModel.getUnitId(),isAlreadyAligned=currentParagraphs.every(paragraph=>{var _a12;return((_a12=paragraph.paragraphStyle)==null?void 0:_a12.horizontalAlign)===alignType}),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:serializedSelections}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance();for(const paragraph of currentParagraphs){const{startIndex}=paragraph;textX.push({t:core.TextXActionType.RETAIN,len:startIndex-memoryCursor.cursor,segmentId});const paragraphStyle={...paragraph.paragraphStyle,horizontalAlign:isAlreadyAligned?core.HorizontalAlign.UNSPECIFIED:alignType};textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[{...paragraph,paragraphStyle,startIndex:0}]},segmentId,coverType:core.UpdateDocsAttributeType.REPLACE}),memoryCursor.moveCursorTo(startIndex+1)}const path=getRichTextEditPath(docDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},AlignLeftCommand={id:"doc.command.align-left",type:core.CommandType.COMMAND,handler:__name(accessor=>accessor.get(core.ICommandService).syncExecuteCommand(AlignOperationCommand.id,{alignType:core.HorizontalAlign.LEFT}),"handler")},AlignCenterCommand={id:"doc.command.align-center",type:core.CommandType.COMMAND,handler:__name(accessor=>accessor.get(core.ICommandService).syncExecuteCommand(AlignOperationCommand.id,{alignType:core.HorizontalAlign.CENTER}),"handler")},AlignRightCommand={id:"doc.command.align-right",type:core.CommandType.COMMAND,handler:__name(accessor=>accessor.get(core.ICommandService).syncExecuteCommand(AlignOperationCommand.id,{alignType:core.HorizontalAlign.RIGHT}),"handler")},AlignJustifyCommand={id:"doc.command.align-justify",type:core.CommandType.COMMAND,handler:__name(accessor=>accessor.get(core.ICommandService).syncExecuteCommand(AlignOperationCommand.id,{alignType:core.HorizontalAlign.JUSTIFIED}),"handler")};var __defProp$2=Object.defineProperty,__getOwnPropDesc$2=Object.getOwnPropertyDescriptor,__decorateClass$2=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$2(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$2(target,key,result),result},"__decorateClass$2"),__decorateParam$2=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$2"),_a8;let DocCustomRangeController=(_a8=class extends core.Disposable{constructor(_commandService,_textSelectionManagerService,_univerInstanceService){super(),this._commandService=_commandService,this._textSelectionManagerService=_textSelectionManagerService,this._univerInstanceService=_univerInstanceService,this._initSelectionChange()}_transformCustomRange(doc,selection){var _a11;const{startOffset,endOffset,collapsed}=selection,customRanges=(_a11=doc.getCustomRanges())==null?void 0:_a11.filter(range=>!range.wholeEntity||startOffset<=range.startIndex&&endOffset>range.endIndex?!1:collapsed?range.startIndex<startOffset&&range.endIndex>=endOffset:isSegmentIntersects(startOffset,endOffset-1,range.startIndex,range.endIndex));if(customRanges!=null&&customRanges.length){let start=startOffset,end=endOffset;return customRanges.forEach(range=>{start=Math.min(range.startIndex,start),end=Math.max(range.endIndex+1,end)}),{...selection,startOffset:start,endOffset:end,collapsed:start===end}}return selection}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(commandInfo=>{if(commandInfo.id===SetTextSelectionsOperation.id){const params=commandInfo.params,{unitId,ranges,isEditing}=params,doc=this._univerInstanceService.getUnit(unitId);if(!doc)return;const transformedRanges=ranges.map(range=>this._transformCustomRange(doc,range));transformedRanges.some((range,i)=>ranges[i]!==range)&&this._textSelectionManagerService.replaceTextRanges(transformedRanges,isEditing)}}))}},__name(_a8,"DocCustomRangeController"),_a8);DocCustomRangeController=__decorateClass$2([core.OnLifecycle(core.LifecycleStages.Ready,DocCustomRangeController),__decorateParam$2(0,core.ICommandService),__decorateParam$2(1,core.Inject(exports.TextSelectionManagerService)),__decorateParam$2(2,core.IUniverInstanceService)],DocCustomRangeController);const DocsRenameMutation={id:"doc.mutation.rename-doc",type:core.CommandType.MUTATION,handler:__name((accessor,params)=>{const doc=accessor.get(core.IUniverInstanceService).getUnit(params.unitId,core.UniverInstanceType.UNIVER_DOC);return doc?(doc.setName(params.name),!0):!1},"handler")},CreateDocTableCommandId="doc.command.create-table",CreateDocTableCommand={id:CreateDocTableCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11,_b,_c,_d,_e,_f;const{rowCount,colCount}=params,textSelectionManagerService=accessor.get(docs.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRange=textSelectionManagerService.getActiveTextRangeWithStyle();if(activeRange==null)return!1;const{segmentId,segmentPage}=activeRange,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const unitId=docDataModel.getUnitId(),docSkeletonManagerService=docs.getCommandSkeleton(accessor,unitId),skeleton=docSkeletonManagerService==null?void 0:docSkeletonManagerService.getSkeleton();if(skeleton==null)return!1;const{startOffset}=docs.getInsertSelection(activeRange,body),prevParagraph=((_a11=body.paragraphs)!=null?_a11:[]).find(p=>p.startIndex>=startOffset),curGlyph=skeleton.findNodeByCharIndex(startOffset,segmentId,segmentPage),line=(_b=curGlyph==null?void 0:curGlyph.parent)==null?void 0:_b.parent,preGlyph=skeleton.findNodeByCharIndex(startOffset-1,segmentId,segmentPage),isInParagraph=preGlyph&&preGlyph.content!=="\r";if(curGlyph==null||line==null)return!1;const needCreateParagraph=isInParagraph||line.isBehindTable,textX=new core.TextX,jsonX=core.JSONX.getInstance(),rawActions=[],cursor=startOffset+(needCreateParagraph?4:3),textRanges=[{startOffset:cursor,endOffset:cursor,collapsed:!0}],doMutation={id:docs.RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};startOffset>0&&textX.push({t:core.TextXActionType.RETAIN,len:startOffset,segmentId}),needCreateParagraph&&textX.push({t:core.TextXActionType.INSERT,body:{dataStream:core.DataStreamTreeTokenType.PARAGRAPH,paragraphs:docs.generateParagraphs(core.DataStreamTreeTokenType.PARAGRAPH,prevParagraph)},len:1,line:0,segmentId});const{dataStream:tableDataStream,paragraphs:tableParagraphs,sectionBreaks}=genEmptyTable(rowCount,colCount),page=(_f=(_e=(_d=(_c=curGlyph.parent)==null?void 0:_c.parent)==null?void 0:_d.parent)==null?void 0:_e.parent)==null?void 0:_f.parent;if(page==null)return!1;const{pageWidth,marginLeft,marginRight}=page,tableSource=genTableSource(rowCount,colCount,pageWidth-marginLeft-marginRight);textX.push({t:core.TextXActionType.INSERT,body:{dataStream:tableDataStream,paragraphs:tableParagraphs,sectionBreaks,tables:[{startIndex:0,endIndex:tableDataStream.length,tableId:tableSource.tableId}]},len:tableDataStream.length,line:0,segmentId});const path=docs.getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));const insertTableSource=jsonX.insertOp(["tableSource",tableSource.tableId],tableSource);return rawActions.push(insertTableSource),doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DocTableDeleteRowsCommand={id:"doc.table.delete-rows",type:core.CommandType.COMMAND,handler:__name(async accessor=>{const textSelectionManagerService=accessor.get(docs.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRectRanges=textSelectionManagerService.getCurrentRectRanges(),activeTextRange=textSelectionManagerService.getActiveTextRange(),rangeInfo=getRangeInfoFromRanges(activeTextRange,activeRectRanges);if(rangeInfo==null)return!1;const{segmentId}=rangeInfo,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const docSkeletonManagerService=docs.getCommandSkeleton(accessor,docDataModel.getUnitId());if(docSkeletonManagerService==null)return!1;const viewModel=docSkeletonManagerService.getViewModel(),unitId=docDataModel==null?void 0:docDataModel.getUnitId(),textX=new core.TextX,jsonX=core.JSONX.getInstance(),actionParams=getDeleteRowsActionsParams(rangeInfo,viewModel);if(actionParams==null)return!1;const{offset,rowIndexes,len,tableId,cursor,selectWholeTable}=actionParams;if(selectWholeTable)return commandService.executeCommand(DocTableDeleteTableCommand.id);const rawActions=[],textRanges=[{startOffset:cursor,endOffset:cursor,collapsed:!0}],doMutation={id:docs.RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};offset>0&&textX.push({t:core.TextXActionType.RETAIN,len:offset,segmentId}),textX.push({t:core.TextXActionType.DELETE,len,line:0,segmentId});const path=docs.getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));for(const index of rowIndexes.reverse()){const action=jsonX.removeOp(["tableSource",tableId,"tableRows",index]);rawActions.push(action)}return doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DocTableDeleteColumnsCommand={id:"doc.table.delete-columns",type:core.CommandType.COMMAND,handler:__name(async accessor=>{const textSelectionManagerService=accessor.get(docs.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRectRanges=textSelectionManagerService.getCurrentRectRanges(),activeTextRange=textSelectionManagerService.getActiveTextRange(),rangeInfo=getRangeInfoFromRanges(activeTextRange,activeRectRanges);if(rangeInfo==null)return!1;const{segmentId}=rangeInfo,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const docSkeletonManagerService=docs.getCommandSkeleton(accessor,docDataModel.getUnitId());if(docSkeletonManagerService==null)return!1;const viewModel=docSkeletonManagerService.getViewModel(),unitId=docDataModel==null?void 0:docDataModel.getUnitId(),textX=new core.TextX,jsonX=core.JSONX.getInstance(),actionParams=getDeleteColumnsActionParams(rangeInfo,viewModel);if(actionParams==null)return!1;const{offsets,columnIndexes,tableId,cursor,rowCount,selectWholeTable}=actionParams;if(selectWholeTable)return commandService.executeCommand(DocTableDeleteTableCommand.id);const rawActions=[],textRanges=[{startOffset:cursor,endOffset:cursor,collapsed:!0}],doMutation={id:docs.RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};for(const offset of offsets){const{retain,delete:deleteLen}=offset;retain>0&&textX.push({t:core.TextXActionType.RETAIN,len:retain,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:deleteLen,line:0,segmentId})}const path=docs.getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path)),columnIndexes.reverse();for(let i=0;i<rowCount;i++)for(const index of columnIndexes){const action=jsonX.removeOp(["tableSource",tableId,"tableRows",i,"tableCells",index]);rawActions.push(action)}for(const index of columnIndexes){const action=jsonX.removeOp(["tableSource",tableId,"tableColumns",index]);rawActions.push(action)}return doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DocTableDeleteTableCommand={id:"doc.table.delete-table",type:core.CommandType.COMMAND,handler:__name(async accessor=>{const textSelectionManagerService=accessor.get(docs.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRectRanges=textSelectionManagerService.getCurrentRectRanges(),activeTextRange=textSelectionManagerService.getActiveTextRange(),rangeInfo=getRangeInfoFromRanges(activeTextRange,activeRectRanges);if(rangeInfo==null)return!1;const{segmentId}=rangeInfo,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const docSkeletonManagerService=docs.getCommandSkeleton(accessor,docDataModel.getUnitId());if(docSkeletonManagerService==null)return!1;const viewModel=docSkeletonManagerService.getViewModel(),unitId=docDataModel==null?void 0:docDataModel.getUnitId(),textX=new core.TextX,jsonX=core.JSONX.getInstance(),actionParams=getDeleteTableActionParams(rangeInfo,viewModel);if(actionParams==null)return!1;const{offset,len,tableId,cursor}=actionParams,rawActions=[],textRanges=[{startOffset:cursor,endOffset:cursor,collapsed:!0}],doMutation={id:docs.RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};offset>0&&textX.push({t:core.TextXActionType.RETAIN,len:offset,segmentId}),textX.push({t:core.TextXActionType.DELETE,len,line:0,segmentId});const path=docs.getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));const action=jsonX.removeOp(["tableSource",tableId]);return rawActions.push(action),doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DocTableInsertRowCommandId="doc.command.table-insert-row",DocTableInsertColumnCommandId="doc.command.table-insert-column",DocTableInsertRowAboveCommandId="doc.command.table-insert-row-above",DocTableInsertRowBellowCommandId="doc.command.table-insert-row-bellow",DocTableInsertColumnLeftCommandId="doc.command.table-insert-column-left",DocTableInsertColumnRightCommandId="doc.command.table-insert-column-right",DocTableInsertRowAboveCommand={id:DocTableInsertRowAboveCommandId,type:core.CommandType.COMMAND,handler:__name(async accessor=>accessor.get(core.ICommandService).executeCommand(DocTableInsertRowCommandId,{position:INSERT_ROW_POSITION.ABOVE}),"handler")},DocTableInsertRowBellowCommand={id:DocTableInsertRowBellowCommandId,type:core.CommandType.COMMAND,handler:__name(async accessor=>accessor.get(core.ICommandService).executeCommand(DocTableInsertRowCommandId,{position:INSERT_ROW_POSITION.BELLOW}),"handler")},DocTableInsertColumnLeftCommand={id:DocTableInsertColumnLeftCommandId,type:core.CommandType.COMMAND,handler:__name(async accessor=>accessor.get(core.ICommandService).executeCommand(DocTableInsertColumnCommandId,{position:INSERT_COLUMN_POSITION.LEFT}),"handler")},DocTableInsertColumnRightCommand={id:DocTableInsertColumnRightCommandId,type:core.CommandType.COMMAND,handler:__name(async accessor=>accessor.get(core.ICommandService).executeCommand(DocTableInsertColumnCommandId,{position:INSERT_COLUMN_POSITION.RIGHT}),"handler")},DocTableInsertRowCommand={id:DocTableInsertRowCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{position}=params,textSelectionManagerService=accessor.get(docs.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRectRanges=textSelectionManagerService.getCurrentRectRanges(),activeTextRange=textSelectionManagerService.getActiveTextRange(),rangeInfo=getRangeInfoFromRanges(activeTextRange,activeRectRanges);if(rangeInfo==null)return!1;const{segmentId}=rangeInfo,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const docSkeletonManagerService=docs.getCommandSkeleton(accessor,docDataModel.getUnitId());if(docSkeletonManagerService==null)return!1;const viewModel=docSkeletonManagerService.getViewModel(),unitId=docDataModel==null?void 0:docDataModel.getUnitId(),textX=new core.TextX,jsonX=core.JSONX.getInstance(),actionParams=getInsertRowActionsParams(rangeInfo,position,viewModel);if(actionParams==null)return!1;const{offset,colCount,tableId,insertRowIndex}=actionParams,rawActions=[],cursor=offset+2,textRanges=[{startOffset:cursor,endOffset:cursor,collapsed:!0}],doMutation={id:docs.RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};offset>0&&textX.push({t:core.TextXActionType.RETAIN,len:offset,segmentId});const insertBody=getInsertRowBody(colCount);textX.push({t:core.TextXActionType.INSERT,body:insertBody,len:insertBody.dataStream.length,line:0,segmentId});const path=docs.getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));const insertRow=getEmptyTableRow(colCount),insertTableSource=jsonX.insertOp(["tableSource",tableId,"tableRows",insertRowIndex],insertRow);return rawActions.push(insertTableSource),doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DocTableInsertColumnCommand={id:DocTableInsertColumnCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a11,_b,_c;const{position}=params,textSelectionManagerService=accessor.get(docs.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRectRanges=textSelectionManagerService.getCurrentRectRanges(),activeTextRange=textSelectionManagerService.getActiveTextRange(),rangeInfo=getRangeInfoFromRanges(activeTextRange,activeRectRanges);if(rangeInfo==null)return!1;const{segmentId}=rangeInfo,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(docDataModel==null||body==null)return!1;const docSkeletonManagerService=docs.getCommandSkeleton(accessor,docDataModel.getUnitId());if(docSkeletonManagerService==null)return!1;const viewModel=docSkeletonManagerService.getViewModel(),unitId=docDataModel==null?void 0:docDataModel.getUnitId(),textX=new core.TextX,jsonX=core.JSONX.getInstance(),actionParams=getInsertColumnActionsParams(rangeInfo,position,viewModel);if(actionParams==null)return!1;const{offsets,columnIndex,tableId,rowCount}=actionParams,rawActions=[],cursor=offsets[0]+1,textRanges=[{startOffset:cursor,endOffset:cursor,collapsed:!0}],doMutation={id:docs.RichTextEditingMutation.id,params:{unitId,actions:[],textRanges}};for(const offset of offsets){textX.push({t:core.TextXActionType.RETAIN,len:offset,segmentId});const insertBody=getInsertColumnBody();textX.push({t:core.TextXActionType.INSERT,body:insertBody,len:insertBody.dataStream.length,line:0,segmentId})}const path=docs.getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));for(let i=0;i<rowCount;i++){const insertCell=getEmptyTableCell(),insertTableSource=jsonX.insertOp(["tableSource",tableId,"tableRows",i,"tableCells",columnIndex],insertCell);rawActions.push(insertTableSource)}const snapshot=docDataModel.getSnapshot(),documentStyle=snapshot.documentStyle,{marginLeft=0,marginRight=0}=documentStyle,pageWidth=((_b=(_a11=documentStyle.pageSize)==null?void 0:_a11.width)!=null?_b:800)-marginLeft-marginRight,tableColumns=(_c=snapshot==null?void 0:snapshot.tableSource)==null?void 0:_c[tableId].tableColumns,{newColWidth,widths}=getColumnWidths(pageWidth,tableColumns,columnIndex);for(let i=0;i<widths.length;i++){const action=jsonX.replaceOp(["tableSource",tableId,"tableColumns",i,"size","width","v"],tableColumns[i].size.width.v,widths[i]);rawActions.push(action)}const insertCol=getTableColumn(newColWidth),insertTableColumn=jsonX.insertOp(["tableSource",tableId,"tableColumns",columnIndex],insertCol);return rawActions.push(insertTableColumn),doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")},DocTableTabCommand={id:"doc.table.tab-in-table",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{shift}=params,textSelectionManager=accessor.get(exports.TextSelectionManagerService),activeTextRange=textSelectionManager.getActiveTextRangeWithStyle(),commandService=accessor.get(core.ICommandService),docDataModel=accessor.get(core.IUniverInstanceService).getCurrentUniverDocInstance();if(!docDataModel)return!1;const unitId=docDataModel.getUnitId(),docSkeletonManagerService=getCommandSkeleton(accessor,unitId),skeleton=docSkeletonManagerService==null?void 0:docSkeletonManagerService.getSkeleton(),viewModel=skeleton==null?void 0:skeleton.getViewModel().getSelfOrHeaderFooterViewModel(activeTextRange==null?void 0:activeTextRange.segmentId);if(viewModel==null||activeTextRange==null)return!1;let offsets=null;if(shift?offsets=getCellOffsets(viewModel,activeTextRange,CellPosition.PREV):offsets=getCellOffsets(viewModel,activeTextRange,CellPosition.NEXT),offsets){const{startOffset,endOffset}=offsets,textRanges=[{startOffset,endOffset}];return textSelectionManager.replaceTextRanges(textRanges),!0}return shift===!1?await commandService.executeCommand(DocTableInsertRowCommand.id,{position:INSERT_ROW_POSITION.BELLOW}):!0},"handler")},PLUGIN_CONFIG_KEY="docs.config",defaultPluginConfig={};var __defProp$1=Object.defineProperty,__getOwnPropDesc$1=Object.getOwnPropertyDescriptor,__decorateClass$1=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$1(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$1(target,key,result),result},"__decorateClass$1"),__decorateParam$1=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$1");const PLUGIN_NAME="DOCS_PLUGIN";var _a9;exports.UniverDocsPlugin=(_a9=class extends core.Plugin{constructor(_config=defaultPluginConfig,_injector,_configService){super(),this._config=_config,this._injector=_injector,this._configService=_configService;const{...rest}=this._config;this._configService.setConfig(PLUGIN_CONFIG_KEY,rest),this._initializeDependencies(_injector),this._initializeCommands()}_initializeCommands(){[MoveCursorOperation,MoveSelectionOperation,DeleteLeftCommand,DeleteRightCommand,SetInlineFormatBoldCommand,SetInlineFormatItalicCommand,SetInlineFormatUnderlineCommand,SetInlineFormatStrikethroughCommand,SetInlineFormatSubscriptCommand,SetInlineFormatSuperscriptCommand,SetInlineFormatFontSizeCommand,SetInlineFormatFontFamilyCommand,SetInlineFormatTextColorCommand,ResetInlineFormatTextBackgroundColorCommand,SetInlineFormatTextBackgroundColorCommand,SetInlineFormatCommand,BreakLineCommand,InsertCommand,DeleteCommand,DeleteCustomBlockCommand,UpdateCommand,IMEInputCommand,MergeTwoParagraphCommand,RichTextEditingMutation,ReplaceContentCommand,CoverContentCommand,SetDocZoomRatioCommand,SetDocZoomRatioOperation,SetTextSelectionsOperation,SelectAllOperation,OrderListCommand,BulletListCommand,ListOperationCommand,AlignLeftCommand,AlignCenterCommand,AlignRightCommand,AlignOperationCommand,AlignJustifyCommand,CreateDocTableCommand,DocTableInsertRowCommand,DocTableInsertRowAboveCommand,DocTableInsertRowBellowCommand,DocTableInsertColumnCommand,DocTableInsertColumnLeftCommand,DocTableInsertColumnRightCommand,DocTableDeleteRowsCommand,DocTableDeleteColumnsCommand,DocTableDeleteTableCommand,DocTableTabCommand,DocsRenameMutation,TabCommand,AfterSpaceCommand,EnterCommand,ChangeListNestingLevelCommand,ChangeListTypeCommand,CheckListCommand,ToggleCheckListCommand,QuickListCommand].forEach(command=>{this._injector.get(core.ICommandService).registerCommand(command)})}_initializeDependencies(docInjector){[[exports.DocStateChangeManagerService],[IMEInputManagerService],[engineRender.ITextSelectionRenderManager,{useClass:engineRender.TextSelectionRenderManager}],[exports.TextSelectionManagerService],[exports.DocAutoFormatService],[NormalInputController],[IMEInputController],[MoveCursorController],[DocCustomRangeController]].forEach(d=>docInjector.add(d))}},__name(_a9,"UniverDocsPlugin"),__publicField(_a9,"pluginName",PLUGIN_NAME),__publicField(_a9,"type",core.UniverInstanceType.UNIVER_DOC),_a9);exports.UniverDocsPlugin=__decorateClass$1([__decorateParam$1(1,core.Inject(core.Injector)),__decorateParam$1(2,core.IConfigService)],exports.UniverDocsPlugin);const getPlainTextFormBody=__name(body=>{let str=body.dataStream;return body.dataStream.endsWith(`\r
|
|
5
|
+
`)&&(str=body.dataStream.slice(0,-2)),str.replaceAll(core.DataStreamTreeTokenType.CUSTOM_RANGE_START,"").replaceAll(core.DataStreamTreeTokenType.CUSTOM_RANGE_END,"")},"getPlainTextFormBody"),getPlainTextFormDocument=__name(data=>data.body?getPlainTextFormBody(data.body):"","getPlainTextFormDocument");function addCustomRangeTextX(param,body){const{range,rangeId,rangeType,segmentId}=param,actualRange=getSelectionForAddCustomRange(range,body);if(!actualRange)return null;const{startOffset:start,endOffset:end}=actualRange,textX=new core.TextX;return start>0&&textX.push({t:core.TextXActionType.RETAIN,len:start,segmentId}),textX.push({t:core.TextXActionType.INSERT,body:{dataStream:core.DataStreamTreeTokenType.CUSTOM_RANGE_START},len:1,line:0}),textX.push({t:core.TextXActionType.RETAIN,body:{dataStream:""},len:end-start,segmentId}),textX.push({t:core.TextXActionType.INSERT,body:{dataStream:core.DataStreamTreeTokenType.CUSTOM_RANGE_END,customRanges:[{rangeId,rangeType,startIndex:-(end-start)-1,endIndex:0}]},len:1,line:0}),textX}__name(addCustomRangeTextX,"addCustomRangeTextX");function addCustomRangeFactory(accessor,param,body){const{unitId,segmentId}=param,documentDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId);if(!documentDataModel)return!1;const doMutation={id:RichTextEditingMutation.id,params:{unitId:param.unitId,actions:[],textRanges:void 0}},jsonX=core.JSONX.getInstance(),textX=addCustomRangeTextX(param,body);if(!textX)return!1;const path=getRichTextEditPath(documentDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),doMutation}__name(addCustomRangeFactory,"addCustomRangeFactory");function addCustomRangeBySelectionFactory(accessor,param){var _a11;const{rangeId,rangeType,wholeEntity,properties}=param,textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selection=textSelectionManagerService.getActiveTextRangeWithStyle(),segmentId=selection==null?void 0:selection.segmentId;if(!selection)return!1;const documentDataModel=univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_DOC);if(!documentDataModel)return!1;const body=documentDataModel.getSelfOrHeaderFooterModel(selection.segmentId).getBody(),unitId=documentDataModel.getUnitId();if(!body)return!1;const{startOffset,endOffset}=normalizeSelection(selection),customRanges=(_a11=body.customRanges)!=null?_a11:[],relativeCustomRanges=[];for(let i=0,len=customRanges.length;i<len;i++){const customRange=customRanges[i];if(customRange.rangeType===rangeType&&Math.max(customRange.startIndex,startOffset)<=Math.min(customRange.endIndex,endOffset-1)&&relativeCustomRanges.push({...customRange}),customRange.startIndex>=endOffset)break}const deletes=relativeCustomRanges.map(i=>[i.startIndex,i.endIndex]).flat().sort((pre,aft)=>pre-aft);let cursor=0;const textX=new core.TextX,range=deletes.length?{startOffset:Math.min(deletes[0],startOffset),endOffset:Math.max(deletes[deletes.length-1]+1,endOffset)}:selection;range.startOffset!==cursor&&(textX.push({t:core.TextXActionType.RETAIN,len:range.startOffset-cursor,segmentId}),cursor=range.startOffset),textX.push({t:core.TextXActionType.INSERT,body:{dataStream:core.DataStreamTreeTokenType.CUSTOM_RANGE_START},len:1,line:0,segmentId}),deletes.forEach((index,i)=>{index!==cursor&&(textX.push({t:core.TextXActionType.RETAIN,len:index-cursor,segmentId}),cursor=index),textX.push({t:core.TextXActionType.DELETE,len:1,line:0,segmentId}),cursor++}),cursor!==range.endOffset&&(textX.push({t:core.TextXActionType.RETAIN,len:range.endOffset-cursor,segmentId}),cursor=range.endOffset),textX.push({t:core.TextXActionType.INSERT,body:{dataStream:core.DataStreamTreeTokenType.CUSTOM_RANGE_END,customRanges:[{rangeId,rangeType,startIndex:-(range.endOffset-range.startOffset-deletes.length+1),endIndex:0,wholeEntity,properties}]},len:1,line:0,segmentId});const jsonX=core.JSONX.getInstance(),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:void 0}},path=getRichTextEditPath(documentDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),doMutation}__name(addCustomRangeBySelectionFactory,"addCustomRangeBySelectionFactory");function deleteCustomRangeTextX(accessor,params){var _a11,_b;const{unitId,rangeId,segmentId}=params,documentDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId);if(!documentDataModel)return!1;const range=(_b=(_a11=documentDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_a11.customRanges)==null?void 0:_b.find(r=>r.rangeId===rangeId);if(!range)return!1;const{startIndex,endIndex}=range,textX=new core.TextX,len=endIndex-startIndex+1;return startIndex>0&&textX.push({t:core.TextXActionType.RETAIN,len:startIndex,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:1,segmentId,line:0}),len-2>0&&textX.push({t:core.TextXActionType.RETAIN,len:len-2,segmentId}),textX.push({t:core.TextXActionType.DELETE,len:1,segmentId,line:0}),textX}__name(deleteCustomRangeTextX,"deleteCustomRangeTextX");function deleteCustomRangeFactory(accessor,params){const{unitId,segmentId}=params,documentDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId);if(!documentDataModel)return!1;const doMutation={id:RichTextEditingMutation.id,params:{unitId:params.unitId,actions:[],textRanges:void 0,segmentId}},jsonX=core.JSONX.getInstance(),textX=deleteCustomRangeTextX(accessor,params);if(!textX)return!1;const path=getRichTextEditPath(documentDataModel,segmentId);return doMutation.params.actions=jsonX.editOp(textX.serialize(),path),doMutation}__name(deleteCustomRangeFactory,"deleteCustomRangeFactory");function addCustomDecorationFactory(param){const{unitId,ranges,id,type,segmentId}=param,doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:void 0}},textX=new core.TextX,jsonX=core.JSONX.getInstance();let cursor=0;for(let i=0;i<ranges.length;i++){const range=ranges[i],{startOffset:start,endOffset:end}=range;start>0&&textX.push({t:core.TextXActionType.RETAIN,len:start-cursor,segmentId}),textX.push({t:core.TextXActionType.RETAIN,body:{dataStream:"",customDecorations:[{id,type,startIndex:0,endIndex:end-start-1}]},len:end-start,segmentId}),cursor=end}return doMutation.params.actions=jsonX.editOp(textX.serialize()),doMutation}__name(addCustomDecorationFactory,"addCustomDecorationFactory");function addCustomDecorationBySelectionFactory(accessor,param){const{segmentId,id,type}=param,textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selections=textSelectionManagerService.getCurrentTextRanges();if(!selections)return!1;const documentDataModel=univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_DOC);if(!documentDataModel)return!1;const body=documentDataModel.getBody(),unitId=documentDataModel.getUnitId();return body?addCustomDecorationFactory({unitId,ranges:selections.map(serializeDocRange),id,type,segmentId}):!1}__name(addCustomDecorationBySelectionFactory,"addCustomDecorationBySelectionFactory");function deleteCustomDecorationFactory(accessor,params){var _a11,_b;const{unitId,id,segmentId}=params,documentDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId),body=documentDataModel==null?void 0:documentDataModel.getBody();if(!documentDataModel||!body)return!1;const decorations=(_b=(_a11=documentDataModel.getBody())==null?void 0:_a11.customDecorations)==null?void 0:_b.filter(d=>d.id===id);if(!(decorations!=null&&decorations.length))return!1;const oldBodySlices=decorations.map(i=>core.getBodySlice(body,i.startIndex,i.endIndex+1)),bodySlices=oldBodySlices.map(bodySlice=>{var _a12;const copy=core.Tools.deepClone(bodySlice);return copy.customDecorations=(_a12=copy.customDecorations)==null?void 0:_a12.filter(decoration=>decoration.id!==id),copy}),doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:void 0}},textX=new core.TextX,jsonX=core.JSONX.getInstance();let cursor=0;return decorations.forEach((decoration,i)=>{const bodySlice=bodySlices[i],oldBody=oldBodySlices[i];decoration.startIndex!==cursor&&textX.push({t:core.TextXActionType.RETAIN,len:decoration.startIndex-cursor,segmentId}),cursor=decoration.startIndex,textX.push({t:core.TextXActionType.RETAIN,len:decoration.endIndex-decoration.startIndex+1,segmentId,body:bodySlice,oldBody,coverType:core.UpdateDocsAttributeType.REPLACE}),cursor=cursor+(decoration.endIndex-decoration.startIndex+1)}),doMutation.params.actions=jsonX.editOp(textX.serialize()),doMutation}__name(deleteCustomDecorationFactory,"deleteCustomDecorationFactory");const CUSTOM_RANGE=core.createInterceptorKey("CUSTOM_RANGE"),CUSTOM_DECORATION=core.createInterceptorKey("CUSTOM_DECORATION"),DOC_INTERCEPTOR_POINT={CUSTOM_RANGE,CUSTOM_DECORATION};var __defProp2=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__decorateClass=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp2(target,key,result),result},"__decorateClass"),__decorateParam=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam"),_a10;exports.DocInterceptorService=(_a10=class extends core.Disposable{constructor(_context,_docSkeletonManagerService){super();__publicField(this,"_interceptorsByName",new Map);this._context=_context,this._docSkeletonManagerService=_docSkeletonManagerService;const viewModel=this._docSkeletonManagerService.getViewModel(),unitId=viewModel.getDataModel().getUnitId();if(unitId===core.DOCS_NORMAL_EDITOR_UNIT_ID_KEY||unitId===core.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY)return;this.disposeWithMe(this.interceptDocumentViewModel(viewModel)),this.disposeWithMe(this.intercept(DOC_INTERCEPTOR_POINT.CUSTOM_RANGE,{priority:-1,handler:__name((data,pos,next)=>next(data),"handler")}));let disposableCollection=new core.DisposableCollection;viewModel.segmentViewModels$.subscribe(segmentViewModels=>{disposableCollection.dispose(),disposableCollection=new core.DisposableCollection,segmentViewModels.forEach(segmentViewModel=>{disposableCollection.add(this.interceptDocumentViewModel(segmentViewModel))})}),this.disposeWithMe(disposableCollection)}intercept(name,interceptor){const key=name;this._interceptorsByName.has(key)||this._interceptorsByName.set(key,[]);const interceptors=this._interceptorsByName.get(key);return interceptors.push(interceptor),this._interceptorsByName.set(key,interceptors.sort((a,b)=>{var _a11,_b;return((_a11=b.priority)!=null?_a11:0)-((_b=a.priority)!=null?_b:0)})),this.disposeWithMe(core.toDisposable(()=>core.remove(this._interceptorsByName.get(key),interceptor)))}fetchThroughInterceptors(name){const key=name,interceptors=this._interceptorsByName.get(key);return core.composeInterceptors(interceptors||[])}interceptDocumentViewModel(viewModel){const disposableCollection=new core.DisposableCollection;return disposableCollection.add(viewModel.registerCustomRangeInterceptor({getCustomRange:__name(index=>{var _a11;return this.fetchThroughInterceptors(DOC_INTERCEPTOR_POINT.CUSTOM_RANGE)(viewModel.getCustomRangeRaw(index),{index,unitId:viewModel.getDataModel().getUnitId(),customRanges:(_a11=viewModel.getDataModel().getCustomRanges())!=null?_a11:[]})},"getCustomRange"),getCustomDecoration:__name(index=>{var _a11;return this.fetchThroughInterceptors(DOC_INTERCEPTOR_POINT.CUSTOM_DECORATION)(viewModel.getCustomDecorationRaw(index),{index,unitId:viewModel.getDataModel().getUnitId(),customDecorations:(_a11=viewModel.getDataModel().getCustomDecorations())!=null?_a11:[]})},"getCustomDecoration")})),disposableCollection}},__name(_a10,"DocInterceptorService"),_a10);exports.DocInterceptorService=__decorateClass([core.OnLifecycle(core.LifecycleStages.Starting,exports.DocInterceptorService),__decorateParam(1,core.Inject(exports.DocSkeletonManagerService))],exports.DocInterceptorService);exports.AfterSpaceCommand=AfterSpaceCommand;exports.AlignCenterCommand=AlignCenterCommand;exports.AlignJustifyCommand=AlignJustifyCommand;exports.AlignLeftCommand=AlignLeftCommand;exports.AlignOperationCommand=AlignOperationCommand;exports.AlignRightCommand=AlignRightCommand;exports.BreakLineCommand=BreakLineCommand;exports.BulletListCommand=BulletListCommand;exports.ChangeListNestingLevelCommand=ChangeListNestingLevelCommand;exports.ChangeListNestingLevelType=ChangeListNestingLevelType;exports.ChangeListTypeCommand=ChangeListTypeCommand;exports.CheckListCommand=CheckListCommand;exports.CoverContentCommand=CoverContentCommand;exports.CreateDocTableCommand=CreateDocTableCommand;exports.CutContentCommand=CutContentCommand;exports.DOCS_COMPONENT_BACKGROUND_LAYER_INDEX=DOCS_COMPONENT_BACKGROUND_LAYER_INDEX;exports.DOCS_COMPONENT_DEFAULT_Z_INDEX=DOCS_COMPONENT_DEFAULT_Z_INDEX;exports.DOCS_COMPONENT_HEADER_LAYER_INDEX=DOCS_COMPONENT_HEADER_LAYER_INDEX;exports.DOCS_COMPONENT_MAIN_LAYER_INDEX=DOCS_COMPONENT_MAIN_LAYER_INDEX;exports.DOCS_VIEW_KEY=DOCS_VIEW_KEY;exports.DOC_INTERCEPTOR_POINT=DOC_INTERCEPTOR_POINT;exports.DeleteCommand=DeleteCommand;exports.DeleteCustomBlockCommand=DeleteCustomBlockCommand;exports.DeleteLeftCommand=DeleteLeftCommand;exports.DeleteRightCommand=DeleteRightCommand;exports.DocTableDeleteColumnsCommand=DocTableDeleteColumnsCommand;exports.DocTableDeleteRowsCommand=DocTableDeleteRowsCommand;exports.DocTableDeleteTableCommand=DocTableDeleteTableCommand;exports.DocTableInsertColumnCommand=DocTableInsertColumnCommand;exports.DocTableInsertColumnLeftCommand=DocTableInsertColumnLeftCommand;exports.DocTableInsertColumnRightCommand=DocTableInsertColumnRightCommand;exports.DocTableInsertRowAboveCommand=DocTableInsertRowAboveCommand;exports.DocTableInsertRowBellowCommand=DocTableInsertRowBellowCommand;exports.DocTableInsertRowCommand=DocTableInsertRowCommand;exports.DocTableTabCommand=DocTableTabCommand;exports.EditorInsertTextCommandId=EditorInsertTextCommandId;exports.EnterCommand=EnterCommand;exports.IMEInputCommand=IMEInputCommand;exports.IMEInputManagerService=IMEInputManagerService;exports.InnerPasteCommand=InnerPasteCommand;exports.InsertCommand=InsertCommand;exports.ListOperationCommand=ListOperationCommand;exports.MergeTwoParagraphCommand=MergeTwoParagraphCommand;exports.MoveCursorOperation=MoveCursorOperation;exports.MoveSelectionOperation=MoveSelectionOperation;exports.NORMAL_TEXT_SELECTION_PLUGIN_NAME=NORMAL_TEXT_SELECTION_PLUGIN_NAME;exports.OrderListCommand=OrderListCommand;exports.QuickListCommand=QuickListCommand;exports.ReplaceContentCommand=ReplaceContentCommand;exports.ResetInlineFormatTextBackgroundColorCommand=ResetInlineFormatTextBackgroundColorCommand;exports.RichTextEditingMutation=RichTextEditingMutation;exports.SelectAllOperation=SelectAllOperation;exports.SetDocZoomRatioCommand=SetDocZoomRatioCommand;exports.SetDocZoomRatioOperation=SetDocZoomRatioOperation;exports.SetInlineFormatBoldCommand=SetInlineFormatBoldCommand;exports.SetInlineFormatCommand=SetInlineFormatCommand;exports.SetInlineFormatFontFamilyCommand=SetInlineFormatFontFamilyCommand;exports.SetInlineFormatFontSizeCommand=SetInlineFormatFontSizeCommand;exports.SetInlineFormatItalicCommand=SetInlineFormatItalicCommand;exports.SetInlineFormatStrikethroughCommand=SetInlineFormatStrikethroughCommand;exports.SetInlineFormatSubscriptCommand=SetInlineFormatSubscriptCommand;exports.SetInlineFormatSuperscriptCommand=SetInlineFormatSuperscriptCommand;exports.SetInlineFormatTextBackgroundColorCommand=SetInlineFormatTextBackgroundColorCommand;exports.SetInlineFormatTextColorCommand=SetInlineFormatTextColorCommand;exports.SetInlineFormatUnderlineCommand=SetInlineFormatUnderlineCommand;exports.SetTextSelectionsOperation=SetTextSelectionsOperation;exports.TabCommand=TabCommand;exports.ToggleCheckListCommand=ToggleCheckListCommand;exports.UpdateCommand=UpdateCommand;exports.VIEWPORT_KEY=VIEWPORT_KEY;exports.addCustomDecorationBySelectionFactory=addCustomDecorationBySelectionFactory;exports.addCustomDecorationFactory=addCustomDecorationFactory;exports.addCustomRangeBySelectionFactory=addCustomRangeBySelectionFactory;exports.addCustomRangeFactory=addCustomRangeFactory;exports.copyCustomRange=copyCustomRange;exports.deleteCustomDecorationFactory=deleteCustomDecorationFactory;exports.deleteCustomRangeFactory=deleteCustomRangeFactory;exports.findNearestSectionBreak=findNearestSectionBreak;exports.genTableSource=genTableSource;exports.generateParagraphs=generateParagraphs;exports.getCommandSkeleton=getCommandSkeleton;exports.getCursorWhenDelete=getCursorWhenDelete;exports.getCustomBlockIdsInSelections=getCustomBlockIdsInSelections;exports.getCustomRangesInterestsWithRange=getCustomRangesInterestsWithRange;exports.getCutActionsFromDocRanges=getCutActionsFromDocRanges;exports.getDeleteSelection=getDeleteSelection;exports.getDocObject=getDocObject;exports.getDocObjectById=getDocObjectById;exports.getEmptyTableCell=getEmptyTableCell;exports.getEmptyTableRow=getEmptyTableRow;exports.getInsertSelection=getInsertSelection;exports.getParagraphsInRange=getParagraphsInRange$1;exports.getParagraphsInRanges=getParagraphsInRanges;exports.getPlainTextFormBody=getPlainTextFormBody;exports.getPlainTextFormDocument=getPlainTextFormDocument;exports.getRetainAndDeleteFromReplace=getRetainAndDeleteFromReplace;exports.getRichTextEditPath=getRichTextEditPath;exports.getSelectionText=getSelectionText;exports.getTableColumn=getTableColumn;exports.hasParagraphInTable=hasParagraphInTable;exports.isSegmentIntersects=isSegmentIntersects;exports.makeSelection=makeSelection;exports.neoGetDocObject=neoGetDocObject;exports.replaceSelectionFactory=replaceSelectionFactory;exports.serializeDocRange=serializeDocRange;
|