@univerjs/docs 0.2.5 → 0.2.6

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.
@@ -0,0 +1,7 @@
1
+ import { ICommand } from '@univerjs/core';
2
+
3
+ export interface IDocsRenameMutationParams {
4
+ name: string;
5
+ unitId: string;
6
+ }
7
+ export declare const DocsRenameMutation: ICommand;
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(m,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("@univerjs/core"),require("@univerjs/engine-render"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/engine-render","rxjs"],n):(m=typeof globalThis<"u"?globalThis:m||self,n(m.UniverDocs={},m.UniverCore,m.UniverEngineRender,m.rxjs))})(this,function(m,n,N,j){"use strict";var Ln=Object.defineProperty;var Fn=(m,n,N)=>n in m?Ln(m,n,{enumerable:!0,configurable:!0,writable:!0,value:N}):m[n]=N;var U=(m,n,N)=>Fn(m,typeof n!="symbol"?n+"":n,N);var Ae;const se={id:"doc.operation.set-selections",type:n.CommandType.OPERATION,handler:(i,a)=>!0};var Et=Object.defineProperty,At=Object.getOwnPropertyDescriptor,Nt=(i,a,e,t)=>{for(var s=t>1?void 0:t?At(a,e):a,o=i.length-1,r;o>=0;o--)(r=i[o])&&(s=(t?r(a,e,s):r(s))||s);return t&&s&&Et(a,e,s),s},ze=(i,a)=>(e,t)=>a(e,t,i);function $(i){const{startOffset:a,endOffset:e,collapsed:t}=i,s={startOffset:a,endOffset:e,collapsed:t};return typeof i.isActive=="function"&&(s.isActive=i.isActive()),s}m.TextSelectionManagerService=class extends n.RxDisposable{constructor(e,t){super();U(this,"_currentSelection",null);U(this,"_textSelectionInfo",new Map);U(this,"_textSelection$",new j.BehaviorSubject(null));U(this,"textSelection$",this._textSelection$.asObservable());this._textSelectionRenderManager=e,this._commandService=t,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(e){this._currentSelection=e,this._refresh(e)}setCurrentSelectionNotRefresh(e){this._currentSelection=e}getCurrentSelections(){var e;return(e=this._getTextRanges(this._currentSelection))==null?void 0:e.textRanges}getActiveTextRange(){const e=this._getTextRanges(this._currentSelection);if(e==null)return;const{textRanges:t}=e;return t.find(s=>s.isActive())}getActiveRange(){const e=this._getTextRanges(this._currentSelection);if(e==null)return;const{textRanges:t,segmentId:s,style:o,segmentPage:r}=e,d=t.find(I=>I.isActive());if(d==null)return null;const{startOffset:c,endOffset:u,collapsed:l,startNodePosition:f,endNodePosition:g,direction:S}=d;return c==null||u==null?null:{startOffset:c,endOffset:u,collapsed:l,startNodePosition:f,endNodePosition:g,direction:S,segmentId:s,segmentPage:r,style:o}}add(e,t=!0){this._currentSelection!=null&&this._addByParam({...this._currentSelection,textRanges:e,segmentId:"",segmentPage:-1,isEditing:t,style:N.NORMAL_TEXT_SELECTION_PLUGIN_STYLE})}replaceTextRanges(e,t=!0,s){this._currentSelection!=null&&(this._textSelectionRenderManager.removeAllTextRanges(),this._textSelectionRenderManager.addTextRanges(e,t,s))}_syncSelectionFromRenderService(){this._textSelectionRenderManager.textSelectionInner$.pipe(j.takeUntil(this.dispose$)).subscribe(e=>{e!=null&&this._replaceTextRangesWithNoRefresh(e)})}_replaceTextRangesWithNoRefresh(e){if(this._currentSelection==null)return;const t={...this._currentSelection,...e};this._replaceByParam(t),this._textSelection$.next(t);const{unitId:s,subUnitId:o,segmentId:r,style:d,textRanges:c,isEditing:u}=t;this._commandService.executeCommand(se.id,{unitId:s,subUnitId:o,segmentId:r,style:d,isEditing:u,ranges:c.map($)})}_getTextRanges(e){var o;if(e==null)return;const{unitId:t,subUnitId:s=""}=e;return(o=this._textSelectionInfo.get(t))==null?void 0:o.get(s)}_refresh(e){const t=this._getTextRanges(e);this._textSelectionRenderManager.removeAllTextRanges(),t&&Array.isArray(t.textRanges)&&t.textRanges.length&&this._textSelectionRenderManager.addTextRanges(t.textRanges.map($))}_replaceByParam(e){const{unitId:t,subUnitId:s,style:o,segmentId:r,textRanges:d,isEditing:c,segmentPage:u}=e;this._textSelectionInfo.has(t)||this._textSelectionInfo.set(t,new Map),this._textSelectionInfo.get(t).set(s,{textRanges:d,style:o,segmentId:r,isEditing:c,segmentPage:u})}_addByParam(e){const{unitId:t,subUnitId:s,textRanges:o,style:r,segmentId:d,isEditing:c,segmentPage:u}=e;this._textSelectionInfo.has(t)||this._textSelectionInfo.set(t,new Map);const l=this._textSelectionInfo.get(t);l.has(s)?l.get(s).textRanges.push(...o):l.set(s,{textRanges:o,style:r,segmentId:d,isEditing:c,segmentPage:u})}},m.TextSelectionManagerService=Nt([ze(0,N.ITextSelectionRenderManager),ze(1,n.ICommandService)],m.TextSelectionManagerService);var Ut=Object.defineProperty,bt=Object.getOwnPropertyDescriptor,Pt=(i,a,e,t)=>{for(var s=t>1?void 0:t?bt(a,e):a,o=i.length-1,r;o>=0;o--)(r=i[o])&&(s=(t?r(a,e,s):r(s))||s);return t&&s&&Ut(a,e,s),s},Ne=(i,a)=>(e,t)=>a(e,t,i);const He=300;m.DocStateChangeManagerService=class extends n.RxDisposable{constructor(e,t,s){super();U(this,"_docStateChange$",new j.BehaviorSubject(null));U(this,"docStateChange$",this._docStateChange$.asObservable());U(this,"_historyStateCache",new Map);U(this,"_changeStateCache",new Map);U(this,"_historyTimer",null);U(this,"_changeStateCacheTimer",null);this._undoRedoService=e,this._commandService=t,this._univerInstanceService=s,this._initialize()}setChangeState(e){this._cacheChangeState(e,"history"),this._cacheChangeState(e,"collaboration")}_initialize(){this.disposeWithMe(this._commandService.beforeCommandExecuted(e=>{if(e.id===n.UndoCommandId||e.id===n.RedoCommandId){const t=this._univerInstanceService.getCurrentUniverDocInstance();if(t==null)return;const s=t.getUnitId();this._pushHistory(s),this._emitChangeState(s)}}))}_cacheChangeState(e,t="history"){const{trigger:s,unitId:o,noHistory:r,debounce:d=!1}=e;if(r||s==null||t==="history"&&(s===n.RedoCommandId||s===n.UndoCommandId))return;const c=t==="history"?this._historyStateCache:this._changeStateCache,u=t==="history"?this._pushHistory.bind(this):this._emitChangeState.bind(this);if(c.has(o)){const l=c.get(o);l==null||l.push(e)}else c.set(o,[e]);d?t==="history"?(this._historyTimer&&clearTimeout(this._historyTimer),this._historyTimer=setTimeout(()=>{u(o)},He)):(this._changeStateCacheTimer&&clearTimeout(this._changeStateCacheTimer),this._changeStateCacheTimer=setTimeout(()=>{u(o)},He)):u(o)}_pushHistory(e){const t=this._undoRedoService,s=this._historyStateCache.get(e);if(!Array.isArray(s)||s.length===0)return;const o=s.length,r=s[0].commandId,d=s[0],c=s[o-1],u={unitId:e,actions:s.reduce((f,g)=>n.JSONX.compose(f,g.redoState.actions),null),textRanges:c.redoState.textRanges},l={unitId:e,actions:s.reverse().reduce((f,g)=>n.JSONX.compose(f,g.undoState.actions),null),textRanges:d.undoState.textRanges};t.pushUndoRedo({unitID:e,undoMutations:[{id:r,params:l}],redoMutations:[{id:r,params:u}]}),s.length=0}_emitChangeState(e){const t=this._changeStateCache.get(e);if(!Array.isArray(t)||t.length===0)return;const s=t.length,{commandId:o,trigger:r,segmentId:d,noHistory:c,debounce:u}=t[0],l=t[0],f=t[s-1],g={unitId:e,actions:t.reduce((v,p)=>n.JSONX.compose(v,p.redoState.actions),null),textRanges:f.redoState.textRanges},S={unitId:e,actions:t.reverse().reduce((v,p)=>n.JSONX.compose(v,p.undoState.actions),null),textRanges:l.undoState.textRanges},I={commandId:o,unitId:e,trigger:r,redoState:g,undoState:S,segmentId:d,noHistory:c,debounce:u};t.length=0,this._docStateChange$.next(I)}},m.DocStateChangeManagerService=Pt([Ne(0,n.Inject(n.IUndoRedoService)),Ne(1,n.ICommandService),Ne(2,n.IUniverInstanceService)],m.DocStateChangeManagerService);class Y{constructor(){U(this,"_previousActiveRange",null);U(this,"_undoMutationParamsCache",[]);U(this,"_redoMutationParamsCache",[])}clearUndoRedoMutationParamsCache(){this._undoMutationParamsCache=[],this._redoMutationParamsCache=[]}getUndoRedoMutationParamsCache(){return{undoCache:this._undoMutationParamsCache,redoCache:this._redoMutationParamsCache}}setUndoRedoMutationParamsCache({undoCache:a=[],redoCache:e=[]}){this._undoMutationParamsCache=a,this._redoMutationParamsCache=e}getActiveRange(){return this._previousActiveRange}setActiveRange(a){this._previousActiveRange=a}pushUndoRedoMutationParams(a,e){this._undoMutationParamsCache.push(a),this._redoMutationParamsCache.push(e)}fetchComposedUndoRedoMutationParams(){if(this._undoMutationParamsCache.length===0||this._previousActiveRange==null||this._redoMutationParamsCache.length===0)return null;const{unitId:a}=this._undoMutationParamsCache[0],e={unitId:a,actions:this._undoMutationParamsCache.reverse().reduce((s,o)=>n.JSONX.compose(s,o.actions),null),textRanges:[]};return{redoMutationParams:{unitId:a,actions:this._redoMutationParamsCache.reduce((s,o)=>n.JSONX.compose(s,o.actions),null),textRanges:[]},undoMutationParams:e,previousActiveRange:this._previousActiveRange}}dispose(){this._undoMutationParamsCache=[],this._redoMutationParamsCache=[],this._previousActiveRange=null}}var wt=Object.defineProperty,Bt=Object.getOwnPropertyDescriptor,Xt=(i,a,e,t)=>{for(var s=t>1?void 0:t?Bt(a,e):a,o=i.length-1,r;o>=0;o--)(r=i[o])&&(s=(t?r(a,e,s):r(s))||s);return t&&s&&wt(a,e,s),s},Ve=(i,a)=>(e,t)=>a(e,t,i);m.DocSkeletonManagerService=class extends n.RxDisposable{constructor(e,t,s){super();U(this,"_skeleton");U(this,"_docViewModel");U(this,"_currentSkeleton$",new j.BehaviorSubject(null));U(this,"currentSkeleton$",this._currentSkeleton$.asObservable());U(this,"_currentSkeletonBefore$",new j.BehaviorSubject(null));U(this,"currentSkeletonBefore$",this._currentSkeletonBefore$.asObservable());U(this,"_currentViewModel$",new j.BehaviorSubject(null));U(this,"currentViewModel$",this._currentViewModel$.asObservable());this._context=e,this._localeService=t,this._univerInstanceService=s,this._init(),this._univerInstanceService.getCurrentTypeOfUnit$(n.UniverInstanceType.UNIVER_DOC).pipe(j.takeUntil(this.dispose$)).subscribe(o=>{o&&o.getUnitId()===this._context.unitId&&this._update(o)})}dispose(){super.dispose(),this._currentSkeletonBefore$.complete(),this._currentSkeleton$.complete()}getSkeleton(){return this._skeleton}getViewModel(){return this._docViewModel}_init(){const e=this._context.unit;this._update(e)}_update(e){const t=this._context.unitId;if(e.getBody()==null)return;this._docViewModel&&t===n.DOCS_NORMAL_EDITOR_UNIT_ID_KEY?(this._docViewModel.reset(e),this._context.unit=e):this._docViewModel||(this._docViewModel=this._buildDocViewModel(e)),this._skeleton||(this._skeleton=this._buildSkeleton(this._docViewModel));const s=this._skeleton;s.calculate(),this._currentSkeletonBefore$.next(s),this._currentSkeleton$.next(s),this._currentViewModel$.next(this._docViewModel)}_buildSkeleton(e){return N.DocumentSkeleton.create(e,this._localeService)}_buildDocViewModel(e){return new N.DocumentViewModel(e)}},m.DocSkeletonManagerService=Xt([Ve(1,n.Inject(n.LocaleService)),Ve(2,n.IUniverInstanceService)],m.DocSkeletonManagerService);const Je="doc.mutation.rich-text-editing",b={id:Je,type:n.CommandType.MUTATION,handler:(i,a)=>{var D,M;const{unitId:e,segmentId:t="",actions:s,textRanges:o,prevTextRanges:r,trigger:d,noHistory:c,isCompositionEnd:u,noNeedSetTextRange:l,debounce:f}=a,g=i.get(n.IUniverInstanceService),S=i.get(N.IRenderManagerService),I=g.getUniverDocInstance(e),v=(D=S.getRenderById(e))==null?void 0:D.with(m.DocSkeletonManagerService).getViewModel();if(I==null||v==null)throw new Error(`DocumentDataModel or documentViewModel not found for unitId: ${e}`);const p=i.get(m.TextSelectionManagerService),T=((M=p.getCurrentSelections())!=null?M:[]).map($),C=i.get(m.DocStateChangeManagerService),R=i.get(Y),E=!!I.getSnapshot().disabled;if(n.JSONX.isNoop(s)||s&&s.length===0||E)return{unitId:e,actions:[],textRanges:T};const y=n.JSONX.invertWithDoc(s,I.getSnapshot());I.apply(s),v.reset(I),!l&&o&&d!=null&&queueMicrotask(()=>{p.replaceTextRanges(o,!0,a.options)});const O={commandId:Je,unitId:e,segmentId:t,trigger:d,noHistory:c,debounce:f,redoState:{actions:s,textRanges:o},undoState:{actions:y,textRanges:r!=null?r:T}};if(u){const _=R.fetchComposedUndoRedoMutationParams();if(_==null)throw new Error("historyParams is null in RichTextEditingMutation");const{undoMutationParams:x,redoMutationParams:A,previousActiveRange:P}=_;O.redoState.actions=A.actions,O.undoState.actions=x.actions,O.undoState.textRanges=[P]}return C.setChangeState(O),{unitId:e,actions:y,textRanges:T}}};function K(i){return i===n.DataStreamTreeTokenType.CUSTOM_RANGE_END||i===n.DataStreamTreeTokenType.CUSTOM_RANGE_START}function Ue(i,a,e,t){return i<=e&&a>=e||i>=e&&i<=t}function be(i,a,e,t){const s=t.slice(e.startIndex+1,e.endIndex),o=Math.max(i-(e.startIndex+1),0),r=i+a-1-(e.startIndex+1);if(r<0)return!1;if(o===0&&r>=s.length)return!0;const d=s.slice(0,o)+s.slice(o+a);for(let c=0,u=d.length;c<u;c++){const l=d[c];if(!K(l))return!1}return!0}var w=(i=>(i[i.LEFT=0]="LEFT",i[i.RIGHT=1]="RIGHT",i))(w||{});function Z(i){const{startOffset:a,endOffset:e,collapsed:t}=i,s=Math.min(a,e),o=Math.max(a,e);return{startOffset:s,endOffset:o,collapsed:t}}function Pe(i,a){let{startOffset:e,endOffset:t}=Z(i);for(;a.dataStream[e-1]===n.DataStreamTreeTokenType.CUSTOM_RANGE_START;)e-=1;for(;a.dataStream[t]===n.DataStreamTreeTokenType.CUSTOM_RANGE_END;)t+=1;return{startOffset:e,endOffset:t}}function q(i,a,e=w.LEFT){var d;let{startOffset:t,endOffset:s,collapsed:o}=Z(i);if(o)if(e===w.LEFT)for(;K(a.dataStream[t-1]);)s-=1,t-=1;else for(;K(a.dataStream[t]);)s+=1,t+=1;else{const c=Pe(i,a);t=c.startOffset,s=c.endOffset}o=t===s;const r=(d=a.customRanges)==null?void 0:d.filter(c=>!c.wholeEntity||t<=c.startIndex&&s>c.endIndex?!1:we(t,o?s:s-1,c.startIndex,c.endIndex));return r!=null&&r.length&&r.forEach(c=>{t=Math.min(c.startIndex,t),s=Math.max(c.endIndex+1,s)}),{...i,startOffset:t,endOffset:s,collapsed:t===s}}function ie(i,a){let{startOffset:e,endOffset:t,collapsed:s}=Z(i);if(s){for(;a.dataStream[t]===n.DataStreamTreeTokenType.CUSTOM_RANGE_END;)t+=1,e+=1;for(;a.dataStream[t-1]===n.DataStreamTreeTokenType.CUSTOM_RANGE_START;)t-=1,e-=1;return{startOffset:e,endOffset:t,collapsed:s}}else return{...Pe(i,a),collapsed:!1}}function Lt(i,a){if(i.startOffset===i.endOffset)return null;const e=a.customRanges;if(!e)return Z(i);let{startOffset:t,endOffset:s}=Pe(i,a);for(;K(a.dataStream[t]);){if(a.dataStream[t]===n.DataStreamTreeTokenType.CUSTOM_RANGE_START){const o=e.find(r=>r.startIndex===t);if(!o)throw new Error("No custom-range matched");if(o.endIndex===s-1)return{startOffset:t,endOffset:s,collapsed:!1};if(o.endIndex<s-1)break}t+=1}for(;K(a.dataStream[s-1]);){if(a.dataStream[t]===n.DataStreamTreeTokenType.CUSTOM_RANGE_END){const o=e.find(r=>r.endIndex===s-1);if(!o)throw new Error("No custom-range matched");if(o.startIndex===t)return{startOffset:t,endOffset:s,collapsed:!1};if(o.startIndex>t)break}s-=1}return s<=t?null:{startOffset:t,endOffset:s,collapsed:!1}}const Ft=[n.DataStreamTreeTokenType.PARAGRAPH,n.DataStreamTreeTokenType.SECTION_BREAK,n.DataStreamTreeTokenType.TABLE_START,n.DataStreamTreeTokenType.TABLE_ROW_START,n.DataStreamTreeTokenType.TABLE_CELL_START,n.DataStreamTreeTokenType.TABLE_CELL_END,n.DataStreamTreeTokenType.TABLE_ROW_END,n.DataStreamTreeTokenType.TABLE_END,n.DataStreamTreeTokenType.CUSTOM_RANGE_START,n.DataStreamTreeTokenType.CUSTOM_RANGE_END,n.DataStreamTreeTokenType.COLUMN_BREAK,n.DataStreamTreeTokenType.PAGE_BREAK,n.DataStreamTreeTokenType.DOCS_END,n.DataStreamTreeTokenType.TAB,n.DataStreamTreeTokenType.CUSTOM_BLOCK];function kt(i,a,e){const t=i.slice(a,e);return Ft.reduce((s,o)=>s.replaceAll(o,""),t)}function we(i,a,e,t){return Math.max(i,e)<=Math.min(a,t)}function Be(i,a,e="",t=0){var h;const{startOffset:s,endOffset:o}=q(i,a),r=[],{paragraphs:d=[],dataStream:c}=a,u=s-t,l=o-t,f=d==null?void 0:d.find(T=>T.startIndex-t>=u&&T.startIndex-t<l),g=(h=a.customRanges)==null?void 0:h.filter(T=>Ue(T.startIndex,T.endIndex,s,o)),S=new Set(g==null?void 0:g.filter(T=>be(s,o-s,T,c))),I=new Set;if(g==null||g.forEach(T=>{S.has(T)||(T.startIndex-t>=u&&T.startIndex-t<=l&&T.endIndex-t>l&&I.add(T.startIndex),T.endIndex-t>=u&&T.endIndex-t<=l&&T.startIndex<u&&I.add(T.endIndex))}),u>0&&r.push({t:n.TextXActionType.RETAIN,len:u,segmentId:e}),f&&f.startIndex-t>u){const T=f.startIndex-t;I.add(T)}const v=[...I].sort((T,C)=>T-C);let p=u;return v.forEach(T=>{const C=T-p;C>0&&r.push({t:n.TextXActionType.DELETE,len:C,line:0,segmentId:e}),r.push({t:n.TextXActionType.RETAIN,len:1,segmentId:e}),p=T+1}),p<l&&r.push({t:n.TextXActionType.DELETE,len:l-p,line:0,segmentId:e}),r}function Gt(i,a){var S,I;const{unitId:e,body:t}=a,o=i.get(n.IUniverInstanceService).getUnit(e),r=i.get(m.TextSelectionManagerService);if(!o)return!1;const d=o.getBody(),c=(S=a.selection)!=null?S:r.getActiveRange();if(!c||!d)return!1;const u=(I=a.textRanges)!=null?I:[{startOffset:c.startOffset+t.dataStream.length,endOffset:c.startOffset+t.dataStream.length,collapsed:!0}],l={id:b.id,params:{unitId:e,actions:[],textRanges:u,debounce:!0}},f=new n.TextX,g=n.JSONX.getInstance();return f.push(...Be(c,d)),f.push({t:n.TextXActionType.INSERT,body:t,len:t.dataStream.length,line:0}),l.params.actions=g.editOp(f.serialize()),l}var Q=(i=>(i.MAIN="__Document_Render_Main__",i.BACKGROUND="__Document_Render_Background__",i))(Q||{}),We=(i=>(i.VIEW_MAIN="viewMain",i.VIEW_TOP="viewTop",i.VIEW_LEFT="viewLeft",i.VIEW_LEFT_TOP="viewLeftTop",i))(We||{});const jt=0,$t=2,zt=4,Ht=10,Vt="normalTextSelectionPluginName";function Jt(i){const{mainComponent:a,scene:e,engine:t,components:s}=i,o=a,r=s.get(Q.BACKGROUND);return{document:o,docBackground:r,scene:e,engine:t}}function Ye(i,a){const e=i.getCurrentUnitForType(n.UniverInstanceType.UNIVER_DOC);if(!e)return null;const t=e.getUnitId(),s=a.getRenderById(t);if(s==null)return;const{mainComponent:o,scene:r,engine:d,components:c}=s,u=o,l=c.get(Q.BACKGROUND);return{document:u,docBackground:l,scene:r,engine:d}}function Wt(i,a){const e=a.getRenderById(i);if(e==null)return;const{mainComponent:t,scene:s,engine:o,components:r}=e,d=t,c=r.get(Q.BACKGROUND);return{document:d,docBackground:c,scene:s,engine:o}}class oe{constructor(){U(this,"_customRangeHooks",[])}addClipboardHook(a){return this._customRangeHooks.push(a),n.toDisposable(()=>{const e=this._customRangeHooks.indexOf(a);e>-1&&this._customRangeHooks.splice(e,1)})}copyCustomRange(a,e){let t={...e};return this._customRangeHooks.forEach(s=>{s.onCopyCustomRange&&(t=s.onCopyCustomRange(a,t))}),t}}function re(i,a="",e,t){var v;const{startOffset:s,endOffset:o}=i,r=[],d=s-e,c=o-e,u=t.dataStream,l=(v=t.customRanges)==null?void 0:v.filter(p=>Ue(p.startIndex,p.endIndex,s,o)),f=new Set(l==null?void 0:l.filter(p=>be(s,o-s,p,u))),g=new Set;l==null||l.forEach(p=>{f.has(p)||(p.startIndex-e>=d&&p.startIndex-e<=c&&p.endIndex-e>c&&g.add(p.startIndex),p.endIndex-e>=d&&p.endIndex-e<=c&&p.startIndex<d&&g.add(p.endIndex))}),d>0&&r.push({t:n.TextXActionType.RETAIN,len:d,segmentId:a});const S=[...g].sort((p,h)=>p-h);let I=d;return S.forEach(p=>{const h=p-I;h>0&&r.push({t:n.TextXActionType.DELETE,len:h,line:0,segmentId:a}),r.push({t:n.TextXActionType.RETAIN,len:1,segmentId:a}),I=p+1}),I<c&&(r.push({t:n.TextXActionType.DELETE,len:c-I,line:0,segmentId:a}),I=c+1),{dos:r,cursor:I,retain:g.size}}function Ke(i,a){var t;return(t=i.get(N.IRenderManagerService).getRenderById(a))==null?void 0:t.with(m.DocSkeletonManagerService)}function B(i,a=""){if(!a)return["body"];const{headers:e,footers:t}=i.getSnapshot();if(e==null&&t==null)throw new Error("Document data model must have headers or footers when update by segment id");if((e==null?void 0:e[a])!=null)return["headers",a,"body"];if((t==null?void 0:t[a])!=null)return["footers",a,"body"];throw new Error("Segment id not found in headers or footers")}const Ze="doc.command.insert-text",ee={id:Ze,type:n.CommandType.COMMAND,handler:async(i,a)=>{var D;const e=i.get(n.ICommandService),{range:t,segmentId:s,body:o,unitId:r,textRanges:d,cursorOffset:c}=a,u=i.get(m.TextSelectionManagerService),f=i.get(n.IUniverInstanceService).getUnit(r,n.UniverInstanceType.UNIVER_DOC);if(f==null)return!1;const g=u.getActiveRange(),S=f.getSelfOrHeaderFooterModel((D=g==null?void 0:g.segmentId)!=null?D:"").getBody();if(!S)return!1;const I=ie(t,S),{startOffset:v,collapsed:p}=I,h=c!=null?c:o.dataStream.length,T=[{startOffset:v+h,endOffset:v+h,style:g==null?void 0:g.style,collapsed:p}],C={id:b.id,params:{unitId:r,actions:[],textRanges:d!=null?d:T,debounce:!0}},R=new n.TextX,E=n.JSONX.getInstance();if(p)v>0&&R.push({t:n.TextXActionType.RETAIN,len:v,segmentId:s});else{const{dos:M,retain:_}=re(I,s,0,S);R.push(...M),d||(C.params.textRanges=[{startOffset:v+h+_,endOffset:v+h+_,collapsed:p}])}R.push({t:n.TextXActionType.INSERT,body:o,len:o.dataStream.length,line:0,segmentId:s});const y=B(f,s);return C.params.actions=E.editOp(R.serialize(),y),!!e.syncExecuteCommand(C.id,C.params)}},V={id:"doc.command.delete-text",type:n.CommandType.COMMAND,handler:async(i,a)=>{var M;const e=i.get(n.ICommandService),t=i.get(n.IUniverInstanceService),{range:s,segmentId:o,unitId:r,direction:d,len:c=1}=a,u=t.getUnit(r,n.UniverInstanceType.UNIVER_DOC),l=u==null?void 0:u.getSelfOrHeaderFooterModel(o).getBody();if(u==null||l==null)return!1;const{startOffset:f}=s,g=l.dataStream,S=d===w.LEFT?f-c:f,I=S+c-1,v=(M=l.customRanges)==null?void 0:M.filter(_=>Ue(_.startIndex,_.endIndex,S,I)),p=v==null?void 0:v.filter(_=>be(S,c,_,g)),h=[];for(let _=0;_<c;_++)h.push(S+_);p==null||p.forEach(_=>{h.push(_.startIndex,_.endIndex)}),h.sort((_,x)=>_-x);const T=h[0],C={id:b.id,params:{unitId:r,actions:[],textRanges:[{startOffset:T,endOffset:T,collapsed:!0}],debounce:!0}},R=new n.TextX,E=n.JSONX.getInstance();let y=0;for(let _=0;_<h.length;_++){const x=h[_];x-y>0&&R.push({t:n.TextXActionType.RETAIN,len:x-y,segmentId:o}),R.push({t:n.TextXActionType.DELETE,len:1,segmentId:o,line:0}),y=x+1}const O=B(u,o);return C.params.actions=E.editOp(R.serialize(),O),!!e.syncExecuteCommand(C.id,C.params)}},Xe={id:"doc.command.update-text",type:n.CommandType.COMMAND,handler:async(i,a)=>{const{range:e,segmentId:t,updateBody:s,coverType:o,unitId:r,textRanges:d}=a,c=i.get(n.ICommandService),l=i.get(n.IUniverInstanceService).getCurrentUniverDocInstance();if(l==null)return!1;const f={id:b.id,params:{unitId:r,actions:[],textRanges:d}},g=new n.TextX,S=n.JSONX.getInstance(),{startOffset:I,endOffset:v}=e;g.push({t:n.TextXActionType.RETAIN,len:I,segmentId:t}),g.push({t:n.TextXActionType.RETAIN,body:s,len:v-I,segmentId:t,coverType:o});const p=B(l,t);return f.params.actions=S.editOp(g.serialize(),p),!!c.syncExecuteCommand(f.id,f.params)}};function qe(i,a){const e=[];for(let t=0,s=i.length;t<s;t++)i[t]===n.DataStreamTreeTokenType.PARAGRAPH&&e.push({startIndex:t});if(a)for(const t of e)a.bullet&&(t.bullet=n.Tools.deepClone(a.bullet)),a.paragraphStyle&&(t.paragraphStyle=n.Tools.deepClone(a.paragraphStyle));return e}const Qe={id:"doc.command.break-line",type:n.CommandType.COMMAND,handler:async i=>{var I,v;const a=i.get(m.TextSelectionManagerService),e=i.get(n.IUniverInstanceService),t=i.get(n.ICommandService),s=i.get(oe),o=a.getActiveRange();if(o==null)return!1;const{segmentId:r}=o,d=e.getCurrentUniverDocInstance(),c=d==null?void 0:d.getSelfOrHeaderFooterModel(r).getBody();if(!d||!c)return!1;const u=d.getUnitId(),{startOffset:l,endOffset:f}=ie(o,c),S=((I=c.paragraphs)!=null?I:[]).find(p=>p.startIndex>=l);if(S&&S.startIndex>f){const p=n.normalizeBody(n.getBodySlice(c,f,S.startIndex));p.customRanges=(v=p.customRanges)==null?void 0:v.map(C=>s.copyCustomRange(u,C));const h={startOffset:l,endOffset:S.startIndex,collapsed:!1};return n.updateAttributeByInsert(p,{dataStream:n.DataStreamTreeTokenType.PARAGRAPH,paragraphs:qe(n.DataStreamTreeTokenType.PARAGRAPH,S)},1,0),await t.executeCommand(ee.id,{unitId:u,body:p,range:h,segmentId:r,cursorOffset:1})}else return await t.executeCommand(ee.id,{unitId:u,body:{dataStream:n.DataStreamTreeTokenType.PARAGRAPH,paragraphs:qe(n.DataStreamTreeTokenType.PARAGRAPH,S)},range:o,segmentId:r})}},Yt={id:"doc.command.inner-paste",type:n.CommandType.COMMAND,handler:async(i,a)=>{const{segmentId:e,textRanges:t,body:s}=a,o=i.get(n.ICommandService),r=i.get(m.TextSelectionManagerService),d=i.get(n.IUniverInstanceService),c=r.getCurrentSelections();if(!Array.isArray(c)||c.length===0)return!1;const u=d.getCurrentUniverDocInstance(),l=u==null?void 0:u.getSelfOrHeaderFooterModel(e).getBody();if(u==null||l==null)return!1;const f=u.getUnitId(),g={id:b.id,params:{unitId:f,actions:[],textRanges:t}},S=new n.MemoryCursor;S.reset();const I=new n.TextX,v=n.JSONX.getInstance();for(const T of c){const{startOffset:C,endOffset:R,collapsed:E}=T,y=C-S.cursor;if(E)I.push({t:n.TextXActionType.RETAIN,len:y,segmentId:e});else{const{dos:O}=re(T,e,S.cursor,l);I.push(...O)}I.push({t:n.TextXActionType.INSERT,body:s,len:s.dataStream.length,line:0,segmentId:e}),S.reset(),S.moveCursor(R)}const p=B(u,e);return g.params.actions=v.editOp(I.serialize(),p),!!o.syncExecuteCommand(g.id,g.params)}},Le={id:"doc.command.inner-cut",type:n.CommandType.COMMAND,handler:async(i,a)=>{var y,O,D,M;const{segmentId:e,textRanges:t}=a,s=i.get(n.ICommandService),o=i.get(m.TextSelectionManagerService),r=i.get(n.IUniverInstanceService),d=(y=a.selections)!=null?y:o.getCurrentSelections();if(!Array.isArray(d)||d.length===0)return!1;const c=(O=r.getCurrentUniverDocInstance())==null?void 0:O.getUnitId();if(!c)return!1;const u=r.getUniverDocInstance(c),l=n.getDocsUpdateBody(u.getSnapshot(),e);if(u==null||l==null)return!1;const f={id:b.id,params:{unitId:c,actions:[],textRanges:t}},g=new n.MemoryCursor;g.reset();const S=new n.TextX,I=n.JSONX.getInstance(),v=[];for(const _ of d){const{startOffset:x,endOffset:A,collapsed:P}=_;if(x==null||A==null)continue;const k=x-g.cursor;P?S.push({t:n.TextXActionType.RETAIN,len:k,segmentId:e}):S.push(...Be(_,l,e,g.cursor)),g.reset(),g.moveCursor(A)}const p=B(u,e);v.push(I.editOp(S.serialize(),p));const h=Kt(l,d),T=(D=u.getDrawings())!=null?D:{},C=(M=u.getDrawingsOrder())!=null?M:[],R=h.sort((_,x)=>C.indexOf(_)>C.indexOf(x)?-1:C.indexOf(_)<C.indexOf(x)?1:0);if(R.length>0)for(const _ of R){const x=T[_],A=C.indexOf(_);if(x==null||A<0)continue;const P=I.removeOp(["drawings",_],x),k=I.removeOp(["drawingsOrder",A],_);v.push(P),v.push(k)}return f.params.actions=v.reduce((_,x)=>n.JSONX.compose(_,x),null),!!s.syncExecuteCommand(f.id,f.params)}};function Kt(i,a){const e=[],{customBlocks:t=[]}=i;for(const s of a){const{startOffset:o,endOffset:r}=s;if(!(o==null||r==null))for(const d of t){const{startIndex:c}=d;c>=o&&c<r&&e.push(d.blockId)}}return e}const ce={id:"doc.command.delete-custom-block",type:n.CommandType.COMMAND,handler:async(i,a)=>{var x;const e=i.get(m.TextSelectionManagerService),t=i.get(n.IUniverInstanceService),s=i.get(n.ICommandService),o=e.getActiveRange(),r=t.getCurrentUniverDocInstance();if(o==null||r==null)return!1;const{direction:d,range:c,unitId:u,drawingId:l}=a,{startOffset:f,segmentId:g,style:S}=o,I=d===w.LEFT?f-1:f,v=[{startOffset:I,endOffset:I,style:S}],p={id:b.id,params:{unitId:u,actions:[],textRanges:v,prevTextRanges:[c]}},h=new n.TextX,T=n.JSONX.getInstance(),C=[];f>0&&h.push({t:n.TextXActionType.RETAIN,len:d===w.LEFT?f-1:f,segmentId:g}),h.push({t:n.TextXActionType.DELETE,len:1,line:0,segmentId:g});const R=B(r,g);C.push(T.editOp(h.serialize(),R));const E=((x=r.getDrawings())!=null?x:{})[l],O=r.getDrawingsOrder().indexOf(l),D=T.removeOp(["drawings",l],E),M=T.removeOp(["drawingsOrder",O],l);return C.push(D),C.push(M),p.params.actions=C.reduce((A,P)=>n.JSONX.compose(A,P),null),!!s.syncExecuteCommand(p.id,p.params)}},de={id:"doc.command.merge-two-paragraph",type:n.CommandType.COMMAND,handler:async(i,a)=>{var x,A;const e=i.get(m.TextSelectionManagerService),t=i.get(n.IUniverInstanceService),s=i.get(n.ICommandService),{direction:o,range:r}=a,d=e.getActiveRange(),c=e.getCurrentSelections();if(d==null||c==null)return!1;const{segmentId:u,style:l}=d,f=t.getCurrentUniverDocInstance(),g=f==null?void 0:f.getSelfOrHeaderFooterModel(u).getBody();if(!f||!g)return!1;const S=q(d,g),I=f.getUnitId(),{startOffset:v,collapsed:p}=S;if(!p)return!1;const h=o===w.LEFT?v:v+1,T=(A=(x=g.paragraphs)==null?void 0:x.find(P=>P.startIndex>=h))==null?void 0:A.startIndex,C=Zt(i,I,g,h,T),R=o===w.LEFT?v-1:v,E=[{startOffset:R,endOffset:R,style:l}],y={id:b.id,params:{unitId:I,actions:[],textRanges:E,prevTextRanges:[r]}},O=new n.TextX,D=n.JSONX.getInstance();O.push({t:n.TextXActionType.RETAIN,len:o===w.LEFT?v-1:v,segmentId:u}),C.dataStream.length&&O.push({t:n.TextXActionType.INSERT,body:C,len:C.dataStream.length,line:0,segmentId:u}),O.push({t:n.TextXActionType.RETAIN,len:1,segmentId:u}),O.push({t:n.TextXActionType.DELETE,len:T+1-h,line:0,segmentId:u});const M=B(f,u);return y.params.actions=D.editOp(O.serialize(),M),!!s.syncExecuteCommand(y.id,y.params)}},et={id:"doc.command.delete-left",type:n.CommandType.COMMAND,handler:async i=>{var D,M;const a=i.get(m.TextSelectionManagerService),e=i.get(n.IUniverInstanceService),t=i.get(n.ICommandService);let s=!0;const o=e.getCurrentUniverDocInstance();if(!o)return!1;const r=o.getUnitId(),d=Ke(i,r),c=a.getActiveRange(),u=a.getCurrentSelections(),l=d==null?void 0:d.getSkeleton();if(c==null||l==null||u==null)return!1;const{segmentId:f,style:g,segmentPage:S}=c,I=o.getSelfOrHeaderFooterModel(f).getBody();if(I==null)return!1;const v=q(c,I),{startOffset:p,collapsed:h}=v,T=l.findNodeByCharIndex(p,f,S),C=N.hasListGlyph(T),R=N.isIndentByGlyph(T,I);let E=p;const y=l.findNodeByCharIndex(p-1,f,S);if(N.isFirstGlyph(T)&&y!==T&&(C===!0||R===!0)&&h){const _=N.getParagraphByGlyph(T,I);if(_==null)return!1;const x=_==null?void 0:_.startIndex,A={startIndex:0},P=_.paragraphStyle;if(C===!0){const F=_.paragraphStyle;if(F){A.paragraphStyle=F;const{hanging:ae}=F;ae&&(A.paragraphStyle.indentStart=ae,A.paragraphStyle.hanging=void 0)}}else if(R===!0){const F=_.bullet;F&&(A.bullet=F),P!=null&&(A.paragraphStyle={...P},delete A.paragraphStyle.hanging,delete A.paragraphStyle.indentStart)}const k=[{startOffset:E,endOffset:E,style:g}];s=await t.executeCommand(Xe.id,{unitId:o.getUnitId(),updateBody:{dataStream:"",paragraphs:[{...A}]},range:{startOffset:x,endOffset:x+1},textRanges:k,coverType:n.UpdateDocsAttributeType.REPLACE,segmentId:f})}else if(h===!0){if(y==null)return!0;if(y.content==="\r")s=await t.executeCommand(de.id,{direction:w.LEFT,range:v});else if(y.streamType==="\b"){const _=(M=o.getSnapshot().drawings)==null?void 0:M[(D=y.drawingId)!=null?D:""];if(_==null)return!0;if(_.layoutType===n.PositionedObjectLayoutType.INLINE){const A=o.getUnitId();s=await t.executeCommand(ce.id,{direction:w.LEFT,range:c,unitId:A,drawingId:y.drawingId})}else{const A=l.findNodeByCharIndex(p-2);if(A==null)return!0;E-=y.count,E-=A.count;const P=[{startOffset:E,endOffset:E,style:g}];s=await t.executeCommand(V.id,{unitId:o.getUnitId(),range:{...c,startOffset:c.startOffset-1,endOffset:c.endOffset-1},segmentId:f,direction:w.LEFT,len:A.count,textRanges:P})}}else E-=y.count,s=await t.executeCommand(V.id,{unitId:o.getUnitId(),range:v,segmentId:f,direction:w.LEFT,len:y.count})}else{const _=nt(v,[v]);s=await t.executeCommand(Le.id,{segmentId:f,textRanges:_,selections:[v]})}return s}},tt={id:"doc.command.delete-right",type:n.CommandType.COMMAND,handler:async i=>{var T,C;const a=i.get(m.TextSelectionManagerService),t=i.get(n.IUniverInstanceService).getCurrentUniverDocInstance();if(!t)return!1;const s=Ke(i,t.getUnitId()),o=i.get(n.ICommandService),r=a.getActiveRange(),d=a.getCurrentSelections(),c=s==null?void 0:s.getSkeleton();if(r==null||c==null||d==null)return!1;const{segmentId:u,style:l,segmentPage:f}=r,g=t==null?void 0:t.getSelfOrHeaderFooterModel(u).getBody();if(!t||!g)return!1;const S=q(r,g,w.RIGHT),{startOffset:I,endOffset:v,collapsed:p}=S;if(I===g.dataStream.length-2&&p)return!0;let h=!1;if(p===!0){const R=c.findNodeByCharIndex(I,u,f),E=c.findNodeByCharIndex(I+1);if(R.content==="\r")h=await o.executeCommand(de.id,{direction:w.RIGHT,range:r});else if(R.streamType==="\b"){const y=(C=t.getSnapshot().drawings)==null?void 0:C[(T=R.drawingId)!=null?T:""];if(y==null)return!0;if(y.layoutType===n.PositionedObjectLayoutType.INLINE){const D=t.getUnitId();h=await o.executeCommand(ce.id,{direction:w.RIGHT,range:r,unitId:D,drawingId:R.drawingId})}else{if(E==null)return!0;const D=[{startOffset:I+1,endOffset:I+1,style:l}];h=await o.executeCommand(V.id,{unitId:t.getUnitId(),range:{...r,startOffset:I+1,endOffset:v+1},segmentId:u,direction:w.RIGHT,textRanges:D,len:E.count})}}else{const y=[{startOffset:I,endOffset:I,style:l}];h=await o.executeCommand(V.id,{unitId:t.getUnitId(),range:S,segmentId:u,direction:w.RIGHT,textRanges:y,len:R.count})}}else{const R=nt(S,[S]);h=await o.executeCommand(Le.id,{segmentId:u,textRanges:R,selections:[S]})}return h}};function Zt(i,a,e,t,s){const{textRuns:o=[],customBlocks:r=[]}=e,d=e.dataStream.substring(t,s),c=i.get(oe),u={dataStream:d,customRanges:n.getCustomRangeSlice(e,t,s).customRanges.map(g=>c.copyCustomRange(a,g)),customDecorations:n.getCustomDecorationSlice(e,t,s)},l=[];for(const g of o){const{st:S,ed:I}=g;I<=t||S>=s||(S<t?l.push({...g,st:0,ed:I-t}):I>s?l.push({...g,st:S-t,ed:s-t}):l.push({...g,st:S-t,ed:I-t}))}l.length>0&&(u.textRuns=l);const f=[];for(const g of r){const{startIndex:S}=g;S>=t&&S<=s&&f.push({...g,startIndex:S-t})}return f.length>0&&(u.customBlocks=f),u}function nt(i,a){let e=i.endOffset;for(const s of a){const{startOffset:o,endOffset:r}=s;o==null||r==null||r<=i.endOffset&&(e-=r-o)}return[{startOffset:e,endOffset:e,style:i.style}]}const Fe={id:"doc.command.ime-input",type:n.CommandType.COMMAND,handler:async(i,a)=>{const{unitId:e,newText:t,oldTextLen:s,isCompositionEnd:o,isCompositionStart:r}=a,d=i.get(n.ICommandService),c=i.get(Y),l=i.get(n.IUniverInstanceService).getCurrentUniverDocInstance();if(l==null)return!1;const f=c.getActiveRange();if(!f)return!1;const{startOffset:g,style:S,segmentId:I}=f,v=l.getSelfOrHeaderFooterModel(I).getBody();if(v==null)return!1;const p=ie(f,v);Object.assign(f,p);const h=t.length,T=[{startOffset:g+h,endOffset:g+h,collapsed:!0,style:S}],C={id:b.id,params:{unitId:e,actions:[],textRanges:T}},R=new n.TextX,E=n.JSONX.getInstance();if(!f.collapsed&&r){const{dos:D,retain:M,cursor:_}=re(f,I,0,v);R.push(...D),C.params.textRanges=[{startOffset:g+h+M,endOffset:g+h+M,collapsed:!0}]}else R.push({t:n.TextXActionType.RETAIN,len:g,segmentId:I});s>0&&R.push({t:n.TextXActionType.DELETE,len:s,line:0,segmentId:I}),R.push({t:n.TextXActionType.INSERT,body:{dataStream:t},len:t.length,line:0,segmentId:I});const y=B(l,I);C.params.actions=E.editOp(R.serialize(),y),C.params.noHistory=!o,C.params.isCompositionEnd=o;const O=d.syncExecuteCommand(C.id,C.params);return c.pushUndoRedoMutationParams(O,C.params),!!O}};function X(i,a,e,t){var o;const{segmentId:s}=(o=e.getActiveRange())!=null?o:{};return s==null?!1:t.executeCommand(ke.id,{segmentId:s,preCommandId:i,...a!=null?a:{}})}const at="doc.command.set-inline-format-bold",le={id:at,type:n.CommandType.COMMAND,handler:async(i,a)=>{const e=i.get(n.ICommandService),t=i.get(m.TextSelectionManagerService);return X(at,a,t,e)}},st="doc.command.set-inline-format-italic",ue={id:st,type:n.CommandType.COMMAND,handler:async(i,a)=>{const e=i.get(n.ICommandService),t=i.get(m.TextSelectionManagerService);return X(st,a,t,e)}},it="doc.command.set-inline-format-underline",me={id:it,type:n.CommandType.COMMAND,handler:async(i,a)=>{const e=i.get(n.ICommandService),t=i.get(m.TextSelectionManagerService);return X(it,a,t,e)}},ot="doc.command.set-inline-format-strikethrough",ge={id:ot,type:n.CommandType.COMMAND,handler:async(i,a)=>{const e=i.get(n.ICommandService),t=i.get(m.TextSelectionManagerService);return X(ot,a,t,e)}},rt="doc.command.set-inline-format-subscript",J={id:rt,type:n.CommandType.COMMAND,handler:async(i,a)=>{const e=i.get(n.ICommandService),t=i.get(m.TextSelectionManagerService);return X(rt,a,t,e)}},ct="doc.command.set-inline-format-superscript",fe={id:ct,type:n.CommandType.COMMAND,handler:async(i,a)=>{const e=i.get(n.ICommandService),t=i.get(m.TextSelectionManagerService);return X(ct,a,t,e)}},dt="doc.command.set-inline-format-fontsize",Se={id:dt,type:n.CommandType.COMMAND,handler:async(i,a)=>{const e=i.get(n.ICommandService),t=i.get(m.TextSelectionManagerService);return X(dt,a,t,e)}},lt="doc.command.set-inline-format-font-family",Ie={id:lt,type:n.CommandType.COMMAND,handler:async(i,a)=>{const e=i.get(n.ICommandService),t=i.get(m.TextSelectionManagerService);return X(lt,a,t,e)}},ut="doc.command.set-inline-format-text-color",he={id:ut,type:n.CommandType.COMMAND,handler:async(i,a)=>{const e=i.get(n.ICommandService),t=i.get(m.TextSelectionManagerService);return X(ut,a,t,e)}},mt="doc.command.set-inline-format-text-background-color",pe={id:mt,type:n.CommandType.COMMAND,handler:async(i,a)=>{const e=i.get(n.ICommandService),t=i.get(m.TextSelectionManagerService);return X(mt,a,t,e)}},gt="doc.command.reset-inline-format-text-background-color",Te={id:gt,type:n.CommandType.COMMAND,handler:async(i,a)=>{const e=i.get(n.ICommandService),t=i.get(m.TextSelectionManagerService);return X(gt,a,t,e)}},ft={[le.id]:"bl",[ue.id]:"it",[me.id]:"ul",[ge.id]:"st",[Se.id]:"fs",[Ie.id]:"ff",[he.id]:"cl",[pe.id]:"bg",[Te.id]:"bg",[J.id]:"va",[fe.id]:"va"},ke={id:"doc.command.set-inline-format",type:n.CommandType.COMMAND,handler:async(i,a)=>{const{segmentId:e,value:t,preCommandId:s}=a,o=i.get(n.ICommandService),r=i.get(m.TextSelectionManagerService),d=i.get(n.IUniverInstanceService),c=r.getCurrentSelections();if(!Array.isArray(c)||c.length===0)return!1;const u=d.getCurrentUniverDocInstance();if(u==null)return!1;const l=u.getUnitId();let f;switch(s){case le.id:case ue.id:case me.id:case ge.id:case J.id:case fe.id:{f=Qt(u.getSelfOrHeaderFooterModel(e).getBody().textRuns,s,c);break}case Se.id:case Ie.id:{f=t;break}case he.id:case pe.id:{f={rgb:t};break}case Te.id:{f={rgb:null};break}default:throw new Error(`Unknown command: ${s} in handleInlineFormat`)}const g={id:b.id,params:{unitId:l,actions:[],textRanges:c.map($)}},S=new n.TextX,I=n.JSONX.getInstance(),v=new n.MemoryCursor;v.reset();for(const T of c){const{startOffset:C,endOffset:R}=T,E={dataStream:"",textRuns:[{st:0,ed:R-C,ts:{[ft[s]]:f}}]},y=C-v.cursor;y!==0&&S.push({t:n.TextXActionType.RETAIN,len:y,segmentId:e}),S.push({t:n.TextXActionType.RETAIN,body:E,len:R-C,segmentId:e}),v.reset(),v.moveCursor(R)}const p=B(u,e);return g.params.actions=I.editOp(S.serialize(),p),!!o.syncExecuteCommand(g.id,g.params)}};function qt(i){return i!==null&&typeof i=="object"}function Qt(i,a,e){let t=0,s=0;const o=ft[a];for(;t!==i.length&&s!==e.length;){const{startOffset:r,endOffset:d}=e[s],{st:c,ed:u,ts:l}=i[t];if(d<=c)s++;else if(u<=r)t++;else{if(/bl|it/.test(o))return(l==null?void 0:l[o])===n.BooleanNumber.TRUE?n.BooleanNumber.FALSE:n.BooleanNumber.TRUE;if(/ul|st/.test(o))return qt(l==null?void 0:l[o])&&(l==null?void 0:l[o]).s===n.BooleanNumber.TRUE?{s:n.BooleanNumber.FALSE}:{s:n.BooleanNumber.TRUE};if(/va/.test(o))return a===J.id?(l==null?void 0:l[o])===n.BaselineOffset.SUBSCRIPT?n.BaselineOffset.NORMAL:n.BaselineOffset.SUBSCRIPT:(l==null?void 0:l[o])===n.BaselineOffset.SUPERSCRIPT?n.BaselineOffset.NORMAL:n.BaselineOffset.SUPERSCRIPT;t++}}return/bl|it/.test(o)?n.BooleanNumber.TRUE:/ul|st/.test(o)?{s:n.BooleanNumber.TRUE}:a===J.id?n.BaselineOffset.SUBSCRIPT:n.BaselineOffset.SUPERSCRIPT}const ve={id:"doc.command.list-operation",type:n.CommandType.COMMAND,handler:(i,a)=>{var x,A,P,k,F,ae;const e=i.get(m.TextSelectionManagerService),t=i.get(n.IUniverInstanceService),s=i.get(n.ICommandService),{listType:o}=a,r=t.getCurrentUniverDocInstance(),d=e.getActiveRange();if(r==null||d==null)return!1;const{segmentId:c}=d,u=(x=e.getCurrentSelections())!=null?x:[],l=(A=r.getSelfOrHeaderFooterModel(c).getBody())==null?void 0:A.paragraphs,f=u.map($);if(l==null)return!1;const g=(k=(P=r.getSelfOrHeaderFooterModel(c).getBody())==null?void 0:P.sectionBreaks)!=null?k:[],S=ht(d,l),I=r.getUnitId(),v=S.every(z=>{var L;return((L=z.bullet)==null?void 0:L.listType)===o});let h=n.Tools.generateRandomId(6);if(S.length===1){const z=l.indexOf(S[0]),L=l[z-1],G=l[z+1];L&&L.bullet&&L.bullet.listType===o?h=L.bullet.listId:G&&G.bullet&&G.bullet.listType===o&&(h=G.bullet.listId)}const T={id:b.id,params:{unitId:I,actions:[],textRanges:f}},C=new n.MemoryCursor;C.reset();const R=new n.TextX,E=n.JSONX.getInstance(),y=(F=r.getSnapshot().lists)!=null?F:{},O={...n.PRESET_LIST_TYPE,...y},{defaultTabStop:D=36}=r.getSnapshot().documentStyle;for(const z of S){const{startIndex:L,paragraphStyle:G={}}=z,{indentFirstLine:Pn,snapToGrid:wn,indentStart:je}=G,{hanging:$e,indentStart:Dt}=O[o].nestingLevel[0],{charSpace:Bn,gridType:Xn}=en(L,g)||{charSpace:0,gridType:n.GridType.LINES},H=N.getCharSpaceApply(Bn,D,Xn,wn);R.push({t:n.TextXActionType.RETAIN,len:L-C.cursor,segmentId:c}),R.push({t:n.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[v?{paragraphStyle:{...G,hanging:void 0,indentStart:je?{v:Math.max(0,N.getNumberUnitValue(je,H)+N.getNumberUnitValue($e,H)-N.getNumberUnitValue(Dt,H))}:void 0},startIndex:0}:{startIndex:0,paragraphStyle:{...G,indentFirstLine:void 0,hanging:$e,indentStart:{v:N.getNumberUnitValue(Dt,H)-N.getNumberUnitValue($e,H)+N.getNumberUnitValue(Pn,H)+N.getNumberUnitValue(je,H)}},bullet:{...(ae=z.bullet)!=null?ae:{nestingLevel:0,textStyle:{fs:20}},listType:o,listId:h}}]},segmentId:c,coverType:n.UpdateDocsAttributeType.REPLACE}),C.moveCursorTo(L+1)}const M=B(r,c);return T.params.actions=E.editOp(R.serialize(),M),!!s.syncExecuteCommand(T.id,T.params)}},St={id:"doc.command.bullet-list",type:n.CommandType.COMMAND,handler:i=>i.get(n.ICommandService).syncExecuteCommand(ve.id,{listType:n.PresetListType.BULLET_LIST})},It={id:"doc.command.order-list",type:n.CommandType.COMMAND,handler:i=>i.get(n.ICommandService).syncExecuteCommand(ve.id,{listType:n.PresetListType.ORDER_LIST})};function ht(i,a){const{startOffset:e,endOffset:t}=i,s=[];let o=-1;for(const r of a){const{startIndex:d}=r;(e>o&&e<=d||t>o&&t<=d||d>=e&&d<=t)&&s.push(r),o=d}return s}function en(i,a){const e=a.sort(n.sortRulesFactory("startIndex"));for(let t=0;t<e.length;t++){const s=a[t];if(s.startIndex>=i)return s}}const pt={id:"doc.command-replace-content",type:n.CommandType.COMMAND,handler:async(i,a)=>{const{unitId:e,body:t,textRanges:s,segmentId:o="",options:r}=a,d=i.get(n.IUniverInstanceService),c=i.get(n.ICommandService),u=i.get(m.TextSelectionManagerService),l=d.getUniverDocInstance(e),f=l==null?void 0:l.getSnapshot().body,g=u.getCurrentSelections();if(l==null||f==null||!Array.isArray(g)||g.length===0)return!1;const S=vt(e,o,l,f,t);return S.params.textRanges=s,r&&(S.params.options=r),!!c.syncExecuteCommand(S.id,S.params)}},Tt={id:"doc.command-cover-content",type:n.CommandType.COMMAND,handler:async(i,a)=>{const{unitId:e,body:t,segmentId:s=""}=a,o=i.get(n.IUniverInstanceService),r=i.get(n.ICommandService),d=i.get(n.IUndoRedoService),c=o.getUniverDocInstance(e),u=c==null?void 0:c.getSnapshot().body;if(c==null||u==null)return!1;const l=vt(e,s,c,u,t);return l.params.noNeedSetTextRange=!0,l.params.noHistory=!0,r.syncExecuteCommand(l.id,l.params),d.clearUndoRedo(e),!0}};function vt(i,a,e,t,s){const o={id:b.id,params:{unitId:i,actions:[],textRanges:[]}},r=new n.TextX,d=n.JSONX.getInstance(),c=(t==null?void 0:t.dataStream.length)-2;c>0&&r.push({t:n.TextXActionType.DELETE,len:c,line:0,segmentId:a}),s.dataStream.length>0&&r.push({t:n.TextXActionType.INSERT,body:s,len:s.dataStream.length,line:0,segmentId:a});const u=B(e,a);return o.params.actions=d.editOp(r.serialize(),u),o}n.CommandType.COMMAND;const tn=(i,a)=>{const e=i.get(n.IUniverInstanceService).getUniverDocInstance(a.unitId),t=(e==null?void 0:e.zoomRatio)||1;return{...n.Tools.deepClone(a),zoomRatio:t}},te={id:"doc.operation.set-zoom-ratio",type:n.CommandType.OPERATION,handler:(i,a)=>{const e=i.get(n.IUniverInstanceService).getUniverDocInstance(a.unitId);if(!e)return!1;const t=e.getSnapshot();return t.settings==null?t.settings={zoomRatio:a.zoomRatio}:t.settings.zoomRatio=a.zoomRatio,!0}},Ct={type:n.CommandType.COMMAND,id:"doc.command.set-zoom-ratio",handler:async(i,a)=>{var f,g,S;const e=i.get(n.ICommandService),t=i.get(n.IUndoRedoService),s=i.get(n.IUniverInstanceService);let o=(f=s.getCurrentUniverDocInstance())==null?void 0:f.getUnitId();if(!o)return!1;let r=1;if(a&&(o=(g=a.documentId)!=null?g:o,r=(S=a.zoomRatio)!=null?S:r),!s.getUniverDocInstance(o))return!1;const c={zoomRatio:r,unitId:o},u=tn(i,c);return e.syncExecuteCommand(te.id,c)?(t.pushUndoRedo({unitID:o,undoMutations:[{id:te.id,params:u}],redoMutations:[{id:te.id,params:c}]}),!0):!1}},Ce={id:"doc.operation.move-cursor",type:n.CommandType.OPERATION,handler:(i,a)=>!!a},ye={id:"doc.operation.move-selection",type:n.CommandType.OPERATION,handler:(i,a)=>!!a},yt={id:"doc.operation.select-all",type:n.CommandType.COMMAND,handler:async i=>{const a=i.get(n.IUniverInstanceService),e=i.get(m.TextSelectionManagerService),t=a.getCurrentUniverDocInstance(),s=e.getActiveRange();if(t==null||s==null)return!1;const{segmentId:o}=s,r=t.getSelfOrHeaderFooterModel(o).getSnapshot().body;if(r==null)return!1;const d=[{startOffset:0,endOffset:r.dataStream.length-2}];return e.replaceTextRanges(d,!1),!0}};var nn=Object.defineProperty,an=Object.getOwnPropertyDescriptor,sn=(i,a,e,t)=>{for(var s=t>1?void 0:t?an(a,e):a,o=i.length-1,r;o>=0;o--)(r=i[o])&&(s=(t?r(a,e,s):r(s))||s);return t&&s&&nn(a,e,s),s},ne=(i,a)=>(e,t)=>a(e,t,i);let _e=class extends n.Disposable{constructor(a,e,t,s,o){super();U(this,"_previousIMEContent","");U(this,"_isCompositionStart",!0);U(this,"_onStartSubscription");U(this,"_onUpdateSubscription");U(this,"_onEndSubscription");this._univerInstanceService=a,this._renderManagerSrv=e,this._textSelectionRenderManager=t,this._imeInputManagerService=s,this._commandService=o,this._initialize()}dispose(){var a,e,t;(a=this._onStartSubscription)==null||a.unsubscribe(),(e=this._onUpdateSubscription)==null||e.unsubscribe(),(t=this._onEndSubscription)==null||t.unsubscribe()}_initialize(){this._initialOnCompositionstart(),this._initialOnCompositionUpdate(),this._initialOnCompositionend()}_initialOnCompositionstart(){this._onStartSubscription=this._textSelectionRenderManager.onCompositionstart$.subscribe(a=>{if(a==null)return;this._resetIME();const{activeRange:e}=a;e!=null&&this._imeInputManagerService.setActiveRange(n.Tools.deepClone(e))})}_initialOnCompositionUpdate(){this._onUpdateSubscription=this._textSelectionRenderManager.onCompositionupdate$.subscribe(async a=>{this._updateContent(a,!0)})}_initialOnCompositionend(){this._onEndSubscription=this._textSelectionRenderManager.onCompositionend$.subscribe(a=>{this._updateContent(a,!1)})}async _updateContent(a,e){var u;if(a==null)return;const t=this._univerInstanceService.getCurrentUniverDocInstance();if(!t)return;const s=(u=this._renderManagerSrv.getRenderById(t.getUnitId()))==null?void 0:u.with(m.DocSkeletonManagerService).getSkeleton(),{event:o,activeRange:r}=a;if(s==null||r==null)return;const c=o.data;c===this._previousIMEContent&&e||(await this._commandService.executeCommand(Fe.id,{unitId:t.getUnitId(),newText:c,oldTextLen:this._previousIMEContent.length,isCompositionStart:this._isCompositionStart,isCompositionEnd:!e}),e?(this._isCompositionStart&&(this._isCompositionStart=!1),this._previousIMEContent=c):this._resetIME())}_resetIME(){this._previousIMEContent="",this._isCompositionStart=!0,this._imeInputManagerService.clearUndoRedoMutationParamsCache(),this._imeInputManagerService.setActiveRange(null)}};_e=sn([n.OnLifecycle(n.LifecycleStages.Rendered,_e),ne(0,n.IUniverInstanceService),ne(1,N.IRenderManagerService),ne(2,N.ITextSelectionRenderManager),ne(3,n.Inject(Y)),ne(4,n.ICommandService)],_e);var on=Object.defineProperty,rn=Object.getOwnPropertyDescriptor,cn=(i,a,e,t)=>{for(var s=t>1?void 0:t?rn(a,e):a,o=i.length-1,r;o>=0;o--)(r=i[o])&&(s=(t?r(a,e,s):r(s))||s);return t&&s&&on(a,e,s),s},Oe=(i,a)=>(e,t)=>a(e,t,i);let Re=class extends n.Disposable{constructor(a,e,t,s){super();U(this,"_onInputSubscription");this._univerInstanceService=a,this._renderManagerService=e,this._textSelectionManagerService=t,this._commandService=s,this._commandExecutedListener()}dispose(){var a;super.dispose(),(a=this._onInputSubscription)==null||a.unsubscribe()}_commandExecutedListener(){const a=[Ce.id,ye.id];this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(!a.includes(e.id))return;const t=e.params;switch(e.id){case Ce.id:return this._handleMoveCursor(t.direction);case ye.id:return this._handleShiftMoveSelection(t.direction);default:throw new Error("Unknown command")}}))}_handleShiftMoveSelection(a){var C,R,E;const e=this._textSelectionManagerService.getActiveRange(),t=this._textSelectionManagerService.getCurrentSelections(),s=this._univerInstanceService.getCurrentUniverDocInstance();if(!s)return;const o=(C=this._renderManagerService.getRenderById(s.getUnitId()))==null?void 0:C.with(m.DocSkeletonManagerService).getSkeleton(),r=this._getDocObject();if(e==null||o==null||r==null)return;const{startOffset:d,endOffset:c,style:u,collapsed:l,direction:f,segmentId:g,startNodePosition:S,endNodePosition:I,segmentPage:v}=e;if(t.length>1){let y=Number.POSITIVE_INFINITY,O=Number.NEGATIVE_INFINITY;for(const D of t)y=Math.min(y,D.startOffset),O=Math.max(O,D.endOffset);this._textSelectionManagerService.replaceTextRanges([{startOffset:a===n.Direction.LEFT||a===n.Direction.UP?O:y,endOffset:a===n.Direction.LEFT||a===n.Direction.UP?y:O,style:u}],!1);return}const p=l||f===N.RANGE_DIRECTION.FORWARD?d:c;let h=l||f===N.RANGE_DIRECTION.FORWARD?c:d;const T=(R=s.getSelfOrHeaderFooterModel(g).getBody().dataStream.length)!=null?R:Number.POSITIVE_INFINITY;if(a===n.Direction.LEFT||a===n.Direction.RIGHT){const y=o.findNodeByCharIndex(h-1,g,v),O=o.findNodeByCharIndex(h,g,v);h=a===n.Direction.RIGHT?h+O.count:h-((E=y==null?void 0:y.count)!=null?E:0),h=Math.min(T-2,Math.max(0,h)),this._textSelectionManagerService.replaceTextRanges([{startOffset:p,endOffset:h,style:u}],!1)}else{const y=o.findNodeByCharIndex(h,g,v),O=r.document.getOffsetConfig(),D=l?S:f===N.RANGE_DIRECTION.FORWARD?I:S,M=this._getTopOrBottomPosition(o,y,D,a===n.Direction.DOWN);if(M==null){const x=a===n.Direction.UP?0:T-2;if(x===h)return;this._textSelectionManagerService.replaceTextRanges([{startOffset:p,endOffset:x,style:u}],!1);return}const _=new N.NodePositionConvertToCursor(O,o).getRangePointData(M,M).cursorList[0];this._textSelectionManagerService.replaceTextRanges([{startOffset:p,endOffset:_.endOffset,style:u}],!1)}}_handleMoveCursor(a){var T,C,R,E;const e=this._textSelectionManagerService.getActiveRange(),t=this._textSelectionManagerService.getCurrentSelections(),s=this._univerInstanceService.getCurrentUniverDocInstance();if(!s)return!1;const o=(T=this._renderManagerService.getRenderById(s.getUnitId()))==null?void 0:T.with(m.DocSkeletonManagerService).getSkeleton(),r=this._getDocObject(),d=s.getBody();if(e==null||o==null||r==null||t==null||d==null)return;const{startOffset:c,endOffset:u,style:l,collapsed:f,segmentId:g,startNodePosition:S,endNodePosition:I,segmentPage:v}=e,p=(C=s.getSelfOrHeaderFooterModel(g).getBody().dataStream.length)!=null?C:Number.POSITIVE_INFINITY,h=(R=s.getCustomRanges())!=null?R:[];if(a===n.Direction.LEFT||a===n.Direction.RIGHT){let y;if(!e.collapsed||t.length>1){let M=Number.POSITIVE_INFINITY,_=Number.NEGATIVE_INFINITY;for(const x of t)M=Math.min(M,x.startOffset),_=Math.max(_,x.endOffset);y=a===n.Direction.LEFT?M:_}else{const M=o.findNodeByCharIndex(c-1,g,v),_=o.findNodeByCharIndex(c,g,v);a===n.Direction.LEFT?y=Math.max(0,c-((E=M==null?void 0:M.count)!=null?E:0)):y=Math.min(p-2,u+_.count)}const O=[n.DataStreamTreeTokenType.CUSTOM_RANGE_START,n.DataStreamTreeTokenType.CUSTOM_RANGE_END];if(a===n.Direction.LEFT)for(;O.includes(d.dataStream[y]);)y--;else for(;O.includes(d.dataStream[y-1]);)y++;h.filter(M=>M.wholeEntity&&M.startIndex<y&&M.endIndex>=y).forEach(M=>{a===n.Direction.LEFT?y=Math.min(M.startIndex,y):y=Math.max(M.endIndex+1,y)}),this._textSelectionManagerService.replaceTextRanges([{startOffset:y,endOffset:y,style:l}],!1)}else{const y=o.findNodeByCharIndex(c,g,v),O=o.findNodeByCharIndex(u,g,v),D=r.document.getOffsetConfig(),M=this._getTopOrBottomPosition(o,a===n.Direction.UP||f?y:O,a===n.Direction.UP||f?S:I,a===n.Direction.DOWN);if(M==null){let x;f?x=a===n.Direction.UP?0:p-2:x=a===n.Direction.UP?c:u,this._textSelectionManagerService.replaceTextRanges([{startOffset:x,endOffset:x,style:l}],!1);return}const _=new N.NodePositionConvertToCursor(D,o).getRangePointData(M,M).cursorList[0];this._textSelectionManagerService.replaceTextRanges([{..._,style:l}],!1)}}_getTopOrBottomPosition(a,e,t,s){if(e==null||t==null)return;const o=this._getGlyphLeftOffsetInLine(e),r=this._getNextOrPrevLine(e,s);if(r==null)return;const d=this._matchPositionByLeftOffset(a,r,o,t);if(d!=null)return{...d,isBack:!0}}_getGlyphLeftOffsetInLine(a){const e=a.parent;if(e==null)return Number.NEGATIVE_INFINITY;const t=e.left,{left:s}=a;return t+s}_matchPositionByLeftOffset(a,e,t,s){const o={distance:Number.POSITIVE_INFINITY};for(const d of e.divides){const c=d.left;for(const u of d.glyphGroup){const{left:l}=u,f=c+l,g=Math.abs(t-f);g<o.distance&&(o.glyph=u,o.distance=g)}}if(o.glyph==null)return;const{segmentPage:r}=s;return a.findPositionByGlyph(o.glyph,r)}_getNextOrPrevLine(a,e){var I,v,p,h,T,C,R,E,y,O,D,M;const t=a.parent;if(t==null)return;const s=t.parent;if(s==null)return;const o=s.parent;if(o==null)return;const r=o.lines.indexOf(s);if(r===-1)return;let d;if(e===!0?d=o.lines[r+1]:d=o.lines[r-1],d!=null)return d;const c=o.parent;if(c==null)return;const u=c.columns.indexOf(o);if(u===-1)return;if(e===!0)d=(I=c.columns[u+1])==null?void 0:I.lines[0];else{const _=(p=(v=c.columns)==null?void 0:v[u-1])==null?void 0:p.lines;d=_==null?void 0:_[_.length-1]}if(d!=null)return d;const l=c.parent;if(l==null)return;const f=l.sections.indexOf(c);if(f===-1)return;if(e===!0)d=(T=(h=l.sections[f-1])==null?void 0:h.columns[0])==null?void 0:T.lines[0];else{const _=(R=(C=l.sections)==null?void 0:C[f-1])==null?void 0:R.columns,x=_==null?void 0:_[_.length-1],A=x==null?void 0:x.lines;d=A==null?void 0:A[A.length-1]}if(d!=null)return d;const g=l.parent;if(g==null)return;const S=g.pages.indexOf(l);if(S!==-1){if(e===!0)d=(O=(y=(E=g.pages[S+1])==null?void 0:E.sections[0])==null?void 0:y.columns[0])==null?void 0:O.lines[0];else{const _=(D=g.pages[S-1])==null?void 0:D.sections;if(_==null)return;const x=(M=_[_.length-1])==null?void 0:M.columns,A=x[x.length-1],P=A==null?void 0:A.lines;d=P[P.length-1]}if(d!=null)return d}}_getDocObject(){return Ye(this._univerInstanceService,this._renderManagerService)}};Re=cn([n.OnLifecycle(n.LifecycleStages.Rendered,Re),Oe(0,n.IUniverInstanceService),Oe(1,N.IRenderManagerService),Oe(2,n.Inject(m.TextSelectionManagerService)),Oe(3,n.ICommandService)],Re);var dn=Object.defineProperty,ln=Object.getOwnPropertyDescriptor,un=(i,a,e,t)=>{for(var s=t>1?void 0:t?ln(a,e):a,o=i.length-1,r;o>=0;o--)(r=i[o])&&(s=(t?r(a,e,s):r(s))||s);return t&&s&&dn(a,e,s),s},Me=(i,a)=>(e,t)=>a(e,t,i);let xe=class extends n.Disposable{constructor(a,e,t,s){super();U(this,"_onInputSubscription");this._univerInstanceService=a,this._renderManagerService=e,this._textSelectionRenderManager=t,this._commandService=s,this._init()}dispose(){var a;super.dispose(),(a=this._onInputSubscription)==null||a.unsubscribe()}_init(){this._initialNormalInput()}_initialNormalInput(){this._onInputSubscription=this._textSelectionRenderManager.onInput$.subscribe(async a=>{var v;if(a==null)return;const e=this._univerInstanceService.getCurrentUniverDocInstance();if(!e)return;const t=e.getUnitId(),{event:s,content:o="",activeRange:r}=a,d=s,c=(v=this._renderManagerService.getRenderById(e.getUnitId()))==null?void 0:v.with(m.DocSkeletonManagerService).getSkeleton();if(d.data==null||c==null||!c||!r)return;const{startOffset:u,segmentId:l,style:f,segmentPage:g}=r,S=o.length,I=[{startOffset:u+S,endOffset:u+S,segmentId:l,segmentPage:g,style:f}];await this._commandService.executeCommand(ee.id,{unitId:t,body:{dataStream:o},textRanges:I,range:r,segmentId:l})})}};xe=un([n.OnLifecycle(n.LifecycleStages.Rendered,xe),Me(0,n.IUniverInstanceService),Me(1,N.IRenderManagerService),Me(2,N.ITextSelectionRenderManager),Me(3,n.ICommandService)],xe);const W={id:"doc.command.align-operation",type:n.CommandType.COMMAND,handler:(i,a)=>{var E,y;const e=i.get(m.TextSelectionManagerService),t=i.get(n.IUniverInstanceService),s=i.get(n.ICommandService),{alignType:o}=a,r=t.getCurrentUniverDocInstance(),d=e.getActiveRange();if(r==null||d==null)return!1;const{segmentId:c}=d,u=(E=e.getCurrentSelections())!=null?E:[],l=(y=r.getSelfOrHeaderFooterModel(c).getBody())==null?void 0:y.paragraphs,f=u.map($);if(l==null)return!1;const g=ht(d,l),S=r.getUnitId(),I=g.every(O=>{var D;return((D=O.paragraphStyle)==null?void 0:D.horizontalAlign)===o}),v={id:b.id,params:{unitId:S,actions:[],textRanges:f}},p=new n.MemoryCursor;p.reset();const h=new n.TextX,T=n.JSONX.getInstance();for(const O of g){const{startIndex:D}=O;h.push({t:n.TextXActionType.RETAIN,len:D-p.cursor,segmentId:c});const M={...O.paragraphStyle,horizontalAlign:I?n.HorizontalAlign.UNSPECIFIED:o};h.push({t:n.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[{...O,paragraphStyle:M,startIndex:0}]},segmentId:c,coverType:n.UpdateDocsAttributeType.REPLACE}),p.moveCursorTo(D+1)}const C=B(r,c);return v.params.actions=T.editOp(h.serialize(),C),!!s.syncExecuteCommand(v.id,v.params)}},_t={id:"doc.command.align-left",type:n.CommandType.COMMAND,handler:i=>i.get(n.ICommandService).syncExecuteCommand(W.id,{alignType:n.HorizontalAlign.LEFT})},Ot={id:"doc.command.align-center",type:n.CommandType.COMMAND,handler:i=>i.get(n.ICommandService).syncExecuteCommand(W.id,{alignType:n.HorizontalAlign.CENTER})},Rt={id:"doc.command.align-right",type:n.CommandType.COMMAND,handler:i=>i.get(n.ICommandService).syncExecuteCommand(W.id,{alignType:n.HorizontalAlign.RIGHT})},Mt={id:"doc.command.align-justify",type:n.CommandType.COMMAND,handler:i=>i.get(n.ICommandService).syncExecuteCommand(W.id,{alignType:n.HorizontalAlign.JUSTIFIED})};var mn=Object.defineProperty,gn=Object.getOwnPropertyDescriptor,fn=(i,a,e,t)=>{for(var s=t>1?void 0:t?gn(a,e):a,o=i.length-1,r;o>=0;o--)(r=i[o])&&(s=(t?r(a,e,s):r(s))||s);return t&&s&&mn(a,e,s),s},Ge=(i,a)=>(e,t)=>a(e,t,i);let De=class extends n.Disposable{constructor(i,a,e){super(),this._commandService=i,this._textSelectionManagerService=a,this._univerInstanceService=e,this._initSelectionChange()}_transformCustomRange(i,a){var r;const{startOffset:e,endOffset:t,collapsed:s}=a,o=(r=i.getCustomRanges())==null?void 0:r.filter(d=>!d.wholeEntity||e<=d.startIndex&&t>d.endIndex?!1:s?d.startIndex<e&&d.endIndex>=t:we(e,t-1,d.startIndex,d.endIndex));if(o!=null&&o.length){let d=e,c=t;return o.forEach(u=>{d=Math.min(u.startIndex,d),c=Math.max(u.endIndex+1,c)}),{...a,startOffset:d,endOffset:c,collapsed:d===c}}return a}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(i=>{if(i.id===se.id){const a=i.params,{unitId:e,ranges:t,isEditing:s}=a,o=this._univerInstanceService.getUnit(e);if(!o)return;const r=t.map(d=>this._transformCustomRange(o,d));r.some((d,c)=>t[c]!==d)&&this._textSelectionManagerService.replaceTextRanges(r,s)}}))}};De=fn([n.OnLifecycle(n.LifecycleStages.Ready,De),Ge(0,n.ICommandService),Ge(1,n.Inject(m.TextSelectionManagerService)),Ge(2,n.IUniverInstanceService)],De);var Sn=Object.defineProperty,In=Object.getOwnPropertyDescriptor,hn=(i,a,e,t)=>{for(var s=t>1?void 0:t?In(a,e):a,o=i.length-1,r;o>=0;o--)(r=i[o])&&(s=(t?r(a,e,s):r(s))||s);return t&&s&&Sn(a,e,s),s},pn=(i,a)=>(e,t)=>a(e,t,i);const Tn="docs";m.UniverDocsPlugin=(Ae=class extends n.Plugin{constructor(a={},e){super(),this._injector=e,this._initializeDependencies(e),this._initializeCommands()}_initializeCommands(){[Ce,ye,et,tt,le,ue,me,ge,J,fe,Se,Ie,he,Te,pe,ke,Qe,ee,V,ce,Xe,Fe,de,b,pt,Tt,Ct,te,se,yt,It,St,ve,_t,Ot,Rt,W,Mt].forEach(a=>{this._injector.get(n.ICommandService).registerCommand(a)})}_initializeDependencies(a){[[m.DocStateChangeManagerService],[Y],[N.ITextSelectionRenderManager,{useClass:N.TextSelectionRenderManager}],[m.TextSelectionManagerService],[oe],[xe],[_e],[Re],[De]].forEach(e=>a.add(e))}},U(Ae,"pluginName",Tn),U(Ae,"type",n.UniverInstanceType.UNIVER_DOC),Ae),m.UniverDocsPlugin=hn([pn(1,n.Inject(n.Injector))],m.UniverDocsPlugin);function vn(i,a){const{range:e,rangeId:t,rangeType:s,segmentId:o}=i,r=Lt(e,a);if(!r)return null;const{startOffset:d,endOffset:c}=r,u=new n.TextX;return d>0&&u.push({t:n.TextXActionType.RETAIN,len:d,segmentId:o}),u.push({t:n.TextXActionType.INSERT,body:{dataStream:n.DataStreamTreeTokenType.CUSTOM_RANGE_START},len:1,line:0}),u.push({t:n.TextXActionType.RETAIN,body:{dataStream:""},len:c-d,segmentId:o}),u.push({t:n.TextXActionType.INSERT,body:{dataStream:n.DataStreamTreeTokenType.CUSTOM_RANGE_END,customRanges:[{rangeId:t,rangeType:s,startIndex:-(c-d)-1,endIndex:0}]},len:1,line:0}),u}function Cn(i,a){const e={id:b.id,params:{unitId:i.unitId,actions:[],textRanges:void 0}},t=n.JSONX.getInstance(),s=vn(i,a);return s?(e.params.actions=t.editOp(s.serialize()),e):!1}function yn(i,a){var y;const{segmentId:e,rangeId:t,rangeType:s,wholeEntity:o}=a,r=i.get(m.TextSelectionManagerService),d=i.get(n.IUniverInstanceService),c=r.getActiveRange();if(!c)return!1;const u=d.getCurrentUnitForType(n.UniverInstanceType.UNIVER_DOC);if(!u)return!1;const l=u.getBody(),f=u.getUnitId();if(!l)return!1;const{startOffset:g,endOffset:S}=Z(c),I=(y=l.customRanges)!=null?y:[],v=[];for(let O=0,D=I.length;O<D;O++){const M=I[O];if(M.rangeType===s&&Math.max(M.startIndex,g)<=Math.min(M.endIndex,S-1)&&v.push({...M}),M.startIndex>=S)break}const p=v.map(O=>[O.startIndex,O.endIndex]).flat().sort((O,D)=>O-D);let h=0;const T=new n.TextX,C=p.length?{startOffset:Math.min(p[0],g),endOffset:Math.max(p[p.length-1]+1,S)}:c;C.startOffset!==h&&(T.push({t:n.TextXActionType.RETAIN,len:C.startOffset-h,segmentId:e}),h=C.startOffset),T.push({t:n.TextXActionType.INSERT,body:{dataStream:n.DataStreamTreeTokenType.CUSTOM_RANGE_START},len:1,line:0,segmentId:e}),p.forEach((O,D)=>{O!==h&&(T.push({t:n.TextXActionType.RETAIN,len:O-h,segmentId:e}),h=O),T.push({t:n.TextXActionType.DELETE,len:1,line:0,segmentId:e}),h++}),h!==C.endOffset&&(T.push({t:n.TextXActionType.RETAIN,len:C.endOffset-h,segmentId:e}),h=C.endOffset),T.push({t:n.TextXActionType.INSERT,body:{dataStream:n.DataStreamTreeTokenType.CUSTOM_RANGE_END,customRanges:[{rangeId:t,rangeType:s,startIndex:-(C.endOffset-C.startOffset-p.length+1),endIndex:0,wholeEntity:o}]},len:1,line:0,segmentId:e});const R=n.JSONX.getInstance(),E={id:b.id,params:{unitId:f,actions:[],textRanges:void 0}};return E.params.actions=R.editOp(T.serialize()),E}function _n(i,a){var g,S;const{unitId:e,rangeId:t,segmentId:s}=a,r=i.get(n.IUniverInstanceService).getUnit(e);if(!r)return!1;const d=(S=(g=r.getBody())==null?void 0:g.customRanges)==null?void 0:S.find(I=>I.rangeId===t);if(!d)return!1;const{startIndex:c,endIndex:u}=d,l=new n.TextX,f=u-c+1;return c>0&&l.push({t:n.TextXActionType.RETAIN,len:c,segmentId:s}),l.push({t:n.TextXActionType.DELETE,len:1,segmentId:s,line:0}),f-2>0&&l.push({t:n.TextXActionType.RETAIN,len:f-2,segmentId:s}),l.push({t:n.TextXActionType.DELETE,len:1,segmentId:s,line:0}),l}function On(i,a){const e={id:b.id,params:{unitId:a.unitId,actions:[],textRanges:void 0}},t=n.JSONX.getInstance(),s=_n(i,a);return s?(e.params.actions=t.editOp(s.serialize()),e):!1}function xt(i){const{unitId:a,range:e,id:t,type:s,segmentId:o}=i,{startOffset:r,endOffset:d}=e,c={id:b.id,params:{unitId:a,actions:[],textRanges:void 0}},u=new n.TextX,l=n.JSONX.getInstance();return r>0&&u.push({t:n.TextXActionType.RETAIN,len:r,segmentId:o}),u.push({t:n.TextXActionType.RETAIN,body:{dataStream:"",customDecorations:[{id:t,type:s,startIndex:0,endIndex:d-r-1}]},len:d-r,segmentId:o}),c.params.actions=l.editOp(u.serialize()),c}function Rn(i,a){const{segmentId:e,id:t,type:s}=a,o=i.get(m.TextSelectionManagerService),r=i.get(n.IUniverInstanceService),d=o.getActiveRange();if(!d)return!1;const c=r.getCurrentUnitForType(n.UniverInstanceType.UNIVER_DOC);if(!c)return!1;const u=c.getBody(),l=c.getUnitId();return u?xt({unitId:l,range:{startOffset:d.startOffset,endOffset:d.endOffset,collapsed:!0},id:t,type:s,segmentId:e}):!1}function Mn(i,a){var v,p;const{unitId:e,id:t,segmentId:s}=a,r=i.get(n.IUniverInstanceService).getUnit(e),d=r==null?void 0:r.getBody();if(!r||!d)return!1;const c=(p=(v=r.getBody())==null?void 0:v.customDecorations)==null?void 0:p.filter(h=>h.id===t);if(!(c!=null&&c.length))return!1;const u=c.map(h=>n.getBodySlice(d,h.startIndex,h.endIndex+1)),l=u.map(h=>{var C;const T=n.Tools.deepClone(h);return T.customDecorations=(C=T.customDecorations)==null?void 0:C.filter(R=>R.id!==t),T}),f={id:b.id,params:{unitId:e,actions:[],textRanges:void 0}},g=new n.TextX,S=n.JSONX.getInstance();let I=0;return c.forEach((h,T)=>{const C=l[T],R=u[T];h.startIndex!==I&&g.push({t:n.TextXActionType.RETAIN,len:h.startIndex-I,segmentId:s}),I=h.startIndex,g.push({t:n.TextXActionType.RETAIN,len:h.endIndex-h.startIndex+1,segmentId:s,body:C,oldBody:R,coverType:n.UpdateDocsAttributeType.REPLACE}),I=I+(h.endIndex-h.startIndex+1)}),f.params.actions=S.editOp(g.serialize()),f}const xn=n.createInterceptorKey("CUSTOM_RANGE"),Dn=n.createInterceptorKey("CUSTOM_DECORATION"),Ee={CUSTOM_RANGE:xn,CUSTOM_DECORATION:Dn};var En=Object.defineProperty,An=Object.getOwnPropertyDescriptor,Nn=(i,a,e,t)=>{for(var s=t>1?void 0:t?An(a,e):a,o=i.length-1,r;o>=0;o--)(r=i[o])&&(s=(t?r(a,e,s):r(s))||s);return t&&s&&En(a,e,s),s},Un=(i,a)=>(e,t)=>a(e,t,i);m.DocInterceptorService=class extends n.Disposable{constructor(e,t){super();U(this,"_interceptorsByName",new Map);this._context=e,this._docSkeletonManagerService=t,this.disposeWithMe(this._docSkeletonManagerService.currentViewModel$.subscribe(s=>{if(s){const o=s.getDataModel().getUnitId();if(o===n.DOCS_NORMAL_EDITOR_UNIT_ID_KEY||o===n.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY)return;this.interceptDocumentViewModel(s)}})),this.disposeWithMe(this.intercept(Ee.CUSTOM_RANGE,{priority:-1,handler:(s,o,r)=>r(s)}))}intercept(e,t){const s=e;this._interceptorsByName.has(s)||this._interceptorsByName.set(s,[]);const o=this._interceptorsByName.get(s);return o.push(t),this._interceptorsByName.set(s,o.sort((r,d)=>{var c,u;return((c=d.priority)!=null?c:0)-((u=r.priority)!=null?u:0)})),this.disposeWithMe(n.toDisposable(()=>n.remove(this._interceptorsByName.get(s),t)))}fetchThroughInterceptors(e){const t=e,s=this._interceptorsByName.get(t);return n.composeInterceptors(s||[])}interceptDocumentViewModel(e){const t=new n.DisposableCollection;return t.add(e.registerCustomRangeInterceptor({getCustomRange:s=>{var o;return this.fetchThroughInterceptors(Ee.CUSTOM_RANGE)(e.getCustomRangeRaw(s),{index:s,unitId:e.getDataModel().getUnitId(),customRanges:(o=e.getDataModel().getCustomRanges())!=null?o:[]})},getCustomDecoration:s=>{var o;return this.fetchThroughInterceptors(Ee.CUSTOM_DECORATION)(e.getCustomDecorationRaw(s),{index:s,unitId:e.getDataModel().getUnitId(),customDecorations:(o=e.getDataModel().getCustomDecorations())!=null?o:[]})}})),t}},m.DocInterceptorService=Nn([n.OnLifecycle(n.LifecycleStages.Starting,m.DocInterceptorService),Un(1,n.Inject(m.DocSkeletonManagerService))],m.DocInterceptorService);const bn=i=>i.body?i.body.dataStream.slice(0,-2).replaceAll(n.DataStreamTreeTokenType.CUSTOM_RANGE_START,"").replaceAll(n.DataStreamTreeTokenType.CUSTOM_RANGE_END,""):"";m.AlignCenterCommand=Ot,m.AlignJustifyCommand=Mt,m.AlignLeftCommand=_t,m.AlignOperationCommand=W,m.AlignRightCommand=Rt,m.BreakLineCommand=Qe,m.BulletListCommand=St,m.CoverContentCommand=Tt,m.CutContentCommand=Le,m.DOCS_COMPONENT_BACKGROUND_LAYER_INDEX=jt,m.DOCS_COMPONENT_DEFAULT_Z_INDEX=Ht,m.DOCS_COMPONENT_HEADER_LAYER_INDEX=zt,m.DOCS_COMPONENT_MAIN_LAYER_INDEX=$t,m.DOCS_VIEW_KEY=Q,m.DOC_INTERCEPTOR_POINT=Ee,m.DeleteCommand=V,m.DeleteCustomBlockCommand=ce,m.DeleteLeftCommand=et,m.DeleteRightCommand=tt,m.DocCustomRangeService=oe,m.EditorInsertTextCommandId=Ze,m.IMEInputCommand=Fe,m.IMEInputManagerService=Y,m.InnerPasteCommand=Yt,m.InsertCommand=ee,m.ListOperationCommand=ve,m.MergeTwoParagraphCommand=de,m.MoveCursorOperation=Ce,m.MoveSelectionOperation=ye,m.NORMAL_TEXT_SELECTION_PLUGIN_NAME=Vt,m.OrderListCommand=It,m.ReplaceContentCommand=pt,m.ResetInlineFormatTextBackgroundColorCommand=Te,m.RichTextEditingMutation=b,m.SelectAllOperation=yt,m.SetDocZoomRatioCommand=Ct,m.SetDocZoomRatioOperation=te,m.SetInlineFormatBoldCommand=le,m.SetInlineFormatCommand=ke,m.SetInlineFormatFontFamilyCommand=Ie,m.SetInlineFormatFontSizeCommand=Se,m.SetInlineFormatItalicCommand=ue,m.SetInlineFormatStrikethroughCommand=ge,m.SetInlineFormatSubscriptCommand=J,m.SetInlineFormatSuperscriptCommand=fe,m.SetInlineFormatTextBackgroundColorCommand=pe,m.SetInlineFormatTextColorCommand=he,m.SetInlineFormatUnderlineCommand=me,m.SetTextSelectionsOperation=se,m.UpdateCommand=Xe,m.VIEWPORT_KEY=We,m.addCustomDecorationBySelectionFactory=Rn,m.addCustomDecorationFactory=xt,m.addCustomRangeBySelectionFactory=yn,m.addCustomRangeFactory=Cn,m.deleteCustomDecorationFactory=Mn,m.deleteCustomRangeFactory=On,m.getDeleteSelection=q,m.getDocObject=Ye,m.getDocObjectById=Wt,m.getInsertSelection=ie,m.getPlainTextFormDocument=bn,m.getRetainAndDeleteFromReplace=re,m.getRichTextEditPath=B,m.getSelectionText=kt,m.isSegmentIntersects=we,m.neoGetDocObject=Jt,m.replaceSelectionFactory=Gt,m.serializeTextRange=$,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})});
1
+ (function(global,factory){typeof exports=="object"&&typeof module<"u"?factory(exports,require("@univerjs/core"),require("@univerjs/engine-render"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/engine-render","rxjs"],factory):(global=typeof globalThis<"u"?globalThis:global||self,factory(global.UniverDocs={},global.UniverCore,global.UniverEngineRender,global.rxjs))})(this,function(exports2,core,engineRender,rxjs){"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);var _a,_b,_c,_d,_e,_f,_g,_h,_i;const SetTextSelectionsOperation={id:"doc.operation.set-selections",type:core.CommandType.OPERATION,handler:__name((_,__)=>!0,"handler")};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");function serializeTextRange(textRange){const{startOffset,endOffset,collapsed}=textRange,serializedTextRange={startOffset,endOffset,collapsed};return typeof textRange.isActive=="function"&&(serializedTextRange.isActive=textRange.isActive()),serializedTextRange}__name(serializeTextRange,"serializeTextRange"),exports2.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}getCurrentSelections(){var _a2;return(_a2=this._getTextRanges(this._currentSelection))==null?void 0:_a2.textRanges}getActiveTextRange(){const selectionInfo=this._getTextRanges(this._currentSelection);if(selectionInfo==null)return;const{textRanges}=selectionInfo;return textRanges.find(textRange=>textRange.isActive())}getActiveRange(){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,segmentId:"",segmentPage:-1,isEditing,style:engineRender.NORMAL_TEXT_SELECTION_PLUGIN_STYLE})}replaceTextRanges(textRanges,isEditing=!0,options){this._currentSelection!=null&&(this._textSelectionRenderManager.removeAllTextRanges(),this._textSelectionRenderManager.addTextRanges(textRanges,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,isEditing}=params;this._commandService.executeCommand(SetTextSelectionsOperation.id,{unitId,subUnitId,segmentId,style,isEditing,ranges:textRanges.map(serializeTextRange)})}_getTextRanges(param){var _a2;if(param==null)return;const{unitId,subUnitId=""}=param;return(_a2=this._textSelectionInfo.get(unitId))==null?void 0:_a2.get(subUnitId)}_refresh(param){const allTextSelectionInfo=this._getTextRanges(param);this._textSelectionRenderManager.removeAllTextRanges(),allTextSelectionInfo&&Array.isArray(allTextSelectionInfo.textRanges)&&allTextSelectionInfo.textRanges.length&&this._textSelectionRenderManager.addTextRanges(allTextSelectionInfo.textRanges.map(serializeTextRange))}_replaceByParam(insertParam){const{unitId,subUnitId,style,segmentId,textRanges,isEditing,segmentPage}=insertParam;this._textSelectionInfo.has(unitId)||this._textSelectionInfo.set(unitId,new Map),this._textSelectionInfo.get(unitId).set(subUnitId,{textRanges,style,segmentId,isEditing,segmentPage})}_addByParam(insertParam){const{unitId,subUnitId,textRanges,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,style,segmentId,isEditing,segmentPage})}},__name(_a,"TextSelectionManagerService"),_a),exports2.TextSelectionManagerService=__decorateClass$8([__decorateParam$8(0,engineRender.ITextSelectionRenderManager),__decorateParam$8(1,core.ICommandService)],exports2.TextSelectionManagerService);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");const DEBOUNCE_DELAY=300;exports2.DocStateChangeManagerService=(_b=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(_b,"DocStateChangeManagerService"),_b),exports2.DocStateChangeManagerService=__decorateClass$7([__decorateParam$7(0,core.Inject(core.IUndoRedoService)),__decorateParam$7(1,core.ICommandService),__decorateParam$7(2,core.IUniverInstanceService)],exports2.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$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");exports2.DocSkeletonManagerService=(_c=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&&unitId===core.DOCS_NORMAL_EDITOR_UNIT_ID_KEY?(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(_c,"DocSkeletonManagerService"),_c),exports2.DocSkeletonManagerService=__decorateClass$6([__decorateParam$6(1,core.Inject(core.LocaleService)),__decorateParam$6(2,core.IUniverInstanceService)],exports2.DocSkeletonManagerService);const RichTextEditingMutationId="doc.mutation.rich-text-editing",RichTextEditingMutation={id:RichTextEditingMutationId,type:core.CommandType.MUTATION,handler:__name((accessor,params)=>{var _a2,_b2;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=(_a2=renderManagerService.getRenderById(unitId))==null?void 0:_a2.with(exports2.DocSkeletonManagerService).getViewModel();if(documentDataModel==null||documentViewModel==null)throw new Error(`DocumentDataModel or documentViewModel not found for unitId: ${unitId}`);const textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),serializedSelections=((_b2=textSelectionManagerService.getCurrentSelections())!=null?_b2:[]).map(serializeTextRange),docStateChangeManagerService=accessor.get(exports2.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 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");var DeleteDirection=(DeleteDirection2=>(DeleteDirection2[DeleteDirection2.LEFT=0]="LEFT",DeleteDirection2[DeleteDirection2.RIGHT=1]="RIGHT",DeleteDirection2))(DeleteDirection||{});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 _a2;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=(_a2=body.customRanges)==null?void 0:_a2.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){var _a2;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=(_a2=body.customRanges)==null?void 0:_a2.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}),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 _a2,_b2;const{unitId,body:insertBody}=params,docDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService);if(!docDataModel)return!1;const body=docDataModel.getBody(),selection=(_a2=params.selection)!=null?_a2:textSelectionManagerService.getActiveRange();if(!selection||!body)return!1;const textRanges=(_b2=params.textRanges)!=null?_b2:[{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 _a2;const{startOffset,endOffset}=range,dos=[],textStart=startOffset-memoryCursor,textEnd=endOffset-memoryCursor,dataStream=body.dataStream,relativeCustomRanges=(_a2=body.customRanges)==null?void 0:_a2.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");function getCommandSkeleton(accessor,unitId){var _a2;return(_a2=accessor.get(engineRender.IRenderManagerService).getRenderById(unitId))==null?void 0:_a2.with(exports2.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 EditorInsertTextCommandId="doc.command.insert-text",InsertCommand={id:EditorInsertTextCommandId,type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a2;const commandService=accessor.get(core.ICommandService),{range,segmentId,body,unitId,textRanges:propTextRanges,cursorOffset}=params,textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),docDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId,core.UniverInstanceType.UNIVER_DOC);if(docDataModel==null)return!1;const activeRange=textSelectionManagerService.getActiveRange(),originBody=docDataModel.getSelfOrHeaderFooterModel((_a2=activeRange==null?void 0:activeRange.segmentId)!=null?_a2:"").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 _a2;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=(_a2=body.customRanges)==null?void 0:_a2.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){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)),prevParagraph.paragraphStyle&&(paragraph.paragraphStyle=core.Tools.deepClone(prevParagraph.paragraphStyle));return paragraphs}__name(generateParagraphs,"generateParagraphs");const BreakLineCommand={id:"doc.command.break-line",type:core.CommandType.COMMAND,handler:__name(async accessor=>{var _a2,_b2;const textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),customRangeService=accessor.get(DocCustomRangeService),activeRange=textSelectionManagerService.getActiveRange();if(activeRange==null)return!1;const{segmentId}=activeRange,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),body=docDataModel==null?void 0:docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();if(!docDataModel||!body)return!1;const unitId=docDataModel.getUnitId(),{startOffset,endOffset}=getInsertSelection(activeRange,body),prevParagraph=((_a2=body.paragraphs)!=null?_a2:[]).find(p=>p.startIndex>=startOffset);if(prevParagraph&&prevParagraph.startIndex>endOffset){const bodyAfter=core.normalizeBody(core.getBodySlice(body,endOffset,prevParagraph.startIndex));bodyAfter.customRanges=(_b2=bodyAfter.customRanges)==null?void 0:_b2.map(range=>customRangeService.copyCustomRange(unitId,range));const deleteRange={startOffset,endOffset:prevParagraph.startIndex,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:activeRange,segmentId})},"handler")},InnerPasteCommand={id:"doc.command.inner-paste",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{const{segmentId,textRanges,body}=params,commandService=accessor.get(core.ICommandService),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selections=textSelectionManagerService.getCurrentSelections();if(!Array.isArray(selections)||selections.length===0)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();for(const selection of selections){const{startOffset,endOffset,collapsed}=selection,len=startOffset-memoryCursor.cursor;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,len:body.dataStream.length,line:0,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")},CutContentCommand={id:"doc.command.inner-cut",type:core.CommandType.COMMAND,handler:__name(async(accessor,params)=>{var _a2,_b2,_c2,_d2;const{segmentId,textRanges}=params,commandService=accessor.get(core.ICommandService),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selections=(_a2=params.selections)!=null?_a2:textSelectionManagerService.getCurrentSelections();if(!Array.isArray(selections)||selections.length===0)return!1;const unitId=(_b2=univerInstanceService.getCurrentUniverDocInstance())==null?void 0:_b2.getUnitId();if(!unitId)return!1;const docDataModel=univerInstanceService.getUniverDocInstance(unitId),originBody=core.getDocsUpdateBody(docDataModel.getSnapshot(),segmentId);if(docDataModel==null||originBody==null)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(),rawActions=[];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)),memoryCursor.reset(),memoryCursor.moveCursor(endOffset)}const path=getRichTextEditPath(docDataModel,segmentId);rawActions.push(jsonX.editOp(textX.serialize(),path));const removedCustomBlockIds=getCustomBlockIdsInSelections(originBody,selections),drawings=(_c2=docDataModel.getDrawings())!=null?_c2:{},drawingOrder=(_d2=docDataModel.getDrawingsOrder())!=null?_d2:[],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 doMutation.params.actions=rawActions.reduce((acc,cur)=>core.JSONX.compose(acc,cur),null),!!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 _a2;const textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),activeRange=textSelectionManagerService.getActiveRange(),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=((_a2=documentDataModel.getDrawings())!=null?_a2:{})[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)=>{var _a2,_b2;const textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),{direction,range}=params,activeRange=textSelectionManagerService.getActiveRange(),ranges=textSelectionManagerService.getCurrentSelections();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=(_b2=(_a2=originBody.paragraphs)==null?void 0:_a2.find(p=>p.startIndex>=startIndex))==null?void 0:_b2.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")},DeleteLeftCommand={id:"doc.command.delete-left",type:core.CommandType.COMMAND,handler:__name(async accessor=>{var _a2,_b2;const textSelectionManagerService=accessor.get(exports2.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.getActiveRange(),ranges=textSelectionManagerService.getCurrentSelections(),skeleton=docSkeletonManagerService==null?void 0:docSkeletonManagerService.getSkeleton();if(activeRange==null||skeleton==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=(_b2=docDataModel.getSnapshot().drawings)==null?void 0:_b2[(_a2=preGlyph.drawingId)!=null?_a2:""];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 _a2,_b2;const textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),docDataModel=accessor.get(core.IUniverInstanceService).getCurrentUniverDocInstance();if(!docDataModel)return!1;const docSkeletonManagerService=getCommandSkeleton(accessor,docDataModel.getUnitId()),commandService=accessor.get(core.ICommandService),activeRange=textSelectionManagerService.getActiveRange(),ranges=textSelectionManagerService.getCurrentSelections(),skeleton=docSkeletonManagerService==null?void 0:docSkeletonManagerService.getSkeleton();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.content==="\r")result=await commandService.executeCommand(MergeTwoParagraphCommand.id,{direction:DeleteDirection.RIGHT,range:activeRange});else if(needDeleteGlyph.streamType==="\b"){const drawing=(_b2=docDataModel.getSnapshot().drawings)==null?void 0:_b2[(_a2=needDeleteGlyph.drawingId)!=null?_a2:""];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,textSelectionManagerService,commandService){var _a2;const{segmentId}=(_a2=textSelectionManagerService.getActiveRange())!=null?_a2:{};return segmentId==null?!1:commandService.executeCommand(SetInlineFormatCommand.id,{segmentId,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),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService);return handleInlineFormat(SetInlineFormatBoldCommandId,params,textSelectionManagerService,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),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService);return handleInlineFormat(SetInlineFormatItalicCommandId,params,textSelectionManagerService,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),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService);return handleInlineFormat(SetInlineFormatUnderlineCommandId,params,textSelectionManagerService,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),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService);return handleInlineFormat(SetInlineFormatStrikethroughCommandId,params,textSelectionManagerService,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),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService);return handleInlineFormat(SetInlineFormatSubscriptCommandId,params,textSelectionManagerService,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),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService);return handleInlineFormat(SetInlineFormatSuperscriptCommandId,params,textSelectionManagerService,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),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService);return handleInlineFormat(SetInlineFormatFontSizeCommandId,params,textSelectionManagerService,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),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService);return handleInlineFormat(SetInlineFormatFontFamilyCommandId,params,textSelectionManagerService,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),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService);return handleInlineFormat(SetInlineFormatTextColorCommandId,params,textSelectionManagerService,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),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService);return handleInlineFormat(SetInlineFormatTextBackgroundColorCommandId,params,textSelectionManagerService,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),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService);return handleInlineFormat(ResetInlineFormatTextBackgroundColorCommandId,params,textSelectionManagerService,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{segmentId,value,preCommandId}=params,commandService=accessor.get(core.ICommandService),textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selections=textSelectionManagerService.getCurrentSelections();if(!Array.isArray(selections)||selections.length===0)return!1;const 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,selections);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:selections.map(serializeTextRange)}},textX=new core.TextX,jsonX=core.JSONX.getInstance(),memoryCursor=new core.MemoryCursor;memoryCursor.reset();for(const selection of selections){const{startOffset,endOffset}=selection,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,selections){let ti=0,si=0;const key=COMMAND_ID_TO_FORMAT_KEY_MAP[preCommandId];for(;ti!==textRuns.length&&si!==selections.length;){const{startOffset,endOffset}=selections[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 ListOperationCommand={id:"doc.command.list-operation",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{var _a2,_b2,_c2,_d2,_e2,_f2;const textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),{listType}=params,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),activeRange=textSelectionManagerService.getActiveRange();if(docDataModel==null||activeRange==null)return!1;const{segmentId}=activeRange,selections=(_a2=textSelectionManagerService.getCurrentSelections())!=null?_a2:[],paragraphs=(_b2=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_b2.paragraphs,serializedSelections=selections.map(serializeTextRange);if(paragraphs==null)return!1;const sectionBreaks=(_d2=(_c2=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_c2.sectionBreaks)!=null?_d2:[],currentParagraphs=getParagraphsInRange(activeRange,paragraphs),unitId=docDataModel.getUnitId(),isAlreadyList=currentParagraphs.every(paragraph=>{var _a3;return((_a3=paragraph.bullet)==null?void 0:_a3.listType)===listType});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===listType?listId=prevParagraph.bullet.listId:nextParagraph&&nextParagraph.bullet&&nextParagraph.bullet.listType===listType&&(listId=nextParagraph.bullet.listId)}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=(_e2=docDataModel.getSnapshot().lists)!=null?_e2:{},lists={...core.PRESET_LIST_TYPE,...customLists},{defaultTabStop=36}=docDataModel.getSnapshot().documentStyle;for(const paragraph of currentParagraphs){const{startIndex,paragraphStyle={}}=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:{...(_f2=paragraph.bullet)!=null?_f2:{nestingLevel: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")},BulletListCommand={id:"doc.command.bullet-list",type:core.CommandType.COMMAND,handler:__name(accessor=>accessor.get(core.ICommandService).syncExecuteCommand(ListOperationCommand.id,{listType:core.PresetListType.BULLET_LIST}),"handler")},OrderListCommand={id:"doc.command.order-list",type:core.CommandType.COMMAND,handler:__name(accessor=>accessor.get(core.ICommandService).syncExecuteCommand(ListOperationCommand.id,{listType:core.PresetListType.ORDER_LIST}),"handler")};function getParagraphsInRange(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,"getParagraphsInRange");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");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(exports2.TextSelectionManagerService),docDataModel=univerInstanceService.getUniverDocInstance(unitId),prevBody=docDataModel==null?void 0:docDataModel.getSnapshot().body,selections=textSelectionManagerService.getCurrentSelections();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 _a2,_b2,_c2;const commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),univerInstanceService=accessor.get(core.IUniverInstanceService);let documentId=(_a2=univerInstanceService.getCurrentUniverDocInstance())==null?void 0:_a2.getUnitId();if(!documentId)return!1;let zoomRatio=1;if(params&&(documentId=(_b2=params.documentId)!=null?_b2:documentId,zoomRatio=(_c2=params.zoomRatio)!=null?_c2: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(exports2.TextSelectionManagerService),docDataModel=univerInstanceService.getCurrentUniverDocInstance(),activeTextRange=textSelectionManagerService.getActiveRange();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$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");let IMEInputController=(_d=class extends core.Disposable{constructor(_univerInstanceService,_renderManagerSrv,_textSelectionRenderManager,_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._imeInputManagerService=_imeInputManagerService,this._commandService=_commandService,this._initialize()}dispose(){var _a2,_b2,_c2;(_a2=this._onStartSubscription)==null||_a2.unsubscribe(),(_b2=this._onUpdateSubscription)==null||_b2.unsubscribe(),(_c2=this._onEndSubscription)==null||_c2.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 _a2;if(config==null)return;const documentModel=this._univerInstanceService.getCurrentUniverDocInstance();if(!documentModel)return;const skeleton=(_a2=this._renderManagerSrv.getRenderById(documentModel.getUnitId()))==null?void 0:_a2.with(exports2.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(_d,"IMEInputController"),_d);IMEInputController=__decorateClass$5([core.OnLifecycle(core.LifecycleStages.Rendered,IMEInputController),__decorateParam$5(0,core.IUniverInstanceService),__decorateParam$5(1,engineRender.IRenderManagerService),__decorateParam$5(2,engineRender.ITextSelectionRenderManager),__decorateParam$5(3,core.Inject(IMEInputManagerService)),__decorateParam$5(4,core.ICommandService)],IMEInputController);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");let MoveCursorController=(_e=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 _a2;super.dispose(),(_a2=this._onInputSubscription)==null||_a2.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 _a2,_b2,_c2;const activeRange=this._textSelectionManagerService.getActiveRange(),allRanges=this._textSelectionManagerService.getCurrentSelections(),docDataModel=this._univerInstanceService.getCurrentUniverDocInstance();if(!docDataModel)return;const skeleton=(_a2=this._renderManagerService.getRenderById(docDataModel.getUnitId()))==null?void 0:_a2.with(exports2.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=(_b2=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody().dataStream.length)!=null?_b2: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-((_c2=preGlyph==null?void 0:preGlyph.count)!=null?_c2: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);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 _a2,_b2,_c2,_d2;const activeRange=this._textSelectionManagerService.getActiveRange(),allRanges=this._textSelectionManagerService.getCurrentSelections(),docDataModel=this._univerInstanceService.getCurrentUniverDocInstance();if(!docDataModel)return!1;const skeleton=(_a2=this._renderManagerService.getRenderById(docDataModel.getUnitId()))==null?void 0:_a2.with(exports2.DocSkeletonManagerService).getSkeleton(),docObject=this._getDocObject(),body=docDataModel.getBody();if(activeRange==null||skeleton==null||docObject==null||allRanges==null||body==null)return;const{startOffset,endOffset,style,collapsed,segmentId,startNodePosition,endNodePosition,segmentPage}=activeRange,dataStreamLength=(_b2=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody().dataStream.length)!=null?_b2:Number.POSITIVE_INFINITY,customRanges=(_c2=docDataModel.getCustomRanges())!=null?_c2:[];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);direction===core.Direction.LEFT?cursor=Math.max(0,startOffset-((_d2=preSpan==null?void 0:preSpan.count)!=null?_d2:0)):cursor=Math.min(dataStreamLength-2,endOffset+curSpan.count)}const skipTokens=[core.DataStreamTreeTokenType.CUSTOM_RANGE_START,core.DataStreamTreeTokenType.CUSTOM_RANGE_END];if(direction===core.Direction.LEFT)for(;skipTokens.includes(body.dataStream[cursor]);)cursor--;else for(;skipTokens.includes(body.dataStream[cursor-1]);)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){if(glyph==null||nodePosition==null)return;const offsetLeft=this._getGlyphLeftOffsetInLine(glyph),line=this._getNextOrPrevLine(glyph,direction);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){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){var _a2,_b2,_c2,_d2,_e2,_f2,_g2,_h2,_i2,_j,_k,_l;const divide=glyph.parent;if(divide==null)return;const line=divide.parent;if(line==null)return;const column=line.parent;if(column==null)return;const currentLineIndex=column.lines.indexOf(line);if(currentLineIndex===-1)return;let newLine;if(direction===!0?newLine=column.lines[currentLineIndex+1]:newLine=column.lines[currentLineIndex-1],newLine!=null)return newLine;const section=column.parent;if(section==null)return;const currentColumnIndex=section.columns.indexOf(column);if(currentColumnIndex===-1)return;if(direction===!0)newLine=(_a2=section.columns[currentColumnIndex+1])==null?void 0:_a2.lines[0];else{const prevColumnLines=(_c2=(_b2=section.columns)==null?void 0:_b2[currentColumnIndex-1])==null?void 0:_c2.lines;newLine=prevColumnLines==null?void 0:prevColumnLines[prevColumnLines.length-1]}if(newLine!=null)return newLine;const page=section.parent;if(page==null)return;const currentSectionIndex=page.sections.indexOf(section);if(currentSectionIndex===-1)return;if(direction===!0)newLine=(_e2=(_d2=page.sections[currentSectionIndex-1])==null?void 0:_d2.columns[0])==null?void 0:_e2.lines[0];else{const prevColumns=(_g2=(_f2=page.sections)==null?void 0:_f2[currentSectionIndex-1])==null?void 0:_g2.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;const skeleton=page.parent;if(skeleton==null)return;const currentPageIndex=skeleton.pages.indexOf(page);if(currentPageIndex!==-1){if(direction===!0)newLine=(_j=(_i2=(_h2=skeleton.pages[currentPageIndex+1])==null?void 0:_h2.sections[0])==null?void 0:_i2.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(_e,"MoveCursorController"),_e);MoveCursorController=__decorateClass$4([core.OnLifecycle(core.LifecycleStages.Rendered,MoveCursorController),__decorateParam$4(0,core.IUniverInstanceService),__decorateParam$4(1,engineRender.IRenderManagerService),__decorateParam$4(2,core.Inject(exports2.TextSelectionManagerService)),__decorateParam$4(3,core.ICommandService)],MoveCursorController);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");let NormalInputController=(_f=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 _a2;super.dispose(),(_a2=this._onInputSubscription)==null||_a2.unsubscribe()}_init(){this._initialNormalInput()}_initialNormalInput(){this._onInputSubscription=this._textSelectionRenderManager.onInput$.subscribe(async config=>{var _a2;if(config==null)return;const documentModel=this._univerInstanceService.getCurrentUniverDocInstance();if(!documentModel)return;const unitId=documentModel.getUnitId(),{event,content="",activeRange}=config,e=event,skeleton=(_a2=this._renderManagerService.getRenderById(documentModel.getUnitId()))==null?void 0:_a2.with(exports2.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})})}},__name(_f,"NormalInputController"),_f);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-operation",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{var _a2,_b2;const textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),{alignType}=params,docDataModel=univerInstanceService.getCurrentUniverDocInstance(),activeRange=textSelectionManagerService.getActiveRange();if(docDataModel==null||activeRange==null)return!1;const{segmentId}=activeRange,selections=(_a2=textSelectionManagerService.getCurrentSelections())!=null?_a2:[],paragraphs=(_b2=docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody())==null?void 0:_b2.paragraphs,serializedSelections=selections.map(serializeTextRange);if(paragraphs==null)return!1;const currentParagraphs=getParagraphsInRange(activeRange,paragraphs),unitId=docDataModel.getUnitId(),isAlreadyAligned=currentParagraphs.every(paragraph=>{var _a3;return((_a3=paragraph.paragraphStyle)==null?void 0:_a3.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");let DocCustomRangeController=(_g=class extends core.Disposable{constructor(_commandService,_textSelectionManagerService,_univerInstanceService){super(),this._commandService=_commandService,this._textSelectionManagerService=_textSelectionManagerService,this._univerInstanceService=_univerInstanceService,this._initSelectionChange()}_transformCustomRange(doc,selection){var _a2;const{startOffset,endOffset,collapsed}=selection,customRanges=(_a2=doc.getCustomRanges())==null?void 0:_a2.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(_g,"DocCustomRangeController"),_g);DocCustomRangeController=__decorateClass$2([core.OnLifecycle(core.LifecycleStages.Ready,DocCustomRangeController),__decorateParam$2(0,core.ICommandService),__decorateParam$2(1,core.Inject(exports2.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")};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";exports2.UniverDocsPlugin=(_h=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,DocsRenameMutation].forEach(command=>{this._injector.get(core.ICommandService).registerCommand(command)})}_initializeDependencies(docInjector){[[exports2.DocStateChangeManagerService],[IMEInputManagerService],[engineRender.ITextSelectionRenderManager,{useClass:engineRender.TextSelectionRenderManager}],[exports2.TextSelectionManagerService],[DocCustomRangeService],[NormalInputController],[IMEInputController],[MoveCursorController],[DocCustomRangeController]].forEach(d=>docInjector.add(d))}},__name(_h,"UniverDocsPlugin"),__publicField(_h,"pluginName",PLUGIN_NAME),__publicField(_h,"type",core.UniverInstanceType.UNIVER_DOC),_h),exports2.UniverDocsPlugin=__decorateClass$1([__decorateParam$1(1,core.Inject(core.Injector))],exports2.UniverDocsPlugin);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 _a2;const{segmentId,rangeId,rangeType,wholeEntity}=param,textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selection=textSelectionManagerService.getActiveRange();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=(_a2=body.customRanges)!=null?_a2:[],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 _a2,_b2;const{unitId,rangeId,segmentId}=params,documentDataModel=accessor.get(core.IUniverInstanceService).getUnit(unitId);if(!documentDataModel)return!1;const range=(_b2=(_a2=documentDataModel.getBody())==null?void 0:_a2.customRanges)==null?void 0:_b2.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,range,id,type,segmentId}=param,{startOffset:start,endOffset:end}=range,doMutation={id:RichTextEditingMutation.id,params:{unitId,actions:[],textRanges:void 0}},textX=new core.TextX,jsonX=core.JSONX.getInstance();return start>0&&textX.push({t:core.TextXActionType.RETAIN,len:start,segmentId}),textX.push({t:core.TextXActionType.RETAIN,body:{dataStream:"",customDecorations:[{id,type,startIndex:0,endIndex:end-start-1}]},len:end-start,segmentId}),doMutation.params.actions=jsonX.editOp(textX.serialize()),doMutation}__name(addCustomDecorationFactory,"addCustomDecorationFactory");function addCustomDecorationBySelectionFactory(accessor,param){const{segmentId,id,type}=param,textSelectionManagerService=accessor.get(exports2.TextSelectionManagerService),univerInstanceService=accessor.get(core.IUniverInstanceService),selection=textSelectionManagerService.getActiveRange();if(!selection)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,range:{startOffset:selection.startOffset,endOffset:selection.endOffset,collapsed:!0},id,type,segmentId}):!1}__name(addCustomDecorationBySelectionFactory,"addCustomDecorationBySelectionFactory");function deleteCustomDecorationFactory(accessor,params){var _a2,_b2;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=(_b2=(_a2=documentDataModel.getBody())==null?void 0:_a2.customDecorations)==null?void 0:_b2.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 _a3;const copy=core.Tools.deepClone(bodySlice);return copy.customDecorations=(_a3=copy.customDecorations)==null?void 0:_a3.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");exports2.DocInterceptorService=(_i=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 _a2,_b2;return((_a2=b.priority)!=null?_a2:0)-((_b2=a.priority)!=null?_b2: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 _a2;return this.fetchThroughInterceptors(DOC_INTERCEPTOR_POINT.CUSTOM_RANGE)(viewModel.getCustomRangeRaw(index),{index,unitId:viewModel.getDataModel().getUnitId(),customRanges:(_a2=viewModel.getDataModel().getCustomRanges())!=null?_a2:[]})},"getCustomRange"),getCustomDecoration:__name(index=>{var _a2;return this.fetchThroughInterceptors(DOC_INTERCEPTOR_POINT.CUSTOM_DECORATION)(viewModel.getCustomDecorationRaw(index),{index,unitId:viewModel.getDataModel().getUnitId(),customDecorations:(_a2=viewModel.getDataModel().getCustomDecorations())!=null?_a2:[]})},"getCustomDecoration")})),disposableCollection}},__name(_i,"DocInterceptorService"),_i),exports2.DocInterceptorService=__decorateClass([core.OnLifecycle(core.LifecycleStages.Starting,exports2.DocInterceptorService),__decorateParam(1,core.Inject(exports2.DocSkeletonManagerService))],exports2.DocInterceptorService);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");exports2.AlignCenterCommand=AlignCenterCommand,exports2.AlignJustifyCommand=AlignJustifyCommand,exports2.AlignLeftCommand=AlignLeftCommand,exports2.AlignOperationCommand=AlignOperationCommand,exports2.AlignRightCommand=AlignRightCommand,exports2.BreakLineCommand=BreakLineCommand,exports2.BulletListCommand=BulletListCommand,exports2.CoverContentCommand=CoverContentCommand,exports2.CutContentCommand=CutContentCommand,exports2.DOCS_COMPONENT_BACKGROUND_LAYER_INDEX=DOCS_COMPONENT_BACKGROUND_LAYER_INDEX,exports2.DOCS_COMPONENT_DEFAULT_Z_INDEX=DOCS_COMPONENT_DEFAULT_Z_INDEX,exports2.DOCS_COMPONENT_HEADER_LAYER_INDEX=DOCS_COMPONENT_HEADER_LAYER_INDEX,exports2.DOCS_COMPONENT_MAIN_LAYER_INDEX=DOCS_COMPONENT_MAIN_LAYER_INDEX,exports2.DOCS_VIEW_KEY=DOCS_VIEW_KEY,exports2.DOC_INTERCEPTOR_POINT=DOC_INTERCEPTOR_POINT,exports2.DeleteCommand=DeleteCommand,exports2.DeleteCustomBlockCommand=DeleteCustomBlockCommand,exports2.DeleteLeftCommand=DeleteLeftCommand,exports2.DeleteRightCommand=DeleteRightCommand,exports2.DocCustomRangeService=DocCustomRangeService,exports2.EditorInsertTextCommandId=EditorInsertTextCommandId,exports2.IMEInputCommand=IMEInputCommand,exports2.IMEInputManagerService=IMEInputManagerService,exports2.InnerPasteCommand=InnerPasteCommand,exports2.InsertCommand=InsertCommand,exports2.ListOperationCommand=ListOperationCommand,exports2.MergeTwoParagraphCommand=MergeTwoParagraphCommand,exports2.MoveCursorOperation=MoveCursorOperation,exports2.MoveSelectionOperation=MoveSelectionOperation,exports2.NORMAL_TEXT_SELECTION_PLUGIN_NAME=NORMAL_TEXT_SELECTION_PLUGIN_NAME,exports2.OrderListCommand=OrderListCommand,exports2.ReplaceContentCommand=ReplaceContentCommand,exports2.ResetInlineFormatTextBackgroundColorCommand=ResetInlineFormatTextBackgroundColorCommand,exports2.RichTextEditingMutation=RichTextEditingMutation,exports2.SelectAllOperation=SelectAllOperation,exports2.SetDocZoomRatioCommand=SetDocZoomRatioCommand,exports2.SetDocZoomRatioOperation=SetDocZoomRatioOperation,exports2.SetInlineFormatBoldCommand=SetInlineFormatBoldCommand,exports2.SetInlineFormatCommand=SetInlineFormatCommand,exports2.SetInlineFormatFontFamilyCommand=SetInlineFormatFontFamilyCommand,exports2.SetInlineFormatFontSizeCommand=SetInlineFormatFontSizeCommand,exports2.SetInlineFormatItalicCommand=SetInlineFormatItalicCommand,exports2.SetInlineFormatStrikethroughCommand=SetInlineFormatStrikethroughCommand,exports2.SetInlineFormatSubscriptCommand=SetInlineFormatSubscriptCommand,exports2.SetInlineFormatSuperscriptCommand=SetInlineFormatSuperscriptCommand,exports2.SetInlineFormatTextBackgroundColorCommand=SetInlineFormatTextBackgroundColorCommand,exports2.SetInlineFormatTextColorCommand=SetInlineFormatTextColorCommand,exports2.SetInlineFormatUnderlineCommand=SetInlineFormatUnderlineCommand,exports2.SetTextSelectionsOperation=SetTextSelectionsOperation,exports2.UpdateCommand=UpdateCommand,exports2.VIEWPORT_KEY=VIEWPORT_KEY,exports2.addCustomDecorationBySelectionFactory=addCustomDecorationBySelectionFactory,exports2.addCustomDecorationFactory=addCustomDecorationFactory,exports2.addCustomRangeBySelectionFactory=addCustomRangeBySelectionFactory,exports2.addCustomRangeFactory=addCustomRangeFactory,exports2.deleteCustomDecorationFactory=deleteCustomDecorationFactory,exports2.deleteCustomRangeFactory=deleteCustomRangeFactory,exports2.getDeleteSelection=getDeleteSelection,exports2.getDocObject=getDocObject,exports2.getDocObjectById=getDocObjectById,exports2.getInsertSelection=getInsertSelection,exports2.getPlainTextFormDocument=getPlainTextFormDocument,exports2.getRetainAndDeleteFromReplace=getRetainAndDeleteFromReplace,exports2.getRichTextEditPath=getRichTextEditPath,exports2.getSelectionText=getSelectionText,exports2.isSegmentIntersects=isSegmentIntersects,exports2.neoGetDocObject=neoGetDocObject,exports2.replaceSelectionFactory=replaceSelectionFactory,exports2.serializeTextRange=serializeTextRange,Object.defineProperty(exports2,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/docs",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "private": false,
5
5
  "description": "UniverSheet normal base-docs",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -47,17 +47,17 @@
47
47
  ],
48
48
  "peerDependencies": {
49
49
  "rxjs": ">=7.0.0",
50
- "@univerjs/core": "0.2.5",
51
- "@univerjs/engine-render": "0.2.5"
50
+ "@univerjs/core": "0.2.6",
51
+ "@univerjs/engine-render": "0.2.6"
52
52
  },
53
53
  "devDependencies": {
54
54
  "rxjs": "^7.8.1",
55
- "typescript": "^5.5.3",
56
- "vite": "^5.3.4",
57
- "vitest": "^2.0.3",
58
- "@univerjs/core": "0.2.5",
59
- "@univerjs/engine-render": "0.2.5",
60
- "@univerjs/shared": "0.2.5"
55
+ "typescript": "^5.5.4",
56
+ "vite": "^5.3.5",
57
+ "vitest": "^2.0.4",
58
+ "@univerjs/core": "0.2.6",
59
+ "@univerjs/shared": "0.2.6",
60
+ "@univerjs/engine-render": "0.2.6"
61
61
  },
62
62
  "univerSpace": {
63
63
  ".": {