@univerjs/docs 0.1.0-beta.4 → 0.1.1

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.
Files changed (36) hide show
  1. package/lib/cjs/index.js +1 -2
  2. package/lib/es/index.js +1167 -2121
  3. package/lib/types/commands/commands/ime-input.command.d.ts +2 -5
  4. package/lib/types/commands/commands/list.command.d.ts +4 -4
  5. package/lib/types/commands/mutations/core-editing.mutation.d.ts +10 -4
  6. package/lib/types/commands/operations/text-selection.operation.d.ts +3 -2
  7. package/lib/types/controllers/ime-input.controller.d.ts +3 -5
  8. package/lib/types/controllers/text-selection.controller.d.ts +3 -9
  9. package/lib/types/index.d.ts +8 -4
  10. package/lib/types/services/doc-skeleton-manager.service.d.ts +6 -3
  11. package/lib/types/services/doc-state-change-manager.service.d.ts +45 -0
  12. package/lib/types/services/doc-view-model-manager.service.d.ts +3 -2
  13. package/lib/types/services/ime-input-manager.service.d.ts +11 -0
  14. package/lib/types/services/text-selection-manager.service.d.ts +4 -3
  15. package/lib/umd/index.js +1 -2
  16. package/package.json +24 -15
  17. package/lib/types/commands/commands/clipboard.command.d.ts +0 -20
  18. package/lib/types/controllers/clipboard.controller.d.ts +0 -29
  19. package/lib/types/controllers/doc-render.controller.d.ts +0 -27
  20. package/lib/types/controllers/floating-object.controller.d.ts +0 -33
  21. package/lib/types/controllers/page-render.controller.d.ts +0 -25
  22. package/lib/types/controllers/zoom.controller.d.ts +0 -36
  23. package/lib/types/services/clipboard/__test__/html-and-udm-convert.spec.d.ts +0 -16
  24. package/lib/types/services/clipboard/clipboard.service.d.ts +0 -55
  25. package/lib/types/services/clipboard/copy-content-cache.d.ts +0 -25
  26. package/lib/types/services/clipboard/html-to-udm/converter.d.ts +0 -30
  27. package/lib/types/services/clipboard/html-to-udm/parse-node-style.d.ts +0 -17
  28. package/lib/types/services/clipboard/html-to-udm/parse-to-dom.d.ts +0 -16
  29. package/lib/types/services/clipboard/html-to-udm/paste-plugins/plugin-lark.d.ts +0 -18
  30. package/lib/types/services/clipboard/html-to-udm/paste-plugins/plugin-word.d.ts +0 -18
  31. package/lib/types/services/clipboard/html-to-udm/paste-plugins/type.d.ts +0 -30
  32. package/lib/types/services/clipboard/html-to-udm/utils.d.ts +0 -18
  33. package/lib/types/services/clipboard/udm-to-html/convertor.d.ts +0 -19
  34. package/lib/types/shortcuts/core-editing.shortcut.d.ts +0 -19
  35. package/lib/types/shortcuts/cursor.shortcut.d.ts +0 -25
  36. package/lib/types/views/doc-canvas-view.d.ts +0 -34
package/lib/cjs/index.js CHANGED
@@ -1,2 +1 @@
1
- "use strict";var pt=Object.defineProperty;var gt=(i,t,e)=>t in i?pt(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var C=(i,t,e)=>(gt(i,typeof t!="symbol"?t+"":t,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@univerjs/core"),M=require("@univerjs/engine-render"),P=require("rxjs"),b=require("@univerjs/ui"),E=require("@wendellhu/redi");function ee(i,t){const n=i.getCurrentUniverDocInstance().getUnitId(),r=t.getRenderById(n);if(r==null)return;const{mainComponent:o,scene:a,engine:c}=r;return{document:o,scene:a,engine:c}}function ht(i,t){const e=t.getRenderById(i);if(e==null)return;const{mainComponent:n,scene:r,engine:o}=e;return{document:n,scene:r,engine:o}}var _e=(i=>(i.MAIN="__Document_Render_Main__",i))(_e||{}),Ie=(i=>(i.VIEW_MAIN="viewMain",i.VIEW_TOP="viewTop",i.VIEW_LEFT="viewLeft",i.VIEW_LEFT_TOP="viewLeftTop",i))(Ie||{});const xe=0,Je=2,Qe=10,ft="normalTextSelectionPluginName",Ee={id:"doc.operation.set-selections",type:s.CommandType.OPERATION,handler:(i,t)=>!0};var St=Object.defineProperty,_t=Object.getOwnPropertyDescriptor,vt=(i,t,e,n)=>{for(var r=n>1?void 0:n?_t(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&St(t,e,r),r},ze=(i,t)=>(e,n)=>t(e,n,i);function We(i){const{startOffset:t,endOffset:e,collapsed:n}=i;return{startOffset:t,endOffset:e,collapsed:n}}exports.TextSelectionManagerService=class extends s.RxDisposable{constructor(e,n){super();C(this,"_currentSelection",null);C(this,"_textSelectionInfo",new Map);C(this,"_textSelection$",new P.BehaviorSubject(null));C(this,"textSelection$",this._textSelection$.asObservable());this._textSelectionRenderManager=e,this._commandService=n,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}getSelections(){var e;return(e=this._getTextRanges(this._currentSelection))==null?void 0:e.textRanges}getActiveRange(){const e=this._getTextRanges(this._currentSelection);if(e==null)return;const{textRanges:n,segmentId:r,style:o}=e,a=n.find(g=>g.isActive());if(a==null)return null;const{startOffset:c,endOffset:l,collapsed:u,startNodePosition:d,endNodePosition:m,direction:p}=a;return c==null||l==null?null:{startOffset:c,endOffset:l,collapsed:u,startNodePosition:d,endNodePosition:m,direction:p,segmentId:r,style:o}}add(e){this._currentSelection!=null&&this._addByParam({...this._currentSelection,textRanges:e,segmentId:"",style:M.NORMAL_TEXT_SELECTION_PLUGIN_STYLE})}replaceTextRanges(e){this._currentSelection!=null&&(this._textSelectionRenderManager.removeAllTextRanges(),this._textSelectionRenderManager.addTextRanges(e))}_syncSelectionFromRenderService(){this._textSelectionRenderManager.textSelectionInner$.pipe(P.takeUntil(this.dispose$)).subscribe(e=>{e!=null&&this._replaceTextRangesWithNoRefresh(e)})}_replaceTextRangesWithNoRefresh(e){if(this._currentSelection==null)return;const n={...this._currentSelection,...e};this._replaceByParam(n),this._textSelection$.next(n);const{unitId:r,subUnitId:o,segmentId:a,style:c,textRanges:l}=n;this._commandService.executeCommand(Ee.id,{unitId:r,subUnitId:o,segmentId:a,style:c,ranges:l.map(We)})}_getTextRanges(e){var o;if(e==null)return;const{unitId:n,subUnitId:r=""}=e;return(o=this._textSelectionInfo.get(n))==null?void 0:o.get(r)}_refresh(e){const n=this._getTextRanges(e);this._textSelectionRenderManager.removeAllTextRanges(),n&&Array.isArray(n.textRanges)&&n.textRanges.length&&this._textSelectionRenderManager.addTextRanges(n.textRanges.map(We))}_replaceByParam(e){const{unitId:n,subUnitId:r,style:o,segmentId:a,textRanges:c}=e;this._textSelectionInfo.has(n)||this._textSelectionInfo.set(n,new Map),this._textSelectionInfo.get(n).set(r,{textRanges:c,style:o,segmentId:a})}_addByParam(e){const{unitId:n,subUnitId:r,textRanges:o,style:a,segmentId:c}=e;this._textSelectionInfo.has(n)||this._textSelectionInfo.set(n,new Map);const l=this._textSelectionInfo.get(n);l.has(r)?l.get(r).textRanges.push(...o):l.set(r,{textRanges:o,style:a,segmentId:c})}};exports.TextSelectionManagerService=vt([ze(0,M.ITextSelectionRenderManager),ze(1,s.ICommandService)],exports.TextSelectionManagerService);function Ue(i,t="",e=0){const{startOffset:n,endOffset:r}=i,o=[],a=n-e,c=r-e;return a>0&&o.push({t:s.TextXActionType.RETAIN,len:a,segmentId:t}),o.push({t:s.TextXActionType.DELETE,len:c-a,line:0,segmentId:t}),o}var It=Object.defineProperty,Ct=Object.getOwnPropertyDescriptor,Mt=(i,t,e,n)=>{for(var r=n>1?void 0:n?Ct(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&It(t,e,r),r},Rt=(i,t)=>(e,n)=>t(e,n,i);exports.DocViewModelManagerService=class extends s.RxDisposable{constructor(e){super();C(this,"_currentViewModelUnitId","");C(this,"_docViewModelMap",new Map);C(this,"_currentDocViewModel$",new P.BehaviorSubject(null));C(this,"currentDocViewModel$",this._currentDocViewModel$.asObservable());this._currentUniverService=e,this._initialize()}_initialize(){this._currentUniverService.currentDoc$.pipe(P.takeUntil(this.dispose$)).subscribe(e=>{if(e==null)return;const n=e.getUnitId();this._setCurrent(n)})}dispose(){this._currentDocViewModel$.complete(),this._docViewModelMap.clear()}getCurrent(){return this._docViewModelMap.get(this._currentViewModelUnitId)}getViewModel(e){var n;return(n=this._docViewModelMap.get(e))==null?void 0:n.docViewModel}_setCurrent(e){var r;const n=this._currentUniverService.getUniverDocInstance(e);if(n==null)throw new Error(`Document data model with id ${e} not found when build view model.`);if(n.getBody()!=null){if(!this._docViewModelMap.has(e)){const o=this._buildDocViewModel(n);this._docViewModelMap.set(e,{unitId:e,docViewModel:o})}if(e===s.DOCS_NORMAL_EDITOR_UNIT_ID_KEY){const o=(r=this._docViewModelMap.get(e))==null?void 0:r.docViewModel;if(o==null)return;o.reset(n)}this._currentViewModelUnitId=e,this._currentDocViewModel$.next(this.getCurrent())}}_buildDocViewModel(e){return new M.DocumentViewModel(e)}};exports.DocViewModelManagerService=Mt([Rt(0,s.IUniverInstanceService)],exports.DocViewModelManagerService);const _={id:"doc.mutation.rich-text-editing",type:s.CommandType.MUTATION,handler:(i,t)=>{const{unitId:e,mutations:n}=t,o=i.get(s.IUniverInstanceService).getUniverDocInstance(e),c=i.get(exports.DocViewModelManagerService).getViewModel(e);if(o==null||c==null)throw new Error(`DocumentDataModel or documentViewModel not found for unitId: ${e}`);if(n.length===0)throw new Error("Mutation's length should great than 0 when call RichTextEditingMutation");const l=o.apply(n),{segmentId:u}=n[0],d=o.getSelfOrHeaderFooterModel(u);return c.getSelfOrHeaderFooterViewModel(u).reset(d),{unitId:e,mutations:l}}},Ce={id:"doc.command.insert-text",type:s.CommandType.COMMAND,handler:async(i,t)=>{const e=i.get(s.IUndoRedoService),n=i.get(s.ICommandService),r=i.get(exports.TextSelectionManagerService),{range:o,segmentId:a,body:c,unitId:l,textRanges:u}=t,{startOffset:d,collapsed:m}=o,p={id:_.id,params:{unitId:l,mutations:[]}},g=new s.TextX;m?d>0&&g.push({t:s.TextXActionType.RETAIN,len:d,segmentId:a}):g.push(...Ue(o,a)),g.push({t:s.TextXActionType.INSERT,body:c,len:c.dataStream.length,line:0,segmentId:a}),p.params.mutations=g.serialize();const h=n.syncExecuteCommand(p.id,p.params);return r.replaceTextRanges(u),h?(e.pushUndoRedo({unitID:l,undoMutations:[{id:_.id,params:h}],redoMutations:[{id:_.id,params:p.params}],undo(){return n.syncExecuteCommand(_.id,h),r.replaceTextRanges([o]),!0},redo(){return n.syncExecuteCommand(_.id,p.params),r.replaceTextRanges(u),!0}}),!0):!1}};var L=(i=>(i[i.LEFT=0]="LEFT",i[i.RIGHT=1]="RIGHT",i))(L||{});const Me={id:"doc.command.delete-text",type:s.CommandType.COMMAND,handler:async(i,t)=>{const e=i.get(s.ICommandService),n=i.get(s.IUndoRedoService),r=i.get(exports.TextSelectionManagerService),{range:o,segmentId:a,unitId:c,direction:l,textRanges:u,len:d=1}=t,{startOffset:m}=o,p={id:_.id,params:{unitId:c,mutations:[]}},g=new s.TextX;m>0&&g.push({t:s.TextXActionType.RETAIN,len:l===0?m-d:m,segmentId:a}),g.push({t:s.TextXActionType.DELETE,len:d,line:0,segmentId:a}),p.params.mutations=g.serialize();const h=e.syncExecuteCommand(p.id,p.params);return r.replaceTextRanges(u),h&&n.pushUndoRedo({unitID:c,undoMutations:[{id:_.id,params:h}],redoMutations:[{id:_.id,params:p.params}],undo(){return e.syncExecuteCommand(_.id,h),r.replaceTextRanges([o]),!0},redo(){return e.syncExecuteCommand(_.id,p.params),r.replaceTextRanges(u),!0}}),!1}},Pe={id:"doc.command.update-text",type:s.CommandType.COMMAND,handler:async(i,t)=>{const{range:e,segmentId:n,updateBody:r,coverType:o,unitId:a,textRanges:c}=t,l=i.get(s.ICommandService),u=i.get(s.IUndoRedoService),d=i.get(exports.TextSelectionManagerService),m={id:_.id,params:{unitId:a,mutations:[]}},p=new s.TextX,{startOffset:g,endOffset:h}=e;p.push({t:s.TextXActionType.RETAIN,len:g,segmentId:n}),p.push({t:s.TextXActionType.RETAIN,body:r,len:h-g,segmentId:n,coverType:o}),m.params.mutations=p.serialize();const f=l.syncExecuteCommand(m.id,m.params);return d.replaceTextRanges(c),f?(u.pushUndoRedo({unitID:a,undoMutations:[{id:_.id,params:f}],redoMutations:[{id:_.id,params:m.params}],undo(){return l.syncExecuteCommand(_.id,f),d.replaceTextRanges(c),!0},redo(){return l.syncExecuteCommand(_.id,m.params),d.replaceTextRanges(c),!0}}),!0):!1}};function Tt(i,t){const e=[];for(let n=0,r=i.length;n<r;n++)i[n]===s.DataStreamTreeTokenType.PARAGRAPH&&e.push({startIndex:n});if(t)for(const n of e)t.bullet&&(n.bullet=s.Tools.deepClone(t.bullet)),t.paragraphStyle&&(n.paragraphStyle=s.Tools.deepClone(t.paragraphStyle));return e}const Ne={id:"doc.command.break-line",type:s.CommandType.COMMAND,handler:async i=>{var h,f;const t=i.get(exports.TextSelectionManagerService),e=i.get(s.IUniverInstanceService),n=i.get(s.ICommandService),r=t.getActiveRange();if(r==null)return!1;const o=e.getCurrentUniverDocInstance(),a=o.getUnitId(),{startOffset:c,segmentId:l,style:u}=r,d=[{startOffset:c+1,endOffset:c+1,style:u}],p=((f=(h=o.getBody())==null?void 0:h.paragraphs)!=null?f:[]).find(S=>S.startIndex>=c);return await n.executeCommand(Ce.id,{unitId:a,body:{dataStream:s.DataStreamTreeTokenType.PARAGRAPH,paragraphs:Tt(s.DataStreamTreeTokenType.PARAGRAPH,p)},range:r,textRanges:d,segmentId:l})}},et={id:"doc.command.inner-paste",type:s.CommandType.COMMAND,handler:async(i,t)=>{const{segmentId:e,body:n,textRanges:r}=t,o=i.get(s.IUndoRedoService),a=i.get(s.ICommandService),c=i.get(exports.TextSelectionManagerService),l=i.get(s.IUniverInstanceService),u=c.getSelections();if(!Array.isArray(u)||u.length===0)return!1;const m=l.getCurrentUniverDocInstance().getUnitId(),p={id:_.id,params:{unitId:m,mutations:[]}},g=new s.MemoryCursor;g.reset();const h=new s.TextX;for(const S of u){const{startOffset:v,endOffset:I,collapsed:R}=S,T=v-g.cursor;R?h.push({t:s.TextXActionType.RETAIN,len:T,segmentId:e}):h.push(...Ue(S,e,g.cursor)),h.push({t:s.TextXActionType.INSERT,body:n,len:n.dataStream.length,line:0,segmentId:e}),g.reset(),g.moveCursor(I)}p.params.mutations=h.serialize();const f=a.syncExecuteCommand(p.id,p.params);return c.replaceTextRanges(r),f?(o.pushUndoRedo({unitID:m,undoMutations:[{id:_.id,params:f}],redoMutations:[{id:_.id,params:p.params}],undo(){return a.syncExecuteCommand(_.id,f),c.replaceTextRanges(u),!0},redo(){return a.syncExecuteCommand(_.id,p.params),c.replaceTextRanges(r),!0}}),!0):!1}},Re={id:"doc.command.inner-cut",type:s.CommandType.COMMAND,handler:async(i,t)=>{const{segmentId:e,textRanges:n}=t,r=i.get(s.IUndoRedoService),o=i.get(s.ICommandService),a=i.get(exports.TextSelectionManagerService),c=i.get(s.IUniverInstanceService),l=a.getSelections();if(!Array.isArray(l)||l.length===0)return!1;const u=c.getCurrentUniverDocInstance().getUnitId(),d=c.getUniverDocInstance(u),m=s.getDocsUpdateBody(d.snapshot,e);if(m==null)return!1;const p={id:_.id,params:{unitId:u,mutations:[]}},g=new s.MemoryCursor;g.reset();const h=new s.TextX;for(const S of l){const{startOffset:v,endOffset:I,collapsed:R}=S,T=v-g.cursor;R?h.push({t:s.TextXActionType.RETAIN,len:T,segmentId:e}):h.push(...yt(S,m,e,g.cursor)),g.reset(),g.moveCursor(I)}p.params.mutations=h.serialize();const f=o.syncExecuteCommand(p.id,p.params);return a.replaceTextRanges(n),f?(r.pushUndoRedo({unitID:u,undoMutations:[{id:_.id,params:f}],redoMutations:[{id:_.id,params:p.params}],undo(){return o.syncExecuteCommand(_.id,f),a.replaceTextRanges(l),!0},redo(){return o.syncExecuteCommand(_.id,p.params),a.replaceTextRanges(n),!0}}),!0):!1}};function yt(i,t,e="",n=0){const{startOffset:r,endOffset:o}=i,a=[],{paragraphs:c=[]}=t,l=r-n,u=o-n,d=c==null?void 0:c.find(m=>m.startIndex-n>=l&&m.startIndex-n<=u);if(l>0&&a.push({t:s.TextXActionType.RETAIN,len:l,segmentId:e}),d&&d.startIndex-n>l){const m=d.startIndex-n;a.push({t:s.TextXActionType.DELETE,len:m-l,line:0,segmentId:e}),a.push({t:s.TextXActionType.RETAIN,len:1,segmentId:e}),u>m+1&&a.push({t:s.TextXActionType.DELETE,len:u-m-1,line:0,segmentId:e})}else a.push({t:s.TextXActionType.DELETE,len:u-l,line:0,segmentId:e});return a}const Ot=10,xt=6;function Dt(){return s.Tools.generateRandomId(xt)}function bt(i){const t=i.match(/data-copy-id="([^\s]+)"/);return t&&t[1]?t[1]:null}class Et{constructor(){C(this,"_cache",new s.LRUMap(Ot))}set(t,e){this._cache.set(t,e)}get(t){return this._cache.get(t)}clear(){this._cache.clear()}}const He=new Et;function Ut(i){const t=i.style,e={};for(let n=0;n<t.length;n++){const r=t[n],o=t.getPropertyValue(r);switch(r){case"margin-top":{const a=parseInt(o);e.spaceAbove=/pt/.test(o)?De(a):a;break}case"margin-bottom":{const a=parseInt(o);e.spaceBelow=/pt/.test(o)?De(a):a;break}}}return Object.getOwnPropertyNames(e).length?e:null}function De(i){return i/.75}function Ae(i){const t=i.style,e={},n=i.tagName.toLowerCase();switch(n){case"b":case"em":case"strong":{e.bl=s.BooleanNumber.TRUE;break}case"s":{e.st={s:s.BooleanNumber.TRUE};break}case"u":{e.ul={s:s.BooleanNumber.TRUE};break}case"i":{e.it=s.BooleanNumber.TRUE;break}case"sub":case"sup":{e.va=n==="sup"?s.BaselineOffset.SUPERSCRIPT:s.BaselineOffset.SUBSCRIPT;break}}for(let r=0;r<t.length;r++){const o=t[r],a=t.getPropertyValue(o);switch(o){case"font-family":{e.ff=a;break}case"font-size":{const c=parseInt(a);Number.isNaN(c)||(e.fs=/pt$/.test(a)?De(c):c);break}case"font-style":{a==="italic"&&(e.it=s.BooleanNumber.TRUE);break}case"font-weight":{Number(a)>400&&(e.bl=s.BooleanNumber.TRUE);break}case"text-decoration":{/underline/.test(a)?e.ul={s:s.BooleanNumber.TRUE}:/overline/.test(a)?e.ol={s:s.BooleanNumber.TRUE}:/line-through/.test(a)&&(e.st={s:s.BooleanNumber.TRUE});break}case"color":{const c=new s.ColorKit(a);c.isValid&&(e.cl={rgb:c.toRgbString()});break}case"background-color":{const c=new s.ColorKit(a);c.isValid&&(e.bg={rgb:c.toRgbString()});break}}}return e}function Pt(i){const t=new DOMParser,e=`<x-univer id="univer-root">${i}</x-univer>`;return t.parseFromString(e,"text/html").querySelector("#univer-root")}function Ge(i,t){const e=i.tagName.toLowerCase();return typeof t=="string"?e===t:Array.isArray(t)?t.some(n=>n===e):t(i)}const ve=class ve{constructor(){C(this,"_styleCache",new Map);C(this,"_styleRules",[]);C(this,"_afterProcessRules",[])}static use(t){if(this._pluginList.includes(t))throw new Error(`Univer paste plugin ${t.name} already added`);this._pluginList.push(t)}convert(t){const e=ve._pluginList.find(o=>o.checkPasteType(t)),n=Pt(t),r={dataStream:"",textRuns:[]};return e&&(this._styleRules=[...e.stylesRules],this._afterProcessRules=[...e.afterProcessRules]),this._styleCache.clear(),this._process(null,n==null?void 0:n.childNodes,r),this._styleCache.clear(),this._styleRules=[],this._afterProcessRules=[],r}_process(t,e,n){var r;for(const o of e)if(o.nodeType===Node.TEXT_NODE){const a=(r=o.nodeValue)==null?void 0:r.replace(/[\r\n]/g,"");let c;t&&this._styleCache.has(t)&&(c=this._styleCache.get(t)),n.dataStream+=a,c&&Object.getOwnPropertyNames(c).length&&n.textRuns.push({st:n.dataStream.length-a.length,ed:n.dataStream.length,ts:c})}else if(o.nodeType===Node.ELEMENT_NODE){const a=t?this._styleCache.get(t):{},c=this._styleRules.find(({filter:m})=>Ge(o,m)),l=c?c.getStyle(o):Ae(o);this._styleCache.set(o,{...a,...l});const{childNodes:u}=o;this._process(o,u,n);const d=this._afterProcessRules.find(({filter:m})=>Ge(o,m));d&&d.handler(n,o)}}};C(ve,"_pluginList",[]);let Q=ve;const Nt={name:"univer-doc-paste-plugin-lark",checkPasteType(i){return/lark-record-clipboard/i.test(i)},stylesRules:[{filter:["s"],getStyle(i){const t=Ae(i);return{st:{s:s.BooleanNumber.TRUE},...t}}}],afterProcessRules:[{filter(i){return i.tagName==="DIV"&&/ace-line/i.test(i.className)},handler(i){i.paragraphs==null&&(i.paragraphs=[]),i.paragraphs.push({startIndex:i.dataStream.length}),i.dataStream+="\r"}}]},At={name:"univer-doc-paste-plugin-word",checkPasteType(i){return/word|mso/i.test(i)},stylesRules:[{filter:["b"],getStyle(i){const t=Ae(i);return{bl:s.BooleanNumber.TRUE,...t}}}],afterProcessRules:[{filter(i){return i.tagName==="P"&&/mso/i.test(i.className)},handler(i,t){i.paragraphs==null&&(i.paragraphs=[]);const e={startIndex:i.dataStream.length},n=Ut(t);n&&(e.paragraphStyle=n),i.paragraphs.push(e),i.dataStream+="\r"}}]};function wt(i,t){const{st:e,ed:n,ts:r={}}=t,{ff:o,fs:a,it:c,bl:l,ul:u,st:d,ol:m,bg:p,cl:g,va:h}=r;let f=i.slice(e,n);const S=[];return c===s.BooleanNumber.TRUE&&(f=`<i>${f}</i>`),h===s.BaselineOffset.SUPERSCRIPT?f=`<sup>${f}</sup>`:h===s.BaselineOffset.SUBSCRIPT&&(f=`<sub>${f}</sub>`),(u==null?void 0:u.s)===s.BooleanNumber.TRUE&&(f=`<u>${f}</u>`),(d==null?void 0:d.s)===s.BooleanNumber.TRUE&&(f=`<s>${f}</s>`),l===s.BooleanNumber.TRUE&&(f=`<strong>${f}</strong>`),o&&S.push(`font-family: ${o}`),g&&S.push(`color: ${g.rgb}`),a&&S.push(`font-size: ${a}px`),m&&S.push("text-decoration: overline"),p&&S.push(`background: ${p.rgb}`),S.length?`<span style="${S.join(";")}">${f}</span>`:f}function Ye(i,t=!0){const{dataStream:e,textRuns:n=[],paragraphs:r=[]}=i;let o=0;const a=[],c=[];for(const l of n){const{st:u,ed:d}=l;if(u!==o&&a.push(e.slice(o,u)),a.push(wt(e,l)),o=d,t)for(const m of r){const{startIndex:p,paragraphStyle:g={}}=m;if(p>=u&&p<=d){const{spaceAbove:h,spaceBelow:f}=g,S=[];h!=null&&(typeof h=="number"?S.push(`margin-top: ${h}px`):S.push(`margin-top: ${h.v}px`)),f!=null&&(typeof f=="number"?S.push(`margin-bottom: ${f}px`):S.push(`margin-bottom: ${f.v}px`)),c.push(`<p className="UniverNormal" ${S.length?`style="${S.join(";")}"`:""}>${a.join("")}</p>`),a.length=0}}}return c.join("")+a.join("")}class Lt{convert(t){if(t.length===0)throw new Error("The bodyList length at least to be 1");if(t.length===1)return Ye(t[0]);let e="";for(const n of t)e+='<p className="UniverNormal">',e+=Ye(n,!1),e+="</p>";return e}}var Bt=Object.defineProperty,$t=Object.getOwnPropertyDescriptor,Ft=(i,t,e,n)=>{for(var r=n>1?void 0:n?$t(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&Bt(t,e,r),r},G=(i,t)=>(e,n)=>t(e,n,i);Q.use(At);Q.use(Nt);function jt(i){const t=i.replace(/\n/g,"\r"),e=[];for(let n=0;n<t.length;n++)t[n]==="\r"&&e.push({startIndex:n});return{dataStream:t,paragraphs:e}}const te=E.createIdentifier("doc.clipboard-service");let be=class extends s.Disposable{constructor(t,e,n,r,o){super();C(this,"_clipboardHooks",[]);C(this,"_htmlToUDM",new Q);C(this,"_umdToHtml",new Lt);this._currentUniverService=t,this._logService=e,this._commandService=n,this._clipboardInterfaceService=r,this._textSelectionManagerService=o}async copy(){const t=this._getDocumentBodyInRanges();try{this._setClipboardData(t)}catch(e){return this._logService.error("[DocClipboardService] copy failed",e),!1}return!0}async cut(){return this._cut()}async paste(t){const e=await this._generateBodyFromClipboardItems(t);return this._paste(e)}async legacyPaste(t,e){const n=this._generateBodyFromHtmlAndText(t,e);return this._paste(n)}async _cut(){var o;const{segmentId:t,endOffset:e,style:n}=(o=this._textSelectionManagerService.getActiveRange())!=null?o:{},r=this._textSelectionManagerService.getSelections();if(t==null&&this._logService.error("[DocClipboardController] segmentId is not existed"),e==null||r==null)return!1;this.copy();try{let a=e;for(const l of r){const{startOffset:u,endOffset:d}=l;u==null||d==null||d<=e&&(a-=d-u)}const c=[{startOffset:a,endOffset:a,style:n}];return this._commandService.executeCommand(Re.id,{segmentId:t,textRanges:c})}catch{return this._logService.error("[DocClipboardController] cut content failed"),!1}}async _paste(t){var a;const{segmentId:e,endOffset:n,style:r}=(a=this._textSelectionManagerService.getActiveRange())!=null?a:{},o=this._textSelectionManagerService.getSelections();if(e==null&&this._logService.error("[DocClipboardController] segmentId does not exist!"),n==null||o==null)return!1;try{let c=n;for(const u of o){const{startOffset:d,endOffset:m}=u;d==null||m==null||m<=n&&(c+=t.dataStream.length-(m-d))}const l=[{startOffset:c,endOffset:c,style:r}];return this._commandService.executeCommand(et.id,{body:t,segmentId:e,textRanges:l})}catch{return this._logService.error("[DocClipboardController]","clipboard is empty."),!1}}async _setClipboardData(t){const e=Dt(),n=t.length>1?t.map(o=>o.dataStream).join(`
2
- `):t[0].dataStream;let r=this._umdToHtml.convert(t);return t.length===1&&(r=r.replace(/(<[a-z]+)/,(o,a)=>`${a} data-copy-id="${e}"`),He.set(e,t[0])),this._clipboardInterfaceService.write(n,r)}addClipboardHook(t){return this._clipboardHooks.push(t),s.toDisposable(()=>{const e=this._clipboardHooks.indexOf(t);e>-1&&this._clipboardHooks.splice(e,1)})}_getDocumentBodyInRanges(){const t=this._textSelectionManagerService.getSelections(),e=this._currentUniverService.getCurrentUniverDocInstance(),n=[];if(t==null)return n;for(const r of t){const{startOffset:o,endOffset:a,collapsed:c}=r;if(c||o==null||a==null)continue;const l=e.sliceBody(o,a);l!=null&&n.push(l)}return n}async _generateBodyFromClipboardItems(t){try{let e="",n="";for(const r of t)for(const o of r.types)o===b.PLAIN_TEXT_CLIPBOARD_MIME_TYPE?n=await r.getType(o).then(a=>a&&a.text()):o===b.HTML_CLIPBOARD_MIME_TYPE&&(e=await r.getType(o).then(a=>a&&a.text()));return this._generateBodyFromHtmlAndText(e,n)}catch(e){return Promise.reject(e)}}_generateBodyFromHtmlAndText(t,e){if(!t){if(e)return jt(e);throw new Error("[DocClipboardService] html and text cannot be both empty!")}const n=bt(t);if(n){const r=He.get(n);if(r)return r}return this._htmlToUDM.convert(t)}};be=Ft([G(0,s.IUniverInstanceService),G(1,s.ILogService),G(2,s.ICommandService),G(3,b.IClipboardInterfaceService),G(4,E.Inject(exports.TextSelectionManagerService))],be);function Te(i){return i.getContextValue(s.FOCUSING_DOC)||i.getContextValue(s.EDITOR_ACTIVATED)}const we=999,tt={id:b.CopyCommand.id,name:"doc.command.copy",type:s.CommandType.COMMAND,multi:!0,priority:we,preconditions:Te,handler:async i=>i.get(te).copy()},nt={id:b.CutCommand.id,name:"doc.command.cut",type:s.CommandType.COMMAND,multi:!0,priority:we,preconditions:Te,handler:async i=>i.get(te).cut()},rt={id:b.PasteCommand.id,name:"doc.command.paste",type:s.CommandType.COMMAND,multi:!0,priority:we,preconditions:Te,handler:async i=>{const t=i.get(te),n=await i.get(b.IClipboardInterfaceService).read();return n.length===0?!1:t.paste(n)}};var Vt=Object.defineProperty,kt=Object.getOwnPropertyDescriptor,Xt=(i,t,e,n)=>{for(var r=n>1?void 0:n?kt(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&Vt(t,e,r),r},Ke=(i,t)=>(e,n)=>t(e,n,i);exports.DocSkeletonManagerService=class extends s.RxDisposable{constructor(e,n){super();C(this,"_currentSkeletonUnitId","");C(this,"_docSkeletonMap",new Map);C(this,"_currentSkeleton$",new P.BehaviorSubject(null));C(this,"currentSkeleton$",this._currentSkeleton$.asObservable());C(this,"_currentSkeletonBefore$",new P.BehaviorSubject(null));C(this,"currentSkeletonBefore$",this._currentSkeletonBefore$.asObservable());this._localeService=e,this._docViewModelManagerService=n,this._initialize()}_initialize(){this._docViewModelManagerService.currentDocViewModel$.pipe(P.takeUntil(this.dispose$)).subscribe(e=>{e!=null&&this._setCurrent(e)})}dispose(){this._currentSkeletonBefore$.complete(),this._currentSkeleton$.complete(),this._docSkeletonMap.clear()}getCurrent(){return this.getSkeletonByUnitId(this._currentSkeletonUnitId)}makeDirtyCurrent(e=!0){this.makeDirty(this._currentSkeletonUnitId,e)}makeDirty(e,n=!0){const r=this.getSkeletonByUnitId(e);r!=null&&(r.dirty=n)}getSkeletonByUnitId(e){return this._docSkeletonMap.get(e)}_setCurrent(e){const{unitId:n}=e;if(this._docSkeletonMap.has(n)){const r=this.getSkeletonByUnitId(n);r.skeleton.calculate(),r.dirty=!0}else{const r=this._buildSkeleton(e.docViewModel);r.calculate(),this._docSkeletonMap.set(n,{unitId:n,skeleton:r,dirty:!1})}return this._currentSkeletonUnitId=n,this._currentSkeletonBefore$.next(this.getCurrent()),this._currentSkeleton$.next(this.getCurrent()),this.getCurrent()}_buildSkeleton(e){return M.DocumentSkeleton.create(e,this._localeService)}};exports.DocSkeletonManagerService=Xt([Ke(0,E.Inject(s.LocaleService)),Ke(1,E.Inject(exports.DocViewModelManagerService))],exports.DocSkeletonManagerService);const Le={id:"doc.command.delete-left",type:s.CommandType.COMMAND,handler:async i=>{var T;const t=i.get(exports.TextSelectionManagerService),e=i.get(exports.DocSkeletonManagerService),n=i.get(s.IUniverInstanceService),r=i.get(s.ICommandService),o=t.getActiveRange(),a=t.getSelections(),c=(T=e.getCurrent())==null?void 0:T.skeleton;let l=!0;if(o==null||c==null||a==null)return!1;const u=n.getCurrentUniverDocInstance(),{startOffset:d,collapsed:m,segmentId:p,style:g}=o,h=c.findNodeByCharIndex(d),f=M.hasListSpan(h),S=M.isIndentBySpan(h,u.getBody());let v=d;const I=c.findNodeByCharIndex(d-1);if(M.isFirstSpan(h)&&I!==h&&(f===!0||S===!0)){const O=M.getParagraphBySpan(h,u.getBody());if(O==null)return!1;const x=O==null?void 0:O.startIndex,D={startIndex:0},U=O.paragraphStyle;if(f===!0){const y=O.paragraphStyle;y&&(D.paragraphStyle=y)}else if(S===!0){const y=O.bullet;y&&(D.bullet=y),U!=null&&(D.paragraphStyle={...U},delete D.paragraphStyle.hanging,delete D.paragraphStyle.indentStart)}const N=[{startOffset:v,endOffset:v,style:g}];l=await r.executeCommand(Pe.id,{unitId:u.getUnitId(),updateBody:{dataStream:"",paragraphs:[{...D}]},range:{startOffset:x,endOffset:x+1},textRanges:N,coverType:s.UpdateDocsAttributeType.REPLACE,segmentId:p})}else if(m===!0){if(I==null)return!0;if(I.content==="\r")l=await r.executeCommand($e.id,{direction:L.LEFT,range:o});else{v-=I.count;const O=[{startOffset:v,endOffset:v,style:g}];l=await r.executeCommand(Me.id,{unitId:u.getUnitId(),range:o,segmentId:p,direction:L.LEFT,len:I.count,textRanges:O})}}else{const O=it(o,a);l=await r.executeCommand(Re.id,{segmentId:p,textRanges:O})}return l}},Be={id:"doc.command.delete-right",type:s.CommandType.COMMAND,handler:async i=>{var h;const t=i.get(exports.TextSelectionManagerService),e=i.get(exports.DocSkeletonManagerService),n=i.get(s.IUniverInstanceService),r=i.get(s.ICommandService),o=t.getActiveRange(),a=t.getSelections(),c=(h=e.getCurrent())==null?void 0:h.skeleton;let l;if(o==null||c==null||a==null)return!1;const u=n.getCurrentUniverDocInstance(),{startOffset:d,collapsed:m,segmentId:p,style:g}=o;if(d===u.getBody().dataStream.length-2&&m)return!0;if(m===!0){const f=c.findNodeByCharIndex(d);if(f.content==="\r")l=await r.executeCommand($e.id,{direction:L.RIGHT,range:o});else{const S=[{startOffset:d,endOffset:d,style:g}];l=await r.executeCommand(Me.id,{unitId:u.getUnitId(),range:o,segmentId:p,direction:L.RIGHT,textRanges:S,len:f.count})}}else{const f=it(o,a);l=await r.executeCommand(Re.id,{segmentId:p,textRanges:f})}return l}},$e={id:"doc.command.merge-two-paragraph",type:s.CommandType.COMMAND,handler:async(i,t)=>{var U,N,y;const e=i.get(exports.TextSelectionManagerService),n=i.get(s.IUniverInstanceService),r=i.get(s.ICommandService),o=i.get(s.IUndoRedoService),{direction:a,range:c}=t,l=e.getActiveRange(),u=e.getSelections();if(l==null||u==null)return!1;const d=n.getCurrentUniverDocInstance(),{startOffset:m,collapsed:p,segmentId:g,style:h}=l;if(!p)return!1;const f=a===L.LEFT?m:m+1,S=(y=(N=(U=d.getBody())==null?void 0:U.paragraphs)==null?void 0:N.find(A=>A.startIndex>=f))==null?void 0:y.startIndex,v=zt(d.getBody(),f,S),I=a===L.LEFT?m-1:m,R=d.getUnitId(),T=[{startOffset:I,endOffset:I,style:h}],O={id:_.id,params:{unitId:R,mutations:[]}},x=new s.TextX;x.push({t:s.TextXActionType.RETAIN,len:a===L.LEFT?m-1:m,segmentId:g}),v.dataStream.length&&x.push({t:s.TextXActionType.INSERT,body:v,len:v.dataStream.length,line:0,segmentId:g}),x.push({t:s.TextXActionType.RETAIN,len:1,segmentId:g}),x.push({t:s.TextXActionType.DELETE,len:S+1-f,line:0,segmentId:g}),O.params.mutations=x.serialize();const D=r.syncExecuteCommand(O.id,O.params);return e.replaceTextRanges(T),D?(o.pushUndoRedo({unitID:R,undoMutations:[{id:_.id,params:D}],redoMutations:[{id:_.id,params:O.params}],undo(){return r.syncExecuteCommand(_.id,D),e.replaceTextRanges([c]),!0},redo(){return r.syncExecuteCommand(_.id,O.params),e.replaceTextRanges(T),!0}}),!0):!1}};function zt(i,t,e){const{textRuns:n}=i,r=i.dataStream.substring(t,e);if(n==null)return{dataStream:r};const o=[];for(const a of n){const{st:c,ed:l}=a;l<=t||c>=e||(c<t?o.push({...a,st:0,ed:l-t}):l>e?o.push({...a,st:c-t,ed:e-t}):o.push({...a,st:c-t,ed:l-t}))}return{dataStream:r,textRuns:o}}function it(i,t){let e=i.endOffset;for(const r of t){const{startOffset:o,endOffset:a}=r;o==null||a==null||a<=i.endOffset&&(e-=a-o)}return[{startOffset:e,endOffset:e,style:i.style}]}class Fe{constructor(){C(this,"_previousActiveRange",null);C(this,"_undoMutationParamsCache",[]);C(this,"_redoMutationParamsCache",[])}clearUndoRedoMutationParamsCache(){this._undoMutationParamsCache=[],this._redoMutationParamsCache=[]}setActiveRange(t){this._previousActiveRange=t}pushUndoRedoMutationParams(t,e){this._undoMutationParamsCache.push(t),this._redoMutationParamsCache.push(e)}fetchComposedUndoRedoMutationParams(){if(this._undoMutationParamsCache.length===0||this._previousActiveRange==null||this._redoMutationParamsCache.length===0)return null;const{unitId:t}=this._undoMutationParamsCache[0],e={unitId:t,mutations:this._undoMutationParamsCache.reverse().reduce((r,o)=>s.TextX.compose(r,o.mutations),[])};return{redoMutationParams:{unitId:t,mutations:this._redoMutationParamsCache.reduce((r,o)=>s.TextX.compose(r,o.mutations),[])},undoMutationParams:e,previousActiveRange:this._previousActiveRange}}dispose(){this._undoMutationParamsCache=[],this._redoMutationParamsCache=[],this._previousActiveRange=null}}const je={id:"doc.command.ime-input",type:s.CommandType.COMMAND,handler:async(i,t)=>{const{unitId:e,newText:n,oldTextLen:r,range:o,segmentId:a,textRanges:c,isCompositionEnd:l}=t,u=i.get(s.ICommandService),d=i.get(s.IUndoRedoService),m=i.get(exports.TextSelectionManagerService),p=i.get(Fe),g={id:_.id,params:{unitId:e,mutations:[]}},h=new s.TextX;o.collapsed?h.push({t:s.TextXActionType.RETAIN,len:o.startOffset,segmentId:a}):h.push(...Ue(o,a)),r>0&&h.push({t:s.TextXActionType.DELETE,len:r,line:0,segmentId:a}),h.push({t:s.TextXActionType.INSERT,body:{dataStream:n},len:n.length,line:0,segmentId:a}),g.params.mutations=h.serialize();const f=u.syncExecuteCommand(g.id,g.params);if(p.pushUndoRedoMutationParams(f,g.params),m.replaceTextRanges(c),l){if(f){const S=p.fetchComposedUndoRedoMutationParams();if(S==null)return!1;const{undoMutationParams:v,redoMutationParams:I,previousActiveRange:R}=S;return d.pushUndoRedo({unitID:e,undoMutations:[{id:_.id,params:v}],redoMutations:[{id:_.id,params:I}],undo(){return u.syncExecuteCommand(_.id,v),m.replaceTextRanges([R]),!0},redo(){return u.syncExecuteCommand(_.id,I),m.replaceTextRanges(c),!0}}),!0}}else return!!f;return!1}},z={id:"doc.command.set-inline-format-bold",type:s.CommandType.COMMAND,handler:async()=>!0},ne={id:"doc.command.set-inline-format-italic",type:s.CommandType.COMMAND,handler:async()=>!0},re={id:"doc.command.set-inline-format-underline",type:s.CommandType.COMMAND,handler:async()=>!0},ie={id:"doc.command.set-inline-format-strikethrough",type:s.CommandType.COMMAND,handler:async()=>!0},B={id:"doc.command.set-inline-format-subscript",type:s.CommandType.COMMAND,handler:async()=>!0},k={id:"doc.command.set-inline-format-superscript",type:s.CommandType.COMMAND,handler:async()=>!0},W={id:"doc.command.set-inline-format-fontsize",type:s.CommandType.COMMAND,handler:async()=>!0},H={id:"doc.command.set-inline-format-font-family",type:s.CommandType.COMMAND,handler:async()=>!0},oe={id:"doc.command.set-inline-format-text-color",type:s.CommandType.COMMAND,handler:async()=>!0},ot={[z.id]:"bl",[ne.id]:"it",[re.id]:"ul",[ie.id]:"st",[W.id]:"fs",[H.id]:"ff",[oe.id]:"cl",[B.id]:"va",[k.id]:"va"},Ve={id:"doc.command.set-inline-format",type:s.CommandType.COMMAND,handler:async(i,t)=>{const{segmentId:e,value:n,preCommandId:r}=t,o=i.get(s.IUndoRedoService),a=i.get(s.ICommandService),c=i.get(exports.TextSelectionManagerService),l=i.get(s.IUniverInstanceService),u=c.getSelections();if(!Array.isArray(u)||u.length===0)return!1;let d=l.getCurrentUniverDocInstance(),m=d.getUnitId();m===s.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY&&(d=l.getUniverDocInstance(s.DOCS_NORMAL_EDITOR_UNIT_ID_KEY),m=d.getUnitId());let p;switch(r){case z.id:case ne.id:case re.id:case ie.id:case B.id:case k.id:{p=Ht(d.getBody().textRuns,r,u);break}case W.id:case H.id:{p=n;break}case oe.id:{p={rgb:n};break}default:throw new Error(`Unknown command: ${r} in handleInlineFormat`)}const g={id:_.id,params:{unitId:m,mutations:[]}},h=new s.TextX,f=new s.MemoryCursor;f.reset();for(const I of u){const{startOffset:R,endOffset:T}=I,O={dataStream:"",textRuns:[{st:0,ed:T-R,ts:{[ot[r]]:p}}]},x=R-f.cursor;x!==0&&h.push({t:s.TextXActionType.RETAIN,len:x,segmentId:e}),h.push({t:s.TextXActionType.RETAIN,body:O,len:T-R,segmentId:e}),f.reset(),f.moveCursor(T)}g.params.mutations=h.serialize();const S=a.syncExecuteCommand(g.id,g.params),v=[z.id,W.id,H.id,B.id,k.id];return v.includes(r)&&c.refreshSelection(),S?(o.pushUndoRedo({unitID:m,undoMutations:[{id:_.id,params:S}],redoMutations:[{id:_.id,params:g.params}],undo(){return a.syncExecuteCommand(_.id,S),v.includes(r)&&c.refreshSelection(),!0},redo(){return a.syncExecuteCommand(_.id,g.params),v.includes(r)&&c.refreshSelection(),!0}}),!0):!1}};function Wt(i){return i!==null&&typeof i=="object"}function Ht(i,t,e){let n=0,r=0;const o=ot[t];for(;n!==i.length&&r!==e.length;){const{startOffset:a,endOffset:c}=e[r],{st:l,ed:u,ts:d}=i[n];if(c<=l)r++;else if(u<=a)n++;else{if((d==null?void 0:d[o])==null){if(/bl|it/.test(o))return s.BooleanNumber.TRUE;if(/ul|st/.test(o))return{s:s.BooleanNumber.TRUE};if(/va/.test(o))return t===B.id?s.BaselineOffset.SUBSCRIPT:s.BaselineOffset.SUPERSCRIPT}if(Wt(d==null?void 0:d[o])&&d[o].s===s.BooleanNumber.FALSE)return{s:s.BooleanNumber.TRUE};if(t===B.id&&(d==null?void 0:d[o])!==s.BaselineOffset.SUBSCRIPT)return s.BaselineOffset.SUBSCRIPT;if(t===k.id&&(d==null?void 0:d[o])!==s.BaselineOffset.SUPERSCRIPT)return s.BaselineOffset.SUPERSCRIPT;if((d==null?void 0:d[o])===s.BooleanNumber.FALSE)return s.BooleanNumber.TRUE;n++}}return/bl|it/.test(o)?s.BooleanNumber.FALSE:/ul|st/.test(o)?{s:s.BooleanNumber.FALSE}:s.BaselineOffset.NORMAL}const st={id:"doc.command.bullet-list",type:s.CommandType.COMMAND,handler:i=>i.get(s.ICommandService).syncExecuteCommand(ke.id,{listType:s.PresetListType.BULLET_LIST})},at={id:"doc.command.order-list",type:s.CommandType.COMMAND,handler:i=>i.get(s.ICommandService).syncExecuteCommand(ke.id,{listType:s.PresetListType.ORDER_LIST})},ke={id:"doc.command.list-operation",type:s.CommandType.COMMAND,handler:(i,t)=>{var T,O;const e=i.get(exports.TextSelectionManagerService),n=i.get(s.IUniverInstanceService),r=i.get(s.ICommandService),o=i.get(s.IUndoRedoService),{listType:a}=t,c=n.getCurrentUniverDocInstance(),l=e.getActiveRange(),u=(T=c.getBody())==null?void 0:T.paragraphs;if(l==null||u==null)return!1;const d=Gt(l,u),{segmentId:m}=l,p=c.getUnitId(),g=d.every(x=>{var D;return((D=x.bullet)==null?void 0:D.listType)===a}),h=6;let f=s.Tools.generateRandomId(h);if(d.length===1){const x=u.indexOf(d[0]),D=u[x-1],U=u[x+1];D&&D.bullet&&D.bullet.listType===a?f=D.bullet.listId:U&&U.bullet&&U.bullet.listType===a&&(f=U.bullet.listId)}const S={id:_.id,params:{unitId:p,mutations:[]}},v=new s.MemoryCursor;v.reset();const I=new s.TextX;for(const x of d){const{startIndex:D}=x;I.push({t:s.TextXActionType.RETAIN,len:D-v.cursor,segmentId:m});const U={...x.paragraphStyle,hanging:void 0,indentStart:void 0};I.push({t:s.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[g?{paragraphStyle:U,startIndex:0}:{...x,startIndex:0,bullet:{...(O=x.bullet)!=null?O:{nestingLevel:0,textStyle:{fs:20}},listType:a,listId:f}}]},segmentId:m,coverType:s.UpdateDocsAttributeType.REPLACE}),v.moveCursorTo(D+1)}S.params.mutations=I.serialize();const R=r.syncExecuteCommand(S.id,S.params);return e.refreshSelection(),R&&o.pushUndoRedo({unitID:p,undoMutations:[{id:_.id,params:R}],redoMutations:[{id:_.id,params:S.params}],undo(){return r.syncExecuteCommand(_.id,R),e.refreshSelection(),!0},redo(){return r.syncExecuteCommand(_.id,S.params),e.refreshSelection(),!0}}),!0}};function Gt(i,t){const{startOffset:e,endOffset:n}=i,r=[];let o=-1;for(const a of t){const{startIndex:c}=a;(e>o&&e<=c||n>o&&n<=c||c>=e&&c<=n)&&r.push(a),o=c}return r}const ct={id:"doc.command-replace-content",type:s.CommandType.COMMAND,handler:async(i,t)=>{var h;const{unitId:e,body:n,textRanges:r,segmentId:o=""}=t,a=i.get(s.IUniverInstanceService),c=i.get(s.ICommandService),l=i.get(exports.TextSelectionManagerService),u=i.get(s.IUndoRedoService),d=(h=a.getUniverDocInstance(e))==null?void 0:h.getSnapshot().body,m=l.getSelections();if(d==null||!Array.isArray(m)||m.length===0)return!1;const p=dt(e,o,d,n),g=c.syncExecuteCommand(p.id,p.params);return l.replaceTextRanges(r),g?(u.pushUndoRedo({unitID:e,undoMutations:[{id:_.id,params:g}],redoMutations:[{id:_.id,params:p.params}],undo(){return c.syncExecuteCommand(_.id,g),l.replaceTextRanges(m),!0},redo(){return c.syncExecuteCommand(_.id,p.params),l.replaceTextRanges(r),!0}}),!0):!1}},lt={id:"doc.command-cover-content",type:s.CommandType.COMMAND,handler:async(i,t)=>{var d;const{unitId:e,body:n,segmentId:r=""}=t,o=i.get(s.IUniverInstanceService),a=i.get(s.ICommandService),c=i.get(s.IUndoRedoService),l=(d=o.getUniverDocInstance(e))==null?void 0:d.getSnapshot().body;if(l==null)return!1;const u=dt(e,r,l,n);return a.syncExecuteCommand(u.id,u.params),c.clearUndoRedo(e),!0}};function dt(i,t,e,n){const r={id:_.id,params:{unitId:i,mutations:[]}},o=new s.TextX,a=(e==null?void 0:e.dataStream.length)-2;return a>0&&o.push({t:s.TextXActionType.DELETE,len:a,line:0,segmentId:t}),n.dataStream.length>0&&o.push({t:s.TextXActionType.INSERT,body:n,len:n.dataStream.length,line:0,segmentId:t}),r.params.mutations=o.serialize(),r}const $={id:"doc.operation.move-cursor",type:s.CommandType.OPERATION,handler:(i,t)=>!!t},F={id:"doc.operation.move-selection",type:s.CommandType.OPERATION,handler:(i,t)=>!!t},Yt=(i,t)=>{const e=i.get(s.IUniverInstanceService).getUniverDocInstance(t.unitId),n=(e==null?void 0:e.zoomRatio)||1;return{...s.Tools.deepClone(t),zoomRatio:n}},V={id:"doc.operation.set-zoom-ratio",type:s.CommandType.OPERATION,handler:(i,t)=>{const e=i.get(s.IUniverInstanceService).getUniverDocInstance(t.unitId);if(!e)return!1;const n=e.getSnapshot();return n.settings==null?n.settings={zoomRatio:t.zoomRatio}:n.settings.zoomRatio=t.zoomRatio,!0}},ut={type:s.CommandType.COMMAND,id:"doc.command.set-zoom-ratio",handler:async(i,t)=>{var m,p;const e=i.get(s.ICommandService),n=i.get(s.IUndoRedoService),r=i.get(s.IUniverInstanceService);let o=r.getCurrentUniverDocInstance().getUnitId(),a=1;if(t&&(o=(m=t.documentId)!=null?m:o,a=(p=t.zoomRatio)!=null?p:a),!r.getUniverDocInstance(o))return!1;const l={zoomRatio:a,unitId:o},u=Yt(i,l);return e.syncExecuteCommand(V.id,l)?(n.pushUndoRedo({unitID:o,undoMutations:[{id:V.id,params:u}],redoMutations:[{id:V.id,params:l}]}),!0):!1}},mt={id:"doc.operation.select-all",type:s.CommandType.COMMAND,handler:async i=>{const t=i.get(s.IUniverInstanceService),e=i.get(exports.TextSelectionManagerService),n=t.getCurrentUniverDocInstance().getSnapshot().body;if(n==null)return!1;const r=[{startOffset:0,endOffset:n.dataStream.length-2}];return e.replaceTextRanges(r),!0}};var Kt=Object.defineProperty,qt=Object.getOwnPropertyDescriptor,Zt=(i,t,e,n)=>{for(var r=n>1?void 0:n?qt(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&Kt(t,e,r),r},Y=(i,t)=>(e,n)=>t(e,n,i);let ce=class extends s.RxDisposable{constructor(i,t,e,n,r){super(),this._commandService=i,this._clipboardInterfaceService=t,this._docClipboardService=e,this._textSelectionRenderManager=n,this._contextService=r,this._init()}_init(){[tt,nt,rt].forEach(i=>this.disposeWithMe(this._commandService.registerMultipleCommand(i))),[et,Re].forEach(i=>this.disposeWithMe(this._commandService.registerCommand(i))),this._initLegacyPasteCommand()}_initLegacyPasteCommand(){var i;this._clipboardInterfaceService.supportClipboard||(i=this._textSelectionRenderManager)==null||i.onPaste$.pipe(P.takeUntil(this.dispose$)).subscribe(t=>{var o,a;if(!Te(this._contextService))return;t.event.preventDefault();const e=t.event,n=(o=e.clipboardData)==null?void 0:o.getData("text/html"),r=(a=e.clipboardData)==null?void 0:a.getData("text/plain");this._docClipboardService.legacyPaste(n,r)})}};ce=Zt([s.OnLifecycle(s.LifecycleStages.Steady,ce),Y(0,s.ICommandService),Y(1,b.IClipboardInterfaceService),Y(2,te),Y(3,M.ITextSelectionRenderManager),Y(4,s.IContextService)],ce);var Jt=Object.defineProperty,Qt=Object.getOwnPropertyDescriptor,en=(i,t,e,n)=>{for(var r=n>1?void 0:n?Qt(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&Jt(t,e,r),r},ye=(i,t)=>(e,n)=>t(e,n,i);let le=class extends s.RxDisposable{constructor(i,t,e){super(),this._docSkeletonManagerService=i,this._renderManagerService=t,this._commandService=e,this._initialRenderRefresh(),this._commandExecutedListener()}_initialRenderRefresh(){this._docSkeletonManagerService.currentSkeletonBefore$.pipe(P.takeUntil(this.dispose$)).subscribe(i=>{if(i==null)return;const{skeleton:t,unitId:e}=i,n=this._renderManagerService.getRenderById(e);if(n==null)return;const{mainComponent:r}=n;r.changeSkeleton(t),this._recalculateSizeBySkeleton(n,t)})}_recalculateSizeBySkeleton(i,t){var u;const{mainComponent:e,scene:n}=i,r=e,o=(u=t.getSkeletonData())==null?void 0:u.pages;if(o==null)return;let a=0,c=0;for(let d=0,m=o.length;d<m;d++){const p=o[d],{pageWidth:g,pageHeight:h}=p;r.pageLayoutType===M.PageLayoutType.VERTICAL?(c+=h,c+=r.pageMarginTop,d===m-1&&(c+=r.pageMarginTop),a=Math.max(a,g)):r.pageLayoutType===M.PageLayoutType.HORIZONTAL&&(a+=g,d!==m-1&&(a+=r.pageMarginLeft),c=Math.max(c,h))}r.resize(a,c),[s.DOCS_NORMAL_EDITOR_UNIT_ID_KEY,s.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY].includes(i.unitId)||n.resize(a,c)}_commandExecutedListener(){const i=[_.id],t=[s.DOCS_NORMAL_EDITOR_UNIT_ID_KEY,s.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY];this.disposeWithMe(this._commandService.onCommandExecuted(e=>{var n;if(i.includes(e.id)){const r=e.params,{unitId:o}=r,a=this._docSkeletonManagerService.getSkeletonByUnitId(o);if(a==null)return;const{skeleton:c}=a,l=this._renderManagerService.getRenderById(o);if(l==null)return;if(c.calculate(),t.includes(o)){(n=l.mainComponent)==null||n.makeDirty();return}this._recalculateSizeBySkeleton(l,c)}}))}};le=en([s.OnLifecycle(s.LifecycleStages.Rendered,le),ye(0,E.Inject(exports.DocSkeletonManagerService)),ye(1,M.IRenderManagerService),ye(2,s.ICommandService)],le);var tn=Object.defineProperty,nn=Object.getOwnPropertyDescriptor,rn=(i,t,e,n)=>{for(var r=n>1?void 0:n?nn(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&tn(t,e,r),r},K=(i,t)=>(e,n)=>t(e,n,i);let de=class extends s.Disposable{constructor(t,e,n,r,o){super();C(this,"_liquid",new M.Liquid);C(this,"_pageMarginCache",new Map);this._docSkeletonManagerService=t,this._currentUniverService=e,this._renderManagerService=n,this._commandService=r,this._floatingObjectManagerService=o,this._initialize(),this._commandExecutedListener()}_initialize(){this._initialRenderRefresh(),this._updateOnPluginChange()}_updateOnPluginChange(){this._floatingObjectManagerService.pluginUpdate$.subscribe(t=>{const e=this._docSkeletonManagerService.getCurrent();if(e==null)return;const{unitId:n,skeleton:r}=e,o=this._renderManagerService.getRenderById(n);if(o==null)return;const{mainComponent:a,components:c,scene:l}=o,u=a,{left:d,top:m}=u;t.forEach(p=>{const{unitId:g,subUnitId:h,floatingObjectId:f,floatingObject:S}=p,{left:v=0,top:I=0,width:R=0,height:T=0,angle:O,flipX:x,flipY:D,skewX:U,skewY:N}=S,y=this._pageMarginCache.get(f),A=(y==null?void 0:y.marginLeft)||0,w=(y==null?void 0:y.marginTop)||0;r==null||r.getViewModel().getDataModel().updateDrawing(f,{left:v-d-A,top:I-m-w,height:T,width:R})}),r==null||r.calculate(),a==null||a.makeDirty()})}_initialRenderRefresh(){this._docSkeletonManagerService.currentSkeleton$.subscribe(t=>{if(t==null)return;const{skeleton:e,unitId:n}=t,r=this._renderManagerService.getRenderById(n);if(r==null)return;const{mainComponent:o}=r;o.changeSkeleton(e),this._refreshFloatingObject(n,e,r)})}_commandExecutedListener(){const t=[_.id,V.id],e=[s.DOCS_NORMAL_EDITOR_UNIT_ID_KEY,s.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY];this.disposeWithMe(this._commandService.onCommandExecuted(n=>{var r;if(t.includes(n.id)){const o=n.params,{unitId:a}=o,c=this._docSkeletonManagerService.getCurrent();if(c==null)return;const{unitId:l,skeleton:u}=c;if(a!==l)return;const d=this._renderManagerService.getRenderById(l);if(d==null)return;if(e.includes(l)){(r=d.mainComponent)==null||r.makeDirty();return}this._refreshFloatingObject(l,u,d)}}))}_refreshFloatingObject(t,e,n){const r=e==null?void 0:e.getSkeletonData(),{mainComponent:o,scene:a}=n,c=o;if(!r)return;const{left:l,top:u,pageLayoutType:d,pageMarginLeft:m,pageMarginTop:p}=c,{pages:g}=r,h=[];a.getAncestorScale(),this._liquid.reset(),this._pageMarginCache.clear();for(let f=0,S=g.length;f<S;f++){const v=g[f],{skeDrawings:I,marginLeft:R,marginTop:T}=v;this._liquid.translatePagePadding(v),I.forEach(O=>{const{aLeft:x,aTop:D,height:U,width:N,objectId:y}=O;h.push({unitId:t,subUnitId:s.DEFAULT_DOCUMENT_SUB_COMPONENT_ID,floatingObjectId:y,floatingObject:{left:x+l+this._liquid.x,top:D+u+this._liquid.y,width:N,height:U}}),this._pageMarginCache.set(y,{marginLeft:this._liquid.x,marginTop:this._liquid.y})}),this._liquid.translatePage(v,d,m,p)}this._floatingObjectManagerService.BatchAddOrUpdate(h)}};de=rn([s.OnLifecycle(s.LifecycleStages.Steady,de),K(0,E.Inject(exports.DocSkeletonManagerService)),K(1,s.IUniverInstanceService),K(2,M.IRenderManagerService),K(3,s.ICommandService),K(4,s.IFloatingObjectManagerService)],de);var on=Object.defineProperty,sn=Object.getOwnPropertyDescriptor,an=(i,t,e,n)=>{for(var r=n>1?void 0:n?sn(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&on(t,e,r),r},X=(i,t)=>(e,n)=>t(e,n,i);let ue=class extends s.Disposable{constructor(t,e,n,r,o,a){super();C(this,"_previousIMEContent","");C(this,"_previousIMERange");C(this,"_onStartSubscription");C(this,"_onUpdateSubscription");C(this,"_onEndSubscription");this._docSkeletonManagerService=t,this._currentUniverService=e,this._renderManagerService=n,this._textSelectionRenderManager=r,this._imeInputManagerService=o,this._commandService=a,this._initialize()}dispose(){var t,e,n;(t=this._onStartSubscription)==null||t.unsubscribe(),(e=this._onUpdateSubscription)==null||e.unsubscribe(),(n=this._onEndSubscription)==null||n.unsubscribe()}_initialize(){this._initialOnCompositionstart(),this._initialOnCompositionUpdate(),this._initialOnCompositionend()}_initialOnCompositionstart(){this._onStartSubscription=this._textSelectionRenderManager.onCompositionstart$.subscribe(t=>{if(t==null)return;const{activeRange:e}=t;e!=null&&(this._imeInputManagerService.clearUndoRedoMutationParamsCache(),this._imeInputManagerService.setActiveRange(s.Tools.deepClone(e)),this._previousIMERange=e)})}_initialOnCompositionUpdate(){this._onUpdateSubscription=this._textSelectionRenderManager.onCompositionupdate$.subscribe(async t=>{this._updateContent(t,!0)})}_initialOnCompositionend(){this._onEndSubscription=this._textSelectionRenderManager.onCompositionend$.subscribe(t=>{this._updateContent(t,!1)})}async _updateContent(t,e){var h;const n=(h=this._docSkeletonManagerService.getCurrent())==null?void 0:h.skeleton;if(this._previousIMERange==null||t==null||n==null)return;const r=this._currentUniverService.getCurrentUniverDocInstance(),{event:o,activeRange:a}=t,{startOffset:c,segmentId:l,style:u}=this._previousIMERange;if(n==null||a==null)return;const m=o.data;if(m===this._previousIMEContent&&e)return;const p=m.length,g=[{startOffset:c+p,endOffset:c+p,style:u}];await this._commandService.executeCommand(je.id,{unitId:r.getUnitId(),newText:m,oldTextLen:this._previousIMEContent.length,range:this._previousIMERange,textRanges:g,isCompositionEnd:!e,segmentId:l}),e?(this._previousIMERange.collapsed||(this._previousIMERange.collapsed=!0),this._previousIMEContent=m):this._resetIME()}_resetIME(){this._previousIMEContent="",this._previousIMERange=null,this._imeInputManagerService.clearUndoRedoMutationParamsCache(),this._imeInputManagerService.setActiveRange(null)}_getDocObject(){return ee(this._currentUniverService,this._renderManagerService)}};ue=an([s.OnLifecycle(s.LifecycleStages.Rendered,ue),X(0,E.Inject(exports.DocSkeletonManagerService)),X(1,s.IUniverInstanceService),X(2,M.IRenderManagerService),X(3,M.ITextSelectionRenderManager),X(4,E.Inject(Fe)),X(5,s.ICommandService)],ue);var cn=Object.defineProperty,ln=Object.getOwnPropertyDescriptor,dn=(i,t,e,n)=>{for(var r=n>1?void 0:n?ln(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&cn(t,e,r),r},qe=(i,t)=>(e,n)=>t(e,n,i);let me=class extends s.Disposable{constructor(i,t){super(),this._textSelectionManagerService=i,this._commandService=t,this._commandExecutedListener()}_commandExecutedListener(){const i=[z.id,ne.id,re.id,ie.id,B.id,k.id,W.id,H.id,oe.id];this.disposeWithMe(this._commandService.onCommandExecuted(t=>{i.includes(t.id)&&this._handleInlineFormat(t)}))}_handleInlineFormat(i){var e,n;const{segmentId:t}=(e=this._textSelectionManagerService.getActiveRange())!=null?e:{};t!=null&&this._commandService.executeCommand(Ve.id,{segmentId:t,preCommandId:i.id,...(n=i.params)!=null?n:{}})}};me=dn([s.OnLifecycle(s.LifecycleStages.Rendered,me),qe(0,E.Inject(exports.TextSelectionManagerService)),qe(1,s.ICommandService)],me);var un=Object.defineProperty,mn=Object.getOwnPropertyDescriptor,pn=(i,t,e,n)=>{for(var r=n>1?void 0:n?mn(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&un(t,e,r),r},q=(i,t)=>(e,n)=>t(e,n,i);let pe=class extends s.Disposable{constructor(t,e,n,r,o){super();C(this,"_onInputSubscription");this._docSkeletonManagerService=t,this._currentUniverService=e,this._renderManagerService=n,this._textSelectionManagerService=r,this._commandService=o,this._initialize(),this._commandExecutedListener()}dispose(){var t;(t=this._onInputSubscription)==null||t.unsubscribe()}_initialize(){}_commandExecutedListener(){const t=[$.id,F.id];this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(!t.includes(e.id))return;const n=e.params;switch(e.id){case $.id:return this._handleMoveCursor(n.direction);case F.id:return this._handleShiftMoveSelection(n.direction);default:throw new Error("Unknown command")}}))}_handleShiftMoveSelection(t){var f,S,v;const e=this._textSelectionManagerService.getActiveRange(),n=this._textSelectionManagerService.getSelections(),r=this._currentUniverService.getCurrentUniverDocInstance(),o=(f=this._docSkeletonManagerService.getCurrent())==null?void 0:f.skeleton,a=this._getDocObject();if(e==null||o==null||a==null)return;const{startOffset:c,endOffset:l,style:u,collapsed:d,direction:m}=e;if(n.length>1){let I=Number.POSITIVE_INFINITY,R=Number.NEGATIVE_INFINITY;for(const T of n)I=Math.min(I,T.startOffset),R=Math.max(R,T.endOffset);this._textSelectionManagerService.replaceTextRanges([{startOffset:t===s.Direction.LEFT||t===s.Direction.UP?R:I,endOffset:t===s.Direction.LEFT||t===s.Direction.UP?I:R,style:u}]);return}const p=d||m===M.RANGE_DIRECTION.FORWARD?c:l;let g=d||m===M.RANGE_DIRECTION.FORWARD?l:c;const h=(S=r.getBody().dataStream.length)!=null?S:Number.POSITIVE_INFINITY;if(t===s.Direction.LEFT||t===s.Direction.RIGHT){const I=o.findNodeByCharIndex(g-1),R=o.findNodeByCharIndex(g);g=t===s.Direction.RIGHT?g+R.count:g-((v=I==null?void 0:I.count)!=null?v:0),g=Math.min(h-2,Math.max(0,g)),this._textSelectionManagerService.replaceTextRanges([{startOffset:p,endOffset:g,style:u}])}else{const I=o.findNodeByCharIndex(g),R=a.document.getOffsetConfig(),T=this._getTopOrBottomPosition(o,I,t===s.Direction.DOWN);if(T==null){const x=t===s.Direction.UP?0:h-2;if(x===g)return;this._textSelectionManagerService.replaceTextRanges([{startOffset:p,endOffset:x,style:u}]);return}const O=new M.NodePositionConvertToCursor(R,o).getRangePointData(T,T).cursorList[0];this._textSelectionManagerService.replaceTextRanges([{startOffset:p,endOffset:O.endOffset,style:u}])}}_handleMoveCursor(t){var p,g,h;const e=this._textSelectionManagerService.getActiveRange(),n=this._textSelectionManagerService.getSelections(),r=this._currentUniverService.getCurrentUniverDocInstance(),o=(p=this._docSkeletonManagerService.getCurrent())==null?void 0:p.skeleton,a=this._getDocObject();if(e==null||o==null||a==null||n==null)return;const{startOffset:c,endOffset:l,style:u,collapsed:d}=e,m=(g=r.getBody().dataStream.length)!=null?g:Number.POSITIVE_INFINITY;if(t===s.Direction.LEFT||t===s.Direction.RIGHT){let f;if(!e.collapsed||n.length>1){let S=Number.POSITIVE_INFINITY,v=Number.NEGATIVE_INFINITY;for(const I of n)S=Math.min(S,I.startOffset),v=Math.max(v,I.endOffset);f=t===s.Direction.LEFT?S:v}else{const S=o.findNodeByCharIndex(c-1),v=o.findNodeByCharIndex(c);t===s.Direction.LEFT?f=Math.max(0,c-((h=S==null?void 0:S.count)!=null?h:0)):f=Math.min(m-2,l+v.count)}this._textSelectionManagerService.replaceTextRanges([{startOffset:f,endOffset:f,style:u}])}else{const f=o.findNodeByCharIndex(c),S=o.findNodeByCharIndex(l),v=a.document.getOffsetConfig(),I=this._getTopOrBottomPosition(o,t===s.Direction.UP?f:S,t===s.Direction.DOWN);if(I==null){let T;d?T=t===s.Direction.UP?0:m-2:T=t===s.Direction.UP?c:l,this._textSelectionManagerService.replaceTextRanges([{startOffset:T,endOffset:T,style:u}]);return}const R=new M.NodePositionConvertToCursor(v,o).getRangePointData(I,I).cursorList[0];this._textSelectionManagerService.replaceTextRanges([{...R,style:u}])}}_getTopOrBottomPosition(t,e,n){if(e==null)return;const r=this._getSpanLeftOffsetInLine(e),o=this._getNextOrPrevLine(e,n);if(o==null)return;const a=this._matchPositionByLeftOffset(t,o,r);if(a!=null)return{...a,isBack:!0}}_getSpanLeftOffsetInLine(t){const e=t.parent;if(e==null)return Number.NEGATIVE_INFINITY;const n=e.left,{left:r}=t;return n+r}_matchPositionByLeftOffset(t,e,n){const r={distance:Number.POSITIVE_INFINITY};for(const o of e.divides){const a=o.left;for(const c of o.spanGroup){const{left:l}=c,u=a+l,d=Math.abs(n-u);d<r.distance&&(r.span=c,r.distance=d)}}if(r.span!=null)return t.findPositionBySpan(r.span)}_getNextOrPrevLine(t,e){var h,f,S,v,I,R,T,O,x,D,U,N;const n=t.parent;if(n==null)return;const r=n.parent;if(r==null)return;const o=r.parent;if(o==null)return;const a=o.lines.indexOf(r);if(a===-1)return;let c;if(e===!0?c=o.lines[a+1]:c=o.lines[a-1],c!=null)return c;const l=o.parent;if(l==null)return;const u=l.columns.indexOf(o);if(u===-1)return;if(e===!0)c=(h=l.columns[u+1])==null?void 0:h.lines[0];else{const y=(S=(f=l.columns)==null?void 0:f[u-1])==null?void 0:S.lines;c=y==null?void 0:y[y.length-1]}if(c!=null)return c;const d=l.parent;if(d==null)return;const m=d.sections.indexOf(l);if(m===-1)return;if(e===!0)c=(I=(v=d.sections[m-1])==null?void 0:v.columns[0])==null?void 0:I.lines[0];else{const y=(T=(R=d.sections)==null?void 0:R[m-1])==null?void 0:T.columns,A=y==null?void 0:y[y.length-1],w=A==null?void 0:A.lines;c=w==null?void 0:w[w.length-1]}if(c!=null)return c;const p=d.parent;if(p==null)return;const g=p.pages.indexOf(d);if(g!==-1){if(e===!0)c=(D=(x=(O=p.pages[g+1])==null?void 0:O.sections[0])==null?void 0:x.columns[0])==null?void 0:D.lines[0];else{const y=(U=p.pages[g-1])==null?void 0:U.sections;if(y==null)return;const A=(N=y[y.length-1])==null?void 0:N.columns,w=A[A.length-1],Xe=w==null?void 0:w.lines;c=Xe[Xe.length-1]}if(c!=null)return c}}_getDocObject(){return ee(this._currentUniverService,this._renderManagerService)}};pe=pn([s.OnLifecycle(s.LifecycleStages.Rendered,pe),q(0,E.Inject(exports.DocSkeletonManagerService)),q(1,s.IUniverInstanceService),q(2,M.IRenderManagerService),q(3,E.Inject(exports.TextSelectionManagerService)),q(4,s.ICommandService)],pe);var gn=Object.defineProperty,hn=Object.getOwnPropertyDescriptor,fn=(i,t,e,n)=>{for(var r=n>1?void 0:n?hn(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&gn(t,e,r),r},Z=(i,t)=>(e,n)=>t(e,n,i);let ge=class extends s.Disposable{constructor(t,e,n,r,o){super();C(this,"_onInputSubscription");this._docSkeletonManagerService=t,this._currentUniverService=e,this._renderManagerService=n,this._textSelectionRenderManager=r,this._commandService=o,this._initialize(),this._commandExecutedListener()}dispose(){var t;(t=this._onInputSubscription)==null||t.unsubscribe()}_initialize(){this._initialNormalInput()}_initialNormalInput(){this._onInputSubscription=this._textSelectionRenderManager.onInput$.subscribe(async t=>{var h;if(t==null)return;const n=this._currentUniverService.getCurrentUniverDocInstance().getUnitId(),{event:r,content:o="",activeRange:a}=t,c=r,l=(h=this._docSkeletonManagerService.getCurrent())==null?void 0:h.skeleton;if(c.data==null||l==null||!l||!a)return;const{startOffset:u,segmentId:d,style:m}=a,p=o.length,g=[{startOffset:u+p,endOffset:u+p,style:m}];await this._commandService.executeCommand(Ce.id,{unitId:n,body:{dataStream:o},range:a,textRanges:g,segmentId:d})})}_commandExecutedListener(){}_getDocObject(){return ee(this._currentUniverService,this._renderManagerService)}};ge=fn([s.OnLifecycle(s.LifecycleStages.Rendered,ge),Z(0,E.Inject(exports.DocSkeletonManagerService)),Z(1,s.IUniverInstanceService),Z(2,M.IRenderManagerService),Z(3,M.ITextSelectionRenderManager),Z(4,s.ICommandService)],ge);var Sn=Object.defineProperty,_n=Object.getOwnPropertyDescriptor,vn=(i,t,e,n)=>{for(var r=n>1?void 0:n?_n(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&Sn(t,e,r),r},Ze=(i,t)=>(e,n)=>t(e,n,i);const In="rgba(198, 198, 198, 1)",Cn="rgba(255, 255, 255, 1)";let he=class extends s.Disposable{constructor(i,t){super(),this._renderManagerService=i,this._currentUniverService=t,this._initialize(),this._commandExecutedListener()}_initialize(){this._initialRenderRefresh()}_initialRenderRefresh(){this._renderManagerService.currentRender$.subscribe(i=>{var o;if(i==null||this._currentUniverService.getUniverDocInstance(i)==null)return;const t=this._renderManagerService.getRenderById(i);if(t==null)return;const{mainComponent:e}=t,n=e,r=(o=n.getSkeleton())==null?void 0:o.getPageSize();n.onPageRenderObservable.add(a=>{var f,S,v,I;if([s.DOCS_NORMAL_EDITOR_UNIT_ID_KEY,s.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY].includes(i))return;const{page:c,pageLeft:l,pageTop:u,ctx:d}=a,{width:m,pageWidth:p,height:g,pageHeight:h}=c;d.save(),d.translate(l-.5,u-.5),M.Rect.drawWith(d,{width:(S=(f=r==null?void 0:r.width)!=null?f:p)!=null?S:m,height:(I=(v=r==null?void 0:r.height)!=null?v:h)!=null?I:g,strokeWidth:1,stroke:In,fill:Cn,zIndex:3}),d.restore()})})}_commandExecutedListener(){}};he=vn([s.OnLifecycle(s.LifecycleStages.Rendered,he),Ze(0,M.IRenderManagerService),Ze(1,E.Inject(s.IUniverInstanceService))],he);var Mn=Object.defineProperty,Rn=Object.getOwnPropertyDescriptor,Tn=(i,t,e,n)=>{for(var r=n>1?void 0:n?Rn(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&Mn(t,e,r),r},j=(i,t)=>(e,n)=>t(e,n,i);let fe=class extends s.Disposable{constructor(t,e,n,r,o,a,c){super();C(this,"_moveInObserver");C(this,"_moveOutObserver");C(this,"_downObserver");C(this,"_dblClickObserver");C(this,"_tripleClickObserver");C(this,"_loadedMap",new Set);this._docSkeletonManagerService=t,this._currentUniverService=e,this._commandService=n,this._renderManagerService=r,this._textSelectionRenderManager=o,this._textSelectionManagerService=a,this._layoutService=c,this._renderManagerService.currentRender$.subscribe(l=>{l!=null&&this._currentUniverService.getUniverDocInstance(l)!=null&&(this._loadedMap.has(l)||(this._initialMain(l),this._loadedMap.add(l)))}),this._initialize()}_initialize(){this._skeletonListener(),this._commandExecutedListener(),this._layoutService&&this.disposeWithMe(this._layoutService.registerContainer(this._textSelectionRenderManager.__getEditorContainer()))}dispose(){this._renderManagerService.getRenderAll().forEach(t=>{const{mainComponent:e}=t;e!=null&&(e.onPointerEnterObserver.remove(this._moveInObserver),e.onPointerLeaveObserver.remove(this._moveOutObserver),e.onPointerDownObserver.remove(this._downObserver),e.onDblclickObserver.remove(this._dblClickObserver),e.onTripleClickObserver.remove(this._tripleClickObserver))})}_initialMain(t){const e=this._getDocObjectById(t);if(e==null)return;const{document:n,scene:r}=e;this._moveInObserver=n.onPointerEnterObserver.add(()=>{n.cursor=M.CURSOR_TYPE.TEXT}),this._moveOutObserver=n.onPointerLeaveObserver.add(()=>{n.cursor=M.CURSOR_TYPE.DEFAULT,r.resetCursor()}),this._downObserver=n==null?void 0:n.onPointerDownObserver.add((o,a)=>{this._currentUniverService.getCurrentUniverDocInstance().getUnitId()!==t&&this._currentUniverService.setCurrentUniverDocInstance(t),this._textSelectionRenderManager.eventTrigger(o),o.button!==2&&a.stopPropagation()}),this._dblClickObserver=n==null?void 0:n.onDblclickObserver.add(o=>{this._textSelectionRenderManager.handleDblClick(o)}),this._tripleClickObserver=n==null?void 0:n.onTripleClickObserver.add(o=>{this._textSelectionRenderManager.handleTripleClick(o)})}_commandExecutedListener(){const t=[V.id];this.disposeWithMe(this._commandService.onCommandExecuted(e=>{var n;if(t.includes(e.id)){const r=e.params,{unitId:o}=r,a=(n=this._textSelectionManagerService.getCurrentSelection())==null?void 0:n.unitId;if(o!==a)return;this._textSelectionManagerService.refreshSelection()}}))}_skeletonListener(){this._docSkeletonManagerService.currentSkeleton$.subscribe(t=>{if(t==null)return;const{unitId:e,skeleton:n}=t,r=this._renderManagerService.getRenderById(e);if(r==null)return;const{scene:o,mainComponent:a}=r;this._textSelectionRenderManager.changeRuntime(n,o,a),this._textSelectionManagerService.setCurrentSelectionNotRefresh({unitId:e,subUnitId:""})})}_getDocObjectById(t){return ht(t,this._renderManagerService)}};fe=Tn([s.OnLifecycle(s.LifecycleStages.Rendered,fe),j(0,E.Inject(exports.DocSkeletonManagerService)),j(1,s.IUniverInstanceService),j(2,s.ICommandService),j(3,M.IRenderManagerService),j(4,M.ITextSelectionRenderManager),j(5,E.Inject(exports.TextSelectionManagerService)),j(6,E.Optional(b.LayoutService))],fe);var yn=Object.defineProperty,On=Object.getOwnPropertyDescriptor,xn=(i,t,e,n)=>{for(var r=n>1?void 0:n?On(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&yn(t,e,r),r},J=(i,t)=>(e,n)=>t(e,n,i);let Se=class extends s.Disposable{constructor(t,e,n,r,o){super();C(this,"_initializedRender",new Set);this._docSkeletonManagerService=t,this._currentUniverService=e,this._commandService=n,this._renderManagerService=r,this._textSelectionManagerService=o,this._initialize()}dispose(){super.dispose()}_initialize(){this._skeletonListener(),this._commandExecutedListener(),this._initialRenderRefresh()}_initialRenderRefresh(){this._docSkeletonManagerService.currentSkeleton$.subscribe(t=>{if(t==null)return;const{unitId:e}=t,n=this._renderManagerService.getRenderById(e);if(n==null||this._initializedRender.has(e)||[s.DOCS_NORMAL_EDITOR_UNIT_ID_KEY,s.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY].includes(e))return;this._initializedRender.add(e);const{scene:r}=n;this.disposeWithMe(s.toDisposable(r.onMouseWheelObserver.add(o=>{if(!o.ctrlKey)return;const a=Math.abs(o.deltaX);let c=a<40?.2:a<80?.4:.2;c*=o.deltaY>0?-1:1,r.scaleX<1&&(c/=2);const l=this._currentUniverService.getCurrentUniverDocInstance(),u=l.zoomRatio;let d=+parseFloat(`${u+c}`).toFixed(1);d=d>=4?4:d<=.1?.1:d,this._commandService.executeCommand(ut.id,{zoomRatio:d,unitId:l.getUnitId()}),o.preventDefault()})))})}_skeletonListener(){this.disposeWithMe(s.toDisposable(this._docSkeletonManagerService.currentSkeletonBefore$.subscribe(t=>{if(t==null)return;const n=this._currentUniverService.getCurrentUniverDocInstance().zoomRatio||1;this._updateViewZoom(n,!1)})))}_commandExecutedListener(){const t=[V.id];this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(t.includes(e.id)){const n=this._currentUniverService.getCurrentUniverDocInstance(),r=e.params,{unitId:o}=r;if(o!==n.getUnitId())return;const a=n.zoomRatio||1;this._updateViewZoom(a)}}))}_updateViewZoom(t,e=!0){var r;const n=this._getDocObject();n!=null&&(n.scene.scale(t,t),this._calculatePagePosition(n,t),e&&this._textSelectionManagerService.refreshSelection(),(r=n.scene.getTransformer())==null||r.hideControl())}_calculatePagePosition(t,e){const{document:n,scene:r}=t,o=r==null?void 0:r.getParent(),{width:a,height:c,pageMarginLeft:l,pageMarginTop:u}=n;if(o==null||a===1/0||c===1/0)return;const{width:d,height:m}=o;let p=0,g=0,h=0,f=0,S=1/0;d>(a+l*2)*e?(p=d/2-a*e/2,p/=e,h=(d-l*2)/e,S=0):(p=l,h=a+l*2,S=(h-d/e)/2),m>c?(g=m/2-c/2,f=(m-u*2)/e):(g=u,f=c+u*2),r.resize(h,f+200),n.translate(p,g);const v=r.getViewport(Ie.VIEW_MAIN);if(S!==1/0&&v!=null){const I=v.getBarScroll(S,0).x;v.scrollTo({x:I})}return this}_getDocObject(){return ee(this._currentUniverService,this._renderManagerService)}};Se=xn([s.OnLifecycle(s.LifecycleStages.Rendered,Se),J(0,E.Inject(exports.DocSkeletonManagerService)),J(1,s.IUniverInstanceService),J(2,s.ICommandService),J(3,M.IRenderManagerService),J(4,E.Inject(exports.TextSelectionManagerService))],Se);const Dn={id:Ne.id,preconditions:i=>i.getContextValue(s.FOCUSING_DOC),binding:b.KeyCode.ENTER},bn={id:Le.id,preconditions:i=>i.getContextValue(s.FOCUSING_DOC),binding:b.KeyCode.BACKSPACE},En={id:Be.id,preconditions:i=>i.getContextValue(s.FOCUSING_DOC),binding:b.KeyCode.DELETE},Un={id:$.id,binding:b.KeyCode.ARROW_UP,preconditions:i=>i.getContextValue(s.FOCUSING_DOC),staticParameters:{direction:s.Direction.UP}},Pn={id:$.id,binding:b.KeyCode.ARROW_DOWN,preconditions:i=>i.getContextValue(s.FOCUSING_DOC),staticParameters:{direction:s.Direction.DOWN}},Nn={id:$.id,binding:b.KeyCode.ARROW_LEFT,preconditions:i=>i.getContextValue(s.FOCUSING_DOC),staticParameters:{direction:s.Direction.LEFT}},An={id:$.id,binding:b.KeyCode.ARROW_RIGHT,preconditions:i=>i.getContextValue(s.FOCUSING_DOC),staticParameters:{direction:s.Direction.RIGHT}},wn={id:F.id,binding:b.KeyCode.ARROW_UP|b.MetaKeys.SHIFT,preconditions:i=>i.getContextValue(s.FOCUSING_DOC),staticParameters:{direction:s.Direction.UP}},Ln={id:F.id,binding:b.KeyCode.ARROW_DOWN|b.MetaKeys.SHIFT,preconditions:i=>i.getContextValue(s.FOCUSING_DOC),staticParameters:{direction:s.Direction.DOWN}},Bn={id:F.id,binding:b.KeyCode.ARROW_LEFT|b.MetaKeys.SHIFT,preconditions:i=>i.getContextValue(s.FOCUSING_DOC),staticParameters:{direction:s.Direction.LEFT}},$n={id:F.id,binding:b.KeyCode.ARROW_RIGHT|b.MetaKeys.SHIFT,preconditions:i=>i.getContextValue(s.FOCUSING_DOC),staticParameters:{direction:s.Direction.RIGHT}},Fn={id:mt.id,binding:b.KeyCode.A|b.MetaKeys.CTRL_COMMAND,preconditions:i=>i.getContextValue(s.FOCUSING_DOC)||i.getContextValue(s.EDITOR_ACTIVATED)};var jn=Object.defineProperty,Vn=Object.getOwnPropertyDescriptor,kn=(i,t,e,n)=>{for(var r=n>1?void 0:n?Vn(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&jn(t,e,r),r},se=(i,t)=>(e,n)=>t(e,n,i);exports.DocCanvasView=class extends s.RxDisposable{constructor(e,n,r,o){super();C(this,"_scene");C(this,"_currentDocumentModel");C(this,"_loadedMap",new Set);C(this,"_fps$",new P.BehaviorSubject(""));C(this,"fps$",this._fps$.asObservable());this._renderManagerService=e,this._configService=n,this._currentUniverService=r,this._docViewModelManagerService=o,this._initialize()}_initialize(){this._currentUniverService.currentDoc$.pipe(P.takeUntil(this.dispose$)).subscribe(e=>{if(e==null)return;this._currentDocumentModel=e;const n=e.getUnitId();this._loadedMap.has(n)||(this._addNewRender(),this._loadedMap.add(n))})}dispose(){this._fps$.complete()}_addNewRender(){const e=this._currentDocumentModel,n=e.getUnitId(),r=e.getContainer(),o=e.getParentRenderUnitId();if(r!=null&&o!=null)throw new Error("container or parentRenderUnitId can only exist one");r==null&&o!=null?this._renderManagerService.createRenderWithParent(n,o):this._renderManagerService.createRender(n);const a=this._renderManagerService.getRenderById(n);if(a==null)return;const{scene:c,engine:l}=a;c.openTransformer(),this._scene=c;const u=new M.Viewport(Ie.VIEW_MAIN,c,{left:0,top:0,bottom:0,right:0,isWheelPreventDefaultX:!0});c.attachControl(),c.on(M.EVENT_TYPE.wheel,(p,g)=>{const h=p;if(h.ctrlKey){const f=Math.abs(h.deltaX);let S=f<40?.2:f<80?.4:.2;S*=h.deltaY>0?-1:1,c.scaleX<1&&(S/=2),c.scaleX+S>4?c.scale(4,4):c.scaleX+S<.1?c.scale(.1,.1):h.preventDefault()}else u.onMouseWheel(h,g)}),this._configService.getConfig("hasScroll")!==!1&&n!==s.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY&&new M.ScrollBar(u),c.addLayer(new M.Layer(c,[],xe),new M.Layer(c,[],Je)),this._addComponent(a),this._currentDocumentModel.getShouldRenderLoopImmediately()&&l.runRenderLoop(()=>{c.render(),this._fps$.next(Math.round(l.getFps()).toString())}),this._renderManagerService.setCurrent(n)}_addComponent(e){const n=this._scene,r=this._currentDocumentModel,o=new M.Documents(_e.MAIN,void 0,{pageMarginLeft:r.documentStyle.marginLeft||0,pageMarginTop:r.documentStyle.marginTop||0});o.zIndex=Qe,e.mainComponent=o,e.components.set(_e.MAIN,o),n.addObjects([o],xe)}};exports.DocCanvasView=kn([s.OnLifecycle(s.LifecycleStages.Ready,exports.DocCanvasView),se(0,M.IRenderManagerService),se(1,s.IConfigService),se(2,s.IUniverInstanceService),se(3,E.Inject(exports.DocViewModelManagerService))],exports.DocCanvasView);var Xn=Object.defineProperty,zn=Object.getOwnPropertyDescriptor,Wn=(i,t,e,n)=>{for(var r=n>1?void 0:n?zn(t,e):t,o=i.length-1,a;o>=0;o--)(a=i[o])&&(r=(n?a(t,e,r):a(r))||r);return n&&r&&Xn(t,e,r),r},ae=(i,t)=>(e,n)=>t(e,n,i);const Hn={hasScroll:!0},Gn="docs";var Oe;exports.UniverDocsPlugin=(Oe=class extends s.Plugin{constructor(e={},n,r,o,a){super(Gn);C(this,"_config");this._injector=n,this._localeService=r,this._configService=o,this._currentUniverService=a,this._config=Object.assign(Hn,e),this._initializeDependencies(n),this._initializeCommands()}initialize(){}_initializeCommands(){[$,F,Le,Be,z,ne,re,ie,B,k,W,H,oe,Ve,Ne,Ce,Me,Pe,je,$e,_,ct,lt,ut,V,Ee,mt,at,st,ke].forEach(e=>{this._injector.get(s.ICommandService).registerCommand(e)}),[Un,Pn,An,Nn,wn,Ln,Bn,$n,Fn,bn,En,Dn].forEach(e=>{this._injector.get(b.IShortcutService).registerShortcut(e)})}onReady(){this.initialize()}_initializeDependencies(e){[[exports.DocCanvasView],[exports.DocSkeletonManagerService],[exports.DocViewModelManagerService],[Fe],[te,{useClass:be}],[M.ITextSelectionRenderManager,{useClass:M.TextSelectionRenderManager}],[exports.TextSelectionManagerService],[le],[he],[fe],[ge],[ue],[me],[ce],[pe],[Se],[de]].forEach(n=>e.add(n))}},C(Oe,"type",s.PluginType.Doc),Oe);exports.UniverDocsPlugin=Wn([ae(1,E.Inject(E.Injector)),ae(2,E.Inject(s.LocaleService)),ae(3,s.IConfigService),ae(4,s.IUniverInstanceService)],exports.UniverDocsPlugin);exports.BreakLineCommand=Ne;exports.BulletListCommand=st;exports.CoverContentCommand=lt;exports.DOCS_COMPONENT_DEFAULT_Z_INDEX=Qe;exports.DOCS_COMPONENT_HEADER_LAYER_INDEX=Je;exports.DOCS_COMPONENT_MAIN_LAYER_INDEX=xe;exports.DOCS_VIEW_KEY=_e;exports.DeleteCommand=Me;exports.DeleteLeftCommand=Le;exports.DeleteRightCommand=Be;exports.DocCopyCommand=tt;exports.DocCutCommand=nt;exports.DocPasteCommand=rt;exports.IMEInputCommand=je;exports.InsertCommand=Ce;exports.MoveCursorOperation=$;exports.MoveSelectionOperation=F;exports.NORMAL_TEXT_SELECTION_PLUGIN_NAME=ft;exports.OrderListCommand=at;exports.ReplaceContentCommand=ct;exports.RichTextEditingMutation=_;exports.SetInlineFormatBoldCommand=z;exports.SetInlineFormatCommand=Ve;exports.SetInlineFormatFontFamilyCommand=H;exports.SetInlineFormatFontSizeCommand=W;exports.SetInlineFormatItalicCommand=ne;exports.SetInlineFormatStrikethroughCommand=ie;exports.SetInlineFormatSubscriptCommand=B;exports.SetInlineFormatSuperscriptCommand=k;exports.SetInlineFormatTextColorCommand=oe;exports.SetInlineFormatUnderlineCommand=re;exports.SetTextSelectionsOperation=Ee;exports.UpdateCommand=Pe;exports.VIEWPORT_KEY=Ie;exports.getDocObject=ee;
1
+ "use strict";var $e=Object.defineProperty;var Fe=(s,n,e)=>n in s?$e(s,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[n]=e;var I=(s,n,e)=>(Fe(s,typeof n!="symbol"?n+"":n,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@univerjs/core"),R=require("@univerjs/engine-render"),P=require("rxjs"),E=require("@wendellhu/redi");function ue(s,n){const t=s.getCurrentUniverDocInstance().getUnitId(),r=n.getRenderById(t);if(r==null)return;const{mainComponent:o,scene:a,engine:c}=r;return{document:o,scene:a,engine:c}}function Xe(s,n){const e=n.getRenderById(s);if(e==null)return;const{mainComponent:t,scene:r,engine:o}=e;return{document:t,scene:r,engine:o}}var xe=(s=>(s.MAIN="__Document_Render_Main__",s))(xe||{}),Re=(s=>(s.VIEW_MAIN="viewMain",s.VIEW_TOP="viewTop",s.VIEW_LEFT="viewLeft",s.VIEW_LEFT_TOP="viewLeftTop",s))(Re||{});const je=0,ke=2,Ve=10,ze="normalTextSelectionPluginName",me={id:"doc.operation.set-selections",type:i.CommandType.OPERATION,handler:(s,n)=>!0};var He=Object.defineProperty,Ge=Object.getOwnPropertyDescriptor,We=(s,n,e,t)=>{for(var r=t>1?void 0:t?Ge(n,e):n,o=s.length-1,a;o>=0;o--)(a=s[o])&&(r=(t?a(n,e,r):a(r))||r);return t&&r&&He(n,e,r),r},Me=(s,n)=>(e,t)=>n(e,t,s);function k(s){const{startOffset:n,endOffset:e,collapsed:t}=s,r={startOffset:n,endOffset:e,collapsed:t};return typeof s.isActive=="function"&&(r.isActive=s.isActive()),r}exports.TextSelectionManagerService=class extends i.RxDisposable{constructor(e,t){super();I(this,"_currentSelection",null);I(this,"_textSelectionInfo",new Map);I(this,"_textSelection$",new P.BehaviorSubject(null));I(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}getSelections(){var e;return(e=this._getTextRanges(this._currentSelection))==null?void 0:e.textRanges}getActiveRange(){const e=this._getTextRanges(this._currentSelection);if(e==null)return;const{textRanges:t,segmentId:r,style:o}=e,a=t.find(S=>S.isActive());if(a==null)return null;const{startOffset:c,endOffset:l,collapsed:u,startNodePosition:d,endNodePosition:m,direction:g}=a;return c==null||l==null?null:{startOffset:c,endOffset:l,collapsed:u,startNodePosition:d,endNodePosition:m,direction:g,segmentId:r,style:o}}add(e,t=!0){this._currentSelection!=null&&this._addByParam({...this._currentSelection,textRanges:e,segmentId:"",isEditing:t,style:R.NORMAL_TEXT_SELECTION_PLUGIN_STYLE})}replaceTextRanges(e,t=!0){this._currentSelection!=null&&(this._textSelectionRenderManager.removeAllTextRanges(),this._textSelectionRenderManager.addTextRanges(e,t))}_syncSelectionFromRenderService(){this._textSelectionRenderManager.textSelectionInner$.pipe(P.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:r,subUnitId:o,segmentId:a,style:c,textRanges:l,isEditing:u}=t;this._commandService.executeCommand(me.id,{unitId:r,subUnitId:o,segmentId:a,style:c,isEditing:u,ranges:l.map(k)})}_getTextRanges(e){var o;if(e==null)return;const{unitId:t,subUnitId:r=""}=e;return(o=this._textSelectionInfo.get(t))==null?void 0:o.get(r)}_refresh(e){const t=this._getTextRanges(e);this._textSelectionRenderManager.removeAllTextRanges(),t&&Array.isArray(t.textRanges)&&t.textRanges.length&&this._textSelectionRenderManager.addTextRanges(t.textRanges.map(k))}_replaceByParam(e){const{unitId:t,subUnitId:r,style:o,segmentId:a,textRanges:c,isEditing:l}=e;this._textSelectionInfo.has(t)||this._textSelectionInfo.set(t,new Map),this._textSelectionInfo.get(t).set(r,{textRanges:c,style:o,segmentId:a,isEditing:l})}_addByParam(e){const{unitId:t,subUnitId:r,textRanges:o,style:a,segmentId:c,isEditing:l}=e;this._textSelectionInfo.has(t)||this._textSelectionInfo.set(t,new Map);const u=this._textSelectionInfo.get(t);u.has(r)?u.get(r).textRanges.push(...o):u.set(r,{textRanges:o,style:a,segmentId:c,isEditing:l})}};exports.TextSelectionManagerService=We([Me(0,R.ITextSelectionRenderManager),Me(1,i.ICommandService)],exports.TextSelectionManagerService);function ge(s,n="",e=0){const{startOffset:t,endOffset:r}=s,o=[],a=t-e,c=r-e;return a>0&&o.push({t:i.TextXActionType.RETAIN,len:a,segmentId:n}),o.push({t:i.TextXActionType.DELETE,len:c-a,line:0,segmentId:n}),o}var Ye=Object.defineProperty,Ze=Object.getOwnPropertyDescriptor,qe=(s,n,e,t)=>{for(var r=t>1?void 0:t?Ze(n,e):n,o=s.length-1,a;o>=0;o--)(a=s[o])&&(r=(t?a(n,e,r):a(r))||r);return t&&r&&Ye(n,e,r),r},Ke=(s,n)=>(e,t)=>n(e,t,s);exports.DocViewModelManagerService=class extends i.RxDisposable{constructor(e){super();I(this,"_docViewModelMap",new Map);I(this,"_currentDocViewModel$",new P.BehaviorSubject(null));I(this,"currentDocViewModel$",this._currentDocViewModel$.asObservable());this._currentUniverService=e,this._initialize()}_initialize(){this._init()}dispose(){this._currentDocViewModel$.complete(),this._docViewModelMap.clear()}_init(){this._currentUniverService.currentDoc$.pipe(P.takeUntil(this.dispose$)).subscribe(e=>{this._create(e)}),this._currentUniverService.getAllUniverDocsInstance().forEach(e=>{this._create(e)}),this._currentUniverService.docDisposed$.pipe(P.takeUntil(this.dispose$)).subscribe(e=>{this._docViewModelMap.delete(e.getUnitId())})}_create(e){if(e==null)return;const t=e.getUnitId();this._setCurrent(t)}getAllModel(){return this._docViewModelMap}getViewModel(e){var t;return(t=this._docViewModelMap.get(e))==null?void 0:t.docViewModel}_setCurrent(e){var r;const t=this._currentUniverService.getUniverDocInstance(e);if(t==null)throw new Error(`Document data model with id ${e} not found when build view model.`);if(t.getBody()!=null){if(!this._docViewModelMap.has(e)){const o=this._buildDocViewModel(t);this._docViewModelMap.set(e,{unitId:e,docViewModel:o})}if(e===i.DOCS_NORMAL_EDITOR_UNIT_ID_KEY){const o=(r=this._docViewModelMap.get(e))==null?void 0:r.docViewModel;if(o==null)return;o.reset(t)}this._currentDocViewModel$.next(this._docViewModelMap.get(e))}}_buildDocViewModel(e){return new R.DocumentViewModel(e)}};exports.DocViewModelManagerService=qe([Ke(0,i.IUniverInstanceService)],exports.DocViewModelManagerService);var Je=Object.defineProperty,Qe=Object.getOwnPropertyDescriptor,et=(s,n,e,t)=>{for(var r=t>1?void 0:t?Qe(n,e):n,o=s.length-1,a;o>=0;o--)(a=s[o])&&(r=(t?a(n,e,r):a(r))||r);return t&&r&&Je(n,e,r),r},ce=(s,n)=>(e,t)=>n(e,t,s);const tt=300;exports.DocStateChangeManagerService=class extends i.RxDisposable{constructor(e,t,r){super();I(this,"_docStateChange$",new P.BehaviorSubject(null));I(this,"docStateChange$",this._docStateChange$.asObservable());I(this,"_stateCache",new Map);I(this,"_timer",null);this._undoRedoService=e,this._commandService=t,this._univerInstanceService=r,this._initialize()}setChangeState(e){const{trigger:t,noHistory:r}=e;t!=null&&(this._cacheChangeState(e),r||this._docStateChange$.next(e))}_initialize(){this.disposeWithMe(this._commandService.beforeCommandExecuted(e=>{if(e.id===i.UndoCommandId||e.id===i.RedoCommandId){const t=this._univerInstanceService.getCurrentUniverDocInstance();if(t==null)return;const r=t.getUnitId();this._pushHistory(r)}}))}_cacheChangeState(e){const{trigger:t,unitId:r,noHistory:o}=e;if(!(t===i.RedoCommandId||t===i.UndoCommandId||o)){if(this._stateCache.has(r)){const a=this._stateCache.get(r);a==null||a.push(e)}else this._stateCache.set(r,[e]);t===z.id||t===H.id?(this._timer&&clearTimeout(this._timer),this._timer=setTimeout(()=>{this._pushHistory(r)},tt)):this._pushHistory(r)}}_pushHistory(e){const t=this._undoRedoService,r=this._stateCache.get(e);if(!Array.isArray(r)||r.length===0)return;const o=r.length,a=r[0].commandId,c=r[0],l=r[o-1],u={unitId:e,actions:r.reduce((m,g)=>i.TextX.compose(m,g.redoState.actions),[]),textRanges:l.redoState.textRanges},d={unitId:e,actions:r.reverse().reduce((m,g)=>i.TextX.compose(m,g.undoState.actions),[]),textRanges:c.undoState.textRanges};t.pushUndoRedo({unitID:e,undoMutations:[{id:a,params:d}],redoMutations:[{id:a,params:u}]}),r.length=0}};exports.DocStateChangeManagerService=et([ce(0,E.Inject(i.IUndoRedoService)),ce(1,i.ICommandService),ce(2,i.IUniverInstanceService)],exports.DocStateChangeManagerService);class V{constructor(){I(this,"_previousActiveRange",null);I(this,"_undoMutationParamsCache",[]);I(this,"_redoMutationParamsCache",[])}clearUndoRedoMutationParamsCache(){this._undoMutationParamsCache=[],this._redoMutationParamsCache=[]}getUndoRedoMutationParamsCache(){return{undoCache:this._undoMutationParamsCache,redoCache:this._redoMutationParamsCache}}setUndoRedoMutationParamsCache({undoCache:n=[],redoCache:e=[]}){this._undoMutationParamsCache=n,this._redoMutationParamsCache=e}getActiveRange(){return this._previousActiveRange}setActiveRange(n){this._previousActiveRange=n}pushUndoRedoMutationParams(n,e){this._undoMutationParamsCache.push(n),this._redoMutationParamsCache.push(e)}fetchComposedUndoRedoMutationParams(){if(this._undoMutationParamsCache.length===0||this._previousActiveRange==null||this._redoMutationParamsCache.length===0)return null;const{unitId:n}=this._undoMutationParamsCache[0],e={unitId:n,actions:this._undoMutationParamsCache.reverse().reduce((r,o)=>i.TextX.compose(r,o.actions),[]),textRanges:[]};return{redoMutationParams:{unitId:n,actions:this._redoMutationParamsCache.reduce((r,o)=>i.TextX.compose(r,o.actions),[]),textRanges:[]},undoMutationParams:e,previousActiveRange:this._previousActiveRange}}dispose(){this._undoMutationParamsCache=[],this._redoMutationParamsCache=[],this._previousActiveRange=null}}const Ce="doc.mutation.rich-text-editing",b={id:Ce,type:i.CommandType.MUTATION,handler:(s,n)=>{var y;const{unitId:e,actions:t,textRanges:r,prevTextRanges:o,trigger:a,noHistory:c,isCompositionEnd:l,noNeedSetTextRange:u}=n,m=s.get(i.IUniverInstanceService).getUniverDocInstance(e),S=s.get(exports.DocViewModelManagerService).getViewModel(e),v=s.get(exports.TextSelectionManagerService),h=((y=v.getSelections())!=null?y:[]).map(k),_=s.get(exports.DocStateChangeManagerService),f=s.get(V);if(m==null||S==null)throw new Error(`DocumentDataModel or documentViewModel not found for unitId: ${e}`);if(t.length===0)return{unitId:e,actions:[],textRanges:h};const C=m.apply(t),{segmentId:T}=t[0],x=m.getSelfOrHeaderFooterModel(T);S.getSelfOrHeaderFooterViewModel(T).reset(x),!u&&r&&a!=null&&queueMicrotask(()=>{v.replaceTextRanges(r)});const D={commandId:Ce,unitId:e,trigger:a,noHistory:c,redoState:{actions:t,textRanges:r},undoState:{actions:C,textRanges:o!=null?o:h}};if(l){const O=f.fetchComposedUndoRedoMutationParams();if(O==null)throw new Error("historyParams is null in RichTextEditingMutation");const{undoMutationParams:M,redoMutationParams:N,previousActiveRange:A}=O;D.redoState.actions=N.actions,D.undoState.actions=M.actions,D.undoState.textRanges=[A]}return _.setChangeState(D),{unitId:e,actions:C,textRanges:h}}},z={id:"doc.command.insert-text",type:i.CommandType.COMMAND,handler:async(s,n)=>{const e=s.get(i.ICommandService),{range:t,segmentId:r,body:o,unitId:a,textRanges:c}=n,{startOffset:l,collapsed:u}=t,d={id:b.id,params:{unitId:a,actions:[],textRanges:c}},m=new i.TextX;return u?l>0&&m.push({t:i.TextXActionType.RETAIN,len:l,segmentId:r}):m.push(...ge(t,r)),m.push({t:i.TextXActionType.INSERT,body:o,len:o.dataStream.length,line:0,segmentId:r}),d.params.actions=m.serialize(),!!e.syncExecuteCommand(d.id,d.params)}};var w=(s=>(s[s.LEFT=0]="LEFT",s[s.RIGHT=1]="RIGHT",s))(w||{});const H={id:"doc.command.delete-text",type:i.CommandType.COMMAND,handler:async(s,n)=>{const e=s.get(i.ICommandService),{range:t,segmentId:r,unitId:o,direction:a,textRanges:c,len:l=1}=n,{startOffset:u}=t,d={id:b.id,params:{unitId:o,actions:[],textRanges:c}},m=new i.TextX;return u>0&&m.push({t:i.TextXActionType.RETAIN,len:a===0?u-l:u,segmentId:r}),m.push({t:i.TextXActionType.DELETE,len:l,line:0,segmentId:r}),d.params.actions=m.serialize(),!!e.syncExecuteCommand(d.id,d.params)}},Se={id:"doc.command.update-text",type:i.CommandType.COMMAND,handler:async(s,n)=>{const{range:e,segmentId:t,updateBody:r,coverType:o,unitId:a,textRanges:c}=n,l=s.get(i.ICommandService),u={id:b.id,params:{unitId:a,actions:[],textRanges:c}},d=new i.TextX,{startOffset:m,endOffset:g}=e;return d.push({t:i.TextXActionType.RETAIN,len:m,segmentId:t}),d.push({t:i.TextXActionType.RETAIN,body:r,len:g-m,segmentId:t,coverType:o}),u.params.actions=d.serialize(),!!l.syncExecuteCommand(u.id,u.params)}};function nt(s,n){const e=[];for(let t=0,r=s.length;t<r;t++)s[t]===i.DataStreamTreeTokenType.PARAGRAPH&&e.push({startIndex:t});if(n)for(const t of e)n.bullet&&(t.bullet=i.Tools.deepClone(n.bullet)),n.paragraphStyle&&(t.paragraphStyle=i.Tools.deepClone(n.paragraphStyle));return e}const ye={id:"doc.command.break-line",type:i.CommandType.COMMAND,handler:async s=>{var v,p;const n=s.get(exports.TextSelectionManagerService),e=s.get(i.IUniverInstanceService),t=s.get(i.ICommandService),r=n.getActiveRange();if(r==null)return!1;const o=e.getCurrentUniverDocInstance(),a=o.getUnitId(),{startOffset:c,segmentId:l,style:u}=r,d=[{startOffset:c+1,endOffset:c+1,style:u}],g=((p=(v=o.getBody())==null?void 0:v.paragraphs)!=null?p:[]).find(h=>h.startIndex>=c);return await t.executeCommand(z.id,{unitId:a,body:{dataStream:i.DataStreamTreeTokenType.PARAGRAPH,paragraphs:nt(i.DataStreamTreeTokenType.PARAGRAPH,g)},range:r,textRanges:d,segmentId:l})}};var rt=Object.defineProperty,it=Object.getOwnPropertyDescriptor,ot=(s,n,e,t)=>{for(var r=t>1?void 0:t?it(n,e):n,o=s.length-1,a;o>=0;o--)(a=s[o])&&(r=(t?a(n,e,r):a(r))||r);return t&&r&&rt(n,e,r),r},le=(s,n)=>(e,t)=>n(e,t,s);exports.DocSkeletonManagerService=class extends i.RxDisposable{constructor(e,t,r){super();I(this,"_currentSkeletonUnitId","");I(this,"_docSkeletonMap",new Map);I(this,"_currentSkeleton$",new P.BehaviorSubject(null));I(this,"currentSkeleton$",this._currentSkeleton$.asObservable());I(this,"_currentSkeletonBefore$",new P.BehaviorSubject(null));I(this,"currentSkeletonBefore$",this._currentSkeletonBefore$.asObservable());this._localeService=e,this._docViewModelManagerService=t,this._currentUniverService=r,this._initialize()}_initialize(){this._init()}dispose(){this._currentSkeletonBefore$.complete(),this._currentSkeleton$.complete(),this._docSkeletonMap.clear()}_init(){this._docViewModelManagerService.currentDocViewModel$.pipe(P.takeUntil(this.dispose$)).subscribe(e=>{e!=null&&this._setCurrent(e)}),this._docViewModelManagerService.getAllModel().forEach(e=>{e!=null&&this._setCurrent(e)}),this._currentUniverService.docDisposed$.pipe(P.takeUntil(this.dispose$)).subscribe(e=>{this._docSkeletonMap.delete(e.getUnitId()),this._currentSkeletonUnitId=this._currentUniverService.getCurrentUniverDocInstance().getUnitId()})}getCurrent(){return this.getSkeletonByUnitId(this._currentSkeletonUnitId)}getAllSkeleton(){return this._docSkeletonMap}makeDirtyCurrent(e=!0){this.makeDirty(this._currentSkeletonUnitId,e)}makeDirty(e,t=!0){const r=this.getSkeletonByUnitId(e);r!=null&&(r.dirty=t)}getSkeletonByUnitId(e){return this._docSkeletonMap.get(e)}_setCurrent(e){const{unitId:t}=e;if(this._docSkeletonMap.has(t)){const r=this.getSkeletonByUnitId(t);r.skeleton.calculate(),r.dirty=!0}else{const r=this._buildSkeleton(e.docViewModel);r.calculate(),this._docSkeletonMap.set(t,{unitId:t,skeleton:r,dirty:!1})}return this._currentSkeletonUnitId=t,this._currentSkeletonBefore$.next(this.getCurrent()),this._currentSkeleton$.next(this.getCurrent()),this.getCurrent()}_buildSkeleton(e){return R.DocumentSkeleton.create(e,this._localeService)}};exports.DocSkeletonManagerService=ot([le(0,E.Inject(i.LocaleService)),le(1,E.Inject(exports.DocViewModelManagerService)),le(2,i.IUniverInstanceService)],exports.DocSkeletonManagerService);const st={id:"doc.command.inner-paste",type:i.CommandType.COMMAND,handler:async(s,n)=>{const{segmentId:e,body:t,textRanges:r}=n,o=s.get(i.ICommandService),a=s.get(exports.TextSelectionManagerService),c=s.get(i.IUniverInstanceService),l=a.getSelections();if(!Array.isArray(l)||l.length===0)return!1;const d=c.getCurrentUniverDocInstance().getUnitId(),m={id:b.id,params:{unitId:d,actions:[],textRanges:r}},g=new i.MemoryCursor;g.reset();const S=new i.TextX;for(const p of l){const{startOffset:h,endOffset:_,collapsed:f}=p,C=h-g.cursor;f?S.push({t:i.TextXActionType.RETAIN,len:C,segmentId:e}):S.push(...ge(p,e,g.cursor)),S.push({t:i.TextXActionType.INSERT,body:t,len:t.dataStream.length,line:0,segmentId:e}),g.reset(),g.moveCursor(_)}return m.params.actions=S.serialize(),!!o.syncExecuteCommand(m.id,m.params)}},he={id:"doc.command.inner-cut",type:i.CommandType.COMMAND,handler:async(s,n)=>{const{segmentId:e,textRanges:t}=n,r=s.get(i.ICommandService),o=s.get(exports.TextSelectionManagerService),a=s.get(i.IUniverInstanceService),c=o.getSelections();if(!Array.isArray(c)||c.length===0)return!1;const l=a.getCurrentUniverDocInstance().getUnitId(),u=a.getUniverDocInstance(l),d=i.getDocsUpdateBody(u.snapshot,e);if(d==null)return!1;const m={id:b.id,params:{unitId:l,actions:[],textRanges:t}},g=new i.MemoryCursor;g.reset();const S=new i.TextX;for(const p of c){const{startOffset:h,endOffset:_,collapsed:f}=p,C=h-g.cursor;f?S.push({t:i.TextXActionType.RETAIN,len:C,segmentId:e}):S.push(...at(p,d,e,g.cursor)),g.reset(),g.moveCursor(_)}return m.params.actions=S.serialize(),!!r.syncExecuteCommand(m.id,m.params)}};function at(s,n,e="",t=0){const{startOffset:r,endOffset:o}=s,a=[],{paragraphs:c=[]}=n,l=r-t,u=o-t,d=c==null?void 0:c.find(m=>m.startIndex-t>=l&&m.startIndex-t<=u);if(l>0&&a.push({t:i.TextXActionType.RETAIN,len:l,segmentId:e}),d&&d.startIndex-t>l){const m=d.startIndex-t;a.push({t:i.TextXActionType.DELETE,len:m-l,line:0,segmentId:e}),a.push({t:i.TextXActionType.RETAIN,len:1,segmentId:e}),u>m+1&&a.push({t:i.TextXActionType.DELETE,len:u-m-1,line:0,segmentId:e})}else a.push({t:i.TextXActionType.DELETE,len:u-l,line:0,segmentId:e});return a}const Oe={id:"doc.command.delete-left",type:i.CommandType.COMMAND,handler:async s=>{var T;const n=s.get(exports.TextSelectionManagerService),e=s.get(exports.DocSkeletonManagerService),t=s.get(i.IUniverInstanceService),r=s.get(i.ICommandService),o=n.getActiveRange(),a=n.getSelections(),c=(T=e.getCurrent())==null?void 0:T.skeleton;let l=!0;if(o==null||c==null||a==null)return!1;const u=t.getCurrentUniverDocInstance(),{startOffset:d,collapsed:m,segmentId:g,style:S}=o,v=c.findNodeByCharIndex(d),p=R.hasListSpan(v),h=R.isIndentBySpan(v,u.getBody());let _=d;const f=c.findNodeByCharIndex(d-1);if(R.isFirstSpan(v)&&f!==v&&(p===!0||h===!0)){const x=R.getParagraphBySpan(v,u.getBody());if(x==null)return!1;const U=x==null?void 0:x.startIndex,D={startIndex:0},y=x.paragraphStyle;if(p===!0){const M=x.paragraphStyle;M&&(D.paragraphStyle=M)}else if(h===!0){const M=x.bullet;M&&(D.bullet=M),y!=null&&(D.paragraphStyle={...y},delete D.paragraphStyle.hanging,delete D.paragraphStyle.indentStart)}const O=[{startOffset:_,endOffset:_,style:S}];l=await r.executeCommand(Se.id,{unitId:u.getUnitId(),updateBody:{dataStream:"",paragraphs:[{...D}]},range:{startOffset:U,endOffset:U+1},textRanges:O,coverType:i.UpdateDocsAttributeType.REPLACE,segmentId:g})}else if(m===!0){if(f==null)return!0;if(f.content==="\r")l=await r.executeCommand(pe.id,{direction:w.LEFT,range:o});else{_-=f.count;const x=[{startOffset:_,endOffset:_,style:S}];l=await r.executeCommand(H.id,{unitId:u.getUnitId(),range:o,segmentId:g,direction:w.LEFT,len:f.count,textRanges:x})}}else{const x=Ee(o,a);l=await r.executeCommand(he.id,{segmentId:g,textRanges:x})}return l}},De={id:"doc.command.delete-right",type:i.CommandType.COMMAND,handler:async s=>{var v;const n=s.get(exports.TextSelectionManagerService),e=s.get(exports.DocSkeletonManagerService),t=s.get(i.IUniverInstanceService),r=s.get(i.ICommandService),o=n.getActiveRange(),a=n.getSelections(),c=(v=e.getCurrent())==null?void 0:v.skeleton;let l;if(o==null||c==null||a==null)return!1;const u=t.getCurrentUniverDocInstance(),{startOffset:d,collapsed:m,segmentId:g,style:S}=o;if(d===u.getBody().dataStream.length-2&&m)return!0;if(m===!0){const p=c.findNodeByCharIndex(d);if(p.content==="\r")l=await r.executeCommand(pe.id,{direction:w.RIGHT,range:o});else{const h=[{startOffset:d,endOffset:d,style:S}];l=await r.executeCommand(H.id,{unitId:u.getUnitId(),range:o,segmentId:g,direction:w.RIGHT,textRanges:h,len:p.count})}}else{const p=Ee(o,a);l=await r.executeCommand(he.id,{segmentId:g,textRanges:p})}return l}},pe={id:"doc.command.merge-two-paragraph",type:i.CommandType.COMMAND,handler:async(s,n)=>{var D,y,O;const e=s.get(exports.TextSelectionManagerService),t=s.get(i.IUniverInstanceService),r=s.get(i.ICommandService);s.get(i.IUndoRedoService);const{direction:o,range:a}=n,c=e.getActiveRange(),l=e.getSelections();if(c==null||l==null)return!1;const u=t.getCurrentUniverDocInstance(),{startOffset:d,collapsed:m,segmentId:g,style:S}=c;if(!m)return!1;const v=o===w.LEFT?d:d+1,p=(O=(y=(D=u.getBody())==null?void 0:D.paragraphs)==null?void 0:y.find(M=>M.startIndex>=v))==null?void 0:O.startIndex,h=ct(u.getBody(),v,p),_=o===w.LEFT?d-1:d,f=u.getUnitId(),C=[{startOffset:_,endOffset:_,style:S}],T={id:b.id,params:{unitId:f,actions:[],textRanges:C,prevTextRanges:[a]}},x=new i.TextX;return x.push({t:i.TextXActionType.RETAIN,len:o===w.LEFT?d-1:d,segmentId:g}),h.dataStream.length&&x.push({t:i.TextXActionType.INSERT,body:h,len:h.dataStream.length,line:0,segmentId:g}),x.push({t:i.TextXActionType.RETAIN,len:1,segmentId:g}),x.push({t:i.TextXActionType.DELETE,len:p+1-v,line:0,segmentId:g}),T.params.actions=x.serialize(),!!r.syncExecuteCommand(T.id,T.params)}};function ct(s,n,e){const{textRuns:t}=s,r=s.dataStream.substring(n,e);if(t==null)return{dataStream:r};const o=[];for(const a of t){const{st:c,ed:l}=a;l<=n||c>=e||(c<n?o.push({...a,st:0,ed:l-n}):l>e?o.push({...a,st:c-n,ed:e-n}):o.push({...a,st:c-n,ed:l-n}))}return{dataStream:r,textRuns:o}}function Ee(s,n){let e=s.endOffset;for(const r of n){const{startOffset:o,endOffset:a}=r;o==null||a==null||a<=s.endOffset&&(e-=a-o)}return[{startOffset:e,endOffset:e,style:s.style}]}const fe={id:"doc.command.ime-input",type:i.CommandType.COMMAND,handler:async(s,n)=>{const{unitId:e,newText:t,oldTextLen:r,isCompositionEnd:o,isCompositionStart:a}=n,c=s.get(i.ICommandService),l=s.get(V),u=l.getActiveRange();if(u==null)return!1;const{startOffset:d,style:m,segmentId:g}=u,S=t.length,v=[{startOffset:d+S,endOffset:d+S,collapsed:!0,style:m}],p={id:b.id,params:{unitId:e,actions:[],textRanges:v}},h=new i.TextX;!u.collapsed&&a?h.push(...ge(u,g)):h.push({t:i.TextXActionType.RETAIN,len:d,segmentId:g}),r>0&&h.push({t:i.TextXActionType.DELETE,len:r,line:0,segmentId:g}),h.push({t:i.TextXActionType.INSERT,body:{dataStream:t},len:t.length,line:0,segmentId:g}),p.params.actions=h.serialize(),p.params.noHistory=!o,p.params.isCompositionEnd=o;const _=c.syncExecuteCommand(p.id,p.params);return l.pushUndoRedoMutationParams(_,p.params),!!_}},G={id:"doc.command.set-inline-format-bold",type:i.CommandType.COMMAND,handler:async()=>!0},W={id:"doc.command.set-inline-format-italic",type:i.CommandType.COMMAND,handler:async()=>!0},Y={id:"doc.command.set-inline-format-underline",type:i.CommandType.COMMAND,handler:async()=>!0},Z={id:"doc.command.set-inline-format-strikethrough",type:i.CommandType.COMMAND,handler:async()=>!0},L={id:"doc.command.set-inline-format-subscript",type:i.CommandType.COMMAND,handler:async()=>!0},q={id:"doc.command.set-inline-format-superscript",type:i.CommandType.COMMAND,handler:async()=>!0},K={id:"doc.command.set-inline-format-fontsize",type:i.CommandType.COMMAND,handler:async()=>!0},J={id:"doc.command.set-inline-format-font-family",type:i.CommandType.COMMAND,handler:async()=>!0},Q={id:"doc.command.set-inline-format-text-color",type:i.CommandType.COMMAND,handler:async()=>!0},Ue={[G.id]:"bl",[W.id]:"it",[Y.id]:"ul",[Z.id]:"st",[K.id]:"fs",[J.id]:"ff",[Q.id]:"cl",[L.id]:"va",[q.id]:"va"},ve={id:"doc.command.set-inline-format",type:i.CommandType.COMMAND,handler:async(s,n)=>{const{segmentId:e,value:t,preCommandId:r}=n,o=s.get(i.ICommandService),a=s.get(exports.TextSelectionManagerService),c=s.get(i.IUniverInstanceService),l=a.getSelections();if(!Array.isArray(l)||l.length===0)return!1;let u=c.getCurrentUniverDocInstance(),d=u.getUnitId();d===i.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY&&(u=c.getUniverDocInstance(i.DOCS_NORMAL_EDITOR_UNIT_ID_KEY),d=u.getUnitId());let m;switch(r){case G.id:case W.id:case Y.id:case Z.id:case L.id:case q.id:{m=dt(u.getBody().textRuns,r,l);break}case K.id:case J.id:{m=t;break}case Q.id:{m={rgb:t};break}default:throw new Error(`Unknown command: ${r} in handleInlineFormat`)}const g={id:b.id,params:{unitId:d,actions:[],textRanges:l}},S=new i.TextX,v=new i.MemoryCursor;v.reset();for(const h of l){const{startOffset:_,endOffset:f}=h,C={dataStream:"",textRuns:[{st:0,ed:f-_,ts:{[Ue[r]]:m}}]},T=_-v.cursor;T!==0&&S.push({t:i.TextXActionType.RETAIN,len:T,segmentId:e}),S.push({t:i.TextXActionType.RETAIN,body:C,len:f-_,segmentId:e}),v.reset(),v.moveCursor(f)}return g.params.actions=S.serialize(),!!o.syncExecuteCommand(g.id,g.params)}};function lt(s){return s!==null&&typeof s=="object"}function dt(s,n,e){let t=0,r=0;const o=Ue[n];for(;t!==s.length&&r!==e.length;){const{startOffset:a,endOffset:c}=e[r],{st:l,ed:u,ts:d}=s[t];if(c<=l)r++;else if(u<=a)t++;else{if(/bl|it/.test(o))return(d==null?void 0:d[o])===i.BooleanNumber.TRUE?i.BooleanNumber.FALSE:i.BooleanNumber.TRUE;if(/ul|st/.test(o))return lt(d==null?void 0:d[o])&&(d==null?void 0:d[o]).s===i.BooleanNumber.TRUE?{s:i.BooleanNumber.FALSE}:{s:i.BooleanNumber.TRUE};if(/va/.test(o))return n===L.id?(d==null?void 0:d[o])===i.BaselineOffset.SUBSCRIPT?i.BaselineOffset.NORMAL:i.BaselineOffset.SUBSCRIPT:(d==null?void 0:d[o])===i.BaselineOffset.SUPERSCRIPT?i.BaselineOffset.NORMAL:i.BaselineOffset.SUPERSCRIPT;t++}}return/bl|it/.test(o)?i.BooleanNumber.TRUE:/ul|st/.test(o)?{s:i.BooleanNumber.TRUE}:n===L.id?i.BaselineOffset.SUBSCRIPT:i.BaselineOffset.SUPERSCRIPT}const _e={id:"doc.command.list-operation",type:i.CommandType.COMMAND,handler:(s,n)=>{var x,U,D;const e=s.get(exports.TextSelectionManagerService),t=s.get(i.IUniverInstanceService),r=s.get(i.ICommandService),{listType:o}=n,a=t.getCurrentUniverDocInstance(),c=e.getActiveRange(),l=(x=e.getSelections())!=null?x:[],u=(U=a.getBody())==null?void 0:U.paragraphs,d=l.map(k);if(c==null||u==null)return!1;const m=ut(c,u),{segmentId:g}=c,S=a.getUnitId(),v=m.every(y=>{var O;return((O=y.bullet)==null?void 0:O.listType)===o});let h=i.Tools.generateRandomId(6);if(m.length===1){const y=u.indexOf(m[0]),O=u[y-1],M=u[y+1];O&&O.bullet&&O.bullet.listType===o?h=O.bullet.listId:M&&M.bullet&&M.bullet.listType===o&&(h=M.bullet.listId)}const _={id:b.id,params:{unitId:S,actions:[],textRanges:d}},f=new i.MemoryCursor;f.reset();const C=new i.TextX;for(const y of m){const{startIndex:O}=y;C.push({t:i.TextXActionType.RETAIN,len:O-f.cursor,segmentId:g});const M={...y.paragraphStyle,hanging:void 0,indentStart:void 0};C.push({t:i.TextXActionType.RETAIN,len:1,body:{dataStream:"",paragraphs:[v?{paragraphStyle:M,startIndex:0}:{...y,startIndex:0,bullet:{...(D=y.bullet)!=null?D:{nestingLevel:0,textStyle:{fs:20}},listType:o,listId:h}}]},segmentId:g,coverType:i.UpdateDocsAttributeType.REPLACE}),f.moveCursorTo(O+1)}return _.params.actions=C.serialize(),!!r.syncExecuteCommand(_.id,_.params)}},be={id:"doc.command.bullet-list",type:i.CommandType.COMMAND,handler:s=>s.get(i.ICommandService).syncExecuteCommand(_e.id,{listType:i.PresetListType.BULLET_LIST})},Ae={id:"doc.command.order-list",type:i.CommandType.COMMAND,handler:s=>s.get(i.ICommandService).syncExecuteCommand(_e.id,{listType:i.PresetListType.ORDER_LIST})};function ut(s,n){const{startOffset:e,endOffset:t}=s,r=[];let o=-1;for(const a of n){const{startIndex:c}=a;(e>o&&e<=c||t>o&&t<=c||c>=e&&c<=t)&&r.push(a),o=c}return r}const Pe={id:"doc.command-replace-content",type:i.CommandType.COMMAND,handler:async(s,n)=>{var S;const{unitId:e,body:t,textRanges:r,segmentId:o=""}=n,a=s.get(i.IUniverInstanceService),c=s.get(i.ICommandService),l=s.get(exports.TextSelectionManagerService),u=(S=a.getUniverDocInstance(e))==null?void 0:S.getSnapshot().body,d=l.getSelections();if(u==null||!Array.isArray(d)||d.length===0)return!1;const m=we(e,o,u,t);return m.params.textRanges=r,!!c.syncExecuteCommand(m.id,m.params)}},Ne={id:"doc.command-cover-content",type:i.CommandType.COMMAND,handler:async(s,n)=>{var d;const{unitId:e,body:t,segmentId:r=""}=n,o=s.get(i.IUniverInstanceService),a=s.get(i.ICommandService),c=s.get(i.IUndoRedoService),l=(d=o.getUniverDocInstance(e))==null?void 0:d.getSnapshot().body;if(l==null)return!1;const u=we(e,r,l,t);return u.params.noNeedSetTextRange=!0,u.params.noHistory=!0,a.syncExecuteCommand(u.id,u.params),c.clearUndoRedo(e),!0}};function we(s,n,e,t){const r={id:b.id,params:{unitId:s,actions:[],textRanges:[]}},o=new i.TextX,a=(e==null?void 0:e.dataStream.length)-2;return a>0&&o.push({t:i.TextXActionType.DELETE,len:a,line:0,segmentId:n}),t.dataStream.length>0&&o.push({t:i.TextXActionType.INSERT,body:t,len:t.dataStream.length,line:0,segmentId:n}),r.params.actions=o.serialize(),r}const se={id:"doc.operation.move-cursor",type:i.CommandType.OPERATION,handler:(s,n)=>!!n},ae={id:"doc.operation.move-selection",type:i.CommandType.OPERATION,handler:(s,n)=>!!n},mt=(s,n)=>{const e=s.get(i.IUniverInstanceService).getUniverDocInstance(n.unitId),t=(e==null?void 0:e.zoomRatio)||1;return{...i.Tools.deepClone(n),zoomRatio:t}},$={id:"doc.operation.set-zoom-ratio",type:i.CommandType.OPERATION,handler:(s,n)=>{const e=s.get(i.IUniverInstanceService).getUniverDocInstance(n.unitId);if(!e)return!1;const t=e.getSnapshot();return t.settings==null?t.settings={zoomRatio:n.zoomRatio}:t.settings.zoomRatio=n.zoomRatio,!0}},Le={type:i.CommandType.COMMAND,id:"doc.command.set-zoom-ratio",handler:async(s,n)=>{var m,g;const e=s.get(i.ICommandService),t=s.get(i.IUndoRedoService),r=s.get(i.IUniverInstanceService);let o=r.getCurrentUniverDocInstance().getUnitId(),a=1;if(n&&(o=(m=n.documentId)!=null?m:o,a=(g=n.zoomRatio)!=null?g:a),!r.getUniverDocInstance(o))return!1;const l={zoomRatio:a,unitId:o},u=mt(s,l);return e.syncExecuteCommand($.id,l)?(t.pushUndoRedo({unitID:o,undoMutations:[{id:$.id,params:u}],redoMutations:[{id:$.id,params:l}]}),!0):!1}},Be={id:"doc.operation.select-all",type:i.CommandType.COMMAND,handler:async s=>{const n=s.get(i.IUniverInstanceService),e=s.get(exports.TextSelectionManagerService),t=n.getCurrentUniverDocInstance().getSnapshot().body;if(t==null)return!1;const r=[{startOffset:0,endOffset:t.dataStream.length-2}];return e.replaceTextRanges(r,!1),!0}};var gt=Object.defineProperty,St=Object.getOwnPropertyDescriptor,ht=(s,n,e,t)=>{for(var r=t>1?void 0:t?St(n,e):n,o=s.length-1,a;o>=0;o--)(a=s[o])&&(r=(t?a(n,e,r):a(r))||r);return t&&r&&gt(n,e,r),r},F=(s,n)=>(e,t)=>n(e,t,s);let te=class extends i.Disposable{constructor(n,e,t,r,o){super();I(this,"_previousIMEContent","");I(this,"_isCompositionStart",!0);I(this,"_onStartSubscription");I(this,"_onUpdateSubscription");I(this,"_onEndSubscription");this._docSkeletonManagerService=n,this._currentUniverService=e,this._textSelectionRenderManager=t,this._imeInputManagerService=r,this._commandService=o,this._initialize()}dispose(){var n,e,t;(n=this._onStartSubscription)==null||n.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(n=>{if(n==null)return;const{activeRange:e}=n;e!=null&&(this._imeInputManagerService.clearUndoRedoMutationParamsCache(),this._imeInputManagerService.setActiveRange(i.Tools.deepClone(e)),this._isCompositionStart=!0)})}_initialOnCompositionUpdate(){this._onUpdateSubscription=this._textSelectionRenderManager.onCompositionupdate$.subscribe(async n=>{this._updateContent(n,!0)})}_initialOnCompositionend(){this._onEndSubscription=this._textSelectionRenderManager.onCompositionend$.subscribe(n=>{this._updateContent(n,!1)})}async _updateContent(n,e){var u;const t=(u=this._docSkeletonManagerService.getCurrent())==null?void 0:u.skeleton;if(n==null||t==null)return;const r=this._currentUniverService.getCurrentUniverDocInstance(),{event:o,activeRange:a}=n;if(t==null||a==null)return;const l=o.data;l===this._previousIMEContent&&e||(await this._commandService.executeCommand(fe.id,{unitId:r.getUnitId(),newText:l,oldTextLen:this._previousIMEContent.length,isCompositionStart:this._isCompositionStart,isCompositionEnd:!e}),e?(this._isCompositionStart&&(this._isCompositionStart=!1),this._previousIMEContent=l):this._resetIME())}_resetIME(){this._previousIMEContent="",this._isCompositionStart=!0,this._imeInputManagerService.clearUndoRedoMutationParamsCache(),this._imeInputManagerService.setActiveRange(null)}};te=ht([i.OnLifecycle(i.LifecycleStages.Rendered,te),F(0,E.Inject(exports.DocSkeletonManagerService)),F(1,i.IUniverInstanceService),F(2,R.ITextSelectionRenderManager),F(3,E.Inject(V)),F(4,i.ICommandService)],te);var pt=Object.defineProperty,ft=Object.getOwnPropertyDescriptor,vt=(s,n,e,t)=>{for(var r=t>1?void 0:t?ft(n,e):n,o=s.length-1,a;o>=0;o--)(a=s[o])&&(r=(t?a(n,e,r):a(r))||r);return t&&r&&pt(n,e,r),r},Te=(s,n)=>(e,t)=>n(e,t,s);let ne=class extends i.Disposable{constructor(s,n){super(),this._textSelectionManagerService=s,this._commandService=n,this._commandExecutedListener()}_commandExecutedListener(){const s=[G.id,W.id,Y.id,Z.id,L.id,q.id,K.id,J.id,Q.id];this.disposeWithMe(this._commandService.onCommandExecuted(n=>{s.includes(n.id)&&this._handleInlineFormat(n)}))}_handleInlineFormat(s){var e,t;const{segmentId:n}=(e=this._textSelectionManagerService.getActiveRange())!=null?e:{};n!=null&&this._commandService.executeCommand(ve.id,{segmentId:n,preCommandId:s.id,...(t=s.params)!=null?t:{}})}};ne=vt([i.OnLifecycle(i.LifecycleStages.Rendered,ne),Te(0,E.Inject(exports.TextSelectionManagerService)),Te(1,i.ICommandService)],ne);var _t=Object.defineProperty,It=Object.getOwnPropertyDescriptor,Mt=(s,n,e,t)=>{for(var r=t>1?void 0:t?It(n,e):n,o=s.length-1,a;o>=0;o--)(a=s[o])&&(r=(t?a(n,e,r):a(r))||r);return t&&r&&_t(n,e,r),r},X=(s,n)=>(e,t)=>n(e,t,s);let re=class extends i.Disposable{constructor(n,e,t,r,o){super();I(this,"_onInputSubscription");this._docSkeletonManagerService=n,this._currentUniverService=e,this._renderManagerService=t,this._textSelectionManagerService=r,this._commandService=o,this._initialize(),this._commandExecutedListener()}dispose(){var n;(n=this._onInputSubscription)==null||n.unsubscribe()}_initialize(){}_commandExecutedListener(){const n=[se.id,ae.id];this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(!n.includes(e.id))return;const t=e.params;switch(e.id){case se.id:return this._handleMoveCursor(t.direction);case ae.id:return this._handleShiftMoveSelection(t.direction);default:throw new Error("Unknown command")}}))}_handleShiftMoveSelection(n){var p,h,_;const e=this._textSelectionManagerService.getActiveRange(),t=this._textSelectionManagerService.getSelections(),r=this._currentUniverService.getCurrentUniverDocInstance(),o=(p=this._docSkeletonManagerService.getCurrent())==null?void 0:p.skeleton,a=this._getDocObject();if(e==null||o==null||a==null)return;const{startOffset:c,endOffset:l,style:u,collapsed:d,direction:m}=e;if(t.length>1){let f=Number.POSITIVE_INFINITY,C=Number.NEGATIVE_INFINITY;for(const T of t)f=Math.min(f,T.startOffset),C=Math.max(C,T.endOffset);this._textSelectionManagerService.replaceTextRanges([{startOffset:n===i.Direction.LEFT||n===i.Direction.UP?C:f,endOffset:n===i.Direction.LEFT||n===i.Direction.UP?f:C,style:u}],!1);return}const g=d||m===R.RANGE_DIRECTION.FORWARD?c:l;let S=d||m===R.RANGE_DIRECTION.FORWARD?l:c;const v=(h=r.getBody().dataStream.length)!=null?h:Number.POSITIVE_INFINITY;if(n===i.Direction.LEFT||n===i.Direction.RIGHT){const f=o.findNodeByCharIndex(S-1),C=o.findNodeByCharIndex(S);S=n===i.Direction.RIGHT?S+C.count:S-((_=f==null?void 0:f.count)!=null?_:0),S=Math.min(v-2,Math.max(0,S)),this._textSelectionManagerService.replaceTextRanges([{startOffset:g,endOffset:S,style:u}],!1)}else{const f=o.findNodeByCharIndex(S),C=a.document.getOffsetConfig(),T=this._getTopOrBottomPosition(o,f,n===i.Direction.DOWN);if(T==null){const U=n===i.Direction.UP?0:v-2;if(U===S)return;this._textSelectionManagerService.replaceTextRanges([{startOffset:g,endOffset:U,style:u}],!1);return}const x=new R.NodePositionConvertToCursor(C,o).getRangePointData(T,T).cursorList[0];this._textSelectionManagerService.replaceTextRanges([{startOffset:g,endOffset:x.endOffset,style:u}],!1)}}_handleMoveCursor(n){var g,S,v;const e=this._textSelectionManagerService.getActiveRange(),t=this._textSelectionManagerService.getSelections(),r=this._currentUniverService.getCurrentUniverDocInstance(),o=(g=this._docSkeletonManagerService.getCurrent())==null?void 0:g.skeleton,a=this._getDocObject();if(e==null||o==null||a==null||t==null)return;const{startOffset:c,endOffset:l,style:u,collapsed:d}=e,m=(S=r.getBody().dataStream.length)!=null?S:Number.POSITIVE_INFINITY;if(n===i.Direction.LEFT||n===i.Direction.RIGHT){let p;if(!e.collapsed||t.length>1){let h=Number.POSITIVE_INFINITY,_=Number.NEGATIVE_INFINITY;for(const f of t)h=Math.min(h,f.startOffset),_=Math.max(_,f.endOffset);p=n===i.Direction.LEFT?h:_}else{const h=o.findNodeByCharIndex(c-1),_=o.findNodeByCharIndex(c);n===i.Direction.LEFT?p=Math.max(0,c-((v=h==null?void 0:h.count)!=null?v:0)):p=Math.min(m-2,l+_.count)}this._textSelectionManagerService.replaceTextRanges([{startOffset:p,endOffset:p,style:u}],!1)}else{const p=o.findNodeByCharIndex(c),h=o.findNodeByCharIndex(l),_=a.document.getOffsetConfig(),f=this._getTopOrBottomPosition(o,n===i.Direction.UP?p:h,n===i.Direction.DOWN);if(f==null){let T;d?T=n===i.Direction.UP?0:m-2:T=n===i.Direction.UP?c:l,this._textSelectionManagerService.replaceTextRanges([{startOffset:T,endOffset:T,style:u}],!1);return}const C=new R.NodePositionConvertToCursor(_,o).getRangePointData(f,f).cursorList[0];this._textSelectionManagerService.replaceTextRanges([{...C,style:u}],!1)}}_getTopOrBottomPosition(n,e,t){if(e==null)return;const r=this._getSpanLeftOffsetInLine(e),o=this._getNextOrPrevLine(e,t);if(o==null)return;const a=this._matchPositionByLeftOffset(n,o,r);if(a!=null)return{...a,isBack:!0}}_getSpanLeftOffsetInLine(n){const e=n.parent;if(e==null)return Number.NEGATIVE_INFINITY;const t=e.left,{left:r}=n;return t+r}_matchPositionByLeftOffset(n,e,t){const r={distance:Number.POSITIVE_INFINITY};for(const o of e.divides){const a=o.left;for(const c of o.spanGroup){const{left:l}=c,u=a+l,d=Math.abs(t-u);d<r.distance&&(r.span=c,r.distance=d)}}if(r.span!=null)return n.findPositionBySpan(r.span)}_getNextOrPrevLine(n,e){var v,p,h,_,f,C,T,x,U,D,y,O;const t=n.parent;if(t==null)return;const r=t.parent;if(r==null)return;const o=r.parent;if(o==null)return;const a=o.lines.indexOf(r);if(a===-1)return;let c;if(e===!0?c=o.lines[a+1]:c=o.lines[a-1],c!=null)return c;const l=o.parent;if(l==null)return;const u=l.columns.indexOf(o);if(u===-1)return;if(e===!0)c=(v=l.columns[u+1])==null?void 0:v.lines[0];else{const M=(h=(p=l.columns)==null?void 0:p[u-1])==null?void 0:h.lines;c=M==null?void 0:M[M.length-1]}if(c!=null)return c;const d=l.parent;if(d==null)return;const m=d.sections.indexOf(l);if(m===-1)return;if(e===!0)c=(f=(_=d.sections[m-1])==null?void 0:_.columns[0])==null?void 0:f.lines[0];else{const M=(T=(C=d.sections)==null?void 0:C[m-1])==null?void 0:T.columns,N=M==null?void 0:M[M.length-1],A=N==null?void 0:N.lines;c=A==null?void 0:A[A.length-1]}if(c!=null)return c;const g=d.parent;if(g==null)return;const S=g.pages.indexOf(d);if(S!==-1){if(e===!0)c=(D=(U=(x=g.pages[S+1])==null?void 0:x.sections[0])==null?void 0:U.columns[0])==null?void 0:D.lines[0];else{const M=(y=g.pages[S-1])==null?void 0:y.sections;if(M==null)return;const N=(O=M[M.length-1])==null?void 0:O.columns,A=N[N.length-1],Ie=A==null?void 0:A.lines;c=Ie[Ie.length-1]}if(c!=null)return c}}_getDocObject(){return ue(this._currentUniverService,this._renderManagerService)}};re=Mt([i.OnLifecycle(i.LifecycleStages.Rendered,re),X(0,E.Inject(exports.DocSkeletonManagerService)),X(1,i.IUniverInstanceService),X(2,R.IRenderManagerService),X(3,E.Inject(exports.TextSelectionManagerService)),X(4,i.ICommandService)],re);var Ct=Object.defineProperty,Tt=Object.getOwnPropertyDescriptor,xt=(s,n,e,t)=>{for(var r=t>1?void 0:t?Tt(n,e):n,o=s.length-1,a;o>=0;o--)(a=s[o])&&(r=(t?a(n,e,r):a(r))||r);return t&&r&&Ct(n,e,r),r},j=(s,n)=>(e,t)=>n(e,t,s);let ie=class extends i.Disposable{constructor(n,e,t,r,o){super();I(this,"_onInputSubscription");this._docSkeletonManagerService=n,this._currentUniverService=e,this._renderManagerService=t,this._textSelectionRenderManager=r,this._commandService=o,this._initialize(),this._commandExecutedListener()}dispose(){var n;(n=this._onInputSubscription)==null||n.unsubscribe()}_initialize(){this._initialNormalInput()}_initialNormalInput(){this._onInputSubscription=this._textSelectionRenderManager.onInput$.subscribe(async n=>{var v;if(n==null)return;const t=this._currentUniverService.getCurrentUniverDocInstance().getUnitId(),{event:r,content:o="",activeRange:a}=n,c=r,l=(v=this._docSkeletonManagerService.getCurrent())==null?void 0:v.skeleton;if(c.data==null||l==null||!l||!a)return;const{startOffset:u,segmentId:d,style:m}=a,g=o.length,S=[{startOffset:u+g,endOffset:u+g,style:m}];await this._commandService.executeCommand(z.id,{unitId:t,body:{dataStream:o},range:a,textRanges:S,segmentId:d})})}_commandExecutedListener(){}_getDocObject(){return ue(this._currentUniverService,this._renderManagerService)}};ie=xt([i.OnLifecycle(i.LifecycleStages.Rendered,ie),j(0,E.Inject(exports.DocSkeletonManagerService)),j(1,i.IUniverInstanceService),j(2,R.IRenderManagerService),j(3,R.ITextSelectionRenderManager),j(4,i.ICommandService)],ie);var Rt=Object.defineProperty,yt=Object.getOwnPropertyDescriptor,Ot=(s,n,e,t)=>{for(var r=t>1?void 0:t?yt(n,e):n,o=s.length-1,a;o>=0;o--)(a=s[o])&&(r=(t?a(n,e,r):a(r))||r);return t&&r&&Rt(n,e,r),r},B=(s,n)=>(e,t)=>n(e,t,s);let oe=class extends i.Disposable{constructor(n,e,t,r,o,a){super();I(this,"_loadedMap",new WeakSet);this._docSkeletonManagerService=n,this._currentUniverService=e,this._commandService=t,this._renderManagerService=r,this._textSelectionRenderManager=o,this._textSelectionManagerService=a,this._initialize()}_initialize(){this._init(),this._skeletonListener(),this._commandExecutedListener()}_init(){this.disposeWithMe(this._renderManagerService.currentRender$.subscribe(n=>{this._create(n)})),this._renderManagerService.getRenderAll().forEach((n,e)=>{this._create(e)})}_create(n){if(n==null||this._currentUniverService.getUniverDocInstance(n)==null)return;const e=this._getDocObjectById(n);e==null||e.document==null||this._loadedMap.has(e.document)||(this._initialMain(n),this._loadedMap.add(e.document))}_initialMain(n){const e=this._getDocObjectById(n);if(e==null)return;const{document:t,scene:r}=e;this.disposeWithMe(i.toDisposable(t.onPointerEnterObserver.add(()=>{t.cursor=R.CURSOR_TYPE.TEXT}))),this.disposeWithMe(i.toDisposable(t.onPointerLeaveObserver.add(()=>{t.cursor=R.CURSOR_TYPE.DEFAULT,r.resetCursor()}))),this.disposeWithMe(i.toDisposable(t==null?void 0:t.onPointerDownObserver.add((o,a)=>{this._currentUniverService.getCurrentUniverDocInstance().getUnitId()!==n&&this._currentUniverService.setCurrentUniverDocInstance(n),this._textSelectionRenderManager.eventTrigger(o),o.button!==2&&a.stopPropagation()}))),this.disposeWithMe(i.toDisposable(t==null?void 0:t.onDblclickObserver.add(o=>{this._textSelectionRenderManager.handleDblClick(o)}))),this.disposeWithMe(i.toDisposable(t==null?void 0:t.onTripleClickObserver.add(o=>{this._textSelectionRenderManager.handleTripleClick(o)})))}_commandExecutedListener(){const n=[$.id];this.disposeWithMe(this._commandService.onCommandExecuted(e=>{var t;if(n.includes(e.id)){const r=e.params,{unitId:o}=r,a=(t=this._textSelectionManagerService.getCurrentSelection())==null?void 0:t.unitId;if(o!==a)return;this._textSelectionManagerService.refreshSelection()}}))}_skeletonListener(){this.disposeWithMe(this._docSkeletonManagerService.currentSkeleton$.subscribe(n=>{if(n==null)return;const{unitId:e,skeleton:t}=n,r=this._renderManagerService.getRenderById(e);if(r==null)return;const{scene:o,mainComponent:a}=r;this._textSelectionRenderManager.changeRuntime(t,o,a),this._textSelectionManagerService.setCurrentSelectionNotRefresh({unitId:e,subUnitId:""})}))}_getDocObjectById(n){return Xe(n,this._renderManagerService)}};oe=Ot([i.OnLifecycle(i.LifecycleStages.Rendered,oe),B(0,E.Inject(exports.DocSkeletonManagerService)),B(1,i.IUniverInstanceService),B(2,i.ICommandService),B(3,R.IRenderManagerService),B(4,R.ITextSelectionRenderManager),B(5,E.Inject(exports.TextSelectionManagerService))],oe);var Dt=Object.defineProperty,Et=Object.getOwnPropertyDescriptor,Ut=(s,n,e,t)=>{for(var r=t>1?void 0:t?Et(n,e):n,o=s.length-1,a;o>=0;o--)(a=s[o])&&(r=(t?a(n,e,r):a(r))||r);return t&&r&&Dt(n,e,r),r},ee=(s,n)=>(e,t)=>n(e,t,s);const bt={hasScroll:!0},At="docs";var de;exports.UniverDocsPlugin=(de=class extends i.Plugin{constructor(e={},t,r,o,a){super(At);I(this,"_config");this._injector=t,this._localeService=r,this._configService=o,this._currentUniverService=a,this._config=Object.assign(bt,e),this._initializeDependencies(t),this._initializeCommands()}initialize(){}_initializeCommands(){[se,ae,Oe,De,G,W,Y,Z,L,q,K,J,Q,ve,ye,z,H,Se,fe,pe,b,Pe,Ne,Le,$,me,Be,Ae,be,_e].forEach(e=>{this._injector.get(i.ICommandService).registerCommand(e)})}onReady(){this.initialize()}_initializeDependencies(e){[[exports.DocSkeletonManagerService],[exports.DocViewModelManagerService],[exports.DocStateChangeManagerService],[V],[R.ITextSelectionRenderManager,{useClass:R.TextSelectionRenderManager}],[exports.TextSelectionManagerService],[oe],[ie],[te],[ne],[re]].forEach(t=>e.add(t))}},I(de,"type",i.PluginType.Doc),de);exports.UniverDocsPlugin=Ut([ee(1,E.Inject(E.Injector)),ee(2,E.Inject(i.LocaleService)),ee(3,i.IConfigService),ee(4,i.IUniverInstanceService)],exports.UniverDocsPlugin);exports.BreakLineCommand=ye;exports.BulletListCommand=be;exports.CoverContentCommand=Ne;exports.CutContentCommand=he;exports.DOCS_COMPONENT_DEFAULT_Z_INDEX=Ve;exports.DOCS_COMPONENT_HEADER_LAYER_INDEX=ke;exports.DOCS_COMPONENT_MAIN_LAYER_INDEX=je;exports.DOCS_VIEW_KEY=xe;exports.DeleteCommand=H;exports.DeleteLeftCommand=Oe;exports.DeleteRightCommand=De;exports.IMEInputCommand=fe;exports.IMEInputManagerService=V;exports.InnerPasteCommand=st;exports.InsertCommand=z;exports.MoveCursorOperation=se;exports.MoveSelectionOperation=ae;exports.NORMAL_TEXT_SELECTION_PLUGIN_NAME=ze;exports.OrderListCommand=Ae;exports.ReplaceContentCommand=Pe;exports.RichTextEditingMutation=b;exports.SelectAllOperation=Be;exports.SetDocZoomRatioCommand=Le;exports.SetDocZoomRatioOperation=$;exports.SetInlineFormatBoldCommand=G;exports.SetInlineFormatCommand=ve;exports.SetInlineFormatFontFamilyCommand=J;exports.SetInlineFormatFontSizeCommand=K;exports.SetInlineFormatItalicCommand=W;exports.SetInlineFormatStrikethroughCommand=Z;exports.SetInlineFormatSubscriptCommand=L;exports.SetInlineFormatSuperscriptCommand=q;exports.SetInlineFormatTextColorCommand=Q;exports.SetInlineFormatUnderlineCommand=Y;exports.SetTextSelectionsOperation=me;exports.UpdateCommand=Se;exports.VIEWPORT_KEY=Re;exports.getDocObject=ue;exports.serializeTextRange=k;