@univerjs/docs 0.2.8 → 0.2.10

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 CHANGED
@@ -1,4 +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"),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))}_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");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,bulletParagraphTextStyle=paragraphProperties.textStyle,{charSpace,gridType}=findNearestSectionBreak(startIndex,sectionBreaks)||{charSpace:0,gridType:core.GridType.LINES},bulletParagraphTextStyleEmpty=Object.keys(bulletParagraphTextStyle!=null?bulletParagraphTextStyle:{}).reduce((acc,key)=>(acc[key]=void 0,acc),{}),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,textStyle:{...paragraphStyle.textStyle,...bulletParagraphTextStyleEmpty}},startIndex:0}:{startIndex:0,paragraphStyle:{...paragraphStyle,textStyle:{...paragraphStyle.textStyle,...bulletParagraphTextStyle,...(bullet==null?void 0:bullet.listType)===core.PresetListType.CHECK_LIST_CHECKED?{st:{s:core.BooleanNumber.FALSE}}:null},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||{},bulletParagraphTextStyle=paragraphProperties.textStyle,{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,textStyle:{...paragraphStyle.textStyle,...bulletParagraphTextStyle,...(bullet==null?void 0:bullet.listType)===core.PresetListType.CHECK_LIST_CHECKED?{st:{s:core.BooleanNumber.FALSE}}:null},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;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,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 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=(_c=docDataModel.getSnapshot().lists)!=null?_c:{},lists={...core.PRESET_LIST_TYPE,...customLists};for(const paragraph of currentParagraphs){const{startIndex,paragraphStyle={},bullet}=paragraph;if(textX.push({t:core.TextXActionType.RETAIN,len:startIndex-memoryCursor.cursor,segmentId}),bullet){const listType=bullet.listType,maxLevel=lists[listType].nestingLevel.length-1;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&&params.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&&params.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,_b;if(!params)return!1;const univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),{index}=params,docDataModel=univerInstanceService.getCurrentUniverDocInstance();if(docDataModel==null)return!1;const paragraphs=(_a11=docDataModel.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&&currentParagraph.bullet)||currentParagraph.bullet.listType.indexOf(core.PresetListType.CHECK_LIST)===-1)return!1;const doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:[]}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance(),customLists=(_b=docDataModel.getSnapshot().lists)!=null?_b:{},lists={...core.PRESET_LIST_TYPE,...customLists},{startIndex,paragraphStyle={}}=currentParagraph,listType=currentParagraph.bullet.listType===core.PresetListType.CHECK_LIST?core.PresetListType.CHECK_LIST_CHECKED:core.PresetListType.CHECK_LIST,bulletParagraphTextStyle=(lists[listType].nestingLevel[0].paragraphProperties||{}).textStyle;textX.push({t:core.TextXActionType.RETAIN,len:startIndex-memoryCursor.cursor}),textX.push({t:core.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[{...currentParagraph,paragraphStyle:{...paragraphStyle,textStyle:{...paragraphStyle.textStyle,...bulletParagraphTextStyle}},startIndex:0,bullet:{...currentParagraph.bullet,listType}}]},coverType:core.UpdateDocsAttributeType.REPLACE}),memoryCursor.moveCursorTo(startIndex+1);const path=getRichTextEditPath(docDataModel);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&&params.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 getCustomRangesIntesetsWithRange(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(getCustomRangesIntesetsWithRange,"getCustomRangesIntesetsWithRange");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{startOffset,endOffset,collapsed}}else return{...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&&paragraphInRange&&paragraphInRange.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;const{unitId,originBody,body:insertBody}=params,univerInstanceService=accessor.get(core.IUniverInstanceService);let body;if(params.originBody)body=originBody;else{const docDataModel=univerInstanceService.getUnit(unitId);body=docDataModel==null?void 0:docDataModel.getBody()}if(!body)return!1;const textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),selection=(_a11=params.selection)!=null?_a11:textSelectionManagerService.getActiveTextRangeWithStyle();if(!selection||!body)return!1;const textRanges=(_b=params.textRanges)!=null?_b:[{startOffset:selection.startOffset+insertBody.dataStream.length,endOffset:selection.startOffset+insertBody.dataStream.length,collapsed:!0}],doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges,debounce:!0}},textX=new core.TextX,jsonX=core.JSONX.getInstance();return textX.push(...getRetainAndDeleteAndExcludeLineBreak(selection,body)),textX.push({t:core.TextXActionType.INSERT,body:insertBody,len:insertBody.dataStream.length,line:0}),doMutation.params.actions=jsonX.editOp(textX.serialize()),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,textRanges:propTextRanges,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:propTextRanges!=null?propTextRanges: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),propTextRanges||(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&&paragraphs.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");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&&paragraph.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&&params.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&&params.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&&currentParagraph.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&&params.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&&paragraphInRange&&paragraphInRange.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&&paragraphs.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
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");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;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}=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}},memoryCursor=new core.MemoryCursor;memoryCursor.reset();const textX=new core.TextX,jsonX=core.JSONX.getInstance(),rawActions=[],hasTable=!!((_a11=body.tables)!=null&&_a11.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(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");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,_c;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}};if(Array.isArray(selections)&&(selections==null?void 0:selections.length)!==0&&(doMutation.params.actions=getCutActionsFromTextRanges(selections,docDataModel,segmentId)),Array.isArray(rectRanges)&&(rectRanges==null?void 0:rectRanges.length)!==0){const actions=getCutActionsFromRectRanges(rectRanges,docDataModel,viewModel,segmentId);((_c=doMutation.params.actions)==null?void 0:_c.length)===0||doMutation.params.actions==null?doMutation.params.actions=actions:doMutation.params.actions=core.JSONX.compose(doMutation.params.actions,core.JSONX.transform(actions,doMutation.params.actions,"right"))}return!!commandService.syncExecuteCommand(doMutation.id,doMutation.params)},"handler")};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");const 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{startOffset,style,segmentId}=previousActiveRange,body=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(body==null)return!1;const insertRange=getInsertSelection(previousActiveRange,body);Object.assign(previousActiveRange,insertRange);const 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 autoForamts=(_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:getCustomRangesIntesetsWithRange(selection,(_e=(_d=doc.getBody())==null?void 0:_d.customRanges)!=null?_e:[]),commandId:id,commandParams:params},matched=autoForamts.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{startOffset,segmentId,style,segmentPage}=activeRange,len=content.length,textRanges=[{startOffset:startOffset+len,endOffset:startOffset+len,segmentId,segmentPage,style}];await this._commandService.executeCommand(InsertCommand.id,{unitId,body:{dataStream:content},textRanges,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()=>!0,"handler")},DocTableShiftTabCommand={id:"doc.table.shift-tab-in-table",type:core.CommandType.COMMAND,handler:__name(async()=>!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,DocTableShiftTabCommand,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 getPlainTextFormDocument=__name(data=>data.body?data.body.dataStream.slice(0,-2).replaceAll(core.DataStreamTreeTokenType.CUSTOM_RANGE_START,"").replaceAll(core.DataStreamTreeTokenType.CUSTOM_RANGE_END,""):"","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{segmentId,rangeId,rangeType,wholeEntity}=param,textSelectionManagerService=accessor.get(exports.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selection=textSelectionManagerService.getActiveTextRangeWithStyle();if(!selection)return!1;const documentDataModel=univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_DOC);if(!documentDataModel)return!1;const body=documentDataModel.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}};return doMutation.params.actions=jsonX.editOp(textX.serialize()),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.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 doMutation={id:RichTextEditingMutation.id,params:{unitId:params.unitId,actions:[],textRanges:void 0}},jsonX=core.JSONX.getInstance(),textX=deleteCustomRangeTextX(accessor,params);return textX?(doMutation.params.actions=jsonX.editOp(textX.serialize()),doMutation):!1}__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,this.disposeWithMe(this._docSkeletonManagerService.currentViewModel$.subscribe(viewModel=>{if(viewModel){const unitId=viewModel.getDataModel().getUnitId();if(unitId===core.DOCS_NORMAL_EDITOR_UNIT_ID_KEY||unitId===core.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY)return;this.interceptDocumentViewModel(viewModel)}})),this.disposeWithMe(this.intercept(DOC_INTERCEPTOR_POINT.CUSTOM_RANGE,{priority:-1,handler:__name((data,pos,next)=>next(data),"handler")}))}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.DocTableShiftTabCommand=DocTableShiftTabCommand;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.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.getPlainTextFormDocument=getPlainTextFormDocument;exports.getRetainAndDeleteFromReplace=getRetainAndDeleteFromReplace;exports.getRichTextEditPath=getRichTextEditPath;exports.getSelectionText=getSelectionText;exports.getTableColumn=getTableColumn;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,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;