@univerjs/docs-drawing-ui 0.20.1 → 0.21.0-insiders.20260422-d7fcb4d

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 (42) hide show
  1. package/lib/cjs/index.js +3506 -1
  2. package/lib/cjs/locale/ca-ES.js +60 -1
  3. package/lib/cjs/locale/en-US.js +75 -1
  4. package/lib/cjs/locale/es-ES.js +60 -1
  5. package/lib/cjs/locale/fa-IR.js +60 -1
  6. package/lib/cjs/locale/fr-FR.js +60 -1
  7. package/lib/cjs/locale/ja-JP.js +60 -1
  8. package/lib/cjs/locale/ko-KR.js +60 -1
  9. package/lib/cjs/locale/ru-RU.js +60 -1
  10. package/lib/cjs/locale/sk-SK.js +60 -1
  11. package/lib/cjs/locale/vi-VN.js +60 -1
  12. package/lib/cjs/locale/zh-CN.js +60 -1
  13. package/lib/cjs/locale/zh-TW.js +60 -1
  14. package/lib/es/index.js +3482 -1
  15. package/lib/es/locale/ca-ES.js +59 -1
  16. package/lib/es/locale/en-US.js +74 -1
  17. package/lib/es/locale/es-ES.js +59 -1
  18. package/lib/es/locale/fa-IR.js +59 -1
  19. package/lib/es/locale/fr-FR.js +59 -1
  20. package/lib/es/locale/ja-JP.js +59 -1
  21. package/lib/es/locale/ko-KR.js +59 -1
  22. package/lib/es/locale/ru-RU.js +59 -1
  23. package/lib/es/locale/sk-SK.js +59 -1
  24. package/lib/es/locale/vi-VN.js +59 -1
  25. package/lib/es/locale/zh-CN.js +59 -1
  26. package/lib/es/locale/zh-TW.js +59 -1
  27. package/lib/index.js +3482 -1
  28. package/lib/locale/ca-ES.js +59 -1
  29. package/lib/locale/en-US.js +74 -1
  30. package/lib/locale/es-ES.js +59 -1
  31. package/lib/locale/fa-IR.js +59 -1
  32. package/lib/locale/fr-FR.js +59 -1
  33. package/lib/locale/ja-JP.js +59 -1
  34. package/lib/locale/ko-KR.js +59 -1
  35. package/lib/locale/ru-RU.js +59 -1
  36. package/lib/locale/sk-SK.js +59 -1
  37. package/lib/locale/vi-VN.js +59 -1
  38. package/lib/locale/zh-CN.js +59 -1
  39. package/lib/locale/zh-TW.js +59 -1
  40. package/lib/umd/index.js +1 -1
  41. package/package.json +13 -13
  42. package/LICENSE +0 -176
package/lib/cjs/index.js CHANGED
@@ -1 +1,3506 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/docs-drawing`),n=require(`@univerjs/docs`),r=require(`@univerjs/docs-ui`),i=require(`@univerjs/engine-render`),a=require(`@univerjs/design`),o=require(`@univerjs/drawing`),s=require(`@univerjs/ui`),c=require(`rxjs`),l=require(`@univerjs/drawing-ui`),u=require(`react`),d=require(`react/jsx-runtime`);const f={id:`doc.command.remove-doc-image`,type:e.CommandType.COMMAND,handler:(t,a)=>{var o,s,c;let l=t.get(e.ICommandService),u=t.get(e.IUniverInstanceService),d=t.get(i.IRenderManagerService),f=u.getCurrentUniverDocInstance();if(a==null||f==null)return!1;let p=d.getRenderById(a.unitId).with(r.DocSelectionRenderService),{drawings:m}=a,h=(o=p.getSegment())==null?``:o,g=new e.TextX,_=e.JSONX.getInstance(),v=(s=(c=f.getSelfOrHeaderFooterModel(h).getBody())==null?void 0:c.customBlocks)==null?[]:s,y=m.map(e=>v.find(t=>t.blockId===e.drawingId)).filter(e=>!!e).sort((e,t)=>e.startIndex>t.startIndex?1:-1),b=m[0].unitId,x=new e.MemoryCursor;x.reset();let S=y[0].startIndex,C=[{startOffset:S,endOffset:S}],w={id:n.RichTextEditingMutation.id,params:{unitId:b,actions:[],textRanges:C}},T=[];for(let t of y){let{startIndex:n}=t;n>x.cursor&&g.push({t:e.TextXActionType.RETAIN,len:n-x.cursor}),g.push({t:e.TextXActionType.DELETE,len:1}),x.moveCursorTo(n+1)}let E=(0,r.getRichTextEditPath)(f,h);T.push(_.editOp(g.serialize(),E));for(let e of y){var D;let{blockId:t}=e,n=((D=f.getDrawings())==null?{}:D)[t],r=f.getDrawingsOrder().indexOf(t),i=_.removeOp([`drawings`,t],n),a=_.removeOp([`drawingsOrder`,r],t);T.push(i),T.push(a)}return w.params.actions=T.reduce((t,n)=>e.JSONX.compose(t,n),null),!!l.syncExecuteCommand(w.id,w.params)}},p={id:`doc.command.delete-drawing`,type:e.CommandType.COMMAND,handler:n=>{let r=n.get(e.ICommandService),i=n.get(t.IDocDrawingService).getFocusDrawings();if(i.length===0)return!1;let{unitId:a}=i[0],o=i.map(e=>{let{unitId:t,subUnitId:n,drawingId:r,drawingType:i}=e;return{unitId:t,subUnitId:n,drawingId:r,drawingType:i}});return r.executeCommand(f.id,{unitId:a,drawings:o})}},m={id:`doc.command.group-doc-image`,type:e.CommandType.COMMAND,handler:(e,t)=>!1},h={id:`doc.command.insert-doc-image`,type:e.CommandType.COMMAND,handler:(t,i)=>{var a,o;if(i==null)return!1;let s=t.get(e.ICommandService),c=t.get(n.DocSelectionManagerService),l=t.get(e.IUniverInstanceService),u=c.getActiveTextRange(),d=l.getCurrentUniverDocInstance();if(u==null||d==null)return!1;let f=d.getUnitId(),{drawings:p}=i,{collapsed:m,startOffset:h,segmentId:g}=u,_=d.getSelfOrHeaderFooterModel(g).getBody();if(_==null)return!1;let v=new e.TextX,y=e.JSONX.getInstance(),b=[],x=(a=(o=d.getSnapshot().drawingsOrder)==null?void 0:o.length)==null?0:a,S=0;if(m)h>0&&v.push({t:e.TextXActionType.RETAIN,len:h});else{var C,w;let t=e.BuildTextUtils.selection.delete([u],_,0,null,!1);v.push(...t);let n=(0,r.getCustomBlockIdsInSelections)(_,[u]),i=(C=d.getDrawings())==null?{}:C,a=(w=d.getDrawingsOrder())==null?[]:w,o=n.sort((e,t)=>a.indexOf(e)>a.indexOf(t)?-1:a.indexOf(e)<a.indexOf(t)?1:0);if(o.length>0)for(let e of o){let t=i[e],n=a.indexOf(e);if(t==null||n<0)continue;let r=y.removeOp([`drawings`,e],t),o=y.removeOp([`drawingsOrder`,n],e);b.push(r),b.push(o),S++}}v.push({t:e.TextXActionType.INSERT,body:{dataStream:`\b`.repeat(p.length),customBlocks:p.map((e,t)=>({startIndex:t,blockId:e.drawingId}))},len:p.length});let T=(0,r.getRichTextEditPath)(d,g),E=y.editOp(v.serialize(),T);b.push(E);for(let e of p){let{drawingId:t}=e,n=y.insertOp([`drawings`,t],e),r=y.insertOp([`drawingsOrder`,x-S],t);b.push(n),b.push(r)}let D={id:n.RichTextEditingMutation.id,params:{unitId:f,actions:[],textRanges:[]}};return D.params.actions=b.reduce((t,n)=>e.JSONX.compose(t,n),null),!!s.syncExecuteCommand(D.id,D.params)}},g={id:`doc.command.set-drawing-arrange`,type:e.CommandType.COMMAND,handler:(r,i)=>{let a=r.get(e.ICommandService),o=r.get(t.IDocDrawingService);if(i==null)return!1;let{unitId:s,subUnitId:c,drawingIds:l,arrangeType:u}=i,d={unitId:s,subUnitId:c,drawingIds:l},f;if(u===e.ArrangeTypeEnum.forward?f=o.getForwardDrawingsOp(d):u===e.ArrangeTypeEnum.backward?f=o.getBackwardDrawingOp(d):u===e.ArrangeTypeEnum.front?f=o.getFrontDrawingsOp(d):u===e.ArrangeTypeEnum.back&&(f=o.getBackDrawingsOp(d)),f==null)return!1;let{redo:p}=f;if(p==null)return!1;let m=[],h=e.Tools.deepClone(p);h=h.slice(3),h.unshift(`drawingsOrder`),m.push(h);let g={id:n.RichTextEditingMutation.id,params:{unitId:s,actions:[],textRanges:null}};return g.params.actions=m.reduce((t,n)=>e.JSONX.compose(t,n),null),!!a.syncExecuteCommand(g.id,g.params)}},_={id:`doc.command.ungroup-doc-image`,type:e.CommandType.COMMAND,handler:(e,n)=>{let r=e.get(t.IDocDrawingService);if(!n)return!1;let i=[];n.forEach(({parent:e,children:t})=>{i.push(e.unitId),t.forEach(e=>{i.push(e.unitId)})});let{unitId:a,subUnitId:o,undo:s,redo:c,objects:l}=r.getUngroupDrawingOp(n);return!1}};function v(e){"@babel/helpers - typeof";return v=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},v(e)}function y(e,t){if(v(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(v(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function b(e){var t=y(e,`string`);return v(t)==`symbol`?t:t+``}function x(e,t,n){return(t=b(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var S=class{constructor(){x(this,`_refreshDrawings$`,new c.BehaviorSubject(null)),x(this,`refreshDrawings$`,this._refreshDrawings$.asObservable())}refreshDrawings(e){this._refreshDrawings$.next(e)}};function C(e,t){return function(n,r){t(n,r,e)}}function w(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let T=class extends e.Disposable{constructor(e,t,n,r,i,a,o,s,c,l,u,d,f){super(),this._context=e,this._commandService=t,this._docSelectionManagerService=n,this._renderManagerSrv=r,this._imageIoService=i,this._docDrawingService=a,this._drawingManagerService=o,this._contextService=s,this._messageService=c,this._localeService=l,this._docSelectionRenderService=u,this._docRefreshDrawingsService=d,this._fileOpenerService=f,this._updateOrderListener(),this._groupDrawingListener(),this._focusDrawingListener(),this._transformDrawingListener(),this._editAreaChangeListener()}dispose(){super.dispose(),delete this._context}async insertDocImage(){let e=await this._fileOpenerService.openFile({multiple:!0,accept:o.DRAWING_IMAGE_ALLOW_IMAGE_LIST.map(e=>`.${e.replace(`image/`,``)}`).join(`,`)}),t=e.length;return t>o.DRAWING_IMAGE_COUNT_LIMIT?(this._messageService.show({type:a.MessageType.Error,content:this._localeService.t(`update-status.exceedMaxCount`,String(o.DRAWING_IMAGE_COUNT_LIMIT))}),!1):t===0?!1:(await this._insertFloatImages(e),!0)}async _insertFloatImages(t){let n=[];try{n=await Promise.all(t.map(e=>this._imageIoService.saveImage(e)))}catch(e){let t=e.message,n=``;switch(t){case o.ImageUploadStatusType.ERROR_EXCEED_SIZE:n=this._localeService.t(`update-status.exceedMaxSize`,String(o.DRAWING_IMAGE_ALLOW_SIZE/(1024*1024)));break;case o.ImageUploadStatusType.ERROR_IMAGE_TYPE:n=this._localeService.t(`update-status.invalidImageType`);break;case o.ImageUploadStatusType.ERROR_IMAGE:n=this._localeService.t(`update-status.invalidImage`);break;default:break}this._messageService.show({type:a.MessageType.Error,content:n})}if(n.length===0)return;let{unitId:i}=this._context,s=[];for(let t of n){if(t==null)continue;let{imageId:n,imageSourceType:a,source:c,base64Cache:l}=t,{width:u,height:d,image:f}=await(0,o.getImageSize)(l||``);this._imageIoService.addImageSourceCache(n,a,f);let p=1;if(u>o.DRAWING_IMAGE_WIDTH_LIMIT||d>o.DRAWING_IMAGE_HEIGHT_LIMIT){let e=o.DRAWING_IMAGE_WIDTH_LIMIT/u,t=o.DRAWING_IMAGE_HEIGHT_LIMIT/d;p=Math.min(e,t)}let m=this._getImagePosition(u*p,d*p);if(m==null)return;let h={unitId:i,subUnitId:i,drawingId:n,drawingType:e.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:a,source:c,transform:(0,r.docDrawingPositionToTransform)(m),docTransform:m,behindDoc:e.BooleanNumber.FALSE,title:``,description:``,layoutType:e.PositionedObjectLayoutType.INLINE,wrapText:e.WrapTextType.BOTH_SIDES,distB:0,distL:0,distR:0,distT:0};this._isInsertInHeaderFooter()&&(h.isMultiTransform=e.BooleanNumber.TRUE,h.transforms=h.transform?[h.transform]:null),s.push(h)}this._commandService.executeCommand(h.id,{unitId:i,drawings:s})}_isInsertInHeaderFooter(){var e;let{unitId:t}=this._context,r=(e=this._renderManagerSrv.getRenderById(t))==null?void 0:e.with(n.DocSkeletonManagerService).getViewModel(),a=r==null?void 0:r.getEditArea();return a===i.DocumentEditArea.HEADER||a===i.DocumentEditArea.FOOTER}_getImagePosition(t,n){let r=this._docSelectionRenderService.getActiveTextRange(),i=(r==null?void 0:r.getAbsolutePosition())||{left:0,top:0};return{size:{width:t,height:n},positionH:{relativeFrom:e.ObjectRelativeFromH.PAGE,posOffset:i.left},positionV:{relativeFrom:e.ObjectRelativeFromV.PARAGRAPH,posOffset:0},angle:0}}_updateOrderListener(){this.disposeWithMe(this._drawingManagerService.featurePluginOrderUpdate$.subscribe(e=>{let{unitId:t,subUnitId:n,drawingIds:r,arrangeType:i}=e;this._commandService.executeCommand(g.id,{unitId:t,subUnitId:n,drawingIds:r,arrangeType:i})}))}_groupDrawingListener(){this.disposeWithMe(this._drawingManagerService.featurePluginGroupUpdate$.subscribe(e=>{this._commandService.executeCommand(m.id,e)})),this.disposeWithMe(this._drawingManagerService.featurePluginUngroupUpdate$.subscribe(e=>{this._commandService.executeCommand(_.id,e)}))}_getCurrentSceneAndTransformer(){let{scene:e,mainComponent:t}=this._context;if(e==null||t==null)return;let n=e.getTransformerByCreate(),{docsLeft:r,docsTop:i}=t.getOffsetConfig();return{scene:e,transformer:n,docsLeft:r,docsTop:i}}_transformDrawingListener(){let e=this._getCurrentSceneAndTransformer();if(e&&e.transformer)this.disposeWithMe(e.transformer.changeEnd$.pipe((0,c.debounceTime)(30)).subscribe(e=>{this._docSelectionManagerService.refreshSelection()}));else throw Error(`transformer is not init`)}_focusDrawingListener(){this.disposeWithMe(this._drawingManagerService.focus$.subscribe(t=>{var n;let{transformer:r,docsLeft:i,docsTop:a}=(n=this._getCurrentSceneAndTransformer())==null?{}:n;if(t==null||t.length===0)this._contextService.setContextValue(e.FOCUSING_COMMON_DRAWINGS,!1),this._docDrawingService.focusDrawing([]),r&&r.resetProps({zeroTop:0,zeroLeft:0});else{this._contextService.setContextValue(e.FOCUSING_COMMON_DRAWINGS,!0),this._docDrawingService.focusDrawing(t),this._setDrawingSelections(t);let n=this._docSelectionRenderService.getSegment(),o=this._findSegmentIdByDrawingId(t[0].drawingId);n!==o&&this._docSelectionRenderService.setSegment(o),r&&r.resetProps({zeroTop:a,zeroLeft:i})}}))}_findSegmentIdByDrawingId(e){var t;let{unit:n}=this._context,{body:r,headers:i={},footers:a={}}=n.getSnapshot();if(((t=r==null?void 0:r.customBlocks)==null?[]:t).some(t=>t.blockId===e))return``;for(let t of Object.keys(i)){var o;if((o=i[t].body.customBlocks)!=null&&o.some(t=>t.blockId===e))return t}for(let t of Object.keys(a)){var s;if((s=a[t].body.customBlocks)!=null&&s.some(t=>t.blockId===e))return t}return``}_updateDrawingsEditStatus(){var t;if(!this._context)return;let{unit:r,scene:a,unitId:s}=this._context,c=(t=this._renderManagerSrv.getRenderById(s))==null?void 0:t.with(n.DocSkeletonManagerService).getViewModel();if(c==null||r==null)return;let{drawings:l={}}=r.getSnapshot(),u=c.getEditArea()===i.DocumentEditArea.BODY;for(let t of Object.keys(l)){let n=l[t],r=(0,o.getDrawingShapeKeyByDrawingSearch)({unitId:s,drawingId:n.drawingId,subUnitId:s}),i=a.fuzzyMathObjects(r,!0);if(i.length)for(let t of i){a.detachTransformerFrom(t);try{t.setOpacity(.5)}catch{}if(u&&n.isMultiTransform!==e.BooleanNumber.TRUE||!u&&n.isMultiTransform===e.BooleanNumber.TRUE){n.allowTransform!==!1&&a.attachTransformerTo(t);try{t.setOpacity(1)}catch{}}}}}_editAreaChangeListener(){var e;let{unitId:t}=this._context,r=(e=this._renderManagerSrv.getRenderById(t))==null?void 0:e.with(n.DocSkeletonManagerService).getViewModel();r!=null&&(this._updateDrawingsEditStatus(),this.disposeWithMe(r.editAreaChange$.subscribe(()=>{this._updateDrawingsEditStatus()})),this.disposeWithMe(this._docRefreshDrawingsService.refreshDrawings$.subscribe(e=>{e!=null&&queueMicrotask(()=>{this._updateDrawingsEditStatus()})})),this.disposeWithMe(this._commandService.onCommandExecuted(async e=>{e.id===n.RichTextEditingMutation.id&&queueMicrotask(()=>{this._updateDrawingsEditStatus()})})))}_setDrawingSelections(e){var t,n;let{unit:r}=this._context,i=(t=(n=r.getSnapshot().body)==null?void 0:n.customBlocks)==null?[]:t,a=e.map(e=>{let t=e.drawingId,n=i.find(e=>e.blockId===t);return n?n.startIndex:null}).filter(e=>e!==null).map(e=>({startOffset:e,endOffset:e+1}));this._docSelectionManagerService.replaceDocRanges(a)}};T=w([C(1,e.ICommandService),C(2,(0,e.Inject)(n.DocSelectionManagerService)),C(3,i.IRenderManagerService),C(4,o.IImageIoService),C(5,t.IDocDrawingService),C(6,o.IDrawingManagerService),C(7,e.IContextService),C(8,s.IMessageService),C(9,(0,e.Inject)(e.LocaleService)),C(10,(0,e.Inject)(r.DocSelectionRenderService)),C(11,(0,e.Inject)(S)),C(12,s.ILocalFileService)],T);const E={id:`doc.command.insert-float-image`,type:e.CommandType.COMMAND,handler:t=>{var n,r;let a=t.get(e.IUniverInstanceService),o=t.get(i.IRenderManagerService);return(n=(r=(0,i.getCurrentTypeOfRenderer)(e.UniverInstanceType.UNIVER_DOC,a,o))==null?void 0:r.with(T).insertDocImage())==null?!1:n}};let D=function(e){return e.INLINE=`inline`,e.BEHIND_TEXT=`behindText`,e.IN_FRONT_OF_TEXT=`inFrontOfText`,e.WRAP_SQUARE=`wrapSquare`,e.WRAP_TOP_AND_BOTTOM=`wrapTopAndBottom`,e}({});const O={[D.INLINE]:e.PositionedObjectLayoutType.INLINE,[D.WRAP_SQUARE]:e.PositionedObjectLayoutType.WRAP_SQUARE,[D.WRAP_TOP_AND_BOTTOM]:e.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM,[D.IN_FRONT_OF_TEXT]:e.PositionedObjectLayoutType.WRAP_NONE,[D.BEHIND_TEXT]:e.PositionedObjectLayoutType.WRAP_NONE};function k(t,n,i,a,o,s,c){var l;let u=new e.TextX,d=e.JSONX.getInstance(),f=[],p=s.getSelfOrHeaderFooterModel(n).getBody(),m=s.getSelfOrHeaderFooterModel(t).getBody();if(p==null||m==null)return;let h=(l=p.customBlocks)==null||(l=l.find(e=>e.blockId===o))==null?void 0:l.startIndex;if(h!=null){if(a=Math.min(m.dataStream.length-2,a),t===n){if(a<h?(a>0&&u.push({t:e.TextXActionType.RETAIN,len:a}),u.push({t:e.TextXActionType.INSERT,body:{dataStream:`\b`,customBlocks:[{startIndex:0,blockId:o}]},len:1}),u.push({t:e.TextXActionType.RETAIN,len:h-a}),u.push({t:e.TextXActionType.DELETE,len:1})):(h>0&&u.push({t:e.TextXActionType.RETAIN,len:h}),u.push({t:e.TextXActionType.DELETE,len:1}),a-h-1>0&&u.push({t:e.TextXActionType.RETAIN,len:a-h-1}),u.push({t:e.TextXActionType.INSERT,body:{dataStream:`\b`,customBlocks:[{startIndex:0,blockId:o}]},len:1})),a!==h){let e=(0,r.getRichTextEditPath)(s,n),t=d.editOp(u.serialize(),e);f.push(t)}}else{h>0&&u.push({t:e.TextXActionType.RETAIN,len:h}),u.push({t:e.TextXActionType.DELETE,len:1});let l=(0,r.getRichTextEditPath)(s,n),p=d.editOp(u.serialize(),l);f.push(p),u.empty(),a>0&&u.push({t:e.TextXActionType.RETAIN,len:a}),u.push({t:e.TextXActionType.INSERT,body:{dataStream:`\b`,customBlocks:[{startIndex:0,blockId:o}]},len:1}),l=(0,r.getRichTextEditPath)(s,t),p=d.editOp(u.serialize(),l),f.push(p),c.setSegment(t),c.setSegmentPage(i)}return f}}const A={id:`doc.command.update-doc-drawing-wrapping-style`,type:e.CommandType.COMMAND,handler:(t,r)=>{if(r==null)return!1;let{drawings:a,wrappingStyle:o,unitId:s}=r,c=t.get(e.ICommandService),l=t.get(e.IUniverInstanceService),u=t.get(i.IRenderManagerService).getRenderById(s),d=u==null?void 0:u.with(n.DocSkeletonManagerService).getSkeleton().getSkeletonData(),f=u==null?void 0:u.with(n.DocSkeletonManagerService).getViewModel(),p=u==null?void 0:u.scene,m=l.getCurrentUniverDocInstance();if(m==null||d==null||p==null||f==null)return!1;let h=f.getEditArea(),g=p.getTransformerByCreate(),{pages:_,skeHeaders:v,skeFooters:y}=d,b=e.JSONX.getInstance(),x=[],{drawings:S={}}=m.getSnapshot();for(let t of a){let{drawingId:n}=t,r=S[n].layoutType,a=O[o];if(r!==a){let e=b.replaceOp([`drawings`,n,`layoutType`],r,a);x.push(e)}if(o===D.BEHIND_TEXT||o===D.IN_FRONT_OF_TEXT){let t=S[n].behindDoc,r=o===D.BEHIND_TEXT?e.BooleanNumber.TRUE:e.BooleanNumber.FALSE;if(t!==r){let e=b.replaceOp([`drawings`,n,`behindDoc`],t,r);x.push(e)}}if(o===D.INLINE)continue;let s=null,c=0,l=0;for(let e of _){let{headerId:t,footerId:r,marginTop:a,marginLeft:o,marginBottom:u,pageWidth:d,pageHeight:f}=e;switch(h){case i.DocumentEditArea.HEADER:{var C;let e=(C=v.get(t))==null?void 0:C.get(d);e!=null&&e.skeDrawings.has(n)&&(s=e.skeDrawings.get(n),c=e.marginTop,l=o);break}case i.DocumentEditArea.FOOTER:{var w;let e=(w=y.get(r))==null?void 0:w.get(d);e!=null&&e.skeDrawings.has(n)&&(s=e.skeDrawings.get(n),c=f-u+e.marginTop,l=o);break}case i.DocumentEditArea.BODY:e.skeDrawings.has(n)&&(s=e.skeDrawings.get(n),c=a,l=o);break}if(s!=null)break}if(s!=null){let{aTop:t,aLeft:r}=s,i=S[n].docTransform.positionH,a=r;i.relativeFrom===e.ObjectRelativeFromH.MARGIN?a-=l:i.relativeFrom===e.ObjectRelativeFromH.COLUMN&&(a-=s.columnLeft);let o={relativeFrom:i.relativeFrom,posOffset:a};if(i.posOffset!==o.posOffset){let e=b.replaceOp([`drawings`,n,`docTransform`,`positionH`],i,o);x.push(e)}let u=S[n].docTransform.positionV,d=t;u.relativeFrom===e.ObjectRelativeFromV.PAGE?d+=c:u.relativeFrom===e.ObjectRelativeFromV.LINE?d-=s.lineTop:u.relativeFrom===e.ObjectRelativeFromV.PARAGRAPH&&(d-=s.blockAnchorTop);let f={relativeFrom:u.relativeFrom,posOffset:d};if(u.posOffset!==f.posOffset){let e=b.replaceOp([`drawings`,n,`docTransform`,`positionV`],u,f);x.push(e)}}}let T={id:n.RichTextEditingMutation.id,params:{unitId:s,actions:[],textRanges:null}};T.params.actions=x.reduce((t,n)=>e.JSONX.compose(t,n),null);let E=c.syncExecuteCommand(T.id,T.params);return g.refreshControls(),!!E}},j={id:`doc.command.update-doc-drawing-distance`,type:e.CommandType.COMMAND,handler:(t,r)=>{if(r==null)return!1;let i=t.get(e.ICommandService),a=t.get(e.IUniverInstanceService).getCurrentUniverDocInstance();if(a==null)return!1;let{drawings:o,dist:s,unitId:c}=r,l=e.JSONX.getInstance(),u=[],{drawings:d={}}=a.getSnapshot();for(let e of o){let{drawingId:t}=e;for(let[e,n]of Object.entries(s)){let r=d[t][e];if(r!==n){let i=l.replaceOp([`drawings`,t,e],r,n);u.push(i)}}}let f={id:n.RichTextEditingMutation.id,params:{unitId:c,actions:[],textRanges:null}};return f.params.actions=u.reduce((t,n)=>e.JSONX.compose(t,n),null),!!i.syncExecuteCommand(f.id,f.params)}},M={id:`doc.command.update-doc-drawing-wrap-text`,type:e.CommandType.COMMAND,handler:(t,r)=>{if(r==null)return!1;let i=t.get(e.ICommandService),a=t.get(e.IUniverInstanceService).getCurrentUniverDocInstance();if(a==null)return!1;let{drawings:o,wrapText:s,unitId:c}=r,l=e.JSONX.getInstance(),u=[],{drawings:d={}}=a.getSnapshot();for(let e of o){let{drawingId:t}=e,n=d[t].wrapText;if(n!==s){let e=l.replaceOp([`drawings`,t,`wrapText`],n,s);u.push(e)}}let f={id:n.RichTextEditingMutation.id,params:{unitId:c,actions:[],textRanges:null}};return f.params.actions=u.reduce((t,n)=>e.JSONX.compose(t,n),null),!!i.syncExecuteCommand(f.id,f.params)}},N={id:`doc.command.update-drawing-doc-transform`,type:e.CommandType.COMMAND,handler:(t,r)=>{if(r==null)return!1;let a=t.get(e.ICommandService),o=t.get(e.IUniverInstanceService),s=t.get(i.IRenderManagerService).getRenderById(r.unitId),c=s==null?void 0:s.scene;if(c==null)return!1;let l=c.getTransformerByCreate(),u=o.getCurrentUniverDocInstance();if(u==null)return!1;let{drawings:d,unitId:f}=r,p=e.JSONX.getInstance(),m=[],{drawings:h={}}=u.getSnapshot();for(let t of d){let{drawingId:n,key:r,value:i}=t,a=h[n].docTransform[r];if(!e.Tools.diffValue(a,i)){let e=p.replaceOp([`drawings`,n,`docTransform`,r],a,i);m.push(e)}}let g={id:n.RichTextEditingMutation.id,params:{unitId:f,actions:[],textRanges:null,debounce:!0}};g.params.actions=m.reduce((t,n)=>e.JSONX.compose(t,n),null);let _=a.syncExecuteCommand(g.id,g.params);return l.refreshControls(),!!_}},P={id:`doc.command.move-inline-drawing`,type:e.CommandType.COMMAND,handler:(t,a)=>{var o,s;if(a==null)return!1;let c=t.get(i.IRenderManagerService),l=(o=c.getRenderById(a.unitId))==null?void 0:o.with(r.DocSelectionRenderService),u=t.get(S),d=c.getRenderById(a.unitId),f=d==null?void 0:d.scene,p=d==null?void 0:d.with(n.DocSkeletonManagerService).getSkeleton();if(f==null||l==null)return!1;let m=f.getTransformerByCreate(),h=t.get(e.ICommandService),g=t.get(e.IUniverInstanceService).getCurrentUniverDocInstance();if(g==null)return!1;let{drawing:_,unitId:v,offset:y,segmentId:b,segmentPage:x,needRefreshDrawings:C}=a;if(C)return u.refreshDrawings(p),m.refreshControls(),!0;let w=[],{drawingId:T}=_,E=k(b,(s=l.getSegment())==null?``:s,x,y,T,g,l);if(E==null||E.length===0)return u.refreshDrawings(p),m.refreshControls(),!1;w.push(...E);let D={id:n.RichTextEditingMutation.id,params:{unitId:v,actions:[],textRanges:null}};D.params.actions=w.reduce((t,n)=>e.JSONX.compose(t,n),null);let O=h.syncExecuteCommand(D.id,D.params);return m.refreshControls(),!!O}},F={id:`doc.command.transform-non-inline-drawing`,type:e.CommandType.COMMAND,handler:(t,a)=>{var o,s;if(a==null)return!1;let c=t.get(i.IRenderManagerService),l=(o=c.getRenderById(a.unitId))==null?void 0:o.with(r.DocSelectionRenderService),u=c.getRenderById(a.unitId),d=u==null?void 0:u.scene;if(d==null||l==null)return!1;let f=d.getTransformerByCreate(),p=t.get(e.ICommandService),m=t.get(e.IUniverInstanceService).getCurrentUniverDocInstance();if(m==null)return!1;let{drawing:h,unitId:g,offset:_,docTransform:v,segmentId:y,segmentPage:b}=a,x=[],{drawingId:S}=h,C=k(y,(s=l.getSegment())==null?``:s,b,_,S,m,l);if(C==null)return!1;C.length>0&&x.push(...C);let w=e.JSONX.getInstance(),{drawings:T={}}=m.getSnapshot(),{positionH:E,positionV:D,size:O,angle:A}=T[S].docTransform;if(!e.Tools.diffValue(E,v.positionH)){let e=w.replaceOp([`drawings`,S,`docTransform`,`positionH`],E,v.positionH);x.push(e)}if(!e.Tools.diffValue(D,v.positionV)){let e=w.replaceOp([`drawings`,S,`docTransform`,`positionV`],D,v.positionV);x.push(e)}if(!e.Tools.diffValue(O,v.size)){let e=w.replaceOp([`drawings`,S,`docTransform`,`size`],O,v.size);x.push(e)}if(!e.Tools.diffValue(A,v.angle)){let e=w.replaceOp([`drawings`,S,`docTransform`,`angle`],A,v.angle);x.push(e)}let j={id:n.RichTextEditingMutation.id,params:{unitId:g,actions:[],textRanges:null,debounce:!0}};j.params.actions=x.reduce((t,n)=>e.JSONX.compose(t,n),null);let M=p.syncExecuteCommand(j.id,j.params);return f.refreshControls(),!!M}},I={id:`doc.command.move-drawing`,type:e.CommandType.COMMAND,handler:(n,r)=>{let a=n.get(e.ICommandService),o=n.get(t.IDocDrawingService),s=n.get(e.IUniverInstanceService),c=n.get(i.IRenderManagerService),{direction:l}=r,u=o.getFocusDrawings();if(u.length===0)return!1;let d=u[0].unitId,f=c.getRenderById(d),p=f==null?void 0:f.scene;if(p==null)return!1;let m=p.getTransformerByCreate(),h=s.getUniverDocInstance(d),g=u.map(t=>{var n;let{drawingId:r}=t,i=h==null||(n=h.getSnapshot().drawings)==null?void 0:n[r];if(i==null||i.layoutType===e.PositionedObjectLayoutType.INLINE)return null;let{positionH:a,positionV:o}=i.docTransform,s={...a},c={...o};if(l===e.Direction.UP){var u;c.posOffset=((u=c.posOffset)==null?0:u)-2}else if(l===e.Direction.DOWN){var d;c.posOffset=((d=c.posOffset)==null?0:d)+2}else if(l===e.Direction.LEFT){var f;s.posOffset=((f=s.posOffset)==null?0:f)-2}else if(l===e.Direction.RIGHT){var p;s.posOffset=((p=s.posOffset)==null?0:p)+2}return{drawingId:r,key:l===e.Direction.UP||l===e.Direction.DOWN?`positionV`:`positionH`,value:l===e.Direction.UP||l===e.Direction.DOWN?c:s}}).filter(e=>e!=null);if(g.length===0)return!1;let _=a.syncExecuteCommand(N.id,{unitId:d,subUnitId:d,drawings:g});return m.refreshControls(),!!_}},L={id:`doc.operation.clear-drawing-transformer`,type:e.CommandType.MUTATION,handler:(e,t)=>{let n=e.get(i.IRenderManagerService);return t.forEach(e=>{var t;(t=n.getRenderById(e))==null||(t=t.scene.getTransformer())==null||t.debounceRefreshControls()}),!0}},R=`COMPONENT_DOC_DRAWING_PANEL`,z={id:`sidebar.operation.doc-image`,type:e.CommandType.COMMAND,handler:async(t,n)=>{let r=t.get(s.ISidebarService),i=t.get(e.LocaleService),a=t.get(o.IDrawingManagerService);switch(n.value){case`open`:r.open({header:{title:i.t(`docImage.panel.title`)},children:{label:R},onClose:()=>{a.focusDrawing(null)},width:360});break;default:r.close();break}return!0}},B={id:`doc.operation.edit-doc-image`,type:e.CommandType.OPERATION,handler:(t,n)=>{let r=t.get(o.IDrawingManagerService),i=t.get(e.ICommandService);return n==null?!1:(r.focusDrawing([n]),i.executeCommand(z.id,{value:`open`}),!0)}};function V(e,t,n=1,i=0){let{top:a,left:o,bottom:s,right:c}=e,l=c-o,u=s-a,{viewportScrollX:d,viewportScrollY:f}=t.getViewport(r.VIEWPORT_KEY.VIEW_MAIN),{scaleX:p,scaleY:m}=t.getAncestorScale();return{startX:(o-d)*p,startY:(a-f)*m,endX:(o+l-d)*p,endY:(a+u-f)*m,width:l*p,height:u*m,rotate:i,absolute:{left:!1,top:!1},opacity:n==null?1:n}}function H(e,t){let{top:n,left:r,width:i,height:a,angle:o,opacity:s}=e;return V({top:n,left:r,bottom:n+a,right:r+i},t.scene,s,o)}let U=class extends e.Disposable{constructor(e,t,n,r,i,a){super(),this._renderManagerService=e,this._drawingManagerService=t,this._drawingRenderService=n,this._canvasFloatDomService=r,this._univerInstanceService=i,this._commandService=a,x(this,`_domLayerInfoMap`,new Map),this._initialize()}dispose(){super.dispose()}_initialize(){this._drawingAddRemoveListener(),this._initScrollAndZoomEvent()}_getSceneAndTransformerByDrawingSearch(e){if(e==null)return;let t=this._renderManagerService.getRenderById(e);if(t==null)return null;let n=t.scene;return{scene:n,transformer:n.getTransformerByCreate(),renderUnit:t,canvas:t.engine.getCanvasElement()}}_drawingAddRemoveListener(){this.disposeWithMe(this._drawingManagerService.add$.subscribe(e=>{this._insertRects(e)})),this.disposeWithMe(this._drawingManagerService.remove$.subscribe(e=>{e.forEach(e=>{this._removeDom(e.drawingId)})}))}_insertRects(t){t.forEach(async t=>{let{unitId:n}=t;if(!this._univerInstanceService.getUnit(n,e.UniverInstanceType.UNIVER_DOC))return;let r=this._getSceneAndTransformerByDrawingSearch(n);if(r==null)return;let i=this._drawingManagerService.getDrawingByParam(t);if(i==null)return;let a=await this._drawingRenderService.renderFloatDom(i,r.scene);if(!(a==null||a.length===0))for(let t of a){this._addHoverForRect(t);let a=new e.DisposableCollection,o=new c.BehaviorSubject(H(t,r.renderUnit)),s=r.canvas,l=i.data,u={dispose:a,rect:t,position$:o,unitId:n};this._canvasFloatDomService.addFloatDom({position$:o,id:i.drawingId,componentKey:i.componentKey,onPointerDown:e=>{s.dispatchEvent(new PointerEvent(e.type,e))},onPointerMove:e=>{s.dispatchEvent(new PointerEvent(e.type,e))},onPointerUp:e=>{s.dispatchEvent(new PointerEvent(e.type,e))},onWheel:e=>{s.dispatchEvent(new WheelEvent(e.type,e))},data:l,unitId:n});let d=t.onTransformChange$.subscribeEvent(()=>{let e=H(t,r.renderUnit);o.next(e)});a.add(()=>{this._canvasFloatDomService.removeFloatDom(i.drawingId)}),d&&a.add(d),this._domLayerInfoMap.set(i.drawingId,u)}})}_addHoverForRect(t){this.disposeWithMe((0,e.toDisposable)(t.onPointerEnter$.subscribeEvent(()=>{t.cursor=i.CURSOR_TYPE.GRAB}))),this.disposeWithMe((0,e.toDisposable)(t.onPointerLeave$.subscribeEvent(()=>{t.cursor=i.CURSOR_TYPE.DEFAULT})))}_removeDom(e){let t=this._domLayerInfoMap.get(e);if(!t)return;let{unitId:n}=t;this._domLayerInfoMap.delete(e),t.dispose.dispose();let r=this._getSceneAndTransformerByDrawingSearch(n);r&&r.scene.removeObject(t.rect)}_initScrollAndZoomEvent(){let t=e=>{let t=this._getSceneAndTransformerByDrawingSearch(e);t&&this._domLayerInfoMap.forEach(n=>{if(n.unitId!==e)return;let r=H(n.rect,t.renderUnit);n.position$.next(r)})};this.disposeWithMe(this._univerInstanceService.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_DOC).pipe((0,c.map)(e=>{if(!e)return null;let t=e.getUnitId(),n=this._renderManagerService.getRenderById(t);return n?{render:n,unitId:t}:null}),(0,c.switchMap)(t=>t?(0,e.fromEventSubject)(t.render.scene.getViewport(r.VIEWPORT_KEY.VIEW_MAIN).onScrollAfter$).pipe((0,c.map)(()=>({unitId:t.unitId}))):(0,c.of)(null))).subscribe(e=>{if(!e)return;let{unitId:n}=e;t(n)})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===r.SetDocZoomRatioOperation.id){let{unitId:n}=e.params;t(n)}}))}insertFloatDom(t,i){var a,o,s;let c=this._univerInstanceService.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_DOC);if(!c)return!1;let l=this._getSceneAndTransformerByDrawingSearch(c.getUnitId());if(!l)return!1;let u=(a=l.renderUnit.with(n.DocSkeletonManagerService).getSkeleton().getSkeletonData())==null?void 0:a.pages[0];if(!u)return!1;let{pageWidth:d,marginLeft:f,marginRight:p}=u,m=d-f-p,g={size:{width:(o=i.width)==null?m:o,height:i.height},positionH:{relativeFrom:e.ObjectRelativeFromH.PAGE,posOffset:0},positionV:{relativeFrom:e.ObjectRelativeFromV.PAGE,posOffset:0},angle:0},_=(s=i.drawingId)==null?(0,e.generateRandomId)():s,v={unitId:c.getUnitId(),drawings:[{drawingId:_,drawingType:e.DrawingTypeEnum.DRAWING_DOM,subUnitId:c.getUnitId(),unitId:c.getUnitId(),...t,title:``,description:``,docTransform:g,layoutType:e.PositionedObjectLayoutType.INLINE,transform:(0,r.docDrawingPositionToTransform)(g)}]};return this._commandService.syncExecuteCommand(h.id,v),_}};U=w([C(0,i.IRenderManagerService),C(1,o.IDrawingManagerService),C(2,(0,e.Inject)(l.DrawingRenderService)),C(3,(0,e.Inject)(s.CanvasFloatDomService)),C(4,e.IUniverInstanceService),C(5,e.ICommandService)],U);const W=`doc.menu.image`,G=E.id,ee=t=>{let r=t.get(n.DocSelectionManagerService),i=t.get(e.IUniverInstanceService);return new c.Observable(e=>{let t=r.textSelection$.subscribe(()=>{let t=r.getActiveTextRange();if(t){var n;let{segmentId:r,startOffset:a,endOffset:o}=t,s=i.getCurrentUniverDocInstance(),c=s==null||(n=s.getSelfOrHeaderFooterModel(r).getBody())==null?void 0:n.tables;if(c&&c.length&&c.some(e=>{let{startIndex:t,endIndex:n}=e;return a>=t&&a<n||o>=t&&o<n})){e.next(!0);return}}else{e.next(!0);return}e.next(!1)});return()=>t.unsubscribe()})};function K(t){return{id:W,type:s.MenuItemType.SUBITEMS,icon:`AddImageIcon`,tooltip:`docImage.title`,disabled$:ee(t),hidden$:(0,s.getMenuHiddenObservable)(t,e.UniverInstanceType.UNIVER_DOC,void 0,e.DOCS_ZEN_EDITOR_UNIT_ID_KEY)}}function te(t){return{id:G,title:`docImage.upload.float`,type:s.MenuItemType.BUTTON,hidden$:(0,s.getMenuHiddenObservable)(t,e.UniverInstanceType.UNIVER_DOC,void 0,e.DOCS_ZEN_EDITOR_UNIT_ID_KEY)}}var ne=`@univerjs/docs-drawing-ui`,re=`0.20.1`;const q=`docs-drawing-ui.config`;Symbol(q);const J={};function Y(t){if(e.JSONX.isNoop(t)||!Array.isArray(t))return null;let n=t.find(e=>Array.isArray(e)&&(e==null?void 0:e[0])===`drawings`);if(n==null||!Array.isArray(n)||n.length<3||typeof n[1]==`string`&&typeof n[2]!=`object`||Array.isArray(n[1])&&typeof n[1][1]!=`object`)return null;let r=[];if(Array.isArray(n==null?void 0:n[1])){for(let e of n)if(Array.isArray(e)){var i,a;r.push({type:!(e==null||(i=e[1])==null)&&i.i?`add`:`remove`,drawingId:e==null?void 0:e[0],drawing:e==null||(a=e[1])==null?void 0:a.i})}}else{var o,s;r.push({type:(o=n[2])!=null&&o.i?`add`:`remove`,drawingId:n[1],drawing:(s=n[2])==null?void 0:s.i})}return r}function ie(e){if(!Array.isArray(e)||e.length<3||e[0]!==`drawingsOrder`)return[];let t=[];for(let n=1;n<e.length;n++){let r=e[n];if(Array.isArray(r)&&typeof r[0]==`number`&&typeof r[1]==`object`)t.push(r[0]);else{t.length=0;break}}return t}let X=class extends e.Disposable{constructor(e,t,n,r,i){super(),this._univerInstanceService=e,this._commandService=t,this._drawingManagerService=n,this._docDrawingService=r,this._renderManagerService=i,this._initialize()}_initialize(){this._commandExecutedListener()}_commandExecutedListener(){this.disposeWithMe(this._commandService.beforeCommandExecuted(e=>{if(e.id!==n.RichTextEditingMutation.id)return;let{unitId:t,actions:r}=e.params,i=Y(r);if(i!=null)for(let{type:e,drawingId:n,drawing:r}of i)e===`add`?this._addDrawings(t,[r]):this._removeDrawings(t,[n])})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id!==n.RichTextEditingMutation.id)return;let{unitId:t,actions:r}=e.params;ie(r).length>0&&this._updateDrawingsOrder(t)})),this.disposeWithMe(this._commandService.onCommandExecuted(t=>{var n;if(t.id!==e.UndoCommand.id&&t.id!==e.RedoCommand.id)return;let r=(n=this._univerInstanceService.getCurrentUniverDocInstance())==null?void 0:n.getUnitId(),i=this._drawingManagerService.getFocusDrawings();if(r==null||i.length===0)return;let a=this._renderManagerService.getRenderById(r),o=a==null?void 0:a.scene;if(o==null)return!1;o.getTransformerByCreate().refreshControls()}))}_addDrawings(e,t){let n=this._drawingManagerService,r=this._docDrawingService,{subUnitId:i,redo:a,objects:o}=this._docDrawingService.getBatchAddOp(t);n.applyJson1(e,i,a),r.applyJson1(e,i,a),n.addNotification(o),r.addNotification(o)}_removeDrawings(e,t){let n=this._drawingManagerService,r=this._docDrawingService,{subUnitId:i,redo:a,objects:o}=this._docDrawingService.getBatchRemoveOp(t.map(t=>({unitId:e,subUnitId:e,drawingId:t})));n.applyJson1(e,i,a),r.applyJson1(e,i,a),n.removeNotification(o),r.removeNotification(o)}_updateDrawingsOrder(e){let t=this._univerInstanceService.getUniverDocInstance(e);if(t==null)return;let n=t.getSnapshot().drawingsOrder;if(n==null)return;let r=this._drawingManagerService,i=this._docDrawingService;r.setDrawingOrder(e,e,n),i.setDrawingOrder(e,e,n);let a={unitId:e,subUnitId:e,drawingIds:n};r.orderNotification(a),i.orderNotification(a)}};X=w([C(0,e.IUniverInstanceService),C(1,e.ICommandService),C(2,o.IDrawingManagerService),C(3,t.IDocDrawingService),C(4,i.IRenderManagerService)],X);const ae=e=>{let{floatDomInfos:t,scene:n,offset:r,bound:i}=e,a=i.right-i.left,o=i.bottom-i.top;return(0,d.jsx)(`div`,{className:`univer-absolute univer-left-0 univer-top-0`,children:(0,u.useMemo)(()=>t.map(e=>{let{width:t=0,height:r=0,left:i=0,top:a=0}=e.transform,o=V({left:i,right:i+t,top:a,bottom:a+r},n),s={position$:new c.BehaviorSubject(o),position:o,id:e.drawingId,componentKey:e.componentKey,onPointerMove:()=>{},onPointerDown:()=>{},onPointerUp:()=>{},onWheel:()=>{},unitId:e.unitId,data:e.data};return[e.drawingId,s]}).filter(([e,t])=>!(t.position.endX<0||t.position.endY<0||t.position.startX>a||t.position.startY>o)),[t,n,r,a,o]).map(([e,t])=>(0,d.jsx)(s.PrintFloatDomSingle,{layer:t,id:e,position:t.position},e))})};let Z=class extends e.Disposable{constructor(e,t,n,r,i){super(),this._docPrintInterceptorService=e,this._drawingRenderService=t,this._drawingManagerService=n,this._componetManager=r,this._injector=i,this._initPrinting(),this._initPrintingDom()}_initPrinting(){this.disposeWithMe(this._docPrintInterceptorService.interceptor.intercept(this._docPrintInterceptorService.interceptor.getInterceptPoints().PRINTING_COMPONENT_COLLECT,{handler:(t,n,r)=>{let{unitId:i,scene:a}=n,o=this._drawingManagerService.getDrawingDataForUnit(i),s=o==null?void 0:o[i];return s&&s.order.forEach(t=>{let n=s.data[t];n.drawingType!==e.DrawingTypeEnum.DRAWING_CHART&&n.drawingType!==e.DrawingTypeEnum.DRAWING_DOM&&this._drawingRenderService.renderDrawing(n,a)}),r()}}))}_initPrintingDom(){this.disposeWithMe(this._docPrintInterceptorService.interceptor.intercept(this._docPrintInterceptorService.interceptor.getInterceptPoints().PRINTING_DOM_COLLECT,{handler:(t,n,r)=>{let{unitId:i}=n,o=this._drawingManagerService.getDrawingDataForUnit(i),c=o==null?void 0:o[i];if(c){let o=c.order.map(t=>{let n=c.data[t];if(n.drawingType===e.DrawingTypeEnum.DRAWING_CHART)return{...n,componentKey:this._componetManager.get(e.DOC_DRAWING_PRINTING_COMPONENT_KEY)};if(n.drawingType===e.DrawingTypeEnum.DRAWING_DOM){let e=this._docPrintInterceptorService.getPrintComponent(n.componentKey);return{...n,componentKey:this._componetManager.get(e||n.componentKey)}}return null}).filter(Boolean);return(0,a.render)((0,d.jsx)((0,s.connectInjector)(ae,this._injector),{unitId:i,floatDomInfos:o,scene:n.scene,skeleton:n.skeleton,offset:n.offset,bound:n.bound}),n.root),t==null||t.add(()=>{(0,a.unmount)(n.root)}),r(t)}}}))}};Z=w([C(0,(0,e.Inject)(r.DocPrintInterceptorService)),C(1,(0,e.Inject)(l.DrawingRenderService)),C(2,o.IDrawingManagerService),C(3,(0,e.Inject)(s.ComponentManager)),C(4,(0,e.Inject)(e.Injector))],Z);function oe(e){let{path:t}=e;return t.some(e=>e===`cells`)}let se=class extends e.Disposable{constructor(e,t,n,r){super(),this._commandService=e,this._univerInstanceService=t,this._drawingManagerService=n,this._renderManagerService=r,x(this,`_liquid`,new i.Liquid),x(this,`_listenerOnImageMap`,new Set),x(this,`_transformerCache`,new Map),x(this,`_anchorShape`,void 0),this._init()}_init(){this._listenDrawingFocus()}_listenDrawingFocus(){this.disposeWithMe(this._drawingManagerService.add$.subscribe(e=>{if(e.length!==0)for(let t of e){let{unitId:e}=t;this._listenerOnImageMap.has(e)||(this._listenTransformerChange(e),this._listenerOnImageMap.add(e))}}))}_listenTransformerChange(t){var n;let r=(n=this._getSceneAndTransformerByDrawingSearch(t))==null?void 0:n.transformer;if(r==null)return;this.disposeWithMe((0,e.toDisposable)(r.changeStart$.subscribe(t=>{this._transformerCache.clear();let{objects:n}=t;for(let t of n.values()){var r;let{oKey:n,width:i,height:a,left:o,top:s,angle:c}=t,l=this._drawingManagerService.getDrawingOKey(n);if(l==null)continue;let u=this._univerInstanceService.getUniverDocInstance(l.unitId),d=u==null||(r=u.getSnapshot().drawings)==null?void 0:r[l.drawingId];if((d==null?void 0:d.layoutType)===e.PositionedObjectLayoutType.INLINE)try{t.setOpacity(.2)}catch{}d!=null&&this._transformerCache.set(l.drawingId,{drawing:d,top:s,left:o,width:i,height:a,angle:c})}})));let i=(0,e.throttle)(this._updateMultipleDrawingDocTransform.bind(this),50);(0,e.throttle)(this._nonInlineDrawingTransform.bind(this),50),this.disposeWithMe((0,e.toDisposable)(r.changing$.subscribe(t=>{let{objects:n,offsetX:r,offsetY:a}=t;if(n.size>1)i(n);else if(n.size===1){let t=this._transformerCache.values().next().value,{width:i,height:o,top:s,left:c,angle:l}=n.values().next().value;if(t&&i===t.width&&o===t.height&&s===t.top&&c===t.left&&l===t.angle)return;t&&(t.drawing.layoutType,e.PositionedObjectLayoutType.INLINE),t&&t.drawing.layoutType===e.PositionedObjectLayoutType.INLINE&&r!=null&&a!=null&&this._updateInlineDrawingAnchor(t.drawing,r,a)}}))),this.disposeWithMe((0,e.toDisposable)(r.changeEnd$.subscribe(t=>{let{objects:n,offsetX:r,offsetY:i}=t;for(let t of n.values()){let n=this._drawingManagerService.getDrawingOKey(t.oKey);if(n==null)continue;let r=this._transformerCache.get(n==null?void 0:n.drawingId);if((r==null?void 0:r.drawing.layoutType)===e.PositionedObjectLayoutType.INLINE)try{t.setOpacity(1)}catch{}}if(this._anchorShape&&this._anchorShape.hide(),n.size>1)this._updateMultipleDrawingDocTransform(n);else if(n.size===1){let t=this._transformerCache.values().next().value,a=n.values().next().value,{width:o,height:s,top:c,left:l,angle:u}=a;if(t&&o===t.width&&s===t.height&&c===t.top&&l===t.left&&u===t.angle)return;t&&t.drawing.layoutType===e.PositionedObjectLayoutType.INLINE?o!==t.width||s!==t.height||u!==t.angle?this._updateDrawingSize(t,a):r!=null&&i!=null&&this._moveInlineDrawing(t.drawing,r,i):t&&this._nonInlineDrawingTransform(t.drawing,a)}this._transformerCache.clear()})))}_updateMultipleDrawingDocTransform(e){if(e.size<1)return;let t=[],n,r;for(let i of e.values()){let{oKey:e,left:a,top:o,angle:s}=i,{width:c,height:l}=i,u=this._drawingManagerService.getDrawingOKey(e);if(u==null)continue;n==null&&(n=u.unitId),r==null&&(r=u.subUnitId);let d=this._transformerCache.get(u.drawingId);if(d==null)continue;let{drawing:f,top:p,left:m,width:h,height:g,angle:_}=d,{width:v,height:y}=this._getPageContentSize(f);if(c=Math.min(c,v),l=Math.min(l,y),(h!==c||g!==l)&&t.push({drawingId:u.drawingId,key:`size`,value:{width:c,height:l}}),_!==s&&t.push({drawingId:u.drawingId,key:`angle`,value:s}),p!==o||m!==a){let e=o-p,n=a-m;e!==0&&t.push({drawingId:u.drawingId,key:`positionV`,value:{relativeFrom:f.docTransform.positionV.relativeFrom,posOffset:f.docTransform.positionV.posOffset+e}}),n!==0&&t.push({drawingId:u.drawingId,key:`positionH`,value:{relativeFrom:f.docTransform.positionH.relativeFrom,posOffset:f.docTransform.positionH.posOffset+n}})}}t.length>0&&n&&r&&this._commandService.executeCommand(N.id,{unitId:n,subUnitId:r,drawings:t})}_updateDrawingAnchor(e){if(this._transformerCache.size!==1)return;let t=this._transformerCache.values().next().value,n=e.values().next().value;this._getDrawingAnchor(t.drawing,n)}_updateInlineDrawingAnchor(e,t,n){var r;if(this._transformerCache.size!==1)return;let{contentBoxPointGroup:i}=(r=this._getInlineDrawingAnchor(e,t,n))==null?{}:r;i!=null&&this._createOrUpdateInlineAnchor(e.unitId,i)}_getInlineDrawingAnchor(e,t,a){var o,s;let c=this._renderManagerService.getRenderById(e.unitId),l=c==null?void 0:c.with(n.DocSkeletonManagerService).getSkeleton();if(c==null)return;let{mainComponent:u,scene:d}=c,f=u,p=d.getViewports()[0],{pageLayoutType:m=i.PageLayoutType.VERTICAL,pageMarginLeft:h,pageMarginTop:g}=f.getOffsetConfig(),_=null,v=!1,y=-1,b=``,x=this._getTransformCoordForDocumentOffset(f,p,t,a);if(x==null)return;let S=(o=this._renderManagerService.getRenderById(e.unitId))==null?void 0:o.with(r.DocSelectionRenderService);if(S==null)return;let C=l==null?void 0:l.findNodeByCoord(x,m,h,g,{strict:!1,segmentId:S.getSegment(),segmentPage:S.getSegmentPage()});if(C){let{node:e,ratioX:t,segmentPage:n,segmentId:r}=C;v=t<.5,_=e,y=n,b=r}if(_==null)return;let w=l==null?void 0:l.findPositionByGlyph(_,y),T=this._getDocObject();if(w==null||l==null||T==null||oe(w))return;let E={...w,isBack:v},{cursorList:D,contentBoxPointGroup:O}=new r.NodePositionConvertToCursor(T.document.getOffsetConfig(),l).getRangePointData(E,E),{startOffset:k}=(s=(0,r.getOneTextSelectionRange)(D))==null?{}:s;if(k!=null)return{offset:k,contentBoxPointGroup:O,segmentId:b,segmentPage:y}}_getDrawingAnchor(t,a){var o,s,c,l,u;let d=this._renderManagerService.getRenderById(t.unitId),f=d==null?void 0:d.with(n.DocSkeletonManagerService).getSkeleton(),p=f==null?void 0:f.getSkeletonData();if(p==null||d==null)return;let{pages:m,skeHeaders:h,skeFooters:g}=p,{mainComponent:_,scene:v}=d,y=_,b=v.getViewports()[0],{pageLayoutType:x=i.PageLayoutType.VERTICAL,pageMarginLeft:S,pageMarginTop:C,docsLeft:w,docsTop:T}=y.getOffsetConfig(),{left:E,top:D,angle:O}=a,{width:k,height:A}=a,{positionV:j,positionH:M}=t.docTransform,{width:N,height:P}=this._getPageContentSize(t);k=Math.min(k,N),A=Math.min(A,P);let F=null,I=``,L=-1,R={...t.docTransform,size:{width:k,height:A},angle:O},{x:z,y:B}=v.getViewportScrollXY(b),V=this._getTransformCoordForDocumentOffset(y,b,E-z,D-B);if(V==null)return;let H=(o=this._renderManagerService.getRenderById(t.unitId))==null?void 0:o.with(r.DocSelectionRenderService);if(H==null)return;let U=f==null?void 0:f.findNodeByCoord(V,x,S,C,{strict:!1,segmentId:H.getSegment(),segmentPage:H.getSegmentPage()});if(U){let{node:e,segmentPage:t,segmentId:n}=U;F=e,L=t,I=n}if(F==null)return;let W=(s=F.parent)==null?void 0:s.parent,G=W==null?void 0:W.parent,ee=(c=G==null?void 0:G.lines.find(e=>e.paragraphIndex===(W==null?void 0:W.paragraphIndex)&&e.paragraphStart))==null?G==null?void 0:G.lines[0]:c,K=G==null||(l=G.parent)==null?void 0:l.parent;if(W==null||G==null||ee==null||K==null)return;this._liquid.reset();let te=K.type;for(let e of m){let{headerId:t,footerId:n,pageHeight:r,pageWidth:a,marginLeft:o,marginBottom:s}=e,c=m.indexOf(e);if(L>-1&&c===L){switch(te){case i.DocumentSkeletonPageType.HEADER:{var ne;let e=(ne=h.get(t))==null?void 0:ne.get(a);if(e)this._liquid.translatePagePadding({marginTop:e.marginTop,marginLeft:o});else throw Error(`header skeleton not found`);break}case i.DocumentSkeletonPageType.FOOTER:{var re;let e=(re=g.get(n))==null?void 0:re.get(a);if(e)this._liquid.translatePagePadding({marginTop:r-s+e.marginTop,marginLeft:o});else throw Error(`footer skeleton not found`);break}}break}if(this._liquid.translatePagePadding(e),e===K)break;this._liquid.restorePagePadding(e),this._liquid.translatePage(e,x,S,C)}if(j.relativeFrom===e.ObjectRelativeFromV.LINE)F=W.divides[0].glyphGroup[0];else{var q,J;F=(q=(J=ee.divides)==null||(J=J[0])==null||(J=J.glyphGroup)==null?void 0:J[0])==null?F:q}switch(R.positionH={relativeFrom:M.relativeFrom,posOffset:E-this._liquid.x-w},M.relativeFrom){case e.ObjectRelativeFromH.MARGIN:R.positionH.posOffset=E-this._liquid.x-w-K.marginLeft;break;case e.ObjectRelativeFromH.COLUMN:R.positionH.posOffset=E-this._liquid.x-w-G.left;break}switch(R.positionV={relativeFrom:j.relativeFrom,posOffset:D-this._liquid.y-T},j.relativeFrom){case e.ObjectRelativeFromV.PAGE:R.positionV.posOffset=D-this._liquid.y-T-K.marginTop;break;case e.ObjectRelativeFromV.LINE:R.positionV.posOffset=D-this._liquid.y-T-W.top;break;case e.ObjectRelativeFromV.PARAGRAPH:R.positionV.posOffset=D-this._liquid.y-T-ee.top;break}if(F==null)return;let Y=f==null?void 0:f.findPositionByGlyph(F,L),ie=this._getDocObject();if(Y==null||f==null||ie==null||oe(Y))return;let X={...Y,isBack:!1},{cursorList:ae}=new r.NodePositionConvertToCursor(ie.document.getOffsetConfig(),f).getRangePointData(X,X),{startOffset:Z}=(u=(0,r.getOneTextSelectionRange)(ae))==null?{}:u;if(Z!=null)return{offset:Z,docTransform:R,segmentId:I,segmentPage:L}}_updateDrawingSize(e,t){let n=[],{drawing:r,width:i,height:a,angle:o}=e,{unitId:s,subUnitId:c}=r,{width:l,height:u,angle:d}=t,{width:f,height:p}=this._getPageContentSize(r);l=Math.min(f,l),u=Math.min(p,u),(l!==i||u!==a)&&n.push({drawingId:r.drawingId,key:`size`,value:{width:l,height:u}}),d!==o&&n.push({drawingId:r.drawingId,key:`angle`,value:d}),n.length>0&&s&&c&&this._commandService.executeCommand(N.id,{unitId:s,subUnitId:c,drawings:n})}_moveInlineDrawing(e,t,n){let r=this._getInlineDrawingAnchor(e,t,n),{offset:i,segmentId:a,segmentPage:o}=r==null?{}:r;return this._commandService.executeCommand(P.id,{unitId:e.unitId,subUnitId:e.unitId,drawing:e,offset:i,segmentId:a,segmentPage:o,needRefreshDrawings:i==null})}_limitDrawingInPage(t,r){let i=this._renderManagerService.getRenderById(t.unitId),{left:a,top:o,width:s,height:c,angle:l}=r,u=i==null?void 0:i.with(n.DocSkeletonManagerService).getSkeleton(),d=u==null?void 0:u.getSkeletonData(),{pages:f}=d==null?{}:d;if(d==null||i==null||f==null)return{left:a,top:o,width:s,height:c,angle:l};let{mainComponent:p}=i,{top:m,pageLayoutType:h,pageMarginLeft:g,pageMarginTop:_}=p,v=o;this._liquid.reset();for(let t of f){let{marginBottom:n,pageHeight:r}=t,i=f[f.indexOf(t)+1];i!=null&&(e.Tools.hasIntersectionBetweenTwoRanges(o,o+c,this._liquid.y+m+r-n,this._liquid.y+m+r+_+i.marginTop)&&(v=o+c/2<this._liquid.y+m+r+_/2?Math.min(o,this._liquid.y+m+r-n-c):Math.max(o,this._liquid.y+m+r+_+i.marginTop)),this._liquid.translatePage(t,h,g,_))}return{left:a,top:v,width:s,height:c,angle:l}}_nonInlineDrawingTransform(t,n,r=!1){let i=t.isMultiTransform===e.BooleanNumber.TRUE?n:this._limitDrawingInPage(t,n);if(r&&i.top!==n.top)return;let a=this._getDrawingAnchor(t,i),{offset:o,docTransform:s,segmentId:c,segmentPage:l}=a==null?{}:a;return o==null||s==null?this._updateMultipleDrawingDocTransform(new Map([[t.drawingId,n]])):this._commandService.executeCommand(F.id,{unitId:t.unitId,subUnitId:t.unitId,drawing:t,offset:o,docTransform:s,segmentId:c,segmentPage:l})}_getSceneAndTransformerByDrawingSearch(e){if(e==null)return;let t=this._renderManagerService.getRenderById(e),n=t==null?void 0:t.scene;if(n!=null)return{scene:n,transformer:n.getTransformerByCreate()}}_getTransformCoordForDocumentOffset(e,t,n,r){let{documentTransform:a}=e.getOffsetConfig(),o=t.transformVector2SceneCoord(i.Vector2.FromArray([n,r]));if(o)return a.clone().invert().applyPoint(o)}_createOrUpdateInlineAnchor(t,n){let a=this._renderManagerService.getRenderById(t);if(a==null)return;let{mainComponent:o,scene:s}=a,{docsLeft:c,docsTop:l}=o.getOffsetConfig(),{left:u,top:d,height:f}=(0,r.getAnchorBounding)(n),p=u+c,m=d+l;if(this._anchorShape){this._anchorShape.transformByState({left:p,top:m,height:f}),this._anchorShape.show();return}let h=new i.Rect(`__InlineDrawingAnchor__`+(0,e.generateRandomId)(6),{left:p,top:m,height:f,strokeWidth:2,stroke:(0,i.getColor)(e.COLORS.darkgray,1),evented:!1});this._anchorShape=h,s.addObject(h,r.TEXT_RANGE_LAYER_INDEX)}_getDocObject(){return(0,r.getDocObject)(this._univerInstanceService,this._renderManagerService)}_getPageContentSize(e){let t=this._renderManagerService.getRenderById(e.unitId),r=t==null?void 0:t.with(n.DocSkeletonManagerService).getSkeleton(),i=r==null?void 0:r.getSkeletonData();if(i==null||t==null)return{width:500,height:500};let{pages:a}=i,o=null;for(let t of a){let{skeDrawings:n}=t;if(n.has(e.drawingId)){o=t;break}}if(o){let{pageWidth:e,pageHeight:t,marginLeft:n,marginBottom:r,marginRight:i,marginTop:a}=o;return{width:Math.max(500,e-n-i),height:Math.max(500,t-a-r)}}else return{width:500,height:500}}};se=w([C(0,e.ICommandService),C(1,e.IUniverInstanceService),C(2,o.IDrawingManagerService),C(3,i.IRenderManagerService)],se);const ce={[s.RibbonInsertGroup.MEDIA]:{[W]:{order:0,menuItemFactory:K,[G]:{order:0,menuItemFactory:te}}}},le=-1e3,ue=1e3,de=t=>{let c=(0,s.useDependency)(e.ICommandService),l=(0,s.useDependency)(e.LocaleService),f=(0,s.useDependency)(o.IDrawingManagerService),p=(0,s.useDependency)(i.IRenderManagerService),m=(0,s.useDependency)(e.IUniverInstanceService),{drawings:h}=t,g=h[0];if(g==null)return;let{unitId:_}=g,v=m.getUniverDocInstance(_),y=v==null?void 0:v.getSnapshot().documentStyle.documentFlavor,b=p.getRenderById(_),x=b==null?void 0:b.scene;if(x==null)return;let S=x.getTransformerByCreate(),C=[{label:l.t(`image-position.column`),value:String(e.ObjectRelativeFromH.COLUMN)},{label:l.t(`image-position.page`),value:String(e.ObjectRelativeFromH.PAGE)},{label:l.t(`image-position.margin`),value:String(e.ObjectRelativeFromH.MARGIN)}],w=[{label:l.t(`image-position.line`),value:String(e.ObjectRelativeFromV.LINE),disabled:y===e.DocumentFlavor.MODERN},{label:l.t(`image-position.page`),value:String(e.ObjectRelativeFromV.PAGE),disabled:y===e.DocumentFlavor.MODERN},{label:l.t(`image-position.margin`),value:String(e.ObjectRelativeFromV.MARGIN),disabled:y===e.DocumentFlavor.MODERN},{label:l.t(`image-position.paragraph`),value:String(e.ObjectRelativeFromV.PARAGRAPH)}],[T,E]=(0,u.useState)(!0),[D,O]=(0,u.useState)({relativeFrom:e.ObjectRelativeFromH.PAGE,posOffset:0}),[k,A]=(0,u.useState)({relativeFrom:e.ObjectRelativeFromV.PAGE,posOffset:0}),[j,M]=(0,u.useState)(!0),[P,F]=(0,u.useState)(!0);function I(e,t){var n;e===`positionH`?O(t):A(t);let i=f.getFocusDrawings();if(i.length===0)return;let a=i.map(e=>({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId}));c.executeCommand(N.id,{unitId:i[0].unitId,subUnitId:i[0].unitId,drawings:a.map(n=>({drawingId:n.drawingId,key:e,value:t}))});let o=(n=p.getRenderById(_))==null?void 0:n.with(r.DocSelectionRenderService);o&&o.blur(),S.refreshControls()}function L(t){var r;let i=D.relativeFrom,a=D.posOffset,o=Number(t);if(i===o)return;let s=f.getFocusDrawings();if(s.length===0)return;let c=s[0].drawingId,l=s[0].unitId,u=null,d=0,m=(r=p.getRenderById(l))==null?void 0:r.with(n.DocSkeletonManagerService).getSkeleton(),h=m==null?void 0:m.getSkeletonData();if(h==null)return;let{pages:g,skeHeaders:_,skeFooters:v}=h;for(let e of g){var y,b;let{marginLeft:t,skeDrawings:n,headerId:r,footerId:i,pageWidth:a}=e;if(n.has(c)){u=n.get(c),d=t;break}let o=(y=_.get(r))==null?void 0:y.get(a);if(o!=null&&o.skeDrawings.has(c)){u=o==null?void 0:o.skeDrawings.get(c),d=t;break}let s=(b=v.get(i))==null?void 0:b.get(a);if(s!=null&&s.skeDrawings.has(c)){u=s==null?void 0:s.skeDrawings.get(c),d=t;break}}if(u==null)return;let x=0;i===e.ObjectRelativeFromH.COLUMN?x-=u.columnLeft:i===e.ObjectRelativeFromH.MARGIN&&(x-=d),o===e.ObjectRelativeFromH.COLUMN?x+=u.columnLeft:o===e.ObjectRelativeFromH.MARGIN?x+=d:e.ObjectRelativeFromH.PAGE,I(`positionH`,{relativeFrom:o,posOffset:(a==null?0:a)-x})}function R(t){var i,a,o,s,c;let l=k.relativeFrom,u=k.posOffset,d=Number(t);if(l===d)return;let h=f.getFocusDrawings();if(h.length===0)return;let{drawingId:g,unitId:_}=h[0],v=m.getUniverDocInstance(_),y=(i=p.getRenderById(_))==null?void 0:i.with(n.DocSkeletonManagerService).getSkeleton(),b=(a=p.getRenderById(_))==null?void 0:a.with(r.DocSelectionRenderService),x=b==null?void 0:b.getSegment(),S=b==null?void 0:b.getSegmentPage(),C=v==null||(o=v.getSelfOrHeaderFooterModel(x).getBody())==null||(o=o.customBlocks)==null?void 0:o.find(e=>e.blockId===g);if(C==null||y==null||b==null)return;let{startIndex:w}=C,T=y.findNodeByCharIndex(w,x,S),E=T==null||(s=T.parent)==null?void 0:s.parent,D=E==null?void 0:E.parent,O=D==null?void 0:D.lines.find(e=>e.paragraphIndex===(E==null?void 0:E.paragraphIndex)&&e.paragraphStart),A=D==null||(c=D.parent)==null?void 0:c.parent;if(T==null||E==null||O==null||D==null||A==null)return;let j=0;l===e.ObjectRelativeFromV.PARAGRAPH?j-=O.top:l===e.ObjectRelativeFromV.LINE?j-=E.top:l===e.ObjectRelativeFromV.PAGE&&(j+=A.marginTop),d===e.ObjectRelativeFromV.PARAGRAPH?j+=O.top:d===e.ObjectRelativeFromV.LINE?j+=E.top:d===e.ObjectRelativeFromV.PAGE&&(j-=A.marginTop),I(`positionV`,{relativeFrom:d,posOffset:(u==null?0:u)-j})}function z(t){var n;let r=v==null?void 0:v.getSnapshot(),i=r==null||(n=r.drawings)==null?void 0:n[t.drawingId];if(i==null)return;let{layoutType:a}=i,{positionH:o,positionV:s}=i.docTransform;O(o),A(s),E(a===e.PositionedObjectLayoutType.INLINE),M(s.relativeFrom===e.ObjectRelativeFromV.PARAGRAPH||s.relativeFrom===e.ObjectRelativeFromV.LINE)}function B(){let e=f.getFocusDrawings();e.length!==0&&z(e[0])}function V(t){M(t),R(t?String(e.ObjectRelativeFromV.PARAGRAPH):String(e.ObjectRelativeFromV.PAGE))}return(0,u.useEffect)(()=>{B();let e=f.focus$.subscribe(e=>{if(e.length===0){F(!1);return}F(!0),z(e[0])}),t=c.onCommandExecuted(async e=>{e.id===n.RichTextEditingMutation.id&&B()});return()=>{e.unsubscribe(),t.dispose()}},[]),(0,d.jsxs)(`div`,{className:(0,a.clsx)(`univer-grid univer-gap-2 univer-py-2 univer-text-gray-400`,{"univer-hidden":!P}),children:[(0,d.jsx)(`header`,{className:`univer-text-gray-600 dark:!univer-text-gray-200`,children:(0,d.jsx)(`div`,{children:l.t(`image-position.title`)})}),(0,d.jsx)(`div`,{className:`univer-text-gray-600 dark:!univer-text-gray-200`,children:(0,d.jsx)(`div`,{children:l.t(`image-position.horizontal`)})}),(0,d.jsxs)(`div`,{className:`univer-grid univer-grid-cols-2 univer-gap-2 [&>div]:univer-grid [&>div]:univer-gap-2`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`span`,{children:l.t(`image-position.absolutePosition`)}),(0,d.jsx)(a.InputNumber,{min:le,max:ue,precision:1,disabled:T,value:D.posOffset,onChange:e=>{I(`positionH`,{relativeFrom:D.relativeFrom,posOffset:e})}})]}),(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`span`,{children:l.t(`image-position.toTheRightOf`)}),(0,d.jsx)(a.Select,{value:String(D.relativeFrom),disabled:T,options:C,onChange:L})]})]}),(0,d.jsx)(`div`,{className:`univer-text-gray-600 dark:!univer-text-gray-200`,children:(0,d.jsx)(`div`,{children:l.t(`image-position.vertical`)})}),(0,d.jsxs)(`div`,{className:`univer-grid univer-grid-cols-2 univer-gap-2 [&>div]:univer-grid [&>div]:univer-gap-2`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`span`,{children:l.t(`image-position.absolutePosition`)}),(0,d.jsx)(a.InputNumber,{min:le,max:ue,precision:1,disabled:T,value:k.posOffset,onChange:e=>{I(`positionV`,{relativeFrom:k.relativeFrom,posOffset:e})}})]}),(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`span`,{children:l.t(`image-position.bellow`)}),(0,d.jsx)(a.Select,{disabled:T,value:String(k.relativeFrom),options:w,onChange:R})]})]}),(0,d.jsx)(`div`,{className:`univer-text-gray-600 dark:!univer-text-gray-200`,children:(0,d.jsx)(`div`,{children:l.t(`image-position.options`)})}),(0,d.jsx)(`div`,{children:(0,d.jsx)(a.Checkbox,{disabled:T,checked:j,onChange:V,children:l.t(`image-position.moveObjectWithText`)})})]})},fe=t=>{let r=(0,s.useDependency)(e.ICommandService),c=(0,s.useDependency)(e.LocaleService),l=(0,s.useDependency)(o.IDrawingManagerService),f=(0,s.useDependency)(i.IRenderManagerService),p=(0,s.useDependency)(e.IUniverInstanceService),{drawings:m}=t,h=m[0];if(h==null)return null;let{unitId:g}=h,_=p.getUniverDocInstance(g),v=f.getRenderById(g);if((v==null?void 0:v.scene)==null)return null;let[y,b]=(0,u.useState)(!0),[x,S]=(0,u.useState)(!0),[C,w]=(0,u.useState)(!0),[T,E]=(0,u.useState)(D.INLINE),[O,k]=(0,u.useState)(``),[N,P]=(0,u.useState)({distT:0,distL:0,distB:0,distR:0}),[F,I]=(0,u.useState)(!0);function L(e){E(e);let t=l.getFocusDrawings();if(t.length===0)return;let{unitId:n,subUnitId:i}=t[0],a=t.map(({unitId:e,subUnitId:t,drawingId:n})=>({unitId:e,subUnitId:t,drawingId:n}));r.executeCommand(A.id,{unitId:n,subUnitId:i,drawings:a,wrappingStyle:e})}function R(e){k(e);let t=l.getFocusDrawings();if(t.length===0)return;let n=t.map(e=>({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId}));r.executeCommand(M.id,{unitId:t[0].unitId,subUnitId:t[0].unitId,drawings:n,wrapText:e})}function z(e,t){if(e==null)return;P({...N,[t]:e});let n=l.getFocusDrawings();if(n.length===0)return;let i=n.map(e=>({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId}));r.executeCommand(j.id,{unitId:n[0].unitId,subUnitId:n[0].unitId,drawings:i,dist:{[t]:e}})}function B(){let e=l.getFocusDrawings();e.length!==0&&V(e[0])}function V(t){var n;let r=_==null||(n=_.getSnapshot())==null||(n=n.drawings)==null?void 0:n[t.drawingId];if(r==null)return;let{distT:i=0,distL:a=0,distB:o=0,distR:s=0,layoutType:c=e.PositionedObjectLayoutType.INLINE,behindDoc:l=e.BooleanNumber.FALSE,wrapText:u=e.WrapTextType.BOTH_SIDES}=r;if(P({distT:i,distL:a,distB:o,distR:s}),k(u),b(c!==e.PositionedObjectLayoutType.WRAP_SQUARE),c===e.PositionedObjectLayoutType.WRAP_NONE||c===e.PositionedObjectLayoutType.INLINE?S(!0):S(!1),c===e.PositionedObjectLayoutType.WRAP_NONE||c===e.PositionedObjectLayoutType.INLINE||c===e.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM?w(!0):w(!1),c===e.PositionedObjectLayoutType.WRAP_NONE)l===e.BooleanNumber.TRUE?E(D.BEHIND_TEXT):E(D.IN_FRONT_OF_TEXT);else switch(c){case e.PositionedObjectLayoutType.INLINE:E(D.INLINE);break;case e.PositionedObjectLayoutType.WRAP_SQUARE:E(D.WRAP_SQUARE);break;case e.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM:E(D.WRAP_TOP_AND_BOTTOM);break;default:throw Error(`Unsupported layout type: ${c}`)}}return(0,u.useEffect)(()=>{B();let e=l.focus$.subscribe(e=>{if(e.length===0){I(!1);return}I(!0),V(e[0])}),t=r.onCommandExecuted(async e=>{e.id===n.RichTextEditingMutation.id&&B()});return()=>{e.unsubscribe(),t.dispose()}},[]),(0,d.jsxs)(`div`,{className:(0,a.clsx)(`univer-grid univer-gap-2 univer-py-2 univer-text-gray-400`,{"univer-hidden":!F}),children:[(0,d.jsx)(`header`,{className:`univer-text-gray-600 dark:!univer-text-gray-200`,children:(0,d.jsx)(`div`,{children:c.t(`image-text-wrap.title`)})}),(0,d.jsx)(`div`,{className:`univer-text-gray-600 dark:!univer-text-gray-200`,children:(0,d.jsx)(`div`,{children:c.t(`image-text-wrap.wrappingStyle`)})}),(0,d.jsx)(`div`,{children:(0,d.jsxs)(a.RadioGroup,{value:T,onChange:L,direction:`vertical`,children:[(0,d.jsx)(a.Radio,{value:D.INLINE,children:c.t(`image-text-wrap.inline`)}),(0,d.jsx)(a.Radio,{value:D.WRAP_SQUARE,children:c.t(`image-text-wrap.square`)}),(0,d.jsx)(a.Radio,{value:D.WRAP_TOP_AND_BOTTOM,children:c.t(`image-text-wrap.topAndBottom`)}),(0,d.jsx)(a.Radio,{value:D.BEHIND_TEXT,children:c.t(`image-text-wrap.behindText`)}),(0,d.jsx)(a.Radio,{value:D.IN_FRONT_OF_TEXT,children:c.t(`image-text-wrap.inFrontText`)})]})}),(0,d.jsx)(`div`,{className:`univer-text-gray-600 dark:!univer-text-gray-200`,children:(0,d.jsx)(`div`,{children:c.t(`image-text-wrap.wrapText`)})}),(0,d.jsx)(`div`,{children:(0,d.jsxs)(a.RadioGroup,{disabled:y,value:O,onChange:R,direction:`horizontal`,children:[(0,d.jsx)(a.Radio,{value:e.WrapTextType.BOTH_SIDES,children:c.t(`image-text-wrap.bothSide`)}),(0,d.jsx)(a.Radio,{value:e.WrapTextType.LEFT,children:c.t(`image-text-wrap.leftOnly`)}),(0,d.jsx)(a.Radio,{value:e.WrapTextType.RIGHT,children:c.t(`image-text-wrap.rightOnly`)})]})}),(0,d.jsx)(`div`,{className:`univer-text-gray-600 dark:!univer-text-gray-200`,children:(0,d.jsx)(`div`,{children:c.t(`image-text-wrap.distanceFromText`)})}),(0,d.jsxs)(`div`,{className:`univer-grid univer-grid-cols-2 univer-gap-2 [&>div]:univer-grid [&>div]:univer-gap-2`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`span`,{children:c.t(`image-text-wrap.top`)}),(0,d.jsx)(a.InputNumber,{min:0,max:100,disabled:x,precision:1,value:N.distT,onChange:e=>{z(e,`distT`)}})]}),(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`span`,{children:c.t(`image-text-wrap.left`)}),(0,d.jsx)(a.InputNumber,{min:0,max:100,disabled:C,precision:1,value:N.distL,onChange:e=>{z(e,`distL`)}})]})]}),(0,d.jsxs)(`div`,{className:`univer-grid univer-grid-cols-2 univer-gap-2 [&>div]:univer-grid [&>div]:univer-gap-2`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`span`,{children:c.t(`image-text-wrap.bottom`)}),(0,d.jsx)(a.InputNumber,{min:0,max:100,disabled:x,precision:1,value:N.distB,onChange:e=>{z(e,`distB`)}})]}),(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`span`,{children:c.t(`image-text-wrap.right`)}),(0,d.jsx)(a.InputNumber,{min:0,max:100,disabled:C,precision:1,value:N.distR,onChange:e=>{z(e,`distR`)}})]})]})]})},pe=()=>{let e=(0,s.useDependency)(o.IDrawingManagerService),[t,n]=(0,u.useState)(e.getFocusDrawings());return(0,u.useEffect)(()=>{let t=e.focus$.subscribe(e=>{n(e)});return()=>{t.unsubscribe()}},[]),!!(t!=null&&t.length)&&(0,d.jsxs)(`div`,{className:`univer-text-sm`,children:[(0,d.jsx)(l.DrawingCommonPanel,{drawings:t,hasAlign:!1,hasCropper:!1,hasGroup:!1,hasTransform:!1}),(0,d.jsx)(fe,{drawings:t}),(0,d.jsx)(de,{drawings:t})]})};function Q(t){return t.getContextValue(e.FOCUSING_DOC)&&t.getContextValue(e.FOCUSING_UNIVER_EDITOR)&&t.getContextValue(e.FOCUSING_COMMON_DRAWINGS)}const me={id:I.id,description:`shortcut.drawing-move-down`,group:`4_drawing-view`,binding:s.KeyCode.ARROW_DOWN,priority:100,preconditions:Q,staticParameters:{direction:e.Direction.DOWN}},he={id:I.id,description:`shortcut.drawing-move-up`,group:`4_drawing-view`,binding:s.KeyCode.ARROW_UP,priority:100,preconditions:Q,staticParameters:{direction:e.Direction.UP}},ge={id:I.id,description:`shortcut.drawing-move-left`,group:`4_drawing-view`,binding:s.KeyCode.ARROW_LEFT,priority:100,preconditions:Q,staticParameters:{direction:e.Direction.LEFT}},_e={id:I.id,description:`shortcut.drawing-move-right`,group:`4_drawing-view`,binding:s.KeyCode.ARROW_RIGHT,priority:100,preconditions:Q,staticParameters:{direction:e.Direction.RIGHT}},ve={id:p.id,description:`shortcut.drawing-delete`,group:`4_drawing-view`,preconditions:Q,binding:s.KeyCode.DELETE,mac:s.KeyCode.BACKSPACE};let ye=class extends e.Disposable{constructor(e,t,n,r){super(),this._componentManager=e,this._menuManagerService=t,this._commandService=n,this._shortcutService=r,this._init()}_initCustomComponents(){let e=this._componentManager;this.disposeWithMe(e.register(R,pe))}_initMenus(){this._menuManagerService.mergeMenu(ce)}_initCommands(){[E,h,A,j,M,N,P,F,f,z,L,B,m,_,I,p,g].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}_initShortcuts(){[me,he,ge,_e,ve].forEach(e=>{this.disposeWithMe(this._shortcutService.registerShortcut(e))})}_init(){this._initCommands(),this._initCustomComponents(),this._initMenus(),this._initShortcuts()}};ye=w([C(0,(0,e.Inject)(s.ComponentManager)),C(1,s.IMenuManagerService),C(2,e.ICommandService),C(3,s.IShortcutService)],ye);let be=class extends e.Disposable{constructor(e,t,n,r,a,o,s,c){super(),this._context=e,this._docSkeletonManagerService=t,this._commandService=n,this._editorService=r,this._drawingManagerService=a,this._docRefreshDrawingsService=o,this._univerInstanceService=s,this._lifecycleService=c,x(this,`_liquid`,new i.Liquid),this._initialize(),this._commandExecutedListener()}_initialize(){this._initialRenderRefresh(),this._drawingInitializeListener(),this._initResize()}_initialRenderRefresh(){this.disposeWithMe(this._docSkeletonManagerService.currentSkeleton$.subscribe(e=>{e!=null&&this._refreshDrawing(e)})),this.disposeWithMe(this._docRefreshDrawingsService.refreshDrawings$.subscribe(e=>{e!=null&&this._refreshDrawing(e)}))}_commandExecutedListener(){let t=[n.RichTextEditingMutation.id,r.SetDocZoomRatioOperation.id];this.disposeWithMe(this._commandService.onCommandExecuted(n=>{if(t.includes(n.id)){let{unitId:t}=n.params,{unitId:r,mainComponent:i}=this._context;if(t!==r)return;let a=this._docSkeletonManagerService.getSkeleton();if(a==null)return;if(this._editorService.isEditor(r)&&r!==e.DOCS_ZEN_EDITOR_UNIT_ID_KEY){i==null||i.makeDirty();return}this._refreshDrawing(a)}}))}_initResize(){this.disposeWithMe((0,e.fromEventSubject)(this._context.engine.onTransformChange$).pipe((0,c.filter)(e=>e.type===i.TRANSFORM_CHANGE_OBSERVABLE_TYPE.resize),(0,c.debounceTime)(16)).subscribe(()=>{var e;let t=this._docSkeletonManagerService.getSkeleton(),{scene:n}=this._context;(e=n.getTransformer())==null||e.refreshControls(),this._refreshDrawing(t)}))}_refreshDrawing(e){let t=e==null?void 0:e.getSkeletonData(),{mainComponent:n,unitId:r}=this._context,i=n;if(!t)return;let{left:a,top:o,pageLayoutType:s,pageMarginLeft:c,pageMarginTop:l}=i,{pages:u,skeHeaders:d,skeFooters:f}=t,p={};this._liquid.reset();for(let e=0,t=u.length;e<t;e++){let t=u[e],{headerId:n,footerId:i,pageWidth:g}=t;if(n){var m;let e=(m=d.get(n))==null?void 0:m.get(g);e&&this._calculateDrawingPosition(r,e,a,o,p,e.marginTop,t.marginLeft)}if(i){var h;let e=(h=f.get(i))==null?void 0:h.get(g);e&&this._calculateDrawingPosition(r,e,a,o,p,t.pageHeight-t.marginBottom+e.marginTop,t.marginLeft)}this._calculateDrawingPosition(r,t,a,o,p,t.marginTop,t.marginLeft),this._liquid.translatePage(t,s,c,l)}let g=Object.values(p),_=g.filter(e=>!e.isMultiTransform),v=g.filter(e=>e.isMultiTransform);_.length>0&&this._drawingManagerService.refreshTransform(_),this._handleMultiDrawingsTransform(v)}_handleMultiDrawingsTransform(t){let{scene:n,unitId:r}=this._context,i=n.getTransformerByCreate();t.forEach(e=>{let t=this._drawingManagerService.getDrawingByParam(e);t!=null&&(t.transform=e.transform,t.transforms=e.transforms,t.isMultiTransform=e.isMultiTransform)});let a=[...i.getSelectedObjectMap().keys()],o=Object.values(this._drawingManagerService.getDrawingData(r,r)).filter(t=>t.isMultiTransform===e.BooleanNumber.TRUE);this._drawingManagerService.removeNotification(o),t.length>0&&this._drawingManagerService.addNotification(t);for(let e of a){let t=n.getObject(e);t&&i.setSelectedControl(t)}}_calculateDrawingPosition(t,n,r,i,a,o,s){let{skeDrawings:c}=n;this._liquid.translatePagePadding({marginTop:o,marginLeft:s}),c.forEach(n=>{let{aLeft:o,aTop:s,height:c,width:l,angle:u,drawingId:d,drawingOrigin:f}=n,p=f.layoutType===e.PositionedObjectLayoutType.WRAP_NONE&&f.behindDoc===e.BooleanNumber.TRUE,{isMultiTransform:m=e.BooleanNumber.FALSE}=f,h={left:o+r+this._liquid.x,top:s+i+this._liquid.y,width:l,height:c,angle:u};a[d]==null?a[d]={unitId:t,subUnitId:t,drawingId:d,behindText:p,transform:h,transforms:[h],isMultiTransform:m}:m===e.BooleanNumber.TRUE&&a[d].transforms.push(h)}),this._liquid.restorePagePadding({marginTop:o,marginLeft:s})}_drawingInitializeListener(){let t=()=>{let e=this._docSkeletonManagerService.getSkeleton();e!=null&&(this._refreshDrawing(e),this._drawingManagerService.initializeNotification(this._context.unitId))};this._lifecycleService.stage>=e.LifecycleStages.Rendered?this._docSkeletonManagerService.getSkeleton()?t():setTimeout(t,500):this.disposeWithMe(this._lifecycleService.lifecycle$.pipe((0,c.filter)(t=>t===e.LifecycleStages.Rendered)).subscribe(t))}};be=w([C(1,(0,e.Inject)(n.DocSkeletonManagerService)),C(2,e.ICommandService),C(3,r.IEditorService),C(4,o.IDrawingManagerService),C(5,(0,e.Inject)(S)),C(6,e.IUniverInstanceService),C(7,(0,e.Inject)(e.LifecycleService))],be);let xe=class extends e.RxDisposable{constructor(e,t,n,r,i){super(),this._drawingManagerService=e,this._canvasPopManagerService=t,this._renderManagerService=n,this._univerInstanceService=r,this._contextService=i,x(this,`_initImagePopupMenu`,new Set),x(this,`_disposePopups`,[]),this._init()}_init(){this.disposeWithMe(this._univerInstanceService.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_DOC).pipe((0,c.takeUntil)(this.dispose$)).subscribe(e=>this._create(e))),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitDisposed$(e.UniverInstanceType.UNIVER_DOC).pipe((0,c.takeUntil)(this.dispose$)).subscribe(e=>this._dispose(e))),this._univerInstanceService.getAllUnitsForType(e.UniverInstanceType.UNIVER_DOC).forEach(e=>this._create(e))}_dispose(e){let t=e.getUnitId();this._disposePopups.length&&(this._disposePopups.forEach(e=>e.dispose()),this._disposePopups.length=0),this._renderManagerService.removeRender(t)}_create(t){if(!t)return;let n=t.getUnitId();(0,e.isInternalEditorID)(n)||this._renderManagerService.has(n)&&!this._initImagePopupMenu.has(n)&&(this._popupMenuListener(n),this._initImagePopupMenu.add(n))}_hasCropObject(e){let t=e.getAllObjects();for(let e of t)if(e instanceof l.ImageCropperObject)return!0;return!1}_popupMenuListener(t){var n;let r=(n=this._renderManagerService.getRenderById(t))==null?void 0:n.scene;if(!r)return;let i=r.getTransformerByCreate();if(!i)return;let a=this._disposePopups;this.disposeWithMe(i.createControl$.subscribe(()=>{if(this._hasCropObject(r))return;let t=i.getSelectedObjectMap();if(a.forEach(e=>e.dispose()),a.length=0,t.size>1)return;let n=t.values().next().value;if(!n)return;let o=n.oKey,s=this._drawingManagerService.getDrawingOKey(o);if(!s||s.drawingType===e.DrawingTypeEnum.DRAWING_DOM)return;let{unitId:c,subUnitId:u,drawingId:d,drawingType:f}=s,p=this._canvasPopManagerService.attachPopupToObject(n,{componentKey:l.COMPONENT_IMAGE_POPUP_MENU,direction:`horizontal`,offset:[2,0],extraProps:{menuItems:this._getImageMenuItems(c,u,d,f)}},c);a.push(this.disposeWithMe(p)),!this._drawingManagerService.getFocusDrawings().find(e=>e.unitId===c&&e.subUnitId===u&&e.drawingId===d)&&this._drawingManagerService.focusDrawing([{unitId:c,subUnitId:u,drawingId:d}])})),this.disposeWithMe(i.clearControl$.subscribe(()=>{a.forEach(e=>e.dispose()),a.length=0,this._contextService.setContextValue(e.FOCUSING_COMMON_DRAWINGS,!1),this._drawingManagerService.focusDrawing(null)})),this.disposeWithMe(i.changing$.subscribe(()=>{a.forEach(e=>e.dispose()),a.length=0})),this.disposeWithMe(i.changeStart$.subscribe(()=>{a.forEach(e=>e.dispose()),a.length=0}))}_getImageMenuItems(e,t,n,r){return[{label:`image-popup.edit`,index:0,commandId:B.id,commandParams:{unitId:e,subUnitId:t,drawingId:n},disable:!0},{label:`image-popup.delete`,index:1,commandId:f.id,commandParams:{unitId:e,drawings:[{unitId:e,subUnitId:t,drawingId:n}]},disable:!1},{label:`image-popup.crop`,index:2,commandId:l.OpenImageCropOperation.id,commandParams:{unitId:e,subUnitId:t,drawingId:n},disable:!0},{label:`image-popup.reset`,index:3,commandId:l.ImageResetSizeOperation.id,commandParams:[{unitId:e,subUnitId:t,drawingId:n}],disable:!0}]}};xe=w([C(0,o.IDrawingManagerService),C(1,(0,e.Inject)(r.DocCanvasPopManagerService)),C(2,i.IRenderManagerService),C(3,e.IUniverInstanceService),C(4,e.IContextService)],xe);let $=class extends e.Plugin{constructor(t=J,n,r,i){super(),this._config=t,this._injector=n,this._renderManagerSrv=r,this._configService=i;let{...a}=(0,e.merge)({},J,this._config);this._configService.setConfig(q,a)}onStarting(){[[ye],[xe],[se],[X],[S],[U],[Z]].forEach(e=>this._injector.add(e))}onReady(){[[T],[be]].forEach(t=>this._renderManagerSrv.registerRenderModule(e.UniverInstanceType.UNIVER_DOC,t)),this._injector.get(X),this._injector.get(ye),this._injector.get(se),this._injector.get(Z)}onRendered(){this._injector.get(xe),this._injector.get(U)}};x($,`type`,e.UniverInstanceType.UNIVER_DOC),x($,`pluginName`,`DOC_DRAWING_UI_PLUGIN`),x($,`packageName`,ne),x($,`version`,re),$=w([(0,e.DependentOn)(l.UniverDrawingUIPlugin,o.UniverDrawingPlugin,t.UniverDocsDrawingPlugin,s.UniverUIPlugin),C(1,(0,e.Inject)(e.Injector)),C(2,i.IRenderManagerService),C(3,e.IConfigService)],$),exports.ClearDocDrawingTransformerOperation=L,exports.DOCS_IMAGE_MENU_ID=W,exports.DeleteDocDrawingsCommand=p,Object.defineProperty(exports,`DocFloatDomController`,{enumerable:!0,get:function(){return U}}),exports.EditDocDrawingOperation=B,exports.GroupDocDrawingCommand=m,exports.InsertDocDrawingCommand=h,exports.InsertDocImageCommand=E,exports.MoveDocDrawingsCommand=I,exports.RemoveDocDrawingCommand=f,exports.SetDocDrawingArrangeCommand=g,exports.SidebarDocDrawingOperation=z,exports.UngroupDocDrawingCommand=_,Object.defineProperty(exports,`UniverDocsDrawingUIPlugin`,{enumerable:!0,get:function(){return $}});
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ let _univerjs_core = require("@univerjs/core");
3
+ let _univerjs_docs_drawing = require("@univerjs/docs-drawing");
4
+ let _univerjs_docs = require("@univerjs/docs");
5
+ let _univerjs_docs_ui = require("@univerjs/docs-ui");
6
+ let _univerjs_engine_render = require("@univerjs/engine-render");
7
+ let _univerjs_design = require("@univerjs/design");
8
+ let _univerjs_drawing = require("@univerjs/drawing");
9
+ let _univerjs_ui = require("@univerjs/ui");
10
+ let rxjs = require("rxjs");
11
+ let _univerjs_drawing_ui = require("@univerjs/drawing-ui");
12
+ let react = require("react");
13
+ let react_jsx_runtime = require("react/jsx-runtime");
14
+
15
+ //#region src/commands/commands/remove-doc-drawing.command.ts
16
+ /**
17
+ * The command to remove new sheet image
18
+ */
19
+ const RemoveDocDrawingCommand = {
20
+ id: "doc.command.remove-doc-image",
21
+ type: _univerjs_core.CommandType.COMMAND,
22
+ handler: (accessor, params) => {
23
+ var _docSelectionRenderSe, _documentDataModel$ge, _documentDataModel$ge2;
24
+ const commandService = accessor.get(_univerjs_core.ICommandService);
25
+ const univerInstanceService = accessor.get(_univerjs_core.IUniverInstanceService);
26
+ const renderManagerService = accessor.get(_univerjs_engine_render.IRenderManagerService);
27
+ const documentDataModel = univerInstanceService.getCurrentUniverDocInstance();
28
+ if (params == null || documentDataModel == null) return false;
29
+ const docSelectionRenderService = renderManagerService.getRenderById(params.unitId).with(_univerjs_docs_ui.DocSelectionRenderService);
30
+ const { drawings: removeDrawings } = params;
31
+ const segmentId = (_docSelectionRenderSe = docSelectionRenderService.getSegment()) !== null && _docSelectionRenderSe !== void 0 ? _docSelectionRenderSe : "";
32
+ const textX = new _univerjs_core.TextX();
33
+ const jsonX = _univerjs_core.JSONX.getInstance();
34
+ const customBlocks = (_documentDataModel$ge = (_documentDataModel$ge2 = documentDataModel.getSelfOrHeaderFooterModel(segmentId).getBody()) === null || _documentDataModel$ge2 === void 0 ? void 0 : _documentDataModel$ge2.customBlocks) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : [];
35
+ const removeCustomBlocks = removeDrawings.map((drawing) => customBlocks.find((customBlock) => customBlock.blockId === drawing.drawingId)).filter((block) => !!block).sort((a, b) => a.startIndex > b.startIndex ? 1 : -1);
36
+ const unitId = removeDrawings[0].unitId;
37
+ const memoryCursor = new _univerjs_core.MemoryCursor();
38
+ memoryCursor.reset();
39
+ const cursorIndex = removeCustomBlocks[0].startIndex;
40
+ const textRanges = [{
41
+ startOffset: cursorIndex,
42
+ endOffset: cursorIndex
43
+ }];
44
+ const doMutation = {
45
+ id: _univerjs_docs.RichTextEditingMutation.id,
46
+ params: {
47
+ unitId,
48
+ actions: [],
49
+ textRanges
50
+ }
51
+ };
52
+ const rawActions = [];
53
+ for (const block of removeCustomBlocks) {
54
+ const { startIndex } = block;
55
+ if (startIndex > memoryCursor.cursor) textX.push({
56
+ t: _univerjs_core.TextXActionType.RETAIN,
57
+ len: startIndex - memoryCursor.cursor
58
+ });
59
+ textX.push({
60
+ t: _univerjs_core.TextXActionType.DELETE,
61
+ len: 1
62
+ });
63
+ memoryCursor.moveCursorTo(startIndex + 1);
64
+ }
65
+ const path = (0, _univerjs_docs_ui.getRichTextEditPath)(documentDataModel, segmentId);
66
+ rawActions.push(jsonX.editOp(textX.serialize(), path));
67
+ for (const block of removeCustomBlocks) {
68
+ var _documentDataModel$ge3;
69
+ const { blockId } = block;
70
+ const drawing = ((_documentDataModel$ge3 = documentDataModel.getDrawings()) !== null && _documentDataModel$ge3 !== void 0 ? _documentDataModel$ge3 : {})[blockId];
71
+ const drawingIndex = documentDataModel.getDrawingsOrder().indexOf(blockId);
72
+ const removeDrawingAction = jsonX.removeOp(["drawings", blockId], drawing);
73
+ const removeDrawingOrderAction = jsonX.removeOp(["drawingsOrder", drawingIndex], blockId);
74
+ rawActions.push(removeDrawingAction);
75
+ rawActions.push(removeDrawingOrderAction);
76
+ }
77
+ doMutation.params.actions = rawActions.reduce((acc, cur) => {
78
+ return _univerjs_core.JSONX.compose(acc, cur);
79
+ }, null);
80
+ const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
81
+ return Boolean(result);
82
+ }
83
+ };
84
+
85
+ //#endregion
86
+ //#region src/commands/commands/delete-doc-drawing.command.ts
87
+ const DeleteDocDrawingsCommand = {
88
+ id: "doc.command.delete-drawing",
89
+ type: _univerjs_core.CommandType.COMMAND,
90
+ handler: (accessor) => {
91
+ const commandService = accessor.get(_univerjs_core.ICommandService);
92
+ const drawings = accessor.get(_univerjs_docs_drawing.IDocDrawingService).getFocusDrawings();
93
+ if (drawings.length === 0) return false;
94
+ const { unitId } = drawings[0];
95
+ const newDrawings = drawings.map((drawing) => {
96
+ const { unitId, subUnitId, drawingId, drawingType } = drawing;
97
+ return {
98
+ unitId,
99
+ subUnitId,
100
+ drawingId,
101
+ drawingType
102
+ };
103
+ });
104
+ return commandService.executeCommand(RemoveDocDrawingCommand.id, {
105
+ unitId,
106
+ drawings: newDrawings
107
+ });
108
+ }
109
+ };
110
+
111
+ //#endregion
112
+ //#region src/commands/commands/group-doc-drawing.command.ts
113
+ /**
114
+ * The command to insert new defined name
115
+ */
116
+ const GroupDocDrawingCommand = {
117
+ id: "doc.command.group-doc-image",
118
+ type: _univerjs_core.CommandType.COMMAND,
119
+ handler: (accessor, params) => {
120
+ return false;
121
+ }
122
+ };
123
+
124
+ //#endregion
125
+ //#region src/commands/commands/insert-doc-drawing.command.ts
126
+ /**
127
+ * The command to insert new drawings
128
+ */
129
+ const InsertDocDrawingCommand = {
130
+ id: "doc.command.insert-doc-image",
131
+ type: _univerjs_core.CommandType.COMMAND,
132
+ handler: (accessor, params) => {
133
+ var _documentDataModel$ge, _documentDataModel$ge2;
134
+ if (params == null) return false;
135
+ const commandService = accessor.get(_univerjs_core.ICommandService);
136
+ const docSelectionManagerService = accessor.get(_univerjs_docs.DocSelectionManagerService);
137
+ const univerInstanceService = accessor.get(_univerjs_core.IUniverInstanceService);
138
+ const activeTextRange = docSelectionManagerService.getActiveTextRange();
139
+ const documentDataModel = univerInstanceService.getCurrentUniverDocInstance();
140
+ if (activeTextRange == null || documentDataModel == null) return false;
141
+ const unitId = documentDataModel.getUnitId();
142
+ const { drawings } = params;
143
+ const { collapsed, startOffset, segmentId } = activeTextRange;
144
+ const body = documentDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();
145
+ if (body == null) return false;
146
+ const textX = new _univerjs_core.TextX();
147
+ const jsonX = _univerjs_core.JSONX.getInstance();
148
+ const rawActions = [];
149
+ const drawingOrderLength = (_documentDataModel$ge = (_documentDataModel$ge2 = documentDataModel.getSnapshot().drawingsOrder) === null || _documentDataModel$ge2 === void 0 ? void 0 : _documentDataModel$ge2.length) !== null && _documentDataModel$ge !== void 0 ? _documentDataModel$ge : 0;
150
+ let removeDrawingLen = 0;
151
+ if (collapsed) {
152
+ if (startOffset > 0) textX.push({
153
+ t: _univerjs_core.TextXActionType.RETAIN,
154
+ len: startOffset
155
+ });
156
+ } else {
157
+ var _documentDataModel$ge3, _documentDataModel$ge4;
158
+ const dos = _univerjs_core.BuildTextUtils.selection.delete([activeTextRange], body, 0, null, false);
159
+ textX.push(...dos);
160
+ const removedCustomBlockIds = (0, _univerjs_docs_ui.getCustomBlockIdsInSelections)(body, [activeTextRange]);
161
+ const drawings = (_documentDataModel$ge3 = documentDataModel.getDrawings()) !== null && _documentDataModel$ge3 !== void 0 ? _documentDataModel$ge3 : {};
162
+ const drawingOrder = (_documentDataModel$ge4 = documentDataModel.getDrawingsOrder()) !== null && _documentDataModel$ge4 !== void 0 ? _documentDataModel$ge4 : [];
163
+ const sortedRemovedCustomBlockIds = removedCustomBlockIds.sort((a, b) => {
164
+ if (drawingOrder.indexOf(a) > drawingOrder.indexOf(b)) return -1;
165
+ else if (drawingOrder.indexOf(a) < drawingOrder.indexOf(b)) return 1;
166
+ return 0;
167
+ });
168
+ if (sortedRemovedCustomBlockIds.length > 0) for (const blockId of sortedRemovedCustomBlockIds) {
169
+ const drawing = drawings[blockId];
170
+ const drawingIndex = drawingOrder.indexOf(blockId);
171
+ if (drawing == null || drawingIndex < 0) continue;
172
+ const removeDrawingAction = jsonX.removeOp(["drawings", blockId], drawing);
173
+ const removeDrawingOrderAction = jsonX.removeOp(["drawingsOrder", drawingIndex], blockId);
174
+ rawActions.push(removeDrawingAction);
175
+ rawActions.push(removeDrawingOrderAction);
176
+ removeDrawingLen++;
177
+ }
178
+ }
179
+ textX.push({
180
+ t: _univerjs_core.TextXActionType.INSERT,
181
+ body: {
182
+ dataStream: "\b".repeat(drawings.length),
183
+ customBlocks: drawings.map((drawing, i) => ({
184
+ startIndex: i,
185
+ blockId: drawing.drawingId
186
+ }))
187
+ },
188
+ len: drawings.length
189
+ });
190
+ const path = (0, _univerjs_docs_ui.getRichTextEditPath)(documentDataModel, segmentId);
191
+ const placeHolderAction = jsonX.editOp(textX.serialize(), path);
192
+ rawActions.push(placeHolderAction);
193
+ for (const drawing of drawings) {
194
+ const { drawingId } = drawing;
195
+ const addDrawingAction = jsonX.insertOp(["drawings", drawingId], drawing);
196
+ const addDrawingOrderAction = jsonX.insertOp(["drawingsOrder", drawingOrderLength - removeDrawingLen], drawingId);
197
+ rawActions.push(addDrawingAction);
198
+ rawActions.push(addDrawingOrderAction);
199
+ }
200
+ const doMutation = {
201
+ id: _univerjs_docs.RichTextEditingMutation.id,
202
+ params: {
203
+ unitId,
204
+ actions: [],
205
+ textRanges: []
206
+ }
207
+ };
208
+ doMutation.params.actions = rawActions.reduce((acc, cur) => {
209
+ return _univerjs_core.JSONX.compose(acc, cur);
210
+ }, null);
211
+ const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
212
+ return Boolean(result);
213
+ }
214
+ };
215
+
216
+ //#endregion
217
+ //#region src/commands/commands/set-drawing-arrange.command.ts
218
+ /**
219
+ * The command to arrange drawings.
220
+ */
221
+ const SetDocDrawingArrangeCommand = {
222
+ id: "doc.command.set-drawing-arrange",
223
+ type: _univerjs_core.CommandType.COMMAND,
224
+ handler: (accessor, params) => {
225
+ const commandService = accessor.get(_univerjs_core.ICommandService);
226
+ const docDrawingService = accessor.get(_univerjs_docs_drawing.IDocDrawingService);
227
+ if (params == null) return false;
228
+ const { unitId, subUnitId, drawingIds, arrangeType } = params;
229
+ const drawingOrderMapParam = {
230
+ unitId,
231
+ subUnitId,
232
+ drawingIds
233
+ };
234
+ let jsonOp;
235
+ if (arrangeType === _univerjs_core.ArrangeTypeEnum.forward) jsonOp = docDrawingService.getForwardDrawingsOp(drawingOrderMapParam);
236
+ else if (arrangeType === _univerjs_core.ArrangeTypeEnum.backward) jsonOp = docDrawingService.getBackwardDrawingOp(drawingOrderMapParam);
237
+ else if (arrangeType === _univerjs_core.ArrangeTypeEnum.front) jsonOp = docDrawingService.getFrontDrawingsOp(drawingOrderMapParam);
238
+ else if (arrangeType === _univerjs_core.ArrangeTypeEnum.back) jsonOp = docDrawingService.getBackDrawingsOp(drawingOrderMapParam);
239
+ if (jsonOp == null) return false;
240
+ const { redo } = jsonOp;
241
+ if (redo == null) return false;
242
+ const rawActions = [];
243
+ let redoCopy = _univerjs_core.Tools.deepClone(redo);
244
+ redoCopy = redoCopy.slice(3);
245
+ redoCopy.unshift("drawingsOrder");
246
+ rawActions.push(redoCopy);
247
+ const doMutation = {
248
+ id: _univerjs_docs.RichTextEditingMutation.id,
249
+ params: {
250
+ unitId,
251
+ actions: [],
252
+ textRanges: null
253
+ }
254
+ };
255
+ doMutation.params.actions = rawActions.reduce((acc, cur) => {
256
+ return _univerjs_core.JSONX.compose(acc, cur);
257
+ }, null);
258
+ const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
259
+ return Boolean(result);
260
+ }
261
+ };
262
+
263
+ //#endregion
264
+ //#region src/commands/commands/ungroup-doc-drawing.command.ts
265
+ /**
266
+ * The command to insert new defined name
267
+ */
268
+ const UngroupDocDrawingCommand = {
269
+ id: "doc.command.ungroup-doc-image",
270
+ type: _univerjs_core.CommandType.COMMAND,
271
+ handler: (accessor, params) => {
272
+ const docDrawingService = accessor.get(_univerjs_docs_drawing.IDocDrawingService);
273
+ if (!params) return false;
274
+ const unitIds = [];
275
+ params.forEach(({ parent, children }) => {
276
+ unitIds.push(parent.unitId);
277
+ children.forEach((child) => {
278
+ unitIds.push(child.unitId);
279
+ });
280
+ });
281
+ const { unitId, subUnitId, undo, redo, objects } = docDrawingService.getUngroupDrawingOp(params);
282
+ return false;
283
+ }
284
+ };
285
+
286
+ //#endregion
287
+ //#region \0@oxc-project+runtime@0.124.0/helpers/typeof.js
288
+ function _typeof(o) {
289
+ "@babel/helpers - typeof";
290
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
291
+ return typeof o;
292
+ } : function(o) {
293
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
294
+ }, _typeof(o);
295
+ }
296
+
297
+ //#endregion
298
+ //#region \0@oxc-project+runtime@0.124.0/helpers/toPrimitive.js
299
+ function toPrimitive(t, r) {
300
+ if ("object" != _typeof(t) || !t) return t;
301
+ var e = t[Symbol.toPrimitive];
302
+ if (void 0 !== e) {
303
+ var i = e.call(t, r || "default");
304
+ if ("object" != _typeof(i)) return i;
305
+ throw new TypeError("@@toPrimitive must return a primitive value.");
306
+ }
307
+ return ("string" === r ? String : Number)(t);
308
+ }
309
+
310
+ //#endregion
311
+ //#region \0@oxc-project+runtime@0.124.0/helpers/toPropertyKey.js
312
+ function toPropertyKey(t) {
313
+ var i = toPrimitive(t, "string");
314
+ return "symbol" == _typeof(i) ? i : i + "";
315
+ }
316
+
317
+ //#endregion
318
+ //#region \0@oxc-project+runtime@0.124.0/helpers/defineProperty.js
319
+ function _defineProperty(e, r, t) {
320
+ return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
321
+ value: t,
322
+ enumerable: !0,
323
+ configurable: !0,
324
+ writable: !0
325
+ }) : e[r] = t, e;
326
+ }
327
+
328
+ //#endregion
329
+ //#region src/services/doc-refresh-drawings.service.ts
330
+ var DocRefreshDrawingsService = class {
331
+ constructor() {
332
+ _defineProperty(this, "_refreshDrawings$", new rxjs.BehaviorSubject(null));
333
+ _defineProperty(this, "refreshDrawings$", this._refreshDrawings$.asObservable());
334
+ }
335
+ refreshDrawings(skeleton) {
336
+ this._refreshDrawings$.next(skeleton);
337
+ }
338
+ };
339
+
340
+ //#endregion
341
+ //#region \0@oxc-project+runtime@0.124.0/helpers/decorateParam.js
342
+ function __decorateParam(paramIndex, decorator) {
343
+ return function(target, key) {
344
+ decorator(target, key, paramIndex);
345
+ };
346
+ }
347
+
348
+ //#endregion
349
+ //#region \0@oxc-project+runtime@0.124.0/helpers/decorate.js
350
+ function __decorate(decorators, target, key, desc) {
351
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
352
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
353
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
354
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
355
+ }
356
+
357
+ //#endregion
358
+ //#region src/controllers/render-controllers/doc-drawing-update.render-controller.ts
359
+ let DocDrawingUpdateRenderController = class DocDrawingUpdateRenderController extends _univerjs_core.Disposable {
360
+ constructor(_context, _commandService, _docSelectionManagerService, _renderManagerSrv, _imageIoService, _docDrawingService, _drawingManagerService, _contextService, _messageService, _localeService, _docSelectionRenderService, _docRefreshDrawingsService, _fileOpenerService) {
361
+ super();
362
+ this._context = _context;
363
+ this._commandService = _commandService;
364
+ this._docSelectionManagerService = _docSelectionManagerService;
365
+ this._renderManagerSrv = _renderManagerSrv;
366
+ this._imageIoService = _imageIoService;
367
+ this._docDrawingService = _docDrawingService;
368
+ this._drawingManagerService = _drawingManagerService;
369
+ this._contextService = _contextService;
370
+ this._messageService = _messageService;
371
+ this._localeService = _localeService;
372
+ this._docSelectionRenderService = _docSelectionRenderService;
373
+ this._docRefreshDrawingsService = _docRefreshDrawingsService;
374
+ this._fileOpenerService = _fileOpenerService;
375
+ this._updateOrderListener();
376
+ this._groupDrawingListener();
377
+ this._focusDrawingListener();
378
+ this._transformDrawingListener();
379
+ this._editAreaChangeListener();
380
+ }
381
+ dispose() {
382
+ super.dispose();
383
+ delete this._context;
384
+ }
385
+ async insertDocImage() {
386
+ const files = await this._fileOpenerService.openFile({
387
+ multiple: true,
388
+ accept: _univerjs_drawing.DRAWING_IMAGE_ALLOW_IMAGE_LIST.map((image) => `.${image.replace("image/", "")}`).join(",")
389
+ });
390
+ const fileLength = files.length;
391
+ if (fileLength > _univerjs_drawing.DRAWING_IMAGE_COUNT_LIMIT) {
392
+ this._messageService.show({
393
+ type: _univerjs_design.MessageType.Error,
394
+ content: this._localeService.t("update-status.exceedMaxCount", String(_univerjs_drawing.DRAWING_IMAGE_COUNT_LIMIT))
395
+ });
396
+ return false;
397
+ } else if (fileLength === 0) return false;
398
+ await this._insertFloatImages(files);
399
+ return true;
400
+ }
401
+ async _insertFloatImages(files) {
402
+ let imageParams = [];
403
+ try {
404
+ imageParams = await Promise.all(files.map((file) => this._imageIoService.saveImage(file)));
405
+ } catch (error) {
406
+ const type = error.message;
407
+ let content = "";
408
+ switch (type) {
409
+ case _univerjs_drawing.ImageUploadStatusType.ERROR_EXCEED_SIZE:
410
+ content = this._localeService.t("update-status.exceedMaxSize", String(_univerjs_drawing.DRAWING_IMAGE_ALLOW_SIZE / (1024 * 1024)));
411
+ break;
412
+ case _univerjs_drawing.ImageUploadStatusType.ERROR_IMAGE_TYPE:
413
+ content = this._localeService.t("update-status.invalidImageType");
414
+ break;
415
+ case _univerjs_drawing.ImageUploadStatusType.ERROR_IMAGE:
416
+ content = this._localeService.t("update-status.invalidImage");
417
+ break;
418
+ default: break;
419
+ }
420
+ this._messageService.show({
421
+ type: _univerjs_design.MessageType.Error,
422
+ content
423
+ });
424
+ }
425
+ if (imageParams.length === 0) return;
426
+ const { unitId } = this._context;
427
+ const docDrawingParams = [];
428
+ for (const imageParam of imageParams) {
429
+ if (imageParam == null) continue;
430
+ const { imageId, imageSourceType, source, base64Cache } = imageParam;
431
+ const { width, height, image } = await (0, _univerjs_drawing.getImageSize)(base64Cache || "");
432
+ this._imageIoService.addImageSourceCache(imageId, imageSourceType, image);
433
+ let scale = 1;
434
+ if (width > _univerjs_drawing.DRAWING_IMAGE_WIDTH_LIMIT || height > _univerjs_drawing.DRAWING_IMAGE_HEIGHT_LIMIT) {
435
+ const scaleWidth = _univerjs_drawing.DRAWING_IMAGE_WIDTH_LIMIT / width;
436
+ const scaleHeight = _univerjs_drawing.DRAWING_IMAGE_HEIGHT_LIMIT / height;
437
+ scale = Math.min(scaleWidth, scaleHeight);
438
+ }
439
+ const docTransform = this._getImagePosition(width * scale, height * scale);
440
+ if (docTransform == null) return;
441
+ const docDrawingParam = {
442
+ unitId,
443
+ subUnitId: unitId,
444
+ drawingId: imageId,
445
+ drawingType: _univerjs_core.DrawingTypeEnum.DRAWING_IMAGE,
446
+ imageSourceType,
447
+ source,
448
+ transform: (0, _univerjs_docs_ui.docDrawingPositionToTransform)(docTransform),
449
+ docTransform,
450
+ behindDoc: _univerjs_core.BooleanNumber.FALSE,
451
+ title: "",
452
+ description: "",
453
+ layoutType: _univerjs_core.PositionedObjectLayoutType.INLINE,
454
+ wrapText: _univerjs_core.WrapTextType.BOTH_SIDES,
455
+ distB: 0,
456
+ distL: 0,
457
+ distR: 0,
458
+ distT: 0
459
+ };
460
+ if (this._isInsertInHeaderFooter()) {
461
+ docDrawingParam.isMultiTransform = _univerjs_core.BooleanNumber.TRUE;
462
+ docDrawingParam.transforms = docDrawingParam.transform ? [docDrawingParam.transform] : null;
463
+ }
464
+ docDrawingParams.push(docDrawingParam);
465
+ }
466
+ this._commandService.executeCommand(InsertDocDrawingCommand.id, {
467
+ unitId,
468
+ drawings: docDrawingParams
469
+ });
470
+ }
471
+ _isInsertInHeaderFooter() {
472
+ var _this$_renderManagerS;
473
+ const { unitId } = this._context;
474
+ const viewModel = (_this$_renderManagerS = this._renderManagerSrv.getRenderById(unitId)) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.with(_univerjs_docs.DocSkeletonManagerService).getViewModel();
475
+ const editArea = viewModel === null || viewModel === void 0 ? void 0 : viewModel.getEditArea();
476
+ return editArea === _univerjs_engine_render.DocumentEditArea.HEADER || editArea === _univerjs_engine_render.DocumentEditArea.FOOTER;
477
+ }
478
+ _getImagePosition(imageWidth, imageHeight) {
479
+ const activeTextRange = this._docSelectionRenderService.getActiveTextRange();
480
+ const position = (activeTextRange === null || activeTextRange === void 0 ? void 0 : activeTextRange.getAbsolutePosition()) || {
481
+ left: 0,
482
+ top: 0
483
+ };
484
+ return {
485
+ size: {
486
+ width: imageWidth,
487
+ height: imageHeight
488
+ },
489
+ positionH: {
490
+ relativeFrom: _univerjs_core.ObjectRelativeFromH.PAGE,
491
+ posOffset: position.left
492
+ },
493
+ positionV: {
494
+ relativeFrom: _univerjs_core.ObjectRelativeFromV.PARAGRAPH,
495
+ posOffset: 0
496
+ },
497
+ angle: 0
498
+ };
499
+ }
500
+ _updateOrderListener() {
501
+ this.disposeWithMe(this._drawingManagerService.featurePluginOrderUpdate$.subscribe((params) => {
502
+ const { unitId, subUnitId, drawingIds, arrangeType } = params;
503
+ this._commandService.executeCommand(SetDocDrawingArrangeCommand.id, {
504
+ unitId,
505
+ subUnitId,
506
+ drawingIds,
507
+ arrangeType
508
+ });
509
+ }));
510
+ }
511
+ _groupDrawingListener() {
512
+ this.disposeWithMe(this._drawingManagerService.featurePluginGroupUpdate$.subscribe((params) => {
513
+ this._commandService.executeCommand(GroupDocDrawingCommand.id, params);
514
+ }));
515
+ this.disposeWithMe(this._drawingManagerService.featurePluginUngroupUpdate$.subscribe((params) => {
516
+ this._commandService.executeCommand(UngroupDocDrawingCommand.id, params);
517
+ }));
518
+ }
519
+ _getCurrentSceneAndTransformer() {
520
+ const { scene, mainComponent } = this._context;
521
+ if (scene == null || mainComponent == null) return;
522
+ const transformer = scene.getTransformerByCreate();
523
+ const { docsLeft, docsTop } = mainComponent.getOffsetConfig();
524
+ return {
525
+ scene,
526
+ transformer,
527
+ docsLeft,
528
+ docsTop
529
+ };
530
+ }
531
+ _transformDrawingListener() {
532
+ const res = this._getCurrentSceneAndTransformer();
533
+ if (res && res.transformer) this.disposeWithMe(res.transformer.changeEnd$.pipe((0, rxjs.debounceTime)(30)).subscribe((params) => {
534
+ this._docSelectionManagerService.refreshSelection();
535
+ }));
536
+ else throw new Error("transformer is not init");
537
+ }
538
+ _focusDrawingListener() {
539
+ this.disposeWithMe(this._drawingManagerService.focus$.subscribe((params) => {
540
+ var _this$_getCurrentScen;
541
+ const { transformer, docsLeft, docsTop } = (_this$_getCurrentScen = this._getCurrentSceneAndTransformer()) !== null && _this$_getCurrentScen !== void 0 ? _this$_getCurrentScen : {};
542
+ if (params == null || params.length === 0) {
543
+ this._contextService.setContextValue(_univerjs_core.FOCUSING_COMMON_DRAWINGS, false);
544
+ this._docDrawingService.focusDrawing([]);
545
+ if (transformer) transformer.resetProps({
546
+ zeroTop: 0,
547
+ zeroLeft: 0
548
+ });
549
+ } else {
550
+ this._contextService.setContextValue(_univerjs_core.FOCUSING_COMMON_DRAWINGS, true);
551
+ this._docDrawingService.focusDrawing(params);
552
+ this._setDrawingSelections(params);
553
+ const prevSegmentId = this._docSelectionRenderService.getSegment();
554
+ const segmentId = this._findSegmentIdByDrawingId(params[0].drawingId);
555
+ if (prevSegmentId !== segmentId) this._docSelectionRenderService.setSegment(segmentId);
556
+ if (transformer) transformer.resetProps({
557
+ zeroTop: docsTop,
558
+ zeroLeft: docsLeft
559
+ });
560
+ }
561
+ }));
562
+ }
563
+ _findSegmentIdByDrawingId(drawingId) {
564
+ var _body$customBlocks;
565
+ const { unit: DocDataModel } = this._context;
566
+ const { body, headers = {}, footers = {} } = DocDataModel.getSnapshot();
567
+ if (((_body$customBlocks = body === null || body === void 0 ? void 0 : body.customBlocks) !== null && _body$customBlocks !== void 0 ? _body$customBlocks : []).some((b) => b.blockId === drawingId)) return "";
568
+ for (const headerId of Object.keys(headers)) {
569
+ var _headers$headerId$bod;
570
+ if ((_headers$headerId$bod = headers[headerId].body.customBlocks) === null || _headers$headerId$bod === void 0 ? void 0 : _headers$headerId$bod.some((b) => b.blockId === drawingId)) return headerId;
571
+ }
572
+ for (const footerId of Object.keys(footers)) {
573
+ var _footers$footerId$bod;
574
+ if ((_footers$footerId$bod = footers[footerId].body.customBlocks) === null || _footers$footerId$bod === void 0 ? void 0 : _footers$footerId$bod.some((b) => b.blockId === drawingId)) return footerId;
575
+ }
576
+ return "";
577
+ }
578
+ _updateDrawingsEditStatus() {
579
+ var _this$_renderManagerS2;
580
+ if (!this._context) return;
581
+ const { unit: docDataModel, scene, unitId } = this._context;
582
+ const viewModel = (_this$_renderManagerS2 = this._renderManagerSrv.getRenderById(unitId)) === null || _this$_renderManagerS2 === void 0 ? void 0 : _this$_renderManagerS2.with(_univerjs_docs.DocSkeletonManagerService).getViewModel();
583
+ if (viewModel == null || docDataModel == null) return;
584
+ const { drawings = {} } = docDataModel.getSnapshot();
585
+ const isEditBody = viewModel.getEditArea() === _univerjs_engine_render.DocumentEditArea.BODY;
586
+ for (const key of Object.keys(drawings)) {
587
+ const drawing = drawings[key];
588
+ const objectKey = (0, _univerjs_drawing.getDrawingShapeKeyByDrawingSearch)({
589
+ unitId,
590
+ drawingId: drawing.drawingId,
591
+ subUnitId: unitId
592
+ });
593
+ const drawingShapes = scene.fuzzyMathObjects(objectKey, true);
594
+ if (drawingShapes.length) for (const shape of drawingShapes) {
595
+ scene.detachTransformerFrom(shape);
596
+ try {
597
+ shape.setOpacity(.5);
598
+ } catch (e) {}
599
+ if (isEditBody && drawing.isMultiTransform !== _univerjs_core.BooleanNumber.TRUE || !isEditBody && drawing.isMultiTransform === _univerjs_core.BooleanNumber.TRUE) {
600
+ if (drawing.allowTransform !== false) scene.attachTransformerTo(shape);
601
+ try {
602
+ shape.setOpacity(1);
603
+ } catch (e) {}
604
+ }
605
+ }
606
+ }
607
+ }
608
+ _editAreaChangeListener() {
609
+ var _this$_renderManagerS3;
610
+ const { unitId } = this._context;
611
+ const viewModel = (_this$_renderManagerS3 = this._renderManagerSrv.getRenderById(unitId)) === null || _this$_renderManagerS3 === void 0 ? void 0 : _this$_renderManagerS3.with(_univerjs_docs.DocSkeletonManagerService).getViewModel();
612
+ if (viewModel == null) return;
613
+ this._updateDrawingsEditStatus();
614
+ this.disposeWithMe(viewModel.editAreaChange$.subscribe(() => {
615
+ this._updateDrawingsEditStatus();
616
+ }));
617
+ this.disposeWithMe(this._docRefreshDrawingsService.refreshDrawings$.subscribe((skeleton) => {
618
+ if (skeleton == null) return;
619
+ queueMicrotask(() => {
620
+ this._updateDrawingsEditStatus();
621
+ });
622
+ }));
623
+ this.disposeWithMe(this._commandService.onCommandExecuted(async (command) => {
624
+ if (command.id === _univerjs_docs.RichTextEditingMutation.id) queueMicrotask(() => {
625
+ this._updateDrawingsEditStatus();
626
+ });
627
+ }));
628
+ }
629
+ _setDrawingSelections(params) {
630
+ var _unit$getSnapshot$bod, _unit$getSnapshot$bod2;
631
+ const { unit } = this._context;
632
+ const customBlocks = (_unit$getSnapshot$bod = (_unit$getSnapshot$bod2 = unit.getSnapshot().body) === null || _unit$getSnapshot$bod2 === void 0 ? void 0 : _unit$getSnapshot$bod2.customBlocks) !== null && _unit$getSnapshot$bod !== void 0 ? _unit$getSnapshot$bod : [];
633
+ const ranges = params.map((item) => {
634
+ const id = item.drawingId;
635
+ const block = customBlocks.find((b) => b.blockId === id);
636
+ if (block) return block.startIndex;
637
+ return null;
638
+ }).filter((e) => e !== null).map((offset) => ({
639
+ startOffset: offset,
640
+ endOffset: offset + 1
641
+ }));
642
+ this._docSelectionManagerService.replaceDocRanges(ranges);
643
+ }
644
+ };
645
+ DocDrawingUpdateRenderController = __decorate([
646
+ __decorateParam(1, _univerjs_core.ICommandService),
647
+ __decorateParam(2, (0, _univerjs_core.Inject)(_univerjs_docs.DocSelectionManagerService)),
648
+ __decorateParam(3, _univerjs_engine_render.IRenderManagerService),
649
+ __decorateParam(4, _univerjs_drawing.IImageIoService),
650
+ __decorateParam(5, _univerjs_docs_drawing.IDocDrawingService),
651
+ __decorateParam(6, _univerjs_drawing.IDrawingManagerService),
652
+ __decorateParam(7, _univerjs_core.IContextService),
653
+ __decorateParam(8, _univerjs_ui.IMessageService),
654
+ __decorateParam(9, (0, _univerjs_core.Inject)(_univerjs_core.LocaleService)),
655
+ __decorateParam(10, (0, _univerjs_core.Inject)(_univerjs_docs_ui.DocSelectionRenderService)),
656
+ __decorateParam(11, (0, _univerjs_core.Inject)(DocRefreshDrawingsService)),
657
+ __decorateParam(12, _univerjs_ui.ILocalFileService)
658
+ ], DocDrawingUpdateRenderController);
659
+
660
+ //#endregion
661
+ //#region src/commands/commands/insert-image.command.ts
662
+ const InsertDocImageCommand = {
663
+ id: "doc.command.insert-float-image",
664
+ type: _univerjs_core.CommandType.COMMAND,
665
+ handler: (accessor) => {
666
+ var _getCurrentTypeOfRend, _getCurrentTypeOfRend2;
667
+ const univerInstanceService = accessor.get(_univerjs_core.IUniverInstanceService);
668
+ const renderManagerService = accessor.get(_univerjs_engine_render.IRenderManagerService);
669
+ return (_getCurrentTypeOfRend = (_getCurrentTypeOfRend2 = (0, _univerjs_engine_render.getCurrentTypeOfRenderer)(_univerjs_core.UniverInstanceType.UNIVER_DOC, univerInstanceService, renderManagerService)) === null || _getCurrentTypeOfRend2 === void 0 ? void 0 : _getCurrentTypeOfRend2.with(DocDrawingUpdateRenderController).insertDocImage()) !== null && _getCurrentTypeOfRend !== void 0 ? _getCurrentTypeOfRend : false;
670
+ }
671
+ };
672
+
673
+ //#endregion
674
+ //#region src/commands/commands/update-doc-drawing.command.ts
675
+ let TextWrappingStyle = /* @__PURE__ */ function(TextWrappingStyle) {
676
+ TextWrappingStyle["INLINE"] = "inline";
677
+ TextWrappingStyle["BEHIND_TEXT"] = "behindText";
678
+ TextWrappingStyle["IN_FRONT_OF_TEXT"] = "inFrontOfText";
679
+ TextWrappingStyle["WRAP_SQUARE"] = "wrapSquare";
680
+ TextWrappingStyle["WRAP_TOP_AND_BOTTOM"] = "wrapTopAndBottom";
681
+ return TextWrappingStyle;
682
+ }({});
683
+ const WRAPPING_STYLE_TO_LAYOUT_TYPE = {
684
+ [TextWrappingStyle.INLINE]: _univerjs_core.PositionedObjectLayoutType.INLINE,
685
+ [TextWrappingStyle.WRAP_SQUARE]: _univerjs_core.PositionedObjectLayoutType.WRAP_SQUARE,
686
+ [TextWrappingStyle.WRAP_TOP_AND_BOTTOM]: _univerjs_core.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM,
687
+ [TextWrappingStyle.IN_FRONT_OF_TEXT]: _univerjs_core.PositionedObjectLayoutType.WRAP_NONE,
688
+ [TextWrappingStyle.BEHIND_TEXT]: _univerjs_core.PositionedObjectLayoutType.WRAP_NONE
689
+ };
690
+ function getDeleteAndInsertCustomBlockActions(segmentId, oldSegmentId, segmentPage, offset, drawingId, documentDataModel, docSelectionRenderManager) {
691
+ var _oldBody$customBlocks;
692
+ const textX = new _univerjs_core.TextX();
693
+ const jsonX = _univerjs_core.JSONX.getInstance();
694
+ const rawActions = [];
695
+ const oldBody = documentDataModel.getSelfOrHeaderFooterModel(oldSegmentId).getBody();
696
+ const body = documentDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();
697
+ if (oldBody == null || body == null) return;
698
+ const oldOffset = (_oldBody$customBlocks = oldBody.customBlocks) === null || _oldBody$customBlocks === void 0 || (_oldBody$customBlocks = _oldBody$customBlocks.find((block) => block.blockId === drawingId)) === null || _oldBody$customBlocks === void 0 ? void 0 : _oldBody$customBlocks.startIndex;
699
+ if (oldOffset == null) return;
700
+ offset = Math.min(body.dataStream.length - 2, offset);
701
+ if (segmentId === oldSegmentId) {
702
+ if (offset < oldOffset) {
703
+ if (offset > 0) textX.push({
704
+ t: _univerjs_core.TextXActionType.RETAIN,
705
+ len: offset
706
+ });
707
+ textX.push({
708
+ t: _univerjs_core.TextXActionType.INSERT,
709
+ body: {
710
+ dataStream: "\b",
711
+ customBlocks: [{
712
+ startIndex: 0,
713
+ blockId: drawingId
714
+ }]
715
+ },
716
+ len: 1
717
+ });
718
+ textX.push({
719
+ t: _univerjs_core.TextXActionType.RETAIN,
720
+ len: oldOffset - offset
721
+ });
722
+ textX.push({
723
+ t: _univerjs_core.TextXActionType.DELETE,
724
+ len: 1
725
+ });
726
+ } else {
727
+ if (oldOffset > 0) textX.push({
728
+ t: _univerjs_core.TextXActionType.RETAIN,
729
+ len: oldOffset
730
+ });
731
+ textX.push({
732
+ t: _univerjs_core.TextXActionType.DELETE,
733
+ len: 1
734
+ });
735
+ if (offset - oldOffset - 1 > 0) textX.push({
736
+ t: _univerjs_core.TextXActionType.RETAIN,
737
+ len: offset - oldOffset - 1
738
+ });
739
+ textX.push({
740
+ t: _univerjs_core.TextXActionType.INSERT,
741
+ body: {
742
+ dataStream: "\b",
743
+ customBlocks: [{
744
+ startIndex: 0,
745
+ blockId: drawingId
746
+ }]
747
+ },
748
+ len: 1
749
+ });
750
+ }
751
+ if (offset !== oldOffset) {
752
+ const path = (0, _univerjs_docs_ui.getRichTextEditPath)(documentDataModel, oldSegmentId);
753
+ const action = jsonX.editOp(textX.serialize(), path);
754
+ rawActions.push(action);
755
+ }
756
+ } else {
757
+ if (oldOffset > 0) textX.push({
758
+ t: _univerjs_core.TextXActionType.RETAIN,
759
+ len: oldOffset
760
+ });
761
+ textX.push({
762
+ t: _univerjs_core.TextXActionType.DELETE,
763
+ len: 1
764
+ });
765
+ let path = (0, _univerjs_docs_ui.getRichTextEditPath)(documentDataModel, oldSegmentId);
766
+ let action = jsonX.editOp(textX.serialize(), path);
767
+ rawActions.push(action);
768
+ textX.empty();
769
+ if (offset > 0) textX.push({
770
+ t: _univerjs_core.TextXActionType.RETAIN,
771
+ len: offset
772
+ });
773
+ textX.push({
774
+ t: _univerjs_core.TextXActionType.INSERT,
775
+ body: {
776
+ dataStream: "\b",
777
+ customBlocks: [{
778
+ startIndex: 0,
779
+ blockId: drawingId
780
+ }]
781
+ },
782
+ len: 1
783
+ });
784
+ path = (0, _univerjs_docs_ui.getRichTextEditPath)(documentDataModel, segmentId);
785
+ action = jsonX.editOp(textX.serialize(), path);
786
+ rawActions.push(action);
787
+ docSelectionRenderManager.setSegment(segmentId);
788
+ docSelectionRenderManager.setSegmentPage(segmentPage);
789
+ }
790
+ return rawActions;
791
+ }
792
+ /**
793
+ * The command to update drawing wrapping style.
794
+ */
795
+ const UpdateDocDrawingWrappingStyleCommand = {
796
+ id: "doc.command.update-doc-drawing-wrapping-style",
797
+ type: _univerjs_core.CommandType.COMMAND,
798
+ handler: (accessor, params) => {
799
+ if (params == null) return false;
800
+ const { drawings, wrappingStyle, unitId } = params;
801
+ const commandService = accessor.get(_univerjs_core.ICommandService);
802
+ const univerInstanceService = accessor.get(_univerjs_core.IUniverInstanceService);
803
+ const renderObject = accessor.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId);
804
+ const skeletonData = renderObject === null || renderObject === void 0 ? void 0 : renderObject.with(_univerjs_docs.DocSkeletonManagerService).getSkeleton().getSkeletonData();
805
+ const viewModel = renderObject === null || renderObject === void 0 ? void 0 : renderObject.with(_univerjs_docs.DocSkeletonManagerService).getViewModel();
806
+ const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
807
+ const documentDataModel = univerInstanceService.getCurrentUniverDocInstance();
808
+ if (documentDataModel == null || skeletonData == null || scene == null || viewModel == null) return false;
809
+ const editArea = viewModel.getEditArea();
810
+ const transformer = scene.getTransformerByCreate();
811
+ const { pages, skeHeaders, skeFooters } = skeletonData;
812
+ const jsonX = _univerjs_core.JSONX.getInstance();
813
+ const rawActions = [];
814
+ const { drawings: oldDrawings = {} } = documentDataModel.getSnapshot();
815
+ for (const drawing of drawings) {
816
+ const { drawingId } = drawing;
817
+ const oldLayoutType = oldDrawings[drawingId].layoutType;
818
+ const newLayoutType = WRAPPING_STYLE_TO_LAYOUT_TYPE[wrappingStyle];
819
+ if (oldLayoutType !== newLayoutType) {
820
+ const updateLayoutTypeAction = jsonX.replaceOp([
821
+ "drawings",
822
+ drawingId,
823
+ "layoutType"
824
+ ], oldLayoutType, newLayoutType);
825
+ rawActions.push(updateLayoutTypeAction);
826
+ }
827
+ if (wrappingStyle === TextWrappingStyle.BEHIND_TEXT || wrappingStyle === TextWrappingStyle.IN_FRONT_OF_TEXT) {
828
+ const oldBehindDoc = oldDrawings[drawingId].behindDoc;
829
+ const newBehindDoc = wrappingStyle === TextWrappingStyle.BEHIND_TEXT ? _univerjs_core.BooleanNumber.TRUE : _univerjs_core.BooleanNumber.FALSE;
830
+ if (oldBehindDoc !== newBehindDoc) {
831
+ const updateBehindDocAction = jsonX.replaceOp([
832
+ "drawings",
833
+ drawingId,
834
+ "behindDoc"
835
+ ], oldBehindDoc, newBehindDoc);
836
+ rawActions.push(updateBehindDocAction);
837
+ }
838
+ }
839
+ if (wrappingStyle === TextWrappingStyle.INLINE) continue;
840
+ let skeDrawing = null;
841
+ let pageMarginTop = 0;
842
+ let pageMarginLeft = 0;
843
+ for (const page of pages) {
844
+ const { headerId, footerId, marginTop, marginLeft, marginBottom, pageWidth, pageHeight } = page;
845
+ switch (editArea) {
846
+ case _univerjs_engine_render.DocumentEditArea.HEADER: {
847
+ var _skeHeaders$get;
848
+ const headerSke = (_skeHeaders$get = skeHeaders.get(headerId)) === null || _skeHeaders$get === void 0 ? void 0 : _skeHeaders$get.get(pageWidth);
849
+ if (headerSke != null && headerSke.skeDrawings.has(drawingId)) {
850
+ skeDrawing = headerSke.skeDrawings.get(drawingId);
851
+ pageMarginTop = headerSke.marginTop;
852
+ pageMarginLeft = marginLeft;
853
+ }
854
+ break;
855
+ }
856
+ case _univerjs_engine_render.DocumentEditArea.FOOTER: {
857
+ var _skeFooters$get;
858
+ const footerSke = (_skeFooters$get = skeFooters.get(footerId)) === null || _skeFooters$get === void 0 ? void 0 : _skeFooters$get.get(pageWidth);
859
+ if (footerSke != null && footerSke.skeDrawings.has(drawingId)) {
860
+ skeDrawing = footerSke.skeDrawings.get(drawingId);
861
+ pageMarginTop = pageHeight - marginBottom + footerSke.marginTop;
862
+ pageMarginLeft = marginLeft;
863
+ }
864
+ break;
865
+ }
866
+ case _univerjs_engine_render.DocumentEditArea.BODY:
867
+ if (page.skeDrawings.has(drawingId)) {
868
+ skeDrawing = page.skeDrawings.get(drawingId);
869
+ pageMarginTop = marginTop;
870
+ pageMarginLeft = marginLeft;
871
+ }
872
+ break;
873
+ }
874
+ if (skeDrawing != null) break;
875
+ }
876
+ if (skeDrawing != null) {
877
+ const { aTop, aLeft } = skeDrawing;
878
+ const oldPositionH = oldDrawings[drawingId].docTransform.positionH;
879
+ let posOffsetH = aLeft;
880
+ if (oldPositionH.relativeFrom === _univerjs_core.ObjectRelativeFromH.MARGIN) posOffsetH -= pageMarginLeft;
881
+ else if (oldPositionH.relativeFrom === _univerjs_core.ObjectRelativeFromH.COLUMN) posOffsetH -= skeDrawing.columnLeft;
882
+ const newPositionH = {
883
+ relativeFrom: oldPositionH.relativeFrom,
884
+ posOffset: posOffsetH
885
+ };
886
+ if (oldPositionH.posOffset !== newPositionH.posOffset) {
887
+ const action = jsonX.replaceOp([
888
+ "drawings",
889
+ drawingId,
890
+ "docTransform",
891
+ "positionH"
892
+ ], oldPositionH, newPositionH);
893
+ rawActions.push(action);
894
+ }
895
+ const oldPositionV = oldDrawings[drawingId].docTransform.positionV;
896
+ let posOffsetV = aTop;
897
+ if (oldPositionV.relativeFrom === _univerjs_core.ObjectRelativeFromV.PAGE) posOffsetV += pageMarginTop;
898
+ else if (oldPositionV.relativeFrom === _univerjs_core.ObjectRelativeFromV.LINE) posOffsetV -= skeDrawing.lineTop;
899
+ else if (oldPositionV.relativeFrom === _univerjs_core.ObjectRelativeFromV.PARAGRAPH) posOffsetV -= skeDrawing.blockAnchorTop;
900
+ const newPositionV = {
901
+ relativeFrom: oldPositionV.relativeFrom,
902
+ posOffset: posOffsetV
903
+ };
904
+ if (oldPositionV.posOffset !== newPositionV.posOffset) {
905
+ const action = jsonX.replaceOp([
906
+ "drawings",
907
+ drawingId,
908
+ "docTransform",
909
+ "positionV"
910
+ ], oldPositionV, newPositionV);
911
+ rawActions.push(action);
912
+ }
913
+ }
914
+ }
915
+ const doMutation = {
916
+ id: _univerjs_docs.RichTextEditingMutation.id,
917
+ params: {
918
+ unitId,
919
+ actions: [],
920
+ textRanges: null
921
+ }
922
+ };
923
+ doMutation.params.actions = rawActions.reduce((acc, cur) => {
924
+ return _univerjs_core.JSONX.compose(acc, cur);
925
+ }, null);
926
+ const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
927
+ transformer.refreshControls();
928
+ return Boolean(result);
929
+ }
930
+ };
931
+ /**
932
+ * The command to update drawing wrap text.
933
+ */
934
+ const UpdateDocDrawingDistanceCommand = {
935
+ id: "doc.command.update-doc-drawing-distance",
936
+ type: _univerjs_core.CommandType.COMMAND,
937
+ handler: (accessor, params) => {
938
+ if (params == null) return false;
939
+ const commandService = accessor.get(_univerjs_core.ICommandService);
940
+ const documentDataModel = accessor.get(_univerjs_core.IUniverInstanceService).getCurrentUniverDocInstance();
941
+ if (documentDataModel == null) return false;
942
+ const { drawings, dist, unitId } = params;
943
+ const jsonX = _univerjs_core.JSONX.getInstance();
944
+ const rawActions = [];
945
+ const { drawings: oldDrawings = {} } = documentDataModel.getSnapshot();
946
+ for (const drawing of drawings) {
947
+ const { drawingId } = drawing;
948
+ for (const [key, value] of Object.entries(dist)) {
949
+ const oldValue = oldDrawings[drawingId][key];
950
+ if (oldValue !== value) {
951
+ const action = jsonX.replaceOp([
952
+ "drawings",
953
+ drawingId,
954
+ key
955
+ ], oldValue, value);
956
+ rawActions.push(action);
957
+ }
958
+ }
959
+ }
960
+ const doMutation = {
961
+ id: _univerjs_docs.RichTextEditingMutation.id,
962
+ params: {
963
+ unitId,
964
+ actions: [],
965
+ textRanges: null
966
+ }
967
+ };
968
+ doMutation.params.actions = rawActions.reduce((acc, cur) => {
969
+ return _univerjs_core.JSONX.compose(acc, cur);
970
+ }, null);
971
+ const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
972
+ return Boolean(result);
973
+ }
974
+ };
975
+ /**
976
+ * The command to update drawing wrap text.
977
+ */
978
+ const UpdateDocDrawingWrapTextCommand = {
979
+ id: "doc.command.update-doc-drawing-wrap-text",
980
+ type: _univerjs_core.CommandType.COMMAND,
981
+ handler: (accessor, params) => {
982
+ if (params == null) return false;
983
+ const commandService = accessor.get(_univerjs_core.ICommandService);
984
+ const documentDataModel = accessor.get(_univerjs_core.IUniverInstanceService).getCurrentUniverDocInstance();
985
+ if (documentDataModel == null) return false;
986
+ const { drawings, wrapText, unitId } = params;
987
+ const jsonX = _univerjs_core.JSONX.getInstance();
988
+ const rawActions = [];
989
+ const { drawings: oldDrawings = {} } = documentDataModel.getSnapshot();
990
+ for (const drawing of drawings) {
991
+ const { drawingId } = drawing;
992
+ const oldWrapText = oldDrawings[drawingId].wrapText;
993
+ if (oldWrapText !== wrapText) {
994
+ const action = jsonX.replaceOp([
995
+ "drawings",
996
+ drawingId,
997
+ "wrapText"
998
+ ], oldWrapText, wrapText);
999
+ rawActions.push(action);
1000
+ }
1001
+ }
1002
+ const doMutation = {
1003
+ id: _univerjs_docs.RichTextEditingMutation.id,
1004
+ params: {
1005
+ unitId,
1006
+ actions: [],
1007
+ textRanges: null
1008
+ }
1009
+ };
1010
+ doMutation.params.actions = rawActions.reduce((acc, cur) => {
1011
+ return _univerjs_core.JSONX.compose(acc, cur);
1012
+ }, null);
1013
+ const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
1014
+ return Boolean(result);
1015
+ }
1016
+ };
1017
+ /**
1018
+ * The command to update drawing position.
1019
+ */
1020
+ const UpdateDrawingDocTransformCommand = {
1021
+ id: "doc.command.update-drawing-doc-transform",
1022
+ type: _univerjs_core.CommandType.COMMAND,
1023
+ handler: (accessor, params) => {
1024
+ if (params == null) return false;
1025
+ const commandService = accessor.get(_univerjs_core.ICommandService);
1026
+ const univerInstanceService = accessor.get(_univerjs_core.IUniverInstanceService);
1027
+ const renderObject = accessor.get(_univerjs_engine_render.IRenderManagerService).getRenderById(params.unitId);
1028
+ const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
1029
+ if (scene == null) return false;
1030
+ const transformer = scene.getTransformerByCreate();
1031
+ const documentDataModel = univerInstanceService.getCurrentUniverDocInstance();
1032
+ if (documentDataModel == null) return false;
1033
+ const { drawings, unitId } = params;
1034
+ const jsonX = _univerjs_core.JSONX.getInstance();
1035
+ const rawActions = [];
1036
+ const { drawings: oldDrawings = {} } = documentDataModel.getSnapshot();
1037
+ for (const drawing of drawings) {
1038
+ const { drawingId, key, value } = drawing;
1039
+ const oldValue = oldDrawings[drawingId].docTransform[key];
1040
+ if (!_univerjs_core.Tools.diffValue(oldValue, value)) {
1041
+ const action = jsonX.replaceOp([
1042
+ "drawings",
1043
+ drawingId,
1044
+ "docTransform",
1045
+ key
1046
+ ], oldValue, value);
1047
+ rawActions.push(action);
1048
+ }
1049
+ }
1050
+ const doMutation = {
1051
+ id: _univerjs_docs.RichTextEditingMutation.id,
1052
+ params: {
1053
+ unitId,
1054
+ actions: [],
1055
+ textRanges: null,
1056
+ debounce: true
1057
+ }
1058
+ };
1059
+ doMutation.params.actions = rawActions.reduce((acc, cur) => {
1060
+ return _univerjs_core.JSONX.compose(acc, cur);
1061
+ }, null);
1062
+ const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
1063
+ transformer.refreshControls();
1064
+ return Boolean(result);
1065
+ }
1066
+ };
1067
+ /**
1068
+ * The command to move inline drawing.
1069
+ */
1070
+ const IMoveInlineDrawingCommand = {
1071
+ id: "doc.command.move-inline-drawing",
1072
+ type: _univerjs_core.CommandType.COMMAND,
1073
+ handler: (accessor, params) => {
1074
+ var _renderManagerService, _docSelectionRenderSe;
1075
+ if (params == null) return false;
1076
+ const renderManagerService = accessor.get(_univerjs_engine_render.IRenderManagerService);
1077
+ const docSelectionRenderService = (_renderManagerService = renderManagerService.getRenderById(params.unitId)) === null || _renderManagerService === void 0 ? void 0 : _renderManagerService.with(_univerjs_docs_ui.DocSelectionRenderService);
1078
+ const docRefreshDrawingsService = accessor.get(DocRefreshDrawingsService);
1079
+ const renderObject = renderManagerService.getRenderById(params.unitId);
1080
+ const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
1081
+ const skeleton = renderObject === null || renderObject === void 0 ? void 0 : renderObject.with(_univerjs_docs.DocSkeletonManagerService).getSkeleton();
1082
+ if (scene == null || docSelectionRenderService == null) return false;
1083
+ const transformer = scene.getTransformerByCreate();
1084
+ const commandService = accessor.get(_univerjs_core.ICommandService);
1085
+ const documentDataModel = accessor.get(_univerjs_core.IUniverInstanceService).getCurrentUniverDocInstance();
1086
+ if (documentDataModel == null) return false;
1087
+ const { drawing, unitId, offset, segmentId: newSegmentId, segmentPage, needRefreshDrawings } = params;
1088
+ if (needRefreshDrawings) {
1089
+ docRefreshDrawingsService.refreshDrawings(skeleton);
1090
+ transformer.refreshControls();
1091
+ return true;
1092
+ }
1093
+ const rawActions = [];
1094
+ const { drawingId } = drawing;
1095
+ const actions = getDeleteAndInsertCustomBlockActions(newSegmentId, (_docSelectionRenderSe = docSelectionRenderService.getSegment()) !== null && _docSelectionRenderSe !== void 0 ? _docSelectionRenderSe : "", segmentPage, offset, drawingId, documentDataModel, docSelectionRenderService);
1096
+ if (actions == null || actions.length === 0) {
1097
+ docRefreshDrawingsService.refreshDrawings(skeleton);
1098
+ transformer.refreshControls();
1099
+ return false;
1100
+ }
1101
+ rawActions.push(...actions);
1102
+ const doMutation = {
1103
+ id: _univerjs_docs.RichTextEditingMutation.id,
1104
+ params: {
1105
+ unitId,
1106
+ actions: [],
1107
+ textRanges: null
1108
+ }
1109
+ };
1110
+ doMutation.params.actions = rawActions.reduce((acc, cur) => {
1111
+ return _univerjs_core.JSONX.compose(acc, cur);
1112
+ }, null);
1113
+ const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
1114
+ transformer.refreshControls();
1115
+ return Boolean(result);
1116
+ }
1117
+ };
1118
+ /**
1119
+ * The command to transform non-inline drawing.
1120
+ */
1121
+ const ITransformNonInlineDrawingCommand = {
1122
+ id: "doc.command.transform-non-inline-drawing",
1123
+ type: _univerjs_core.CommandType.COMMAND,
1124
+ handler: (accessor, params) => {
1125
+ var _renderManagerService2, _docSelectionRenderSe2;
1126
+ if (params == null) return false;
1127
+ const renderManagerService = accessor.get(_univerjs_engine_render.IRenderManagerService);
1128
+ const docSelectionRenderService = (_renderManagerService2 = renderManagerService.getRenderById(params.unitId)) === null || _renderManagerService2 === void 0 ? void 0 : _renderManagerService2.with(_univerjs_docs_ui.DocSelectionRenderService);
1129
+ const renderObject = renderManagerService.getRenderById(params.unitId);
1130
+ const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
1131
+ if (scene == null || docSelectionRenderService == null) return false;
1132
+ const transformer = scene.getTransformerByCreate();
1133
+ const commandService = accessor.get(_univerjs_core.ICommandService);
1134
+ const documentDataModel = accessor.get(_univerjs_core.IUniverInstanceService).getCurrentUniverDocInstance();
1135
+ if (documentDataModel == null) return false;
1136
+ const { drawing, unitId, offset, docTransform, segmentId: newSegmentId, segmentPage } = params;
1137
+ const rawActions = [];
1138
+ const { drawingId } = drawing;
1139
+ const actions = getDeleteAndInsertCustomBlockActions(newSegmentId, (_docSelectionRenderSe2 = docSelectionRenderService.getSegment()) !== null && _docSelectionRenderSe2 !== void 0 ? _docSelectionRenderSe2 : "", segmentPage, offset, drawingId, documentDataModel, docSelectionRenderService);
1140
+ if (actions == null) return false;
1141
+ if (actions.length > 0) rawActions.push(...actions);
1142
+ const jsonX = _univerjs_core.JSONX.getInstance();
1143
+ const { drawings: oldDrawings = {} } = documentDataModel.getSnapshot();
1144
+ const { positionH: oldPositionH, positionV: oldPositionV, size: oldSize, angle: oldAngle } = oldDrawings[drawingId].docTransform;
1145
+ if (!_univerjs_core.Tools.diffValue(oldPositionH, docTransform.positionH)) {
1146
+ const updateAction = jsonX.replaceOp([
1147
+ "drawings",
1148
+ drawingId,
1149
+ "docTransform",
1150
+ "positionH"
1151
+ ], oldPositionH, docTransform.positionH);
1152
+ rawActions.push(updateAction);
1153
+ }
1154
+ if (!_univerjs_core.Tools.diffValue(oldPositionV, docTransform.positionV)) {
1155
+ const updateAction = jsonX.replaceOp([
1156
+ "drawings",
1157
+ drawingId,
1158
+ "docTransform",
1159
+ "positionV"
1160
+ ], oldPositionV, docTransform.positionV);
1161
+ rawActions.push(updateAction);
1162
+ }
1163
+ if (!_univerjs_core.Tools.diffValue(oldSize, docTransform.size)) {
1164
+ const updateAction = jsonX.replaceOp([
1165
+ "drawings",
1166
+ drawingId,
1167
+ "docTransform",
1168
+ "size"
1169
+ ], oldSize, docTransform.size);
1170
+ rawActions.push(updateAction);
1171
+ }
1172
+ if (!_univerjs_core.Tools.diffValue(oldAngle, docTransform.angle)) {
1173
+ const updateAction = jsonX.replaceOp([
1174
+ "drawings",
1175
+ drawingId,
1176
+ "docTransform",
1177
+ "angle"
1178
+ ], oldAngle, docTransform.angle);
1179
+ rawActions.push(updateAction);
1180
+ }
1181
+ const doMutation = {
1182
+ id: _univerjs_docs.RichTextEditingMutation.id,
1183
+ params: {
1184
+ unitId,
1185
+ actions: [],
1186
+ textRanges: null,
1187
+ debounce: true
1188
+ }
1189
+ };
1190
+ doMutation.params.actions = rawActions.reduce((acc, cur) => {
1191
+ return _univerjs_core.JSONX.compose(acc, cur);
1192
+ }, null);
1193
+ const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
1194
+ transformer.refreshControls();
1195
+ return Boolean(result);
1196
+ }
1197
+ };
1198
+
1199
+ //#endregion
1200
+ //#region src/commands/commands/move-drawings.command.ts
1201
+ const MoveDocDrawingsCommand = {
1202
+ id: "doc.command.move-drawing",
1203
+ type: _univerjs_core.CommandType.COMMAND,
1204
+ handler: (accessor, params) => {
1205
+ const commandService = accessor.get(_univerjs_core.ICommandService);
1206
+ const docDrawingService = accessor.get(_univerjs_docs_drawing.IDocDrawingService);
1207
+ const univerInstanceService = accessor.get(_univerjs_core.IUniverInstanceService);
1208
+ const renderManagerService = accessor.get(_univerjs_engine_render.IRenderManagerService);
1209
+ const { direction } = params;
1210
+ const drawings = docDrawingService.getFocusDrawings();
1211
+ if (drawings.length === 0) return false;
1212
+ const unitId = drawings[0].unitId;
1213
+ const renderObject = renderManagerService.getRenderById(unitId);
1214
+ const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
1215
+ if (scene == null) return false;
1216
+ const transformer = scene.getTransformerByCreate();
1217
+ const documentDataModel = univerInstanceService.getUniverDocInstance(unitId);
1218
+ const newDrawings = drawings.map((drawing) => {
1219
+ var _documentDataModel$ge;
1220
+ const { drawingId } = drawing;
1221
+ const drawingData = documentDataModel === null || documentDataModel === void 0 || (_documentDataModel$ge = documentDataModel.getSnapshot().drawings) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge[drawingId];
1222
+ if (drawingData == null || drawingData.layoutType === _univerjs_core.PositionedObjectLayoutType.INLINE) return null;
1223
+ const { positionH, positionV } = drawingData.docTransform;
1224
+ const newPositionH = { ...positionH };
1225
+ const newPositionV = { ...positionV };
1226
+ if (direction === _univerjs_core.Direction.UP) {
1227
+ var _newPositionV$posOffs;
1228
+ newPositionV.posOffset = ((_newPositionV$posOffs = newPositionV.posOffset) !== null && _newPositionV$posOffs !== void 0 ? _newPositionV$posOffs : 0) - 2;
1229
+ } else if (direction === _univerjs_core.Direction.DOWN) {
1230
+ var _newPositionV$posOffs2;
1231
+ newPositionV.posOffset = ((_newPositionV$posOffs2 = newPositionV.posOffset) !== null && _newPositionV$posOffs2 !== void 0 ? _newPositionV$posOffs2 : 0) + 2;
1232
+ } else if (direction === _univerjs_core.Direction.LEFT) {
1233
+ var _newPositionH$posOffs;
1234
+ newPositionH.posOffset = ((_newPositionH$posOffs = newPositionH.posOffset) !== null && _newPositionH$posOffs !== void 0 ? _newPositionH$posOffs : 0) - 2;
1235
+ } else if (direction === _univerjs_core.Direction.RIGHT) {
1236
+ var _newPositionH$posOffs2;
1237
+ newPositionH.posOffset = ((_newPositionH$posOffs2 = newPositionH.posOffset) !== null && _newPositionH$posOffs2 !== void 0 ? _newPositionH$posOffs2 : 0) + 2;
1238
+ }
1239
+ return {
1240
+ drawingId,
1241
+ key: direction === _univerjs_core.Direction.UP || direction === _univerjs_core.Direction.DOWN ? "positionV" : "positionH",
1242
+ value: direction === _univerjs_core.Direction.UP || direction === _univerjs_core.Direction.DOWN ? newPositionV : newPositionH
1243
+ };
1244
+ }).filter((drawing) => drawing != null);
1245
+ if (newDrawings.length === 0) return false;
1246
+ const result = commandService.syncExecuteCommand(UpdateDrawingDocTransformCommand.id, {
1247
+ unitId,
1248
+ subUnitId: unitId,
1249
+ drawings: newDrawings
1250
+ });
1251
+ transformer.refreshControls();
1252
+ return Boolean(result);
1253
+ }
1254
+ };
1255
+
1256
+ //#endregion
1257
+ //#region src/commands/operations/clear-drawing-transformer.operation.ts
1258
+ const ClearDocDrawingTransformerOperation = {
1259
+ id: "doc.operation.clear-drawing-transformer",
1260
+ type: _univerjs_core.CommandType.MUTATION,
1261
+ handler: (accessor, params) => {
1262
+ const renderManagerService = accessor.get(_univerjs_engine_render.IRenderManagerService);
1263
+ params.forEach((unitId) => {
1264
+ var _renderManagerService;
1265
+ (_renderManagerService = renderManagerService.getRenderById(unitId)) === null || _renderManagerService === void 0 || (_renderManagerService = _renderManagerService.scene.getTransformer()) === null || _renderManagerService === void 0 || _renderManagerService.debounceRefreshControls();
1266
+ });
1267
+ return true;
1268
+ }
1269
+ };
1270
+
1271
+ //#endregion
1272
+ //#region src/views/doc-image-panel/component-name.ts
1273
+ /**
1274
+ * Copyright 2023-present DreamNum Co., Ltd.
1275
+ *
1276
+ * Licensed under the Apache License, Version 2.0 (the "License");
1277
+ * you may not use this file except in compliance with the License.
1278
+ * You may obtain a copy of the License at
1279
+ *
1280
+ * http://www.apache.org/licenses/LICENSE-2.0
1281
+ *
1282
+ * Unless required by applicable law or agreed to in writing, software
1283
+ * distributed under the License is distributed on an "AS IS" BASIS,
1284
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1285
+ * See the License for the specific language governing permissions and
1286
+ * limitations under the License.
1287
+ */
1288
+ const COMPONENT_DOC_DRAWING_PANEL = "COMPONENT_DOC_DRAWING_PANEL";
1289
+
1290
+ //#endregion
1291
+ //#region src/commands/operations/open-drawing-panel.operation.ts
1292
+ const SidebarDocDrawingOperation = {
1293
+ id: "sidebar.operation.doc-image",
1294
+ type: _univerjs_core.CommandType.COMMAND,
1295
+ handler: async (accessor, params) => {
1296
+ const sidebarService = accessor.get(_univerjs_ui.ISidebarService);
1297
+ const localeService = accessor.get(_univerjs_core.LocaleService);
1298
+ const drawingManagerService = accessor.get(_univerjs_drawing.IDrawingManagerService);
1299
+ switch (params.value) {
1300
+ case "open":
1301
+ sidebarService.open({
1302
+ header: { title: localeService.t("docImage.panel.title") },
1303
+ children: { label: COMPONENT_DOC_DRAWING_PANEL },
1304
+ onClose: () => {
1305
+ drawingManagerService.focusDrawing(null);
1306
+ },
1307
+ width: 360
1308
+ });
1309
+ break;
1310
+ default:
1311
+ sidebarService.close();
1312
+ break;
1313
+ }
1314
+ return true;
1315
+ }
1316
+ };
1317
+
1318
+ //#endregion
1319
+ //#region src/commands/operations/edit-doc-drawing.operation.ts
1320
+ const EditDocDrawingOperation = {
1321
+ id: "doc.operation.edit-doc-image",
1322
+ type: _univerjs_core.CommandType.OPERATION,
1323
+ handler: (accessor, params) => {
1324
+ const drawingManagerService = accessor.get(_univerjs_drawing.IDrawingManagerService);
1325
+ const commandService = accessor.get(_univerjs_core.ICommandService);
1326
+ if (params == null) return false;
1327
+ drawingManagerService.focusDrawing([params]);
1328
+ commandService.executeCommand(SidebarDocDrawingOperation.id, { value: "open" });
1329
+ return true;
1330
+ }
1331
+ };
1332
+
1333
+ //#endregion
1334
+ //#region src/controllers/doc-float-dom.controller.ts
1335
+ function calcDocFloatDomPositionByRect(rect, scene, opacity = 1, angle = 0) {
1336
+ const { top, left, bottom, right } = rect;
1337
+ const width = right - left;
1338
+ const height = bottom - top;
1339
+ const { viewportScrollX, viewportScrollY } = scene.getViewport(_univerjs_docs_ui.VIEWPORT_KEY.VIEW_MAIN);
1340
+ const { scaleX, scaleY } = scene.getAncestorScale();
1341
+ return {
1342
+ startX: (left - viewportScrollX) * scaleX,
1343
+ startY: (top - viewportScrollY) * scaleY,
1344
+ endX: (left + width - viewportScrollX) * scaleX,
1345
+ endY: (top + height - viewportScrollY) * scaleY,
1346
+ width: width * scaleX,
1347
+ height: height * scaleY,
1348
+ rotate: angle,
1349
+ absolute: {
1350
+ left: false,
1351
+ top: false
1352
+ },
1353
+ opacity: opacity !== null && opacity !== void 0 ? opacity : 1
1354
+ };
1355
+ }
1356
+ function calcDocFloatDomPosition(object, renderUnit) {
1357
+ const { top, left, width, height, angle, opacity } = object;
1358
+ return calcDocFloatDomPositionByRect({
1359
+ top,
1360
+ left,
1361
+ bottom: top + height,
1362
+ right: left + width
1363
+ }, renderUnit.scene, opacity, angle);
1364
+ }
1365
+ let DocFloatDomController = class DocFloatDomController extends _univerjs_core.Disposable {
1366
+ constructor(_renderManagerService, _drawingManagerService, _drawingRenderService, _canvasFloatDomService, _univerInstanceService, _commandService) {
1367
+ super();
1368
+ this._renderManagerService = _renderManagerService;
1369
+ this._drawingManagerService = _drawingManagerService;
1370
+ this._drawingRenderService = _drawingRenderService;
1371
+ this._canvasFloatDomService = _canvasFloatDomService;
1372
+ this._univerInstanceService = _univerInstanceService;
1373
+ this._commandService = _commandService;
1374
+ _defineProperty(this, "_domLayerInfoMap", /* @__PURE__ */ new Map());
1375
+ this._initialize();
1376
+ }
1377
+ dispose() {
1378
+ super.dispose();
1379
+ }
1380
+ _initialize() {
1381
+ this._drawingAddRemoveListener();
1382
+ this._initScrollAndZoomEvent();
1383
+ }
1384
+ _getSceneAndTransformerByDrawingSearch(unitId) {
1385
+ if (unitId == null) return;
1386
+ const renderObject = this._renderManagerService.getRenderById(unitId);
1387
+ if (renderObject == null) return null;
1388
+ const scene = renderObject.scene;
1389
+ return {
1390
+ scene,
1391
+ transformer: scene.getTransformerByCreate(),
1392
+ renderUnit: renderObject,
1393
+ canvas: renderObject.engine.getCanvasElement()
1394
+ };
1395
+ }
1396
+ _drawingAddRemoveListener() {
1397
+ this.disposeWithMe(this._drawingManagerService.add$.subscribe((params) => {
1398
+ this._insertRects(params);
1399
+ }));
1400
+ this.disposeWithMe(this._drawingManagerService.remove$.subscribe((params) => {
1401
+ params.forEach((param) => {
1402
+ this._removeDom(param.drawingId);
1403
+ });
1404
+ }));
1405
+ }
1406
+ _insertRects(params) {
1407
+ params.forEach(async (param) => {
1408
+ const { unitId } = param;
1409
+ if (!this._univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC)) return;
1410
+ const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
1411
+ if (renderObject == null) return;
1412
+ const rectParam = this._drawingManagerService.getDrawingByParam(param);
1413
+ if (rectParam == null) return;
1414
+ const rects = await this._drawingRenderService.renderFloatDom(rectParam, renderObject.scene);
1415
+ if (rects == null || rects.length === 0) return;
1416
+ for (const rect of rects) {
1417
+ this._addHoverForRect(rect);
1418
+ const disposableCollection = new _univerjs_core.DisposableCollection();
1419
+ const position$ = new rxjs.BehaviorSubject(calcDocFloatDomPosition(rect, renderObject.renderUnit));
1420
+ const canvas = renderObject.canvas;
1421
+ const data = rectParam.data;
1422
+ const info = {
1423
+ dispose: disposableCollection,
1424
+ rect,
1425
+ position$,
1426
+ unitId
1427
+ };
1428
+ this._canvasFloatDomService.addFloatDom({
1429
+ position$,
1430
+ id: rectParam.drawingId,
1431
+ componentKey: rectParam.componentKey,
1432
+ onPointerDown: (evt) => {
1433
+ canvas.dispatchEvent(new PointerEvent(evt.type, evt));
1434
+ },
1435
+ onPointerMove: (evt) => {
1436
+ canvas.dispatchEvent(new PointerEvent(evt.type, evt));
1437
+ },
1438
+ onPointerUp: (evt) => {
1439
+ canvas.dispatchEvent(new PointerEvent(evt.type, evt));
1440
+ },
1441
+ onWheel: (evt) => {
1442
+ canvas.dispatchEvent(new WheelEvent(evt.type, evt));
1443
+ },
1444
+ data,
1445
+ unitId
1446
+ });
1447
+ const listener = rect.onTransformChange$.subscribeEvent(() => {
1448
+ const newPosition = calcDocFloatDomPosition(rect, renderObject.renderUnit);
1449
+ position$.next(newPosition);
1450
+ });
1451
+ disposableCollection.add(() => {
1452
+ this._canvasFloatDomService.removeFloatDom(rectParam.drawingId);
1453
+ });
1454
+ listener && disposableCollection.add(listener);
1455
+ this._domLayerInfoMap.set(rectParam.drawingId, info);
1456
+ }
1457
+ });
1458
+ }
1459
+ _addHoverForRect(o) {
1460
+ this.disposeWithMe((0, _univerjs_core.toDisposable)(o.onPointerEnter$.subscribeEvent(() => {
1461
+ o.cursor = _univerjs_engine_render.CURSOR_TYPE.GRAB;
1462
+ })));
1463
+ this.disposeWithMe((0, _univerjs_core.toDisposable)(o.onPointerLeave$.subscribeEvent(() => {
1464
+ o.cursor = _univerjs_engine_render.CURSOR_TYPE.DEFAULT;
1465
+ })));
1466
+ }
1467
+ _removeDom(id) {
1468
+ const info = this._domLayerInfoMap.get(id);
1469
+ if (!info) return;
1470
+ const { unitId } = info;
1471
+ this._domLayerInfoMap.delete(id);
1472
+ info.dispose.dispose();
1473
+ const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
1474
+ if (renderObject) renderObject.scene.removeObject(info.rect);
1475
+ }
1476
+ _initScrollAndZoomEvent() {
1477
+ const updateDoc = (unitId) => {
1478
+ const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
1479
+ if (!renderObject) return;
1480
+ this._domLayerInfoMap.forEach((floatDomInfo) => {
1481
+ if (floatDomInfo.unitId !== unitId) return;
1482
+ const position = calcDocFloatDomPosition(floatDomInfo.rect, renderObject.renderUnit);
1483
+ floatDomInfo.position$.next(position);
1484
+ });
1485
+ };
1486
+ this.disposeWithMe(this._univerInstanceService.getCurrentTypeOfUnit$(_univerjs_core.UniverInstanceType.UNIVER_DOC).pipe((0, rxjs.map)((documentDataModel) => {
1487
+ if (!documentDataModel) return null;
1488
+ const unitId = documentDataModel.getUnitId();
1489
+ const render = this._renderManagerService.getRenderById(unitId);
1490
+ return render ? {
1491
+ render,
1492
+ unitId
1493
+ } : null;
1494
+ }), (0, rxjs.switchMap)((render) => render ? (0, _univerjs_core.fromEventSubject)(render.render.scene.getViewport(_univerjs_docs_ui.VIEWPORT_KEY.VIEW_MAIN).onScrollAfter$).pipe((0, rxjs.map)(() => ({ unitId: render.unitId }))) : (0, rxjs.of)(null))).subscribe((value) => {
1495
+ if (!value) return;
1496
+ const { unitId } = value;
1497
+ updateDoc(unitId);
1498
+ }));
1499
+ this.disposeWithMe(this._commandService.onCommandExecuted((commandInfo) => {
1500
+ if (commandInfo.id === _univerjs_docs_ui.SetDocZoomRatioOperation.id) {
1501
+ const { unitId } = commandInfo.params;
1502
+ updateDoc(unitId);
1503
+ }
1504
+ }));
1505
+ }
1506
+ insertFloatDom(floatDom, opts) {
1507
+ var _skeleton$getSkeleton, _opts$width, _opts$drawingId;
1508
+ const currentDoc = this._univerInstanceService.getCurrentUnitOfType(_univerjs_core.UniverInstanceType.UNIVER_DOC);
1509
+ if (!currentDoc) return false;
1510
+ const render = this._getSceneAndTransformerByDrawingSearch(currentDoc.getUnitId());
1511
+ if (!render) return false;
1512
+ const page = (_skeleton$getSkeleton = render.renderUnit.with(_univerjs_docs.DocSkeletonManagerService).getSkeleton().getSkeletonData()) === null || _skeleton$getSkeleton === void 0 ? void 0 : _skeleton$getSkeleton.pages[0];
1513
+ if (!page) return false;
1514
+ const { pageWidth, marginLeft, marginRight } = page;
1515
+ const width = pageWidth - marginLeft - marginRight;
1516
+ const docTransform = {
1517
+ size: {
1518
+ width: (_opts$width = opts.width) !== null && _opts$width !== void 0 ? _opts$width : width,
1519
+ height: opts.height
1520
+ },
1521
+ positionH: {
1522
+ relativeFrom: _univerjs_core.ObjectRelativeFromH.PAGE,
1523
+ posOffset: 0
1524
+ },
1525
+ positionV: {
1526
+ relativeFrom: _univerjs_core.ObjectRelativeFromV.PAGE,
1527
+ posOffset: 0
1528
+ },
1529
+ angle: 0
1530
+ };
1531
+ const drawingId = (_opts$drawingId = opts.drawingId) !== null && _opts$drawingId !== void 0 ? _opts$drawingId : (0, _univerjs_core.generateRandomId)();
1532
+ const params = {
1533
+ unitId: currentDoc.getUnitId(),
1534
+ drawings: [{
1535
+ drawingId,
1536
+ drawingType: _univerjs_core.DrawingTypeEnum.DRAWING_DOM,
1537
+ subUnitId: currentDoc.getUnitId(),
1538
+ unitId: currentDoc.getUnitId(),
1539
+ ...floatDom,
1540
+ title: "",
1541
+ description: "",
1542
+ docTransform,
1543
+ layoutType: _univerjs_core.PositionedObjectLayoutType.INLINE,
1544
+ transform: (0, _univerjs_docs_ui.docDrawingPositionToTransform)(docTransform)
1545
+ }]
1546
+ };
1547
+ this._commandService.syncExecuteCommand(InsertDocDrawingCommand.id, params);
1548
+ return drawingId;
1549
+ }
1550
+ };
1551
+ DocFloatDomController = __decorate([
1552
+ __decorateParam(0, _univerjs_engine_render.IRenderManagerService),
1553
+ __decorateParam(1, _univerjs_drawing.IDrawingManagerService),
1554
+ __decorateParam(2, (0, _univerjs_core.Inject)(_univerjs_drawing_ui.DrawingRenderService)),
1555
+ __decorateParam(3, (0, _univerjs_core.Inject)(_univerjs_ui.CanvasFloatDomService)),
1556
+ __decorateParam(4, _univerjs_core.IUniverInstanceService),
1557
+ __decorateParam(5, _univerjs_core.ICommandService)
1558
+ ], DocFloatDomController);
1559
+
1560
+ //#endregion
1561
+ //#region src/menu/image.menu.ts
1562
+ const DOCS_IMAGE_MENU_ID = "doc.menu.image";
1563
+ const IMAGE_MENU_UPLOAD_FLOAT_ID = InsertDocImageCommand.id;
1564
+ const getDisableWhenSelectionInTableObservable = (accessor) => {
1565
+ const docSelectionManagerService = accessor.get(_univerjs_docs.DocSelectionManagerService);
1566
+ const univerInstanceService = accessor.get(_univerjs_core.IUniverInstanceService);
1567
+ return new rxjs.Observable((subscriber) => {
1568
+ const observable = docSelectionManagerService.textSelection$.subscribe(() => {
1569
+ const activeRange = docSelectionManagerService.getActiveTextRange();
1570
+ if (activeRange) {
1571
+ var _docDataModel$getSelf;
1572
+ const { segmentId, startOffset, endOffset } = activeRange;
1573
+ const docDataModel = univerInstanceService.getCurrentUniverDocInstance();
1574
+ const tables = docDataModel === null || docDataModel === void 0 || (_docDataModel$getSelf = docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody()) === null || _docDataModel$getSelf === void 0 ? void 0 : _docDataModel$getSelf.tables;
1575
+ if (tables && tables.length) {
1576
+ if (tables.some((table) => {
1577
+ const { startIndex, endIndex } = table;
1578
+ return startOffset >= startIndex && startOffset < endIndex || endOffset >= startIndex && endOffset < endIndex;
1579
+ })) {
1580
+ subscriber.next(true);
1581
+ return;
1582
+ }
1583
+ }
1584
+ } else {
1585
+ subscriber.next(true);
1586
+ return;
1587
+ }
1588
+ subscriber.next(false);
1589
+ });
1590
+ return () => observable.unsubscribe();
1591
+ });
1592
+ };
1593
+ function ImageMenuFactory(accessor) {
1594
+ return {
1595
+ id: DOCS_IMAGE_MENU_ID,
1596
+ type: _univerjs_ui.MenuItemType.SUBITEMS,
1597
+ icon: "AddImageIcon",
1598
+ tooltip: "docImage.title",
1599
+ disabled$: getDisableWhenSelectionInTableObservable(accessor),
1600
+ hidden$: (0, _univerjs_ui.getMenuHiddenObservable)(accessor, _univerjs_core.UniverInstanceType.UNIVER_DOC, void 0, _univerjs_core.DOCS_ZEN_EDITOR_UNIT_ID_KEY)
1601
+ };
1602
+ }
1603
+ function UploadFloatImageMenuFactory(_accessor) {
1604
+ return {
1605
+ id: IMAGE_MENU_UPLOAD_FLOAT_ID,
1606
+ title: "docImage.upload.float",
1607
+ type: _univerjs_ui.MenuItemType.BUTTON,
1608
+ hidden$: (0, _univerjs_ui.getMenuHiddenObservable)(_accessor, _univerjs_core.UniverInstanceType.UNIVER_DOC, void 0, _univerjs_core.DOCS_ZEN_EDITOR_UNIT_ID_KEY)
1609
+ };
1610
+ }
1611
+
1612
+ //#endregion
1613
+ //#region package.json
1614
+ var name = "@univerjs/docs-drawing-ui";
1615
+ var version = "0.21.0-insiders.20260422-d7fcb4d";
1616
+
1617
+ //#endregion
1618
+ //#region src/config/config.ts
1619
+ /**
1620
+ * Copyright 2023-present DreamNum Co., Ltd.
1621
+ *
1622
+ * Licensed under the Apache License, Version 2.0 (the "License");
1623
+ * you may not use this file except in compliance with the License.
1624
+ * You may obtain a copy of the License at
1625
+ *
1626
+ * http://www.apache.org/licenses/LICENSE-2.0
1627
+ *
1628
+ * Unless required by applicable law or agreed to in writing, software
1629
+ * distributed under the License is distributed on an "AS IS" BASIS,
1630
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1631
+ * See the License for the specific language governing permissions and
1632
+ * limitations under the License.
1633
+ */
1634
+ const DOCS_DRAWING_UI_PLUGIN_CONFIG_KEY = "docs-drawing-ui.config";
1635
+ const configSymbol = Symbol(DOCS_DRAWING_UI_PLUGIN_CONFIG_KEY);
1636
+ const defaultPluginConfig = {};
1637
+
1638
+ //#endregion
1639
+ //#region src/controllers/doc-drawing-notification.controller.ts
1640
+ function getAddOrRemoveDrawings(actions) {
1641
+ if (_univerjs_core.JSONX.isNoop(actions) || !Array.isArray(actions)) return null;
1642
+ const drawingsOp = actions.find((action) => Array.isArray(action) && (action === null || action === void 0 ? void 0 : action[0]) === "drawings");
1643
+ if (drawingsOp == null || !Array.isArray(drawingsOp) || drawingsOp.length < 3) return null;
1644
+ if (typeof drawingsOp[1] === "string" && typeof drawingsOp[2] !== "object") return null;
1645
+ if (Array.isArray(drawingsOp[1]) && typeof drawingsOp[1][1] !== "object") return null;
1646
+ const drawings = [];
1647
+ if (Array.isArray(drawingsOp === null || drawingsOp === void 0 ? void 0 : drawingsOp[1])) {
1648
+ for (const op of drawingsOp) if (Array.isArray(op)) {
1649
+ var _ref, _ref2;
1650
+ drawings.push({
1651
+ type: (op === null || op === void 0 || (_ref = op[1]) === null || _ref === void 0 ? void 0 : _ref.i) ? "add" : "remove",
1652
+ drawingId: op === null || op === void 0 ? void 0 : op[0],
1653
+ drawing: op === null || op === void 0 || (_ref2 = op[1]) === null || _ref2 === void 0 ? void 0 : _ref2.i
1654
+ });
1655
+ }
1656
+ } else {
1657
+ var _drawingsOp$, _drawingsOp$2;
1658
+ drawings.push({
1659
+ type: ((_drawingsOp$ = drawingsOp[2]) === null || _drawingsOp$ === void 0 ? void 0 : _drawingsOp$.i) ? "add" : "remove",
1660
+ drawingId: drawingsOp[1],
1661
+ drawing: (_drawingsOp$2 = drawingsOp[2]) === null || _drawingsOp$2 === void 0 ? void 0 : _drawingsOp$2.i
1662
+ });
1663
+ }
1664
+ return drawings;
1665
+ }
1666
+ function getReOrderedDrawings(actions) {
1667
+ if (!Array.isArray(actions) || actions.length < 3 || actions[0] !== "drawingsOrder") return [];
1668
+ const drawingIndexes = [];
1669
+ for (let i = 1; i < actions.length; i++) {
1670
+ const action = actions[i];
1671
+ if (Array.isArray(action) && typeof action[0] === "number" && typeof action[1] === "object") drawingIndexes.push(action[0]);
1672
+ else {
1673
+ drawingIndexes.length = 0;
1674
+ break;
1675
+ }
1676
+ }
1677
+ return drawingIndexes;
1678
+ }
1679
+ let DocDrawingAddRemoveController = class DocDrawingAddRemoveController extends _univerjs_core.Disposable {
1680
+ constructor(_univerInstanceService, _commandService, _drawingManagerService, _docDrawingService, _renderManagerService) {
1681
+ super();
1682
+ this._univerInstanceService = _univerInstanceService;
1683
+ this._commandService = _commandService;
1684
+ this._drawingManagerService = _drawingManagerService;
1685
+ this._docDrawingService = _docDrawingService;
1686
+ this._renderManagerService = _renderManagerService;
1687
+ this._initialize();
1688
+ }
1689
+ _initialize() {
1690
+ this._commandExecutedListener();
1691
+ }
1692
+ _commandExecutedListener() {
1693
+ this.disposeWithMe(this._commandService.beforeCommandExecuted((command) => {
1694
+ if (command.id !== _univerjs_docs.RichTextEditingMutation.id) return;
1695
+ const { unitId, actions } = command.params;
1696
+ const addOrRemoveDrawings = getAddOrRemoveDrawings(actions);
1697
+ if (addOrRemoveDrawings != null) for (const { type, drawingId, drawing } of addOrRemoveDrawings) if (type === "add") this._addDrawings(unitId, [drawing]);
1698
+ else this._removeDrawings(unitId, [drawingId]);
1699
+ }));
1700
+ this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
1701
+ if (command.id !== _univerjs_docs.RichTextEditingMutation.id) return;
1702
+ const { unitId, actions } = command.params;
1703
+ if (getReOrderedDrawings(actions).length > 0) this._updateDrawingsOrder(unitId);
1704
+ }));
1705
+ this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
1706
+ var _this$_univerInstance;
1707
+ if (command.id !== _univerjs_core.UndoCommand.id && command.id !== _univerjs_core.RedoCommand.id) return;
1708
+ const unitId = (_this$_univerInstance = this._univerInstanceService.getCurrentUniverDocInstance()) === null || _this$_univerInstance === void 0 ? void 0 : _this$_univerInstance.getUnitId();
1709
+ const focusedDrawings = this._drawingManagerService.getFocusDrawings();
1710
+ if (unitId == null || focusedDrawings.length === 0) return;
1711
+ const renderObject = this._renderManagerService.getRenderById(unitId);
1712
+ const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
1713
+ if (scene == null) return false;
1714
+ scene.getTransformerByCreate().refreshControls();
1715
+ }));
1716
+ }
1717
+ _addDrawings(unitId, drawings) {
1718
+ const drawingManagerService = this._drawingManagerService;
1719
+ const docDrawingService = this._docDrawingService;
1720
+ const { subUnitId, redo: op, objects } = this._docDrawingService.getBatchAddOp(drawings);
1721
+ drawingManagerService.applyJson1(unitId, subUnitId, op);
1722
+ docDrawingService.applyJson1(unitId, subUnitId, op);
1723
+ drawingManagerService.addNotification(objects);
1724
+ docDrawingService.addNotification(objects);
1725
+ }
1726
+ _removeDrawings(unitId, drawingIds) {
1727
+ const drawingManagerService = this._drawingManagerService;
1728
+ const docDrawingService = this._docDrawingService;
1729
+ const { subUnitId, redo: op, objects } = this._docDrawingService.getBatchRemoveOp(drawingIds.map((drawingId) => {
1730
+ return {
1731
+ unitId,
1732
+ subUnitId: unitId,
1733
+ drawingId
1734
+ };
1735
+ }));
1736
+ drawingManagerService.applyJson1(unitId, subUnitId, op);
1737
+ docDrawingService.applyJson1(unitId, subUnitId, op);
1738
+ drawingManagerService.removeNotification(objects);
1739
+ docDrawingService.removeNotification(objects);
1740
+ }
1741
+ _updateDrawingsOrder(unitId) {
1742
+ const documentDataModel = this._univerInstanceService.getUniverDocInstance(unitId);
1743
+ if (documentDataModel == null) return;
1744
+ const drawingsOrder = documentDataModel.getSnapshot().drawingsOrder;
1745
+ if (drawingsOrder == null) return;
1746
+ const drawingManagerService = this._drawingManagerService;
1747
+ const docDrawingService = this._docDrawingService;
1748
+ drawingManagerService.setDrawingOrder(unitId, unitId, drawingsOrder);
1749
+ docDrawingService.setDrawingOrder(unitId, unitId, drawingsOrder);
1750
+ const objects = {
1751
+ unitId,
1752
+ subUnitId: unitId,
1753
+ drawingIds: drawingsOrder
1754
+ };
1755
+ drawingManagerService.orderNotification(objects);
1756
+ docDrawingService.orderNotification(objects);
1757
+ }
1758
+ };
1759
+ DocDrawingAddRemoveController = __decorate([
1760
+ __decorateParam(0, _univerjs_core.IUniverInstanceService),
1761
+ __decorateParam(1, _univerjs_core.ICommandService),
1762
+ __decorateParam(2, _univerjs_drawing.IDrawingManagerService),
1763
+ __decorateParam(3, _univerjs_docs_drawing.IDocDrawingService),
1764
+ __decorateParam(4, _univerjs_engine_render.IRenderManagerService)
1765
+ ], DocDrawingAddRemoveController);
1766
+
1767
+ //#endregion
1768
+ //#region src/views/printing-float-dom/index.tsx
1769
+ const DocPrintingFloatDom = (props) => {
1770
+ const { floatDomInfos, scene, offset, bound } = props;
1771
+ const width = bound.right - bound.left;
1772
+ const height = bound.bottom - bound.top;
1773
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1774
+ className: "univer-absolute univer-left-0 univer-top-0",
1775
+ children: (0, react.useMemo)(() => floatDomInfos.map((info) => {
1776
+ const { width = 0, height = 0, left = 0, top = 0 } = info.transform;
1777
+ const domPos = calcDocFloatDomPositionByRect({
1778
+ left,
1779
+ right: left + width,
1780
+ top,
1781
+ bottom: top + height
1782
+ }, scene);
1783
+ const floatDom = {
1784
+ position$: new rxjs.BehaviorSubject(domPos),
1785
+ position: domPos,
1786
+ id: info.drawingId,
1787
+ componentKey: info.componentKey,
1788
+ onPointerMove: () => {},
1789
+ onPointerDown: () => {},
1790
+ onPointerUp: () => {},
1791
+ onWheel: () => {},
1792
+ unitId: info.unitId,
1793
+ data: info.data
1794
+ };
1795
+ return [info.drawingId, floatDom];
1796
+ }).filter(([_, floatDom]) => !(floatDom.position.endX < 0 || floatDom.position.endY < 0 || floatDom.position.startX > width || floatDom.position.startY > height)), [
1797
+ floatDomInfos,
1798
+ scene,
1799
+ offset,
1800
+ width,
1801
+ height
1802
+ ]).map(([id, floatDom]) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_ui.PrintFloatDomSingle, {
1803
+ layer: floatDom,
1804
+ id,
1805
+ position: floatDom.position
1806
+ }, id))
1807
+ });
1808
+ };
1809
+
1810
+ //#endregion
1811
+ //#region src/controllers/doc-drawing-printing.controller.tsx
1812
+ let DocDrawingPrintingController = class DocDrawingPrintingController extends _univerjs_core.Disposable {
1813
+ constructor(_docPrintInterceptorService, _drawingRenderService, _drawingManagerService, _componetManager, _injector) {
1814
+ super();
1815
+ this._docPrintInterceptorService = _docPrintInterceptorService;
1816
+ this._drawingRenderService = _drawingRenderService;
1817
+ this._drawingManagerService = _drawingManagerService;
1818
+ this._componetManager = _componetManager;
1819
+ this._injector = _injector;
1820
+ this._initPrinting();
1821
+ this._initPrintingDom();
1822
+ }
1823
+ _initPrinting() {
1824
+ this.disposeWithMe(this._docPrintInterceptorService.interceptor.intercept(this._docPrintInterceptorService.interceptor.getInterceptPoints().PRINTING_COMPONENT_COLLECT, { handler: (_param, pos, next) => {
1825
+ const { unitId, scene } = pos;
1826
+ const unitData = this._drawingManagerService.getDrawingDataForUnit(unitId);
1827
+ const subUnitData = unitData === null || unitData === void 0 ? void 0 : unitData[unitId];
1828
+ if (subUnitData) subUnitData.order.forEach((id) => {
1829
+ const drawing = subUnitData.data[id];
1830
+ if (drawing.drawingType !== _univerjs_core.DrawingTypeEnum.DRAWING_CHART && drawing.drawingType !== _univerjs_core.DrawingTypeEnum.DRAWING_DOM) this._drawingRenderService.renderDrawing(drawing, scene);
1831
+ });
1832
+ return next();
1833
+ } }));
1834
+ }
1835
+ _initPrintingDom() {
1836
+ this.disposeWithMe(this._docPrintInterceptorService.interceptor.intercept(this._docPrintInterceptorService.interceptor.getInterceptPoints().PRINTING_DOM_COLLECT, { handler: (disposableCollection, pos, next) => {
1837
+ const { unitId } = pos;
1838
+ const unitData = this._drawingManagerService.getDrawingDataForUnit(unitId);
1839
+ const subUnitData = unitData === null || unitData === void 0 ? void 0 : unitData[unitId];
1840
+ if (subUnitData) {
1841
+ const floatDomInfos = subUnitData.order.map((id) => {
1842
+ const drawing = subUnitData.data[id];
1843
+ if (drawing.drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_CHART) return {
1844
+ ...drawing,
1845
+ componentKey: this._componetManager.get(_univerjs_core.DOC_DRAWING_PRINTING_COMPONENT_KEY)
1846
+ };
1847
+ if (drawing.drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_DOM) {
1848
+ const printingComponentKey = this._docPrintInterceptorService.getPrintComponent(drawing.componentKey);
1849
+ return {
1850
+ ...drawing,
1851
+ componentKey: this._componetManager.get(printingComponentKey || drawing.componentKey)
1852
+ };
1853
+ }
1854
+ return null;
1855
+ }).filter(Boolean);
1856
+ (0, _univerjs_design.render)(/* @__PURE__ */ (0, react_jsx_runtime.jsx)((0, _univerjs_ui.connectInjector)(DocPrintingFloatDom, this._injector), {
1857
+ unitId,
1858
+ floatDomInfos,
1859
+ scene: pos.scene,
1860
+ skeleton: pos.skeleton,
1861
+ offset: pos.offset,
1862
+ bound: pos.bound
1863
+ }), pos.root);
1864
+ disposableCollection === null || disposableCollection === void 0 || disposableCollection.add(() => {
1865
+ (0, _univerjs_design.unmount)(pos.root);
1866
+ });
1867
+ return next(disposableCollection);
1868
+ }
1869
+ } }));
1870
+ }
1871
+ };
1872
+ DocDrawingPrintingController = __decorate([
1873
+ __decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_docs_ui.DocPrintInterceptorService)),
1874
+ __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_drawing_ui.DrawingRenderService)),
1875
+ __decorateParam(2, _univerjs_drawing.IDrawingManagerService),
1876
+ __decorateParam(3, (0, _univerjs_core.Inject)(_univerjs_ui.ComponentManager)),
1877
+ __decorateParam(4, (0, _univerjs_core.Inject)(_univerjs_core.Injector))
1878
+ ], DocDrawingPrintingController);
1879
+
1880
+ //#endregion
1881
+ //#region src/controllers/doc-drawing-transformer-update.controller.ts
1882
+ const INLINE_DRAWING_ANCHOR_KEY_PREFIX = "__InlineDrawingAnchor__";
1883
+ function isInTableCell(nodePosition) {
1884
+ const { path } = nodePosition;
1885
+ return path.some((p) => p === "cells");
1886
+ }
1887
+ let DocDrawingTransformerController = class DocDrawingTransformerController extends _univerjs_core.Disposable {
1888
+ constructor(_commandService, _univerInstanceService, _drawingManagerService, _renderManagerService) {
1889
+ super();
1890
+ this._commandService = _commandService;
1891
+ this._univerInstanceService = _univerInstanceService;
1892
+ this._drawingManagerService = _drawingManagerService;
1893
+ this._renderManagerService = _renderManagerService;
1894
+ _defineProperty(this, "_liquid", new _univerjs_engine_render.Liquid());
1895
+ _defineProperty(this, "_listenerOnImageMap", /* @__PURE__ */ new Set());
1896
+ _defineProperty(this, "_transformerCache", /* @__PURE__ */ new Map());
1897
+ _defineProperty(this, "_anchorShape", void 0);
1898
+ this._init();
1899
+ }
1900
+ _init() {
1901
+ this._listenDrawingFocus();
1902
+ }
1903
+ _listenDrawingFocus() {
1904
+ this.disposeWithMe(this._drawingManagerService.add$.subscribe((drawingParams) => {
1905
+ if (drawingParams.length === 0) return;
1906
+ for (const drawingParam of drawingParams) {
1907
+ const { unitId } = drawingParam;
1908
+ if (!this._listenerOnImageMap.has(unitId)) {
1909
+ this._listenTransformerChange(unitId);
1910
+ this._listenerOnImageMap.add(unitId);
1911
+ }
1912
+ }
1913
+ }));
1914
+ }
1915
+ _listenTransformerChange(unitId) {
1916
+ var _this$_getSceneAndTra;
1917
+ const transformer = (_this$_getSceneAndTra = this._getSceneAndTransformerByDrawingSearch(unitId)) === null || _this$_getSceneAndTra === void 0 ? void 0 : _this$_getSceneAndTra.transformer;
1918
+ if (transformer == null) return;
1919
+ this.disposeWithMe((0, _univerjs_core.toDisposable)(transformer.changeStart$.subscribe((state) => {
1920
+ this._transformerCache.clear();
1921
+ const { objects } = state;
1922
+ for (const object of objects.values()) {
1923
+ var _documentDataModel$ge;
1924
+ const { oKey, width, height, left, top, angle } = object;
1925
+ const drawing = this._drawingManagerService.getDrawingOKey(oKey);
1926
+ if (drawing == null) continue;
1927
+ const documentDataModel = this._univerInstanceService.getUniverDocInstance(drawing.unitId);
1928
+ const drawingData = documentDataModel === null || documentDataModel === void 0 || (_documentDataModel$ge = documentDataModel.getSnapshot().drawings) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge[drawing.drawingId];
1929
+ if ((drawingData === null || drawingData === void 0 ? void 0 : drawingData.layoutType) === _univerjs_core.PositionedObjectLayoutType.INLINE) try {
1930
+ object.setOpacity(.2);
1931
+ } catch (e) {}
1932
+ if (drawingData != null) this._transformerCache.set(drawing.drawingId, {
1933
+ drawing: drawingData,
1934
+ top,
1935
+ left,
1936
+ width,
1937
+ height,
1938
+ angle
1939
+ });
1940
+ }
1941
+ })));
1942
+ const throttleMultipleDrawingUpdate = (0, _univerjs_core.throttle)(this._updateMultipleDrawingDocTransform.bind(this), 50);
1943
+ (0, _univerjs_core.throttle)(this._nonInlineDrawingTransform.bind(this), 50);
1944
+ this.disposeWithMe((0, _univerjs_core.toDisposable)(transformer.changing$.subscribe((state) => {
1945
+ const { objects, offsetX, offsetY } = state;
1946
+ if (objects.size > 1) throttleMultipleDrawingUpdate(objects);
1947
+ else if (objects.size === 1) {
1948
+ const drawingCache = this._transformerCache.values().next().value;
1949
+ const { width, height, top, left, angle } = objects.values().next().value;
1950
+ if (drawingCache && width === drawingCache.width && height === drawingCache.height && top === drawingCache.top && left === drawingCache.left && angle === drawingCache.angle) return;
1951
+ if (drawingCache && drawingCache.drawing.layoutType !== _univerjs_core.PositionedObjectLayoutType.INLINE) {}
1952
+ if (drawingCache && drawingCache.drawing.layoutType === _univerjs_core.PositionedObjectLayoutType.INLINE && offsetX != null && offsetY != null) this._updateInlineDrawingAnchor(drawingCache.drawing, offsetX, offsetY);
1953
+ }
1954
+ })));
1955
+ this.disposeWithMe((0, _univerjs_core.toDisposable)(transformer.changeEnd$.subscribe((state) => {
1956
+ const { objects, offsetX, offsetY } = state;
1957
+ for (const object of objects.values()) {
1958
+ const drawing = this._drawingManagerService.getDrawingOKey(object.oKey);
1959
+ if (drawing == null) continue;
1960
+ const drawingCache = this._transformerCache.get(drawing === null || drawing === void 0 ? void 0 : drawing.drawingId);
1961
+ if ((drawingCache === null || drawingCache === void 0 ? void 0 : drawingCache.drawing.layoutType) === _univerjs_core.PositionedObjectLayoutType.INLINE) try {
1962
+ object.setOpacity(1);
1963
+ } catch (e) {}
1964
+ }
1965
+ if (this._anchorShape) this._anchorShape.hide();
1966
+ if (objects.size > 1) this._updateMultipleDrawingDocTransform(objects);
1967
+ else if (objects.size === 1) {
1968
+ const drawingCache = this._transformerCache.values().next().value;
1969
+ const object = objects.values().next().value;
1970
+ const { width, height, top, left, angle } = object;
1971
+ if (drawingCache && width === drawingCache.width && height === drawingCache.height && top === drawingCache.top && left === drawingCache.left && angle === drawingCache.angle) return;
1972
+ if (drawingCache && drawingCache.drawing.layoutType === _univerjs_core.PositionedObjectLayoutType.INLINE) {
1973
+ if (width !== drawingCache.width || height !== drawingCache.height || angle !== drawingCache.angle) this._updateDrawingSize(drawingCache, object);
1974
+ else if (offsetX != null && offsetY != null) this._moveInlineDrawing(drawingCache.drawing, offsetX, offsetY);
1975
+ } else if (drawingCache) this._nonInlineDrawingTransform(drawingCache.drawing, object);
1976
+ }
1977
+ this._transformerCache.clear();
1978
+ })));
1979
+ }
1980
+ _updateMultipleDrawingDocTransform(objects) {
1981
+ if (objects.size < 1) return;
1982
+ const drawings = [];
1983
+ let unitId;
1984
+ let subUnitId;
1985
+ for (const object of objects.values()) {
1986
+ const { oKey, left, top, angle } = object;
1987
+ let { width, height } = object;
1988
+ const drawing = this._drawingManagerService.getDrawingOKey(oKey);
1989
+ if (drawing == null) continue;
1990
+ if (unitId == null) unitId = drawing.unitId;
1991
+ if (subUnitId == null) subUnitId = drawing.subUnitId;
1992
+ const drawingCache = this._transformerCache.get(drawing.drawingId);
1993
+ if (drawingCache == null) continue;
1994
+ const { drawing: drawingData, top: oldTop, left: oldLeft, width: oldWidth, height: oldHeight, angle: oldAngle } = drawingCache;
1995
+ const { width: maxWidth, height: maxHeight } = this._getPageContentSize(drawingData);
1996
+ width = Math.min(width, maxWidth);
1997
+ height = Math.min(height, maxHeight);
1998
+ if (oldWidth !== width || oldHeight !== height) drawings.push({
1999
+ drawingId: drawing.drawingId,
2000
+ key: "size",
2001
+ value: {
2002
+ width,
2003
+ height
2004
+ }
2005
+ });
2006
+ if (oldAngle !== angle) drawings.push({
2007
+ drawingId: drawing.drawingId,
2008
+ key: "angle",
2009
+ value: angle
2010
+ });
2011
+ if (oldTop !== top || oldLeft !== left) {
2012
+ const verticalDelta = top - oldTop;
2013
+ const horizontalDelta = left - oldLeft;
2014
+ if (verticalDelta !== 0) drawings.push({
2015
+ drawingId: drawing.drawingId,
2016
+ key: "positionV",
2017
+ value: {
2018
+ relativeFrom: drawingData.docTransform.positionV.relativeFrom,
2019
+ posOffset: drawingData.docTransform.positionV.posOffset + verticalDelta
2020
+ }
2021
+ });
2022
+ if (horizontalDelta !== 0) drawings.push({
2023
+ drawingId: drawing.drawingId,
2024
+ key: "positionH",
2025
+ value: {
2026
+ relativeFrom: drawingData.docTransform.positionH.relativeFrom,
2027
+ posOffset: drawingData.docTransform.positionH.posOffset + horizontalDelta
2028
+ }
2029
+ });
2030
+ }
2031
+ }
2032
+ if (drawings.length > 0 && unitId && subUnitId) this._commandService.executeCommand(UpdateDrawingDocTransformCommand.id, {
2033
+ unitId,
2034
+ subUnitId,
2035
+ drawings
2036
+ });
2037
+ }
2038
+ _updateDrawingAnchor(objects) {
2039
+ if (this._transformerCache.size !== 1) return;
2040
+ const drawingCache = this._transformerCache.values().next().value;
2041
+ const object = objects.values().next().value;
2042
+ this._getDrawingAnchor(drawingCache.drawing, object);
2043
+ }
2044
+ _updateInlineDrawingAnchor(drawing, offsetX, offsetY) {
2045
+ var _this$_getInlineDrawi;
2046
+ if (this._transformerCache.size !== 1) return;
2047
+ const { contentBoxPointGroup } = (_this$_getInlineDrawi = this._getInlineDrawingAnchor(drawing, offsetX, offsetY)) !== null && _this$_getInlineDrawi !== void 0 ? _this$_getInlineDrawi : {};
2048
+ if (contentBoxPointGroup == null) return;
2049
+ this._createOrUpdateInlineAnchor(drawing.unitId, contentBoxPointGroup);
2050
+ }
2051
+ _getInlineDrawingAnchor(drawing, offsetX, offsetY) {
2052
+ var _this$_renderManagerS, _getOneTextSelectionR;
2053
+ const currentRender = this._renderManagerService.getRenderById(drawing.unitId);
2054
+ const skeleton = currentRender === null || currentRender === void 0 ? void 0 : currentRender.with(_univerjs_docs.DocSkeletonManagerService).getSkeleton();
2055
+ if (currentRender == null) return;
2056
+ const { mainComponent, scene } = currentRender;
2057
+ const documentComponent = mainComponent;
2058
+ const activeViewport = scene.getViewports()[0];
2059
+ const { pageLayoutType = _univerjs_engine_render.PageLayoutType.VERTICAL, pageMarginLeft, pageMarginTop } = documentComponent.getOffsetConfig();
2060
+ let glyphAnchor = null;
2061
+ let isBack = false;
2062
+ let segmentPageIndex = -1;
2063
+ let segmentId = "";
2064
+ const HALF = .5;
2065
+ const coord = this._getTransformCoordForDocumentOffset(documentComponent, activeViewport, offsetX, offsetY);
2066
+ if (coord == null) return;
2067
+ const docSelectionRenderService = (_this$_renderManagerS = this._renderManagerService.getRenderById(drawing.unitId)) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.with(_univerjs_docs_ui.DocSelectionRenderService);
2068
+ if (docSelectionRenderService == null) return;
2069
+ const nodeInfo = skeleton === null || skeleton === void 0 ? void 0 : skeleton.findNodeByCoord(coord, pageLayoutType, pageMarginLeft, pageMarginTop, {
2070
+ strict: false,
2071
+ segmentId: docSelectionRenderService.getSegment(),
2072
+ segmentPage: docSelectionRenderService.getSegmentPage()
2073
+ });
2074
+ if (nodeInfo) {
2075
+ const { node, ratioX, segmentPage, segmentId: nodeSegmentId } = nodeInfo;
2076
+ isBack = ratioX < HALF;
2077
+ glyphAnchor = node;
2078
+ segmentPageIndex = segmentPage;
2079
+ segmentId = nodeSegmentId;
2080
+ }
2081
+ if (glyphAnchor == null) return;
2082
+ const nodePosition = skeleton === null || skeleton === void 0 ? void 0 : skeleton.findPositionByGlyph(glyphAnchor, segmentPageIndex);
2083
+ const docObject = this._getDocObject();
2084
+ if (nodePosition == null || skeleton == null || docObject == null) return;
2085
+ if (isInTableCell(nodePosition)) return;
2086
+ const positionWithIsBack = {
2087
+ ...nodePosition,
2088
+ isBack
2089
+ };
2090
+ const { cursorList, contentBoxPointGroup } = new _univerjs_docs_ui.NodePositionConvertToCursor(docObject.document.getOffsetConfig(), skeleton).getRangePointData(positionWithIsBack, positionWithIsBack);
2091
+ const { startOffset } = (_getOneTextSelectionR = (0, _univerjs_docs_ui.getOneTextSelectionRange)(cursorList)) !== null && _getOneTextSelectionR !== void 0 ? _getOneTextSelectionR : {};
2092
+ if (startOffset == null) return;
2093
+ return {
2094
+ offset: startOffset,
2095
+ contentBoxPointGroup,
2096
+ segmentId,
2097
+ segmentPage: segmentPageIndex
2098
+ };
2099
+ }
2100
+ _getDrawingAnchor(drawing, object) {
2101
+ var _this$_renderManagerS2, _glyphAnchor$parent, _column$lines$find, _column$parent, _getOneTextSelectionR2;
2102
+ const currentRender = this._renderManagerService.getRenderById(drawing.unitId);
2103
+ const skeleton = currentRender === null || currentRender === void 0 ? void 0 : currentRender.with(_univerjs_docs.DocSkeletonManagerService).getSkeleton();
2104
+ const skeletonData = skeleton === null || skeleton === void 0 ? void 0 : skeleton.getSkeletonData();
2105
+ if (skeletonData == null || currentRender == null) return;
2106
+ const { pages, skeHeaders, skeFooters } = skeletonData;
2107
+ const { mainComponent, scene } = currentRender;
2108
+ const documentComponent = mainComponent;
2109
+ const activeViewport = scene.getViewports()[0];
2110
+ const { pageLayoutType = _univerjs_engine_render.PageLayoutType.VERTICAL, pageMarginLeft, pageMarginTop, docsLeft, docsTop } = documentComponent.getOffsetConfig();
2111
+ const { left, top, angle } = object;
2112
+ let { width, height } = object;
2113
+ const { positionV, positionH } = drawing.docTransform;
2114
+ const { width: maxWidth, height: maxHeight } = this._getPageContentSize(drawing);
2115
+ width = Math.min(width, maxWidth);
2116
+ height = Math.min(height, maxHeight);
2117
+ let glyphAnchor = null;
2118
+ let segmentId = "";
2119
+ let segmentPage = -1;
2120
+ const isBack = false;
2121
+ const docTransform = {
2122
+ ...drawing.docTransform,
2123
+ size: {
2124
+ width,
2125
+ height
2126
+ },
2127
+ angle
2128
+ };
2129
+ const { x, y } = scene.getViewportScrollXY(activeViewport);
2130
+ const coord = this._getTransformCoordForDocumentOffset(documentComponent, activeViewport, left - x, top - y);
2131
+ if (coord == null) return;
2132
+ const docSelectionRenderService = (_this$_renderManagerS2 = this._renderManagerService.getRenderById(drawing.unitId)) === null || _this$_renderManagerS2 === void 0 ? void 0 : _this$_renderManagerS2.with(_univerjs_docs_ui.DocSelectionRenderService);
2133
+ if (docSelectionRenderService == null) return;
2134
+ const nodeInfo = skeleton === null || skeleton === void 0 ? void 0 : skeleton.findNodeByCoord(coord, pageLayoutType, pageMarginLeft, pageMarginTop, {
2135
+ strict: false,
2136
+ segmentId: docSelectionRenderService.getSegment(),
2137
+ segmentPage: docSelectionRenderService.getSegmentPage()
2138
+ });
2139
+ if (nodeInfo) {
2140
+ const { node, segmentPage: segmentPageIndex, segmentId: nodeSegmentId } = nodeInfo;
2141
+ glyphAnchor = node;
2142
+ segmentPage = segmentPageIndex;
2143
+ segmentId = nodeSegmentId;
2144
+ }
2145
+ if (glyphAnchor == null) return;
2146
+ const line = (_glyphAnchor$parent = glyphAnchor.parent) === null || _glyphAnchor$parent === void 0 ? void 0 : _glyphAnchor$parent.parent;
2147
+ const column = line === null || line === void 0 ? void 0 : line.parent;
2148
+ const paragraphStartLine = (_column$lines$find = column === null || column === void 0 ? void 0 : column.lines.find((l) => l.paragraphIndex === (line === null || line === void 0 ? void 0 : line.paragraphIndex) && l.paragraphStart)) !== null && _column$lines$find !== void 0 ? _column$lines$find : column === null || column === void 0 ? void 0 : column.lines[0];
2149
+ const page = column === null || column === void 0 || (_column$parent = column.parent) === null || _column$parent === void 0 ? void 0 : _column$parent.parent;
2150
+ if (line == null || column == null || paragraphStartLine == null || page == null) return;
2151
+ this._liquid.reset();
2152
+ const pageType = page.type;
2153
+ for (const p of pages) {
2154
+ const { headerId, footerId, pageHeight, pageWidth, marginLeft, marginBottom } = p;
2155
+ const pIndex = pages.indexOf(p);
2156
+ if (segmentPage > -1 && pIndex === segmentPage) {
2157
+ switch (pageType) {
2158
+ case _univerjs_engine_render.DocumentSkeletonPageType.HEADER: {
2159
+ var _skeHeaders$get;
2160
+ const headerSke = (_skeHeaders$get = skeHeaders.get(headerId)) === null || _skeHeaders$get === void 0 ? void 0 : _skeHeaders$get.get(pageWidth);
2161
+ if (headerSke) this._liquid.translatePagePadding({
2162
+ marginTop: headerSke.marginTop,
2163
+ marginLeft
2164
+ });
2165
+ else throw new Error("header skeleton not found");
2166
+ break;
2167
+ }
2168
+ case _univerjs_engine_render.DocumentSkeletonPageType.FOOTER: {
2169
+ var _skeFooters$get;
2170
+ const footerSke = (_skeFooters$get = skeFooters.get(footerId)) === null || _skeFooters$get === void 0 ? void 0 : _skeFooters$get.get(pageWidth);
2171
+ if (footerSke) this._liquid.translatePagePadding({
2172
+ marginTop: pageHeight - marginBottom + footerSke.marginTop,
2173
+ marginLeft
2174
+ });
2175
+ else throw new Error("footer skeleton not found");
2176
+ break;
2177
+ }
2178
+ }
2179
+ break;
2180
+ }
2181
+ this._liquid.translatePagePadding(p);
2182
+ if (p === page) break;
2183
+ this._liquid.restorePagePadding(p);
2184
+ this._liquid.translatePage(p, pageLayoutType, pageMarginLeft, pageMarginTop);
2185
+ }
2186
+ if (positionV.relativeFrom === _univerjs_core.ObjectRelativeFromV.LINE) glyphAnchor = line.divides[0].glyphGroup[0];
2187
+ else {
2188
+ var _paragraphStartLine$d, _paragraphStartLine$d2;
2189
+ glyphAnchor = (_paragraphStartLine$d = (_paragraphStartLine$d2 = paragraphStartLine.divides) === null || _paragraphStartLine$d2 === void 0 || (_paragraphStartLine$d2 = _paragraphStartLine$d2[0]) === null || _paragraphStartLine$d2 === void 0 || (_paragraphStartLine$d2 = _paragraphStartLine$d2.glyphGroup) === null || _paragraphStartLine$d2 === void 0 ? void 0 : _paragraphStartLine$d2[0]) !== null && _paragraphStartLine$d !== void 0 ? _paragraphStartLine$d : glyphAnchor;
2190
+ }
2191
+ docTransform.positionH = {
2192
+ relativeFrom: positionH.relativeFrom,
2193
+ posOffset: left - this._liquid.x - docsLeft
2194
+ };
2195
+ switch (positionH.relativeFrom) {
2196
+ case _univerjs_core.ObjectRelativeFromH.MARGIN:
2197
+ docTransform.positionH.posOffset = left - this._liquid.x - docsLeft - page.marginLeft;
2198
+ break;
2199
+ case _univerjs_core.ObjectRelativeFromH.COLUMN:
2200
+ docTransform.positionH.posOffset = left - this._liquid.x - docsLeft - column.left;
2201
+ break;
2202
+ }
2203
+ docTransform.positionV = {
2204
+ relativeFrom: positionV.relativeFrom,
2205
+ posOffset: top - this._liquid.y - docsTop
2206
+ };
2207
+ switch (positionV.relativeFrom) {
2208
+ case _univerjs_core.ObjectRelativeFromV.PAGE:
2209
+ docTransform.positionV.posOffset = top - this._liquid.y - docsTop - page.marginTop;
2210
+ break;
2211
+ case _univerjs_core.ObjectRelativeFromV.LINE:
2212
+ docTransform.positionV.posOffset = top - this._liquid.y - docsTop - line.top;
2213
+ break;
2214
+ case _univerjs_core.ObjectRelativeFromV.PARAGRAPH:
2215
+ docTransform.positionV.posOffset = top - this._liquid.y - docsTop - paragraphStartLine.top;
2216
+ break;
2217
+ }
2218
+ if (glyphAnchor == null) return;
2219
+ const nodePosition = skeleton === null || skeleton === void 0 ? void 0 : skeleton.findPositionByGlyph(glyphAnchor, segmentPage);
2220
+ const docObject = this._getDocObject();
2221
+ if (nodePosition == null || skeleton == null || docObject == null) return;
2222
+ if (isInTableCell(nodePosition)) return;
2223
+ const positionWithIsBack = {
2224
+ ...nodePosition,
2225
+ isBack
2226
+ };
2227
+ const { cursorList } = new _univerjs_docs_ui.NodePositionConvertToCursor(docObject.document.getOffsetConfig(), skeleton).getRangePointData(positionWithIsBack, positionWithIsBack);
2228
+ const { startOffset } = (_getOneTextSelectionR2 = (0, _univerjs_docs_ui.getOneTextSelectionRange)(cursorList)) !== null && _getOneTextSelectionR2 !== void 0 ? _getOneTextSelectionR2 : {};
2229
+ if (startOffset == null) return;
2230
+ return {
2231
+ offset: startOffset,
2232
+ docTransform,
2233
+ segmentId,
2234
+ segmentPage
2235
+ };
2236
+ }
2237
+ _updateDrawingSize(drawingCache, object) {
2238
+ const drawings = [];
2239
+ const { drawing, width: oldWidth, height: oldHeight, angle: oldAngle } = drawingCache;
2240
+ const { unitId, subUnitId } = drawing;
2241
+ let { width, height, angle } = object;
2242
+ const { width: maxWidth, height: maxHeight } = this._getPageContentSize(drawing);
2243
+ width = Math.min(maxWidth, width);
2244
+ height = Math.min(maxHeight, height);
2245
+ if (width !== oldWidth || height !== oldHeight) drawings.push({
2246
+ drawingId: drawing.drawingId,
2247
+ key: "size",
2248
+ value: {
2249
+ width,
2250
+ height
2251
+ }
2252
+ });
2253
+ if (angle !== oldAngle) drawings.push({
2254
+ drawingId: drawing.drawingId,
2255
+ key: "angle",
2256
+ value: angle
2257
+ });
2258
+ if (drawings.length > 0 && unitId && subUnitId) this._commandService.executeCommand(UpdateDrawingDocTransformCommand.id, {
2259
+ unitId,
2260
+ subUnitId,
2261
+ drawings
2262
+ });
2263
+ }
2264
+ _moveInlineDrawing(drawing, offsetX, offsetY) {
2265
+ const anchor = this._getInlineDrawingAnchor(drawing, offsetX, offsetY);
2266
+ const { offset, segmentId, segmentPage } = anchor !== null && anchor !== void 0 ? anchor : {};
2267
+ return this._commandService.executeCommand(IMoveInlineDrawingCommand.id, {
2268
+ unitId: drawing.unitId,
2269
+ subUnitId: drawing.unitId,
2270
+ drawing,
2271
+ offset,
2272
+ segmentId,
2273
+ segmentPage,
2274
+ needRefreshDrawings: offset == null
2275
+ });
2276
+ }
2277
+ _limitDrawingInPage(drawing, object) {
2278
+ const currentRender = this._renderManagerService.getRenderById(drawing.unitId);
2279
+ const { left, top, width, height, angle } = object;
2280
+ const skeleton = currentRender === null || currentRender === void 0 ? void 0 : currentRender.with(_univerjs_docs.DocSkeletonManagerService).getSkeleton();
2281
+ const skeletonData = skeleton === null || skeleton === void 0 ? void 0 : skeleton.getSkeletonData();
2282
+ const { pages } = skeletonData !== null && skeletonData !== void 0 ? skeletonData : {};
2283
+ if (skeletonData == null || currentRender == null || pages == null) return {
2284
+ left,
2285
+ top,
2286
+ width,
2287
+ height,
2288
+ angle
2289
+ };
2290
+ const { mainComponent } = currentRender;
2291
+ const { top: docsTop, pageLayoutType, pageMarginLeft, pageMarginTop } = mainComponent;
2292
+ let newTop = top;
2293
+ this._liquid.reset();
2294
+ for (const page of pages) {
2295
+ const { marginBottom, pageHeight } = page;
2296
+ const nextPage = pages[pages.indexOf(page) + 1];
2297
+ if (nextPage == null) continue;
2298
+ if (_univerjs_core.Tools.hasIntersectionBetweenTwoRanges(top, top + height, this._liquid.y + docsTop + pageHeight - marginBottom, this._liquid.y + docsTop + pageHeight + pageMarginTop + nextPage.marginTop)) if (top + height / 2 < this._liquid.y + docsTop + pageHeight + pageMarginTop / 2) newTop = Math.min(top, this._liquid.y + docsTop + pageHeight - marginBottom - height);
2299
+ else newTop = Math.max(top, this._liquid.y + docsTop + pageHeight + pageMarginTop + nextPage.marginTop);
2300
+ this._liquid.translatePage(page, pageLayoutType, pageMarginLeft, pageMarginTop);
2301
+ }
2302
+ return {
2303
+ left,
2304
+ top: newTop,
2305
+ width,
2306
+ height,
2307
+ angle
2308
+ };
2309
+ }
2310
+ _nonInlineDrawingTransform(drawing, object, isMoving = false) {
2311
+ const objectPosition = drawing.isMultiTransform === _univerjs_core.BooleanNumber.TRUE ? object : this._limitDrawingInPage(drawing, object);
2312
+ if (isMoving && objectPosition.top !== object.top) return;
2313
+ const anchor = this._getDrawingAnchor(drawing, objectPosition);
2314
+ const { offset, docTransform, segmentId, segmentPage } = anchor !== null && anchor !== void 0 ? anchor : {};
2315
+ if (offset == null || docTransform == null) return this._updateMultipleDrawingDocTransform(new Map([[drawing.drawingId, object]]));
2316
+ return this._commandService.executeCommand(ITransformNonInlineDrawingCommand.id, {
2317
+ unitId: drawing.unitId,
2318
+ subUnitId: drawing.unitId,
2319
+ drawing,
2320
+ offset,
2321
+ docTransform,
2322
+ segmentId,
2323
+ segmentPage
2324
+ });
2325
+ }
2326
+ _getSceneAndTransformerByDrawingSearch(unitId) {
2327
+ if (unitId == null) return;
2328
+ const renderObject = this._renderManagerService.getRenderById(unitId);
2329
+ const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
2330
+ if (scene == null) return;
2331
+ return {
2332
+ scene,
2333
+ transformer: scene.getTransformerByCreate()
2334
+ };
2335
+ }
2336
+ _getTransformCoordForDocumentOffset(document, viewport, evtOffsetX, evtOffsetY) {
2337
+ const { documentTransform } = document.getOffsetConfig();
2338
+ const originCoord = viewport.transformVector2SceneCoord(_univerjs_engine_render.Vector2.FromArray([evtOffsetX, evtOffsetY]));
2339
+ if (!originCoord) return;
2340
+ return documentTransform.clone().invert().applyPoint(originCoord);
2341
+ }
2342
+ _createOrUpdateInlineAnchor(unitId, pointsGroup) {
2343
+ const currentRender = this._renderManagerService.getRenderById(unitId);
2344
+ if (currentRender == null) return;
2345
+ const { mainComponent, scene } = currentRender;
2346
+ const { docsLeft, docsTop } = mainComponent.getOffsetConfig();
2347
+ const { left: boundingLeft, top: boundingTop, height } = (0, _univerjs_docs_ui.getAnchorBounding)(pointsGroup);
2348
+ const left = boundingLeft + docsLeft;
2349
+ const top = boundingTop + docsTop;
2350
+ if (this._anchorShape) {
2351
+ this._anchorShape.transformByState({
2352
+ left,
2353
+ top,
2354
+ height
2355
+ });
2356
+ this._anchorShape.show();
2357
+ return;
2358
+ }
2359
+ const anchor = new _univerjs_engine_render.Rect(INLINE_DRAWING_ANCHOR_KEY_PREFIX + (0, _univerjs_core.generateRandomId)(6), {
2360
+ left,
2361
+ top,
2362
+ height,
2363
+ strokeWidth: 2,
2364
+ stroke: (0, _univerjs_engine_render.getColor)(_univerjs_core.COLORS.darkgray, 1),
2365
+ evented: false
2366
+ });
2367
+ this._anchorShape = anchor;
2368
+ scene.addObject(anchor, _univerjs_docs_ui.TEXT_RANGE_LAYER_INDEX);
2369
+ }
2370
+ _getDocObject() {
2371
+ return (0, _univerjs_docs_ui.getDocObject)(this._univerInstanceService, this._renderManagerService);
2372
+ }
2373
+ _getPageContentSize(drawing) {
2374
+ const currentRender = this._renderManagerService.getRenderById(drawing.unitId);
2375
+ const skeleton = currentRender === null || currentRender === void 0 ? void 0 : currentRender.with(_univerjs_docs.DocSkeletonManagerService).getSkeleton();
2376
+ const MAX_WIDTH = 500;
2377
+ const MAX_HEIGHT = 500;
2378
+ const skeletonData = skeleton === null || skeleton === void 0 ? void 0 : skeleton.getSkeletonData();
2379
+ if (skeletonData == null || currentRender == null) return {
2380
+ width: MAX_WIDTH,
2381
+ height: MAX_HEIGHT
2382
+ };
2383
+ const { pages } = skeletonData;
2384
+ let page = null;
2385
+ for (const p of pages) {
2386
+ const { skeDrawings } = p;
2387
+ if (skeDrawings.has(drawing.drawingId)) {
2388
+ page = p;
2389
+ break;
2390
+ }
2391
+ }
2392
+ if (page) {
2393
+ const { pageWidth, pageHeight, marginLeft, marginBottom, marginRight, marginTop } = page;
2394
+ return {
2395
+ width: Math.max(MAX_WIDTH, pageWidth - marginLeft - marginRight),
2396
+ height: Math.max(MAX_HEIGHT, pageHeight - marginTop - marginBottom)
2397
+ };
2398
+ } else return {
2399
+ width: MAX_WIDTH,
2400
+ height: MAX_HEIGHT
2401
+ };
2402
+ }
2403
+ };
2404
+ DocDrawingTransformerController = __decorate([
2405
+ __decorateParam(0, _univerjs_core.ICommandService),
2406
+ __decorateParam(1, _univerjs_core.IUniverInstanceService),
2407
+ __decorateParam(2, _univerjs_drawing.IDrawingManagerService),
2408
+ __decorateParam(3, _univerjs_engine_render.IRenderManagerService)
2409
+ ], DocDrawingTransformerController);
2410
+
2411
+ //#endregion
2412
+ //#region src/menu/schema.ts
2413
+ const menuSchema = { [_univerjs_ui.RibbonInsertGroup.MEDIA]: { [DOCS_IMAGE_MENU_ID]: {
2414
+ order: 0,
2415
+ menuItemFactory: ImageMenuFactory,
2416
+ [IMAGE_MENU_UPLOAD_FLOAT_ID]: {
2417
+ order: 0,
2418
+ menuItemFactory: UploadFloatImageMenuFactory
2419
+ }
2420
+ } } };
2421
+
2422
+ //#endregion
2423
+ //#region src/views/doc-image-panel/DocDrawingPosition.tsx
2424
+ const MIN_OFFSET = -1e3;
2425
+ const MAX_OFFSET = 1e3;
2426
+ const DocDrawingPosition = (props) => {
2427
+ const commandService = (0, _univerjs_ui.useDependency)(_univerjs_core.ICommandService);
2428
+ const localeService = (0, _univerjs_ui.useDependency)(_univerjs_core.LocaleService);
2429
+ const drawingManagerService = (0, _univerjs_ui.useDependency)(_univerjs_drawing.IDrawingManagerService);
2430
+ const renderManagerService = (0, _univerjs_ui.useDependency)(_univerjs_engine_render.IRenderManagerService);
2431
+ const univerInstanceService = (0, _univerjs_ui.useDependency)(_univerjs_core.IUniverInstanceService);
2432
+ const { drawings } = props;
2433
+ const drawingParam = drawings[0];
2434
+ if (drawingParam == null) return;
2435
+ const { unitId } = drawingParam;
2436
+ const documentDataModel = univerInstanceService.getUniverDocInstance(unitId);
2437
+ const documentFlavor = documentDataModel === null || documentDataModel === void 0 ? void 0 : documentDataModel.getSnapshot().documentStyle.documentFlavor;
2438
+ const renderObject = renderManagerService.getRenderById(unitId);
2439
+ const scene = renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene;
2440
+ if (scene == null) return;
2441
+ const transformer = scene.getTransformerByCreate();
2442
+ const HORIZONTAL_RELATIVE_FROM = [
2443
+ {
2444
+ label: localeService.t("image-position.column"),
2445
+ value: String(_univerjs_core.ObjectRelativeFromH.COLUMN)
2446
+ },
2447
+ {
2448
+ label: localeService.t("image-position.page"),
2449
+ value: String(_univerjs_core.ObjectRelativeFromH.PAGE)
2450
+ },
2451
+ {
2452
+ label: localeService.t("image-position.margin"),
2453
+ value: String(_univerjs_core.ObjectRelativeFromH.MARGIN)
2454
+ }
2455
+ ];
2456
+ const VERTICAL_RELATIVE_FROM = [
2457
+ {
2458
+ label: localeService.t("image-position.line"),
2459
+ value: String(_univerjs_core.ObjectRelativeFromV.LINE),
2460
+ disabled: documentFlavor === _univerjs_core.DocumentFlavor.MODERN
2461
+ },
2462
+ {
2463
+ label: localeService.t("image-position.page"),
2464
+ value: String(_univerjs_core.ObjectRelativeFromV.PAGE),
2465
+ disabled: documentFlavor === _univerjs_core.DocumentFlavor.MODERN
2466
+ },
2467
+ {
2468
+ label: localeService.t("image-position.margin"),
2469
+ value: String(_univerjs_core.ObjectRelativeFromV.MARGIN),
2470
+ disabled: documentFlavor === _univerjs_core.DocumentFlavor.MODERN
2471
+ },
2472
+ {
2473
+ label: localeService.t("image-position.paragraph"),
2474
+ value: String(_univerjs_core.ObjectRelativeFromV.PARAGRAPH)
2475
+ }
2476
+ ];
2477
+ const [disabled, setDisabled] = (0, react.useState)(true);
2478
+ const [hPosition, setHPosition] = (0, react.useState)({
2479
+ relativeFrom: _univerjs_core.ObjectRelativeFromH.PAGE,
2480
+ posOffset: 0
2481
+ });
2482
+ const [vPosition, setVPosition] = (0, react.useState)({
2483
+ relativeFrom: _univerjs_core.ObjectRelativeFromV.PAGE,
2484
+ posOffset: 0
2485
+ });
2486
+ const [followTextMove, setFollowTextMove] = (0, react.useState)(true);
2487
+ const [showPanel, setShowPanel] = (0, react.useState)(true);
2488
+ function handlePositionChange(direction, value) {
2489
+ var _renderManagerService;
2490
+ if (direction === "positionH") setHPosition(value);
2491
+ else setVPosition(value);
2492
+ const focusDrawings = drawingManagerService.getFocusDrawings();
2493
+ if (focusDrawings.length === 0) return;
2494
+ const drawings = focusDrawings.map((drawing) => {
2495
+ return {
2496
+ unitId: drawing.unitId,
2497
+ subUnitId: drawing.subUnitId,
2498
+ drawingId: drawing.drawingId
2499
+ };
2500
+ });
2501
+ commandService.executeCommand(UpdateDrawingDocTransformCommand.id, {
2502
+ unitId: focusDrawings[0].unitId,
2503
+ subUnitId: focusDrawings[0].unitId,
2504
+ drawings: drawings.map((drawing) => ({
2505
+ drawingId: drawing.drawingId,
2506
+ key: direction,
2507
+ value
2508
+ }))
2509
+ });
2510
+ const docSelectionRenderService = (_renderManagerService = renderManagerService.getRenderById(unitId)) === null || _renderManagerService === void 0 ? void 0 : _renderManagerService.with(_univerjs_docs_ui.DocSelectionRenderService);
2511
+ if (docSelectionRenderService) docSelectionRenderService.blur();
2512
+ transformer.refreshControls();
2513
+ }
2514
+ function handleHorizontalRelativeFromChange(value) {
2515
+ var _renderManagerService2;
2516
+ const prevRelativeFrom = hPosition.relativeFrom;
2517
+ const prevPosOffset = hPosition.posOffset;
2518
+ const relativeFrom = Number(value);
2519
+ if (prevRelativeFrom === relativeFrom) return;
2520
+ const focusDrawings = drawingManagerService.getFocusDrawings();
2521
+ if (focusDrawings.length === 0) return;
2522
+ const drawingId = focusDrawings[0].drawingId;
2523
+ const unitId = focusDrawings[0].unitId;
2524
+ let drawing = null;
2525
+ let pageMarginLeft = 0;
2526
+ const skeleton = (_renderManagerService2 = renderManagerService.getRenderById(unitId)) === null || _renderManagerService2 === void 0 ? void 0 : _renderManagerService2.with(_univerjs_docs.DocSkeletonManagerService).getSkeleton();
2527
+ const skeletonData = skeleton === null || skeleton === void 0 ? void 0 : skeleton.getSkeletonData();
2528
+ if (skeletonData == null) return;
2529
+ const { pages, skeHeaders, skeFooters } = skeletonData;
2530
+ for (const page of pages) {
2531
+ var _skeHeaders$get, _skeFooters$get;
2532
+ const { marginLeft, skeDrawings, headerId, footerId, pageWidth } = page;
2533
+ if (skeDrawings.has(drawingId)) {
2534
+ drawing = skeDrawings.get(drawingId);
2535
+ pageMarginLeft = marginLeft;
2536
+ break;
2537
+ }
2538
+ const headerPage = (_skeHeaders$get = skeHeaders.get(headerId)) === null || _skeHeaders$get === void 0 ? void 0 : _skeHeaders$get.get(pageWidth);
2539
+ if (headerPage === null || headerPage === void 0 ? void 0 : headerPage.skeDrawings.has(drawingId)) {
2540
+ drawing = headerPage === null || headerPage === void 0 ? void 0 : headerPage.skeDrawings.get(drawingId);
2541
+ pageMarginLeft = marginLeft;
2542
+ break;
2543
+ }
2544
+ const footerPage = (_skeFooters$get = skeFooters.get(footerId)) === null || _skeFooters$get === void 0 ? void 0 : _skeFooters$get.get(pageWidth);
2545
+ if (footerPage === null || footerPage === void 0 ? void 0 : footerPage.skeDrawings.has(drawingId)) {
2546
+ drawing = footerPage === null || footerPage === void 0 ? void 0 : footerPage.skeDrawings.get(drawingId);
2547
+ pageMarginLeft = marginLeft;
2548
+ break;
2549
+ }
2550
+ }
2551
+ if (drawing == null) return;
2552
+ let delta = 0;
2553
+ if (prevRelativeFrom === _univerjs_core.ObjectRelativeFromH.COLUMN) delta -= drawing.columnLeft;
2554
+ else if (prevRelativeFrom === _univerjs_core.ObjectRelativeFromH.MARGIN) delta -= pageMarginLeft;
2555
+ if (relativeFrom === _univerjs_core.ObjectRelativeFromH.COLUMN) delta += drawing.columnLeft;
2556
+ else if (relativeFrom === _univerjs_core.ObjectRelativeFromH.MARGIN) delta += pageMarginLeft;
2557
+ else if (relativeFrom === _univerjs_core.ObjectRelativeFromH.PAGE) {}
2558
+ handlePositionChange("positionH", {
2559
+ relativeFrom,
2560
+ posOffset: (prevPosOffset !== null && prevPosOffset !== void 0 ? prevPosOffset : 0) - delta
2561
+ });
2562
+ }
2563
+ function handleVerticalRelativeFromChange(value) {
2564
+ var _renderManagerService3, _renderManagerService4, _documentDataModel$ge, _glyph$parent, _column$parent;
2565
+ const prevRelativeFrom = vPosition.relativeFrom;
2566
+ const prevPosOffset = vPosition.posOffset;
2567
+ const relativeFrom = Number(value);
2568
+ if (prevRelativeFrom === relativeFrom) return;
2569
+ const focusDrawings = drawingManagerService.getFocusDrawings();
2570
+ if (focusDrawings.length === 0) return;
2571
+ const { drawingId, unitId } = focusDrawings[0];
2572
+ const documentDataModel = univerInstanceService.getUniverDocInstance(unitId);
2573
+ const skeleton = (_renderManagerService3 = renderManagerService.getRenderById(unitId)) === null || _renderManagerService3 === void 0 ? void 0 : _renderManagerService3.with(_univerjs_docs.DocSkeletonManagerService).getSkeleton();
2574
+ const docSelectionRenderService = (_renderManagerService4 = renderManagerService.getRenderById(unitId)) === null || _renderManagerService4 === void 0 ? void 0 : _renderManagerService4.with(_univerjs_docs_ui.DocSelectionRenderService);
2575
+ const segmentId = docSelectionRenderService === null || docSelectionRenderService === void 0 ? void 0 : docSelectionRenderService.getSegment();
2576
+ const segmentPage = docSelectionRenderService === null || docSelectionRenderService === void 0 ? void 0 : docSelectionRenderService.getSegmentPage();
2577
+ const drawing = documentDataModel === null || documentDataModel === void 0 || (_documentDataModel$ge = documentDataModel.getSelfOrHeaderFooterModel(segmentId).getBody()) === null || _documentDataModel$ge === void 0 || (_documentDataModel$ge = _documentDataModel$ge.customBlocks) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge.find((c) => c.blockId === drawingId);
2578
+ if (drawing == null || skeleton == null || docSelectionRenderService == null) return;
2579
+ const { startIndex } = drawing;
2580
+ const glyph = skeleton.findNodeByCharIndex(startIndex, segmentId, segmentPage);
2581
+ const line = glyph === null || glyph === void 0 || (_glyph$parent = glyph.parent) === null || _glyph$parent === void 0 ? void 0 : _glyph$parent.parent;
2582
+ const column = line === null || line === void 0 ? void 0 : line.parent;
2583
+ const paragraphStartLine = column === null || column === void 0 ? void 0 : column.lines.find((l) => l.paragraphIndex === (line === null || line === void 0 ? void 0 : line.paragraphIndex) && l.paragraphStart);
2584
+ const page = column === null || column === void 0 || (_column$parent = column.parent) === null || _column$parent === void 0 ? void 0 : _column$parent.parent;
2585
+ if (glyph == null || line == null || paragraphStartLine == null || column == null || page == null) return;
2586
+ let delta = 0;
2587
+ if (prevRelativeFrom === _univerjs_core.ObjectRelativeFromV.PARAGRAPH) delta -= paragraphStartLine.top;
2588
+ else if (prevRelativeFrom === _univerjs_core.ObjectRelativeFromV.LINE) delta -= line.top;
2589
+ else if (prevRelativeFrom === _univerjs_core.ObjectRelativeFromV.PAGE) delta += page.marginTop;
2590
+ if (relativeFrom === _univerjs_core.ObjectRelativeFromV.PARAGRAPH) delta += paragraphStartLine.top;
2591
+ else if (relativeFrom === _univerjs_core.ObjectRelativeFromV.LINE) delta += line.top;
2592
+ else if (relativeFrom === _univerjs_core.ObjectRelativeFromV.PAGE) delta -= page.marginTop;
2593
+ handlePositionChange("positionV", {
2594
+ relativeFrom,
2595
+ posOffset: (prevPosOffset !== null && prevPosOffset !== void 0 ? prevPosOffset : 0) - delta
2596
+ });
2597
+ }
2598
+ function updateState(drawingParam) {
2599
+ var _snapshot$drawings;
2600
+ const snapshot = documentDataModel === null || documentDataModel === void 0 ? void 0 : documentDataModel.getSnapshot();
2601
+ const drawing = snapshot === null || snapshot === void 0 || (_snapshot$drawings = snapshot.drawings) === null || _snapshot$drawings === void 0 ? void 0 : _snapshot$drawings[drawingParam.drawingId];
2602
+ if (drawing == null) return;
2603
+ const { layoutType } = drawing;
2604
+ const { positionH, positionV } = drawing.docTransform;
2605
+ setHPosition(positionH);
2606
+ setVPosition(positionV);
2607
+ setDisabled(layoutType === _univerjs_core.PositionedObjectLayoutType.INLINE);
2608
+ setFollowTextMove(positionV.relativeFrom === _univerjs_core.ObjectRelativeFromV.PARAGRAPH || positionV.relativeFrom === _univerjs_core.ObjectRelativeFromV.LINE);
2609
+ }
2610
+ function updateFocusDrawingState() {
2611
+ const focusDrawings = drawingManagerService.getFocusDrawings();
2612
+ if (focusDrawings.length === 0) return;
2613
+ updateState(focusDrawings[0]);
2614
+ }
2615
+ function handleFollowTextMoveCheck(val) {
2616
+ setFollowTextMove(val);
2617
+ handleVerticalRelativeFromChange(val ? String(_univerjs_core.ObjectRelativeFromV.PARAGRAPH) : String(_univerjs_core.ObjectRelativeFromV.PAGE));
2618
+ }
2619
+ (0, react.useEffect)(() => {
2620
+ updateFocusDrawingState();
2621
+ const subscription = drawingManagerService.focus$.subscribe((drawingParams) => {
2622
+ if (drawingParams.length === 0) {
2623
+ setShowPanel(false);
2624
+ return;
2625
+ }
2626
+ setShowPanel(true);
2627
+ updateState(drawingParams[0]);
2628
+ });
2629
+ const mutationListener = commandService.onCommandExecuted(async (command) => {
2630
+ if (command.id === _univerjs_docs.RichTextEditingMutation.id) updateFocusDrawingState();
2631
+ });
2632
+ return () => {
2633
+ subscription.unsubscribe();
2634
+ mutationListener.dispose();
2635
+ };
2636
+ }, []);
2637
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2638
+ className: (0, _univerjs_design.clsx)("univer-grid univer-gap-2 univer-py-2 univer-text-gray-400", { "univer-hidden": !showPanel }),
2639
+ children: [
2640
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("header", {
2641
+ className: "univer-text-gray-600 dark:!univer-text-gray-200",
2642
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: localeService.t("image-position.title") })
2643
+ }),
2644
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2645
+ className: "univer-text-gray-600 dark:!univer-text-gray-200",
2646
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: localeService.t("image-position.horizontal") })
2647
+ }),
2648
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2649
+ className: "univer-grid univer-grid-cols-2 univer-gap-2 [&>div]:univer-grid [&>div]:univer-gap-2",
2650
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: localeService.t("image-position.absolutePosition") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.InputNumber, {
2651
+ min: MIN_OFFSET,
2652
+ max: MAX_OFFSET,
2653
+ precision: 1,
2654
+ disabled,
2655
+ value: hPosition.posOffset,
2656
+ onChange: (val) => {
2657
+ handlePositionChange("positionH", {
2658
+ relativeFrom: hPosition.relativeFrom,
2659
+ posOffset: val
2660
+ });
2661
+ }
2662
+ })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: localeService.t("image-position.toTheRightOf") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Select, {
2663
+ value: String(hPosition.relativeFrom),
2664
+ disabled,
2665
+ options: HORIZONTAL_RELATIVE_FROM,
2666
+ onChange: handleHorizontalRelativeFromChange
2667
+ })] })]
2668
+ }),
2669
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2670
+ className: "univer-text-gray-600 dark:!univer-text-gray-200",
2671
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: localeService.t("image-position.vertical") })
2672
+ }),
2673
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2674
+ className: "univer-grid univer-grid-cols-2 univer-gap-2 [&>div]:univer-grid [&>div]:univer-gap-2",
2675
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: localeService.t("image-position.absolutePosition") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.InputNumber, {
2676
+ min: MIN_OFFSET,
2677
+ max: MAX_OFFSET,
2678
+ precision: 1,
2679
+ disabled,
2680
+ value: vPosition.posOffset,
2681
+ onChange: (val) => {
2682
+ handlePositionChange("positionV", {
2683
+ relativeFrom: vPosition.relativeFrom,
2684
+ posOffset: val
2685
+ });
2686
+ }
2687
+ })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: localeService.t("image-position.bellow") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Select, {
2688
+ disabled,
2689
+ value: String(vPosition.relativeFrom),
2690
+ options: VERTICAL_RELATIVE_FROM,
2691
+ onChange: handleVerticalRelativeFromChange
2692
+ })] })]
2693
+ }),
2694
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2695
+ className: "univer-text-gray-600 dark:!univer-text-gray-200",
2696
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: localeService.t("image-position.options") })
2697
+ }),
2698
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Checkbox, {
2699
+ disabled,
2700
+ checked: followTextMove,
2701
+ onChange: handleFollowTextMoveCheck,
2702
+ children: localeService.t("image-position.moveObjectWithText")
2703
+ }) })
2704
+ ]
2705
+ });
2706
+ };
2707
+
2708
+ //#endregion
2709
+ //#region src/views/doc-image-panel/DocDrawingTextWrap.tsx
2710
+ const MIN_MARGIN = 0;
2711
+ const MAX_MARGIN = 100;
2712
+ const DocDrawingTextWrap = (props) => {
2713
+ const commandService = (0, _univerjs_ui.useDependency)(_univerjs_core.ICommandService);
2714
+ const localeService = (0, _univerjs_ui.useDependency)(_univerjs_core.LocaleService);
2715
+ const drawingManagerService = (0, _univerjs_ui.useDependency)(_univerjs_drawing.IDrawingManagerService);
2716
+ const renderManagerService = (0, _univerjs_ui.useDependency)(_univerjs_engine_render.IRenderManagerService);
2717
+ const univerInstanceService = (0, _univerjs_ui.useDependency)(_univerjs_core.IUniverInstanceService);
2718
+ const { drawings } = props;
2719
+ const drawingParam = drawings[0];
2720
+ if (drawingParam == null) return null;
2721
+ const { unitId } = drawingParam;
2722
+ const documentDataModel = univerInstanceService.getUniverDocInstance(unitId);
2723
+ const renderObject = renderManagerService.getRenderById(unitId);
2724
+ if ((renderObject === null || renderObject === void 0 ? void 0 : renderObject.scene) == null) return null;
2725
+ const [disableWrapText, setDisableWrapText] = (0, react.useState)(true);
2726
+ const [disableDistTB, setDisableDistTB] = (0, react.useState)(true);
2727
+ const [disableDistLR, setDisableDistLR] = (0, react.useState)(true);
2728
+ const [wrappingStyle, setWrappingStyle] = (0, react.useState)(TextWrappingStyle.INLINE);
2729
+ const [wrapText, setWrapText] = (0, react.useState)("");
2730
+ const [distToText, setDistToText] = (0, react.useState)({
2731
+ distT: 0,
2732
+ distL: 0,
2733
+ distB: 0,
2734
+ distR: 0
2735
+ });
2736
+ const [showPanel, setShowPanel] = (0, react.useState)(true);
2737
+ function handleWrappingStyleChange(value) {
2738
+ setWrappingStyle(value);
2739
+ const focusDrawings = drawingManagerService.getFocusDrawings();
2740
+ if (focusDrawings.length === 0) return;
2741
+ const { unitId, subUnitId } = focusDrawings[0];
2742
+ const drawings = focusDrawings.map(({ unitId, subUnitId, drawingId }) => ({
2743
+ unitId,
2744
+ subUnitId,
2745
+ drawingId
2746
+ }));
2747
+ commandService.executeCommand(UpdateDocDrawingWrappingStyleCommand.id, {
2748
+ unitId,
2749
+ subUnitId,
2750
+ drawings,
2751
+ wrappingStyle: value
2752
+ });
2753
+ }
2754
+ function handleWrapTextChange(value) {
2755
+ setWrapText(value);
2756
+ const focusDrawings = drawingManagerService.getFocusDrawings();
2757
+ if (focusDrawings.length === 0) return;
2758
+ const drawings = focusDrawings.map((drawing) => {
2759
+ return {
2760
+ unitId: drawing.unitId,
2761
+ subUnitId: drawing.subUnitId,
2762
+ drawingId: drawing.drawingId
2763
+ };
2764
+ });
2765
+ commandService.executeCommand(UpdateDocDrawingWrapTextCommand.id, {
2766
+ unitId: focusDrawings[0].unitId,
2767
+ subUnitId: focusDrawings[0].unitId,
2768
+ drawings,
2769
+ wrapText: value
2770
+ });
2771
+ }
2772
+ function handleDistToTextChange(value, direction) {
2773
+ if (value == null) return;
2774
+ setDistToText({
2775
+ ...distToText,
2776
+ [direction]: value
2777
+ });
2778
+ const focusDrawings = drawingManagerService.getFocusDrawings();
2779
+ if (focusDrawings.length === 0) return;
2780
+ const drawings = focusDrawings.map((drawing) => {
2781
+ return {
2782
+ unitId: drawing.unitId,
2783
+ subUnitId: drawing.subUnitId,
2784
+ drawingId: drawing.drawingId
2785
+ };
2786
+ });
2787
+ commandService.executeCommand(UpdateDocDrawingDistanceCommand.id, {
2788
+ unitId: focusDrawings[0].unitId,
2789
+ subUnitId: focusDrawings[0].unitId,
2790
+ drawings,
2791
+ dist: { [direction]: value }
2792
+ });
2793
+ }
2794
+ function updateFocusDrawingState() {
2795
+ const focusDrawings = drawingManagerService.getFocusDrawings();
2796
+ if (focusDrawings.length === 0) return;
2797
+ updateState(focusDrawings[0]);
2798
+ }
2799
+ function updateState(drawingParam) {
2800
+ var _documentDataModel$ge;
2801
+ const drawing = documentDataModel === null || documentDataModel === void 0 || (_documentDataModel$ge = documentDataModel.getSnapshot()) === null || _documentDataModel$ge === void 0 || (_documentDataModel$ge = _documentDataModel$ge.drawings) === null || _documentDataModel$ge === void 0 ? void 0 : _documentDataModel$ge[drawingParam.drawingId];
2802
+ if (drawing == null) return;
2803
+ const { distT = 0, distL = 0, distB = 0, distR = 0, layoutType = _univerjs_core.PositionedObjectLayoutType.INLINE, behindDoc = _univerjs_core.BooleanNumber.FALSE, wrapText = _univerjs_core.WrapTextType.BOTH_SIDES } = drawing;
2804
+ setDistToText({
2805
+ distT,
2806
+ distL,
2807
+ distB,
2808
+ distR
2809
+ });
2810
+ setWrapText(wrapText);
2811
+ setDisableWrapText(layoutType !== _univerjs_core.PositionedObjectLayoutType.WRAP_SQUARE);
2812
+ if (layoutType === _univerjs_core.PositionedObjectLayoutType.WRAP_NONE || layoutType === _univerjs_core.PositionedObjectLayoutType.INLINE) setDisableDistTB(true);
2813
+ else setDisableDistTB(false);
2814
+ if (layoutType === _univerjs_core.PositionedObjectLayoutType.WRAP_NONE || layoutType === _univerjs_core.PositionedObjectLayoutType.INLINE || layoutType === _univerjs_core.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM) setDisableDistLR(true);
2815
+ else setDisableDistLR(false);
2816
+ if (layoutType === _univerjs_core.PositionedObjectLayoutType.WRAP_NONE) if (behindDoc === _univerjs_core.BooleanNumber.TRUE) setWrappingStyle(TextWrappingStyle.BEHIND_TEXT);
2817
+ else setWrappingStyle(TextWrappingStyle.IN_FRONT_OF_TEXT);
2818
+ else switch (layoutType) {
2819
+ case _univerjs_core.PositionedObjectLayoutType.INLINE:
2820
+ setWrappingStyle(TextWrappingStyle.INLINE);
2821
+ break;
2822
+ case _univerjs_core.PositionedObjectLayoutType.WRAP_SQUARE:
2823
+ setWrappingStyle(TextWrappingStyle.WRAP_SQUARE);
2824
+ break;
2825
+ case _univerjs_core.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM:
2826
+ setWrappingStyle(TextWrappingStyle.WRAP_TOP_AND_BOTTOM);
2827
+ break;
2828
+ default: throw new Error(`Unsupported layout type: ${layoutType}`);
2829
+ }
2830
+ }
2831
+ (0, react.useEffect)(() => {
2832
+ updateFocusDrawingState();
2833
+ const subscription = drawingManagerService.focus$.subscribe((drawingParams) => {
2834
+ if (drawingParams.length === 0) {
2835
+ setShowPanel(false);
2836
+ return;
2837
+ }
2838
+ setShowPanel(true);
2839
+ updateState(drawingParams[0]);
2840
+ });
2841
+ const mutationListener = commandService.onCommandExecuted(async (command) => {
2842
+ if (command.id === _univerjs_docs.RichTextEditingMutation.id) updateFocusDrawingState();
2843
+ });
2844
+ return () => {
2845
+ subscription.unsubscribe();
2846
+ mutationListener.dispose();
2847
+ };
2848
+ }, []);
2849
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2850
+ className: (0, _univerjs_design.clsx)("univer-grid univer-gap-2 univer-py-2 univer-text-gray-400", { "univer-hidden": !showPanel }),
2851
+ children: [
2852
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("header", {
2853
+ className: "univer-text-gray-600 dark:!univer-text-gray-200",
2854
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: localeService.t("image-text-wrap.title") })
2855
+ }),
2856
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2857
+ className: "univer-text-gray-600 dark:!univer-text-gray-200",
2858
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: localeService.t("image-text-wrap.wrappingStyle") })
2859
+ }),
2860
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_univerjs_design.RadioGroup, {
2861
+ value: wrappingStyle,
2862
+ onChange: handleWrappingStyleChange,
2863
+ direction: "vertical",
2864
+ children: [
2865
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Radio, {
2866
+ value: TextWrappingStyle.INLINE,
2867
+ children: localeService.t("image-text-wrap.inline")
2868
+ }),
2869
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Radio, {
2870
+ value: TextWrappingStyle.WRAP_SQUARE,
2871
+ children: localeService.t("image-text-wrap.square")
2872
+ }),
2873
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Radio, {
2874
+ value: TextWrappingStyle.WRAP_TOP_AND_BOTTOM,
2875
+ children: localeService.t("image-text-wrap.topAndBottom")
2876
+ }),
2877
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Radio, {
2878
+ value: TextWrappingStyle.BEHIND_TEXT,
2879
+ children: localeService.t("image-text-wrap.behindText")
2880
+ }),
2881
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Radio, {
2882
+ value: TextWrappingStyle.IN_FRONT_OF_TEXT,
2883
+ children: localeService.t("image-text-wrap.inFrontText")
2884
+ })
2885
+ ]
2886
+ }) }),
2887
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2888
+ className: "univer-text-gray-600 dark:!univer-text-gray-200",
2889
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: localeService.t("image-text-wrap.wrapText") })
2890
+ }),
2891
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_univerjs_design.RadioGroup, {
2892
+ disabled: disableWrapText,
2893
+ value: wrapText,
2894
+ onChange: handleWrapTextChange,
2895
+ direction: "horizontal",
2896
+ children: [
2897
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Radio, {
2898
+ value: _univerjs_core.WrapTextType.BOTH_SIDES,
2899
+ children: localeService.t("image-text-wrap.bothSide")
2900
+ }),
2901
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Radio, {
2902
+ value: _univerjs_core.WrapTextType.LEFT,
2903
+ children: localeService.t("image-text-wrap.leftOnly")
2904
+ }),
2905
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Radio, {
2906
+ value: _univerjs_core.WrapTextType.RIGHT,
2907
+ children: localeService.t("image-text-wrap.rightOnly")
2908
+ })
2909
+ ]
2910
+ }) }),
2911
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2912
+ className: "univer-text-gray-600 dark:!univer-text-gray-200",
2913
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: localeService.t("image-text-wrap.distanceFromText") })
2914
+ }),
2915
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2916
+ className: "univer-grid univer-grid-cols-2 univer-gap-2 [&>div]:univer-grid [&>div]:univer-gap-2",
2917
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: localeService.t("image-text-wrap.top") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.InputNumber, {
2918
+ min: MIN_MARGIN,
2919
+ max: MAX_MARGIN,
2920
+ disabled: disableDistTB,
2921
+ precision: 1,
2922
+ value: distToText.distT,
2923
+ onChange: (val) => {
2924
+ handleDistToTextChange(val, "distT");
2925
+ }
2926
+ })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: localeService.t("image-text-wrap.left") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.InputNumber, {
2927
+ min: MIN_MARGIN,
2928
+ max: MAX_MARGIN,
2929
+ disabled: disableDistLR,
2930
+ precision: 1,
2931
+ value: distToText.distL,
2932
+ onChange: (val) => {
2933
+ handleDistToTextChange(val, "distL");
2934
+ }
2935
+ })] })]
2936
+ }),
2937
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2938
+ className: "univer-grid univer-grid-cols-2 univer-gap-2 [&>div]:univer-grid [&>div]:univer-gap-2",
2939
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: localeService.t("image-text-wrap.bottom") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.InputNumber, {
2940
+ min: MIN_MARGIN,
2941
+ max: MAX_MARGIN,
2942
+ disabled: disableDistTB,
2943
+ precision: 1,
2944
+ value: distToText.distB,
2945
+ onChange: (val) => {
2946
+ handleDistToTextChange(val, "distB");
2947
+ }
2948
+ })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: localeService.t("image-text-wrap.right") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.InputNumber, {
2949
+ min: MIN_MARGIN,
2950
+ max: MAX_MARGIN,
2951
+ disabled: disableDistLR,
2952
+ precision: 1,
2953
+ value: distToText.distR,
2954
+ onChange: (val) => {
2955
+ handleDistToTextChange(val, "distR");
2956
+ }
2957
+ })] })]
2958
+ })
2959
+ ]
2960
+ });
2961
+ };
2962
+
2963
+ //#endregion
2964
+ //#region src/views/doc-image-panel/DocDrawingPanel.tsx
2965
+ const DocDrawingPanel = () => {
2966
+ const drawingManagerService = (0, _univerjs_ui.useDependency)(_univerjs_drawing.IDrawingManagerService);
2967
+ const [drawings, setDrawings] = (0, react.useState)(drawingManagerService.getFocusDrawings());
2968
+ (0, react.useEffect)(() => {
2969
+ const focusDispose = drawingManagerService.focus$.subscribe((drawings) => {
2970
+ setDrawings(drawings);
2971
+ });
2972
+ return () => {
2973
+ focusDispose.unsubscribe();
2974
+ };
2975
+ }, []);
2976
+ return !!(drawings === null || drawings === void 0 ? void 0 : drawings.length) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2977
+ className: "univer-text-sm",
2978
+ children: [
2979
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_drawing_ui.DrawingCommonPanel, {
2980
+ drawings,
2981
+ hasAlign: false,
2982
+ hasCropper: false,
2983
+ hasGroup: false,
2984
+ hasTransform: false
2985
+ }),
2986
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DocDrawingTextWrap, { drawings }),
2987
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DocDrawingPosition, { drawings })
2988
+ ]
2989
+ });
2990
+ };
2991
+
2992
+ //#endregion
2993
+ //#region src/controllers/shortcuts/drawing.shortcut.ts
2994
+ function whenDocDrawingFocused(contextService) {
2995
+ return contextService.getContextValue(_univerjs_core.FOCUSING_DOC) && contextService.getContextValue(_univerjs_core.FOCUSING_UNIVER_EDITOR) && contextService.getContextValue(_univerjs_core.FOCUSING_COMMON_DRAWINGS);
2996
+ }
2997
+ const MoveDrawingDownShortcutItem = {
2998
+ id: MoveDocDrawingsCommand.id,
2999
+ description: "shortcut.drawing-move-down",
3000
+ group: "4_drawing-view",
3001
+ binding: _univerjs_ui.KeyCode.ARROW_DOWN,
3002
+ priority: 100,
3003
+ preconditions: whenDocDrawingFocused,
3004
+ staticParameters: { direction: _univerjs_core.Direction.DOWN }
3005
+ };
3006
+ const MoveDrawingUpShortcutItem = {
3007
+ id: MoveDocDrawingsCommand.id,
3008
+ description: "shortcut.drawing-move-up",
3009
+ group: "4_drawing-view",
3010
+ binding: _univerjs_ui.KeyCode.ARROW_UP,
3011
+ priority: 100,
3012
+ preconditions: whenDocDrawingFocused,
3013
+ staticParameters: { direction: _univerjs_core.Direction.UP }
3014
+ };
3015
+ const MoveDrawingLeftShortcutItem = {
3016
+ id: MoveDocDrawingsCommand.id,
3017
+ description: "shortcut.drawing-move-left",
3018
+ group: "4_drawing-view",
3019
+ binding: _univerjs_ui.KeyCode.ARROW_LEFT,
3020
+ priority: 100,
3021
+ preconditions: whenDocDrawingFocused,
3022
+ staticParameters: { direction: _univerjs_core.Direction.LEFT }
3023
+ };
3024
+ const MoveDrawingRightShortcutItem = {
3025
+ id: MoveDocDrawingsCommand.id,
3026
+ description: "shortcut.drawing-move-right",
3027
+ group: "4_drawing-view",
3028
+ binding: _univerjs_ui.KeyCode.ARROW_RIGHT,
3029
+ priority: 100,
3030
+ preconditions: whenDocDrawingFocused,
3031
+ staticParameters: { direction: _univerjs_core.Direction.RIGHT }
3032
+ };
3033
+ const DeleteDrawingsShortcutItem = {
3034
+ id: DeleteDocDrawingsCommand.id,
3035
+ description: "shortcut.drawing-delete",
3036
+ group: "4_drawing-view",
3037
+ preconditions: whenDocDrawingFocused,
3038
+ binding: _univerjs_ui.KeyCode.DELETE,
3039
+ mac: _univerjs_ui.KeyCode.BACKSPACE
3040
+ };
3041
+
3042
+ //#endregion
3043
+ //#region src/controllers/doc-drawing.controller.ts
3044
+ /**
3045
+ * Copyright 2023-present DreamNum Co., Ltd.
3046
+ *
3047
+ * Licensed under the Apache License, Version 2.0 (the "License");
3048
+ * you may not use this file except in compliance with the License.
3049
+ * You may obtain a copy of the License at
3050
+ *
3051
+ * http://www.apache.org/licenses/LICENSE-2.0
3052
+ *
3053
+ * Unless required by applicable law or agreed to in writing, software
3054
+ * distributed under the License is distributed on an "AS IS" BASIS,
3055
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3056
+ * See the License for the specific language governing permissions and
3057
+ * limitations under the License.
3058
+ */
3059
+ let DocDrawingUIController = class DocDrawingUIController extends _univerjs_core.Disposable {
3060
+ constructor(_componentManager, _menuManagerService, _commandService, _shortcutService) {
3061
+ super();
3062
+ this._componentManager = _componentManager;
3063
+ this._menuManagerService = _menuManagerService;
3064
+ this._commandService = _commandService;
3065
+ this._shortcutService = _shortcutService;
3066
+ this._init();
3067
+ }
3068
+ _initCustomComponents() {
3069
+ const componentManager = this._componentManager;
3070
+ this.disposeWithMe(componentManager.register(COMPONENT_DOC_DRAWING_PANEL, DocDrawingPanel));
3071
+ }
3072
+ _initMenus() {
3073
+ this._menuManagerService.mergeMenu(menuSchema);
3074
+ }
3075
+ _initCommands() {
3076
+ [
3077
+ InsertDocImageCommand,
3078
+ InsertDocDrawingCommand,
3079
+ UpdateDocDrawingWrappingStyleCommand,
3080
+ UpdateDocDrawingDistanceCommand,
3081
+ UpdateDocDrawingWrapTextCommand,
3082
+ UpdateDrawingDocTransformCommand,
3083
+ IMoveInlineDrawingCommand,
3084
+ ITransformNonInlineDrawingCommand,
3085
+ RemoveDocDrawingCommand,
3086
+ SidebarDocDrawingOperation,
3087
+ ClearDocDrawingTransformerOperation,
3088
+ EditDocDrawingOperation,
3089
+ GroupDocDrawingCommand,
3090
+ UngroupDocDrawingCommand,
3091
+ MoveDocDrawingsCommand,
3092
+ DeleteDocDrawingsCommand,
3093
+ SetDocDrawingArrangeCommand
3094
+ ].forEach((command) => this.disposeWithMe(this._commandService.registerCommand(command)));
3095
+ }
3096
+ _initShortcuts() {
3097
+ [
3098
+ MoveDrawingDownShortcutItem,
3099
+ MoveDrawingUpShortcutItem,
3100
+ MoveDrawingLeftShortcutItem,
3101
+ MoveDrawingRightShortcutItem,
3102
+ DeleteDrawingsShortcutItem
3103
+ ].forEach((item) => {
3104
+ this.disposeWithMe(this._shortcutService.registerShortcut(item));
3105
+ });
3106
+ }
3107
+ _init() {
3108
+ this._initCommands();
3109
+ this._initCustomComponents();
3110
+ this._initMenus();
3111
+ this._initShortcuts();
3112
+ }
3113
+ };
3114
+ DocDrawingUIController = __decorate([
3115
+ __decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_ui.ComponentManager)),
3116
+ __decorateParam(1, _univerjs_ui.IMenuManagerService),
3117
+ __decorateParam(2, _univerjs_core.ICommandService),
3118
+ __decorateParam(3, _univerjs_ui.IShortcutService)
3119
+ ], DocDrawingUIController);
3120
+
3121
+ //#endregion
3122
+ //#region src/controllers/render-controllers/doc-drawing-transform-update.controller.ts
3123
+ let DocDrawingTransformUpdateController = class DocDrawingTransformUpdateController extends _univerjs_core.Disposable {
3124
+ constructor(_context, _docSkeletonManagerService, _commandService, _editorService, _drawingManagerService, _docRefreshDrawingsService, _univerInstanceService, _lifecycleService) {
3125
+ super();
3126
+ this._context = _context;
3127
+ this._docSkeletonManagerService = _docSkeletonManagerService;
3128
+ this._commandService = _commandService;
3129
+ this._editorService = _editorService;
3130
+ this._drawingManagerService = _drawingManagerService;
3131
+ this._docRefreshDrawingsService = _docRefreshDrawingsService;
3132
+ this._univerInstanceService = _univerInstanceService;
3133
+ this._lifecycleService = _lifecycleService;
3134
+ _defineProperty(this, "_liquid", new _univerjs_engine_render.Liquid());
3135
+ this._initialize();
3136
+ this._commandExecutedListener();
3137
+ }
3138
+ _initialize() {
3139
+ this._initialRenderRefresh();
3140
+ this._drawingInitializeListener();
3141
+ this._initResize();
3142
+ }
3143
+ _initialRenderRefresh() {
3144
+ this.disposeWithMe(this._docSkeletonManagerService.currentSkeleton$.subscribe((documentSkeleton) => {
3145
+ if (documentSkeleton == null) return;
3146
+ this._refreshDrawing(documentSkeleton);
3147
+ }));
3148
+ this.disposeWithMe(this._docRefreshDrawingsService.refreshDrawings$.subscribe((skeleton) => {
3149
+ if (skeleton == null) return;
3150
+ this._refreshDrawing(skeleton);
3151
+ }));
3152
+ }
3153
+ _commandExecutedListener() {
3154
+ const updateCommandList = [_univerjs_docs.RichTextEditingMutation.id, _univerjs_docs_ui.SetDocZoomRatioOperation.id];
3155
+ this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
3156
+ if (updateCommandList.includes(command.id)) {
3157
+ const { unitId: commandUnitId } = command.params;
3158
+ const { unitId, mainComponent } = this._context;
3159
+ if (commandUnitId !== unitId) return;
3160
+ const skeleton = this._docSkeletonManagerService.getSkeleton();
3161
+ if (skeleton == null) return;
3162
+ if (this._editorService.isEditor(unitId) && unitId !== _univerjs_core.DOCS_ZEN_EDITOR_UNIT_ID_KEY) {
3163
+ mainComponent === null || mainComponent === void 0 || mainComponent.makeDirty();
3164
+ return;
3165
+ }
3166
+ this._refreshDrawing(skeleton);
3167
+ }
3168
+ }));
3169
+ }
3170
+ _initResize() {
3171
+ this.disposeWithMe((0, _univerjs_core.fromEventSubject)(this._context.engine.onTransformChange$).pipe((0, rxjs.filter)((evt) => evt.type === _univerjs_engine_render.TRANSFORM_CHANGE_OBSERVABLE_TYPE.resize), (0, rxjs.debounceTime)(16)).subscribe(() => {
3172
+ var _scene$getTransformer;
3173
+ const skeleton = this._docSkeletonManagerService.getSkeleton();
3174
+ const { scene } = this._context;
3175
+ (_scene$getTransformer = scene.getTransformer()) === null || _scene$getTransformer === void 0 || _scene$getTransformer.refreshControls();
3176
+ this._refreshDrawing(skeleton);
3177
+ }));
3178
+ }
3179
+ _refreshDrawing(skeleton) {
3180
+ const skeletonData = skeleton === null || skeleton === void 0 ? void 0 : skeleton.getSkeletonData();
3181
+ const { mainComponent, unitId } = this._context;
3182
+ const documentComponent = mainComponent;
3183
+ if (!skeletonData) return;
3184
+ const { left: docsLeft, top: docsTop, pageLayoutType, pageMarginLeft, pageMarginTop } = documentComponent;
3185
+ const { pages, skeHeaders, skeFooters } = skeletonData;
3186
+ const updateDrawingMap = {};
3187
+ this._liquid.reset();
3188
+ /**
3189
+ * TODO: @DR-Univer We should not refresh all floating elements, but instead make a diff.
3190
+ */
3191
+ for (let i = 0, len = pages.length; i < len; i++) {
3192
+ const page = pages[i];
3193
+ const { headerId, footerId, pageWidth } = page;
3194
+ if (headerId) {
3195
+ var _skeHeaders$get;
3196
+ const headerPage = (_skeHeaders$get = skeHeaders.get(headerId)) === null || _skeHeaders$get === void 0 ? void 0 : _skeHeaders$get.get(pageWidth);
3197
+ if (headerPage) this._calculateDrawingPosition(unitId, headerPage, docsLeft, docsTop, updateDrawingMap, headerPage.marginTop, page.marginLeft);
3198
+ }
3199
+ if (footerId) {
3200
+ var _skeFooters$get;
3201
+ const footerPage = (_skeFooters$get = skeFooters.get(footerId)) === null || _skeFooters$get === void 0 ? void 0 : _skeFooters$get.get(pageWidth);
3202
+ if (footerPage) this._calculateDrawingPosition(unitId, footerPage, docsLeft, docsTop, updateDrawingMap, page.pageHeight - page.marginBottom + footerPage.marginTop, page.marginLeft);
3203
+ }
3204
+ this._calculateDrawingPosition(unitId, page, docsLeft, docsTop, updateDrawingMap, page.marginTop, page.marginLeft);
3205
+ this._liquid.translatePage(page, pageLayoutType, pageMarginLeft, pageMarginTop);
3206
+ }
3207
+ const updateDrawings = Object.values(updateDrawingMap);
3208
+ const nonMultiDrawings = updateDrawings.filter((drawing) => !drawing.isMultiTransform);
3209
+ const multiDrawings = updateDrawings.filter((drawing) => drawing.isMultiTransform);
3210
+ if (nonMultiDrawings.length > 0) this._drawingManagerService.refreshTransform(nonMultiDrawings);
3211
+ this._handleMultiDrawingsTransform(multiDrawings);
3212
+ }
3213
+ _handleMultiDrawingsTransform(multiDrawings) {
3214
+ const { scene, unitId } = this._context;
3215
+ const transformer = scene.getTransformerByCreate();
3216
+ multiDrawings.forEach((updateParam) => {
3217
+ const param = this._drawingManagerService.getDrawingByParam(updateParam);
3218
+ if (param == null) return;
3219
+ param.transform = updateParam.transform;
3220
+ param.transforms = updateParam.transforms;
3221
+ param.isMultiTransform = updateParam.isMultiTransform;
3222
+ });
3223
+ const selectedObjectKeys = [...transformer.getSelectedObjectMap().keys()];
3224
+ const allMultiDrawings = Object.values(this._drawingManagerService.getDrawingData(unitId, unitId)).filter((drawing) => drawing.isMultiTransform === _univerjs_core.BooleanNumber.TRUE);
3225
+ this._drawingManagerService.removeNotification(allMultiDrawings);
3226
+ if (multiDrawings.length > 0) this._drawingManagerService.addNotification(multiDrawings);
3227
+ for (const key of selectedObjectKeys) {
3228
+ const drawingShape = scene.getObject(key);
3229
+ if (drawingShape) transformer.setSelectedControl(drawingShape);
3230
+ }
3231
+ }
3232
+ _calculateDrawingPosition(unitId, page, docsLeft, docsTop, updateDrawingMap, marginTop, marginLeft) {
3233
+ const { skeDrawings } = page;
3234
+ this._liquid.translatePagePadding({
3235
+ marginTop,
3236
+ marginLeft
3237
+ });
3238
+ skeDrawings.forEach((drawing) => {
3239
+ const { aLeft, aTop, height, width, angle, drawingId, drawingOrigin } = drawing;
3240
+ const behindText = drawingOrigin.layoutType === _univerjs_core.PositionedObjectLayoutType.WRAP_NONE && drawingOrigin.behindDoc === _univerjs_core.BooleanNumber.TRUE;
3241
+ const { isMultiTransform = _univerjs_core.BooleanNumber.FALSE } = drawingOrigin;
3242
+ const transform = {
3243
+ left: aLeft + docsLeft + this._liquid.x,
3244
+ top: aTop + docsTop + this._liquid.y,
3245
+ width,
3246
+ height,
3247
+ angle
3248
+ };
3249
+ if (updateDrawingMap[drawingId] == null) updateDrawingMap[drawingId] = {
3250
+ unitId,
3251
+ subUnitId: unitId,
3252
+ drawingId,
3253
+ behindText,
3254
+ transform,
3255
+ transforms: [transform],
3256
+ isMultiTransform
3257
+ };
3258
+ else if (isMultiTransform === _univerjs_core.BooleanNumber.TRUE) updateDrawingMap[drawingId].transforms.push(transform);
3259
+ });
3260
+ this._liquid.restorePagePadding({
3261
+ marginTop,
3262
+ marginLeft
3263
+ });
3264
+ }
3265
+ _drawingInitializeListener() {
3266
+ const init = () => {
3267
+ const skeleton = this._docSkeletonManagerService.getSkeleton();
3268
+ if (skeleton == null) return;
3269
+ this._refreshDrawing(skeleton);
3270
+ this._drawingManagerService.initializeNotification(this._context.unitId);
3271
+ };
3272
+ if (this._lifecycleService.stage >= _univerjs_core.LifecycleStages.Rendered) if (this._docSkeletonManagerService.getSkeleton()) init();
3273
+ else setTimeout(init, 500);
3274
+ else this.disposeWithMe(this._lifecycleService.lifecycle$.pipe((0, rxjs.filter)((stage) => stage === _univerjs_core.LifecycleStages.Rendered)).subscribe(init));
3275
+ }
3276
+ };
3277
+ DocDrawingTransformUpdateController = __decorate([
3278
+ __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_docs.DocSkeletonManagerService)),
3279
+ __decorateParam(2, _univerjs_core.ICommandService),
3280
+ __decorateParam(3, _univerjs_docs_ui.IEditorService),
3281
+ __decorateParam(4, _univerjs_drawing.IDrawingManagerService),
3282
+ __decorateParam(5, (0, _univerjs_core.Inject)(DocRefreshDrawingsService)),
3283
+ __decorateParam(6, _univerjs_core.IUniverInstanceService),
3284
+ __decorateParam(7, (0, _univerjs_core.Inject)(_univerjs_core.LifecycleService))
3285
+ ], DocDrawingTransformUpdateController);
3286
+
3287
+ //#endregion
3288
+ //#region src/menu/drawing-popup-menu.controller.ts
3289
+ let DocDrawingPopupMenuController = class DocDrawingPopupMenuController extends _univerjs_core.RxDisposable {
3290
+ constructor(_drawingManagerService, _canvasPopManagerService, _renderManagerService, _univerInstanceService, _contextService) {
3291
+ super();
3292
+ this._drawingManagerService = _drawingManagerService;
3293
+ this._canvasPopManagerService = _canvasPopManagerService;
3294
+ this._renderManagerService = _renderManagerService;
3295
+ this._univerInstanceService = _univerInstanceService;
3296
+ this._contextService = _contextService;
3297
+ _defineProperty(this, "_initImagePopupMenu", /* @__PURE__ */ new Set());
3298
+ _defineProperty(this, "_disposePopups", []);
3299
+ this._init();
3300
+ }
3301
+ _init() {
3302
+ this.disposeWithMe(this._univerInstanceService.getCurrentTypeOfUnit$(_univerjs_core.UniverInstanceType.UNIVER_DOC).pipe((0, rxjs.takeUntil)(this.dispose$)).subscribe((documentDataModel) => this._create(documentDataModel)));
3303
+ this.disposeWithMe(this._univerInstanceService.getTypeOfUnitDisposed$(_univerjs_core.UniverInstanceType.UNIVER_DOC).pipe((0, rxjs.takeUntil)(this.dispose$)).subscribe((documentDataModel) => this._dispose(documentDataModel)));
3304
+ this._univerInstanceService.getAllUnitsForType(_univerjs_core.UniverInstanceType.UNIVER_DOC).forEach((documentDataModel) => this._create(documentDataModel));
3305
+ }
3306
+ _dispose(documentDataModel) {
3307
+ const unitId = documentDataModel.getUnitId();
3308
+ if (this._disposePopups.length) {
3309
+ this._disposePopups.forEach((dispose) => dispose.dispose());
3310
+ this._disposePopups.length = 0;
3311
+ }
3312
+ this._renderManagerService.removeRender(unitId);
3313
+ }
3314
+ _create(documentDataModel) {
3315
+ if (!documentDataModel) return;
3316
+ const unitId = documentDataModel.getUnitId();
3317
+ if ((0, _univerjs_core.isInternalEditorID)(unitId)) return;
3318
+ if (this._renderManagerService.has(unitId) && !this._initImagePopupMenu.has(unitId)) {
3319
+ this._popupMenuListener(unitId);
3320
+ this._initImagePopupMenu.add(unitId);
3321
+ }
3322
+ }
3323
+ _hasCropObject(scene) {
3324
+ const objects = scene.getAllObjects();
3325
+ for (const object of objects) if (object instanceof _univerjs_drawing_ui.ImageCropperObject) return true;
3326
+ return false;
3327
+ }
3328
+ _popupMenuListener(unitId) {
3329
+ var _this$_renderManagerS;
3330
+ const scene = (_this$_renderManagerS = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.scene;
3331
+ if (!scene) return;
3332
+ const transformer = scene.getTransformerByCreate();
3333
+ if (!transformer) return;
3334
+ const disposePopups = this._disposePopups;
3335
+ this.disposeWithMe(transformer.createControl$.subscribe(() => {
3336
+ if (this._hasCropObject(scene)) return;
3337
+ const selectedObjects = transformer.getSelectedObjectMap();
3338
+ disposePopups.forEach((dispose) => dispose.dispose());
3339
+ disposePopups.length = 0;
3340
+ if (selectedObjects.size > 1) return;
3341
+ const object = selectedObjects.values().next().value;
3342
+ if (!object) return;
3343
+ const oKey = object.oKey;
3344
+ const drawingParam = this._drawingManagerService.getDrawingOKey(oKey);
3345
+ if (!drawingParam || drawingParam.drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_DOM) return;
3346
+ const { unitId, subUnitId, drawingId, drawingType } = drawingParam;
3347
+ const popup = this._canvasPopManagerService.attachPopupToObject(object, {
3348
+ componentKey: _univerjs_drawing_ui.COMPONENT_IMAGE_POPUP_MENU,
3349
+ direction: "horizontal",
3350
+ offset: [2, 0],
3351
+ extraProps: { menuItems: this._getImageMenuItems(unitId, subUnitId, drawingId, drawingType) }
3352
+ }, unitId);
3353
+ disposePopups.push(this.disposeWithMe(popup));
3354
+ if (this._drawingManagerService.getFocusDrawings().find((drawing) => drawing.unitId === unitId && drawing.subUnitId === subUnitId && drawing.drawingId === drawingId)) return;
3355
+ this._drawingManagerService.focusDrawing([{
3356
+ unitId,
3357
+ subUnitId,
3358
+ drawingId
3359
+ }]);
3360
+ }));
3361
+ this.disposeWithMe(transformer.clearControl$.subscribe(() => {
3362
+ disposePopups.forEach((dispose) => dispose.dispose());
3363
+ disposePopups.length = 0;
3364
+ this._contextService.setContextValue(_univerjs_core.FOCUSING_COMMON_DRAWINGS, false);
3365
+ this._drawingManagerService.focusDrawing(null);
3366
+ }));
3367
+ this.disposeWithMe(transformer.changing$.subscribe(() => {
3368
+ disposePopups.forEach((dispose) => dispose.dispose());
3369
+ disposePopups.length = 0;
3370
+ }));
3371
+ this.disposeWithMe(transformer.changeStart$.subscribe(() => {
3372
+ disposePopups.forEach((dispose) => dispose.dispose());
3373
+ disposePopups.length = 0;
3374
+ }));
3375
+ }
3376
+ _getImageMenuItems(unitId, subUnitId, drawingId, drawingType) {
3377
+ return [
3378
+ {
3379
+ label: "image-popup.edit",
3380
+ index: 0,
3381
+ commandId: EditDocDrawingOperation.id,
3382
+ commandParams: {
3383
+ unitId,
3384
+ subUnitId,
3385
+ drawingId
3386
+ },
3387
+ disable: true
3388
+ },
3389
+ {
3390
+ label: "image-popup.delete",
3391
+ index: 1,
3392
+ commandId: RemoveDocDrawingCommand.id,
3393
+ commandParams: {
3394
+ unitId,
3395
+ drawings: [{
3396
+ unitId,
3397
+ subUnitId,
3398
+ drawingId
3399
+ }]
3400
+ },
3401
+ disable: false
3402
+ },
3403
+ {
3404
+ label: "image-popup.crop",
3405
+ index: 2,
3406
+ commandId: _univerjs_drawing_ui.OpenImageCropOperation.id,
3407
+ commandParams: {
3408
+ unitId,
3409
+ subUnitId,
3410
+ drawingId
3411
+ },
3412
+ disable: true
3413
+ },
3414
+ {
3415
+ label: "image-popup.reset",
3416
+ index: 3,
3417
+ commandId: _univerjs_drawing_ui.ImageResetSizeOperation.id,
3418
+ commandParams: [{
3419
+ unitId,
3420
+ subUnitId,
3421
+ drawingId
3422
+ }],
3423
+ disable: true
3424
+ }
3425
+ ];
3426
+ }
3427
+ };
3428
+ DocDrawingPopupMenuController = __decorate([
3429
+ __decorateParam(0, _univerjs_drawing.IDrawingManagerService),
3430
+ __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_docs_ui.DocCanvasPopManagerService)),
3431
+ __decorateParam(2, _univerjs_engine_render.IRenderManagerService),
3432
+ __decorateParam(3, _univerjs_core.IUniverInstanceService),
3433
+ __decorateParam(4, _univerjs_core.IContextService)
3434
+ ], DocDrawingPopupMenuController);
3435
+
3436
+ //#endregion
3437
+ //#region src/plugin.ts
3438
+ let UniverDocsDrawingUIPlugin = class UniverDocsDrawingUIPlugin extends _univerjs_core.Plugin {
3439
+ constructor(_config = defaultPluginConfig, _injector, _renderManagerSrv, _configService) {
3440
+ super();
3441
+ this._config = _config;
3442
+ this._injector = _injector;
3443
+ this._renderManagerSrv = _renderManagerSrv;
3444
+ this._configService = _configService;
3445
+ const { ...rest } = (0, _univerjs_core.merge)({}, defaultPluginConfig, this._config);
3446
+ this._configService.setConfig(DOCS_DRAWING_UI_PLUGIN_CONFIG_KEY, rest);
3447
+ }
3448
+ onStarting() {
3449
+ [
3450
+ [DocDrawingUIController],
3451
+ [DocDrawingPopupMenuController],
3452
+ [DocDrawingTransformerController],
3453
+ [DocDrawingAddRemoveController],
3454
+ [DocRefreshDrawingsService],
3455
+ [DocFloatDomController],
3456
+ [DocDrawingPrintingController]
3457
+ ].forEach((dependency) => this._injector.add(dependency));
3458
+ }
3459
+ onReady() {
3460
+ [[DocDrawingUpdateRenderController], [DocDrawingTransformUpdateController]].forEach((m) => this._renderManagerSrv.registerRenderModule(_univerjs_core.UniverInstanceType.UNIVER_DOC, m));
3461
+ this._injector.get(DocDrawingAddRemoveController);
3462
+ this._injector.get(DocDrawingUIController);
3463
+ this._injector.get(DocDrawingTransformerController);
3464
+ this._injector.get(DocDrawingPrintingController);
3465
+ }
3466
+ onRendered() {
3467
+ this._injector.get(DocDrawingPopupMenuController);
3468
+ this._injector.get(DocFloatDomController);
3469
+ }
3470
+ };
3471
+ _defineProperty(UniverDocsDrawingUIPlugin, "type", _univerjs_core.UniverInstanceType.UNIVER_DOC);
3472
+ _defineProperty(UniverDocsDrawingUIPlugin, "pluginName", "DOC_DRAWING_UI_PLUGIN");
3473
+ _defineProperty(UniverDocsDrawingUIPlugin, "packageName", name);
3474
+ _defineProperty(UniverDocsDrawingUIPlugin, "version", version);
3475
+ UniverDocsDrawingUIPlugin = __decorate([
3476
+ (0, _univerjs_core.DependentOn)(_univerjs_drawing_ui.UniverDrawingUIPlugin, _univerjs_drawing.UniverDrawingPlugin, _univerjs_docs_drawing.UniverDocsDrawingPlugin, _univerjs_ui.UniverUIPlugin),
3477
+ __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_core.Injector)),
3478
+ __decorateParam(2, _univerjs_engine_render.IRenderManagerService),
3479
+ __decorateParam(3, _univerjs_core.IConfigService)
3480
+ ], UniverDocsDrawingUIPlugin);
3481
+
3482
+ //#endregion
3483
+ exports.ClearDocDrawingTransformerOperation = ClearDocDrawingTransformerOperation;
3484
+ exports.DOCS_IMAGE_MENU_ID = DOCS_IMAGE_MENU_ID;
3485
+ exports.DeleteDocDrawingsCommand = DeleteDocDrawingsCommand;
3486
+ Object.defineProperty(exports, 'DocFloatDomController', {
3487
+ enumerable: true,
3488
+ get: function () {
3489
+ return DocFloatDomController;
3490
+ }
3491
+ });
3492
+ exports.EditDocDrawingOperation = EditDocDrawingOperation;
3493
+ exports.GroupDocDrawingCommand = GroupDocDrawingCommand;
3494
+ exports.InsertDocDrawingCommand = InsertDocDrawingCommand;
3495
+ exports.InsertDocImageCommand = InsertDocImageCommand;
3496
+ exports.MoveDocDrawingsCommand = MoveDocDrawingsCommand;
3497
+ exports.RemoveDocDrawingCommand = RemoveDocDrawingCommand;
3498
+ exports.SetDocDrawingArrangeCommand = SetDocDrawingArrangeCommand;
3499
+ exports.SidebarDocDrawingOperation = SidebarDocDrawingOperation;
3500
+ exports.UngroupDocDrawingCommand = UngroupDocDrawingCommand;
3501
+ Object.defineProperty(exports, 'UniverDocsDrawingUIPlugin', {
3502
+ enumerable: true,
3503
+ get: function () {
3504
+ return UniverDocsDrawingUIPlugin;
3505
+ }
3506
+ });