@univerjs/sheets-drawing-ui 0.15.4 → 0.15.5

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.
@@ -3,3 +3,15 @@ import { ISheetDrawingPosition } from '@univerjs/sheets-drawing';
3
3
  import { ISheetSelectionRenderService, SheetSkeletonManagerService } from '@univerjs/sheets-ui';
4
4
  export declare function drawingPositionToTransform(position: ISheetDrawingPosition, selectionRenderService: ISheetSelectionRenderService, sheetSkeletonManagerService: SheetSkeletonManagerService): Nullable<ITransformState>;
5
5
  export declare function transformToDrawingPosition(transform: ITransformState, selectionRenderService: ISheetSelectionRenderService): Nullable<ISheetDrawingPosition>;
6
+ /**
7
+ * In excel, the basic drawing with rotate bound use major axis switch, axis-aligned bound will bu used.That means the position bound of drawing element will save as nearly axis-aligned rectangle.
8
+ * Here is the rule to convert transform to axis-aligned position:
9
+ * [-45°, 45°): use the original bound
10
+ * [45°, 135°): rotate the bound 90° clockwise,and the left, top, bottom,right will use the rotated bound.
11
+ * [135°, 225°): use the original bound
12
+ * [225°, 315°): rotate the bound 90° counterclockwise, and the left, top, bottom, right will use the rotated bound.
13
+ * @param transform The transform state of the drawing element.
14
+ * @param selectionRenderService
15
+ * @return The axis-aligned position of the drawing element.
16
+ */
17
+ export declare function transformToAxisAlignPosition(transform: ITransformState, selectionRenderService: ISheetSelectionRenderService): Nullable<ISheetDrawingPosition>;
@@ -1,5 +1,5 @@
1
1
  import { Disposable, Injector } from '@univerjs/core';
2
- import { IAutoFillService } from '@univerjs/sheets-ui';
2
+ import { IAutoFillService } from '@univerjs/sheets';
3
3
  export declare class SheetCellImageAutofillController extends Disposable {
4
4
  private readonly _autoFillService;
5
5
  private readonly _injector;
@@ -44,6 +44,7 @@ export declare class SheetDrawingUpdateController extends Disposable implements
44
44
  private _getImagePosition;
45
45
  private _updateOrderListener;
46
46
  private _updateImageListener;
47
+ private _getSheetTransformByParam;
47
48
  private _groupDrawingListener;
48
49
  private _focusDrawingListener;
49
50
  }
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import './global.css';
17
- export { drawingPositionToTransform, transformToDrawingPosition } from './basics/transform-position';
17
+ export { drawingPositionToTransform, transformToDrawingPosition, transformToAxisAlignPosition } from './basics/transform-position';
18
18
  export { DeleteDrawingsCommand } from './commands/commands/delete-drawings.command';
19
19
  export { GroupSheetDrawingCommand } from './commands/commands/group-sheet-drawing.command';
20
20
  export { type IInsertImageCommandParams, InsertFloatImageCommand } from './commands/commands/insert-image.command';
package/lib/umd/facade.js CHANGED
@@ -1 +1 @@
1
- (function(c,l){typeof exports=="object"&&typeof module<"u"?l(require("@univerjs/core"),require("@univerjs/core/facade"),require("@univerjs/drawing"),require("@univerjs/engine-render"),require("@univerjs/sheets-drawing-ui"),require("@univerjs/sheets-ui"),require("@univerjs/sheets-drawing"),require("@univerjs/sheets-ui/facade"),require("@univerjs/sheets/facade"),require("@univerjs/ui")):typeof define=="function"&&define.amd?define(["@univerjs/core","@univerjs/core/facade","@univerjs/drawing","@univerjs/engine-render","@univerjs/sheets-drawing-ui","@univerjs/sheets-ui","@univerjs/sheets-drawing","@univerjs/sheets-ui/facade","@univerjs/sheets/facade","@univerjs/ui"],l):(c=typeof globalThis<"u"?globalThis:c||self,l(c.UniverCore,c.UniverCoreFacade,c.UniverDrawing,c.UniverEngineRender,c.UniverSheetsDrawingUi,c.UniverSheetsUi,c.UniverSheetsDrawing,c.UniverSheetsUiFacade,c.UniverSheetsFacade,c.UniverUi))})(this,(function(c,l,f,C,m,D,w,b,E,F){"use strict";var N=Object.defineProperty;var H=(c,l,f)=>l in c?N(c,l,{enumerable:!0,configurable:!0,writable:!0,value:f}):c[l]=f;var M=(c,l,f)=>H(c,typeof l!="symbol"?l+"":l,f);var A=Object.getOwnPropertyDescriptor,T=(s,r,t,e)=>{for(var n=e>1?void 0:e?A(r,t):r,i=s.length-1,a;i>=0;i--)(a=s[i])&&(n=a(n)||n);return n},R=(s,r)=>(t,e)=>r(t,e,s);function B(s,r){const{from:t,to:e,flipY:n=!1,flipX:i=!1,angle:a=0,skewX:o=0,skewY:d=0}=s.sheetTransform,{column:h,columnOffset:g,row:u,rowOffset:v}=t,_=D.convertPositionSheetOverGridToAbsolute(s.unitId,s.subUnitId,{from:t,to:e},r),{width:I,height:S}=_;return{...s,column:h,columnOffset:g,row:u,rowOffset:v,width:I,height:S,flipY:n,flipX:i,angle:a,skewX:o,skewY:d}}function j(s,r,t){const{column:e,columnOffset:n,row:i,rowOffset:a,flipY:o=!1,flipX:d=!1,angle:h=0,skewX:g=0,skewY:u=0,width:v,height:_}=s,I=D.convertPositionCellToSheetOverGrid(s.unitId,s.subUnitId,{column:e,columnOffset:n,row:i,rowOffset:a},v,_,r,t),{sheetTransform:S,transform:O}=I;return{...s,sheetTransform:{...S,flipY:o,flipX:d,angle:h,skewX:g,skewY:u},transform:{...O,flipY:o,flipX:d,angle:h,skewX:g,skewY:u}}}let y=class{constructor(s,r,t){M(this,"_image");this._injector=t,this._image={drawingId:c.generateRandomId(6),drawingType:c.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:c.ImageSourceType.BASE64,source:"",unitId:s,subUnitId:r,column:0,columnOffset:0,row:0,rowOffset:0,width:0,height:0}}setImage(s){const t=this._injector.get(C.IRenderManagerService).getRenderById(s.unitId);if(!t)throw new Error(`Render Unit with unitId ${s.unitId} not found`);const e=t.with(D.SheetSkeletonManagerService);return s.sheetTransform==null&&(s.sheetTransform={from:{column:0,columnOffset:0,row:0,rowOffset:0},to:{column:0,columnOffset:0,row:0,rowOffset:0}}),this._image=B(s,e),this}setSource(s,r){const t=r!=null?r:c.ImageSourceType.URL;return this._image.source=s,this._image.imageSourceType=t,this}getSource(){return this._image.source}getSourceType(){return this._image.imageSourceType}setColumn(s){return this._image.column=s,this}setRow(s){return this._image.row=s,this}setColumnOffset(s){return this._image.columnOffset=s,this}setRowOffset(s){return this._image.rowOffset=s,this}setWidth(s){return this._image.width=s,this}setHeight(s){return this._image.height=s,this}setAnchorType(s){return this._image.anchorType=s,this}setCropTop(s){return this._initializeSrcRect(),this._image.srcRect.top=s,this}setCropLeft(s){return this._initializeSrcRect(),this._image.srcRect.left=s,this}setCropBottom(s){return this._initializeSrcRect(),this._image.srcRect.bottom=s,this}setCropRight(s){return this._initializeSrcRect(),this._image.srcRect.right=s,this}_initializeSrcRect(){this._image.srcRect==null&&(this._image.srcRect={top:0,left:0,bottom:0,right:0})}setRotate(s){return this._image.angle=s,this}setUnitId(s){return this._image.unitId=s,this}setSubUnitId(s){return this._image.subUnitId=s,this}async buildAsync(){const r=this._injector.get(C.IRenderManagerService).getRenderById(this._image.unitId);if(!r)throw new Error(`Render Unit with unitId ${this._image.unitId} not found`);const t=r.with(D.ISheetSelectionRenderService),e=r.with(D.SheetSkeletonManagerService);if(this._image.width===0||this._image.height===0){const n=await f.getImageSize(this._image.source),i=n.width,a=n.height;this._image.width===0&&(this._image.width=i),this._image.height===0&&(this._image.height=a)}return j(this._image,t,e)}};y=T([R(2,c.Inject(c.Injector))],y);let p=class extends l.FBase{constructor(s,r,t){super(),this._image=s,this._commandService=r,this._injector=t}getId(){return this._image.drawingId}getType(){return this._image.drawingType}remove(){return this._commandService.syncExecuteCommand(m.RemoveSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}toBuilder(){const s=this._injector.createInstance(y);return s.setImage(this._image),s}setSource(s,r){const t=r!=null?r:c.ImageSourceType.URL;return this._image.source=s,this._image.imageSourceType=t,this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}async setPositionAsync(s,r,t,e){const n=this.toBuilder();n.setColumn(r),n.setRow(s),t!=null&&n.setRowOffset(t),e!=null&&n.setColumnOffset(e);const i=await n.buildAsync();return this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[i]})}async setSizeAsync(s,r){const t=this.toBuilder();t.setWidth(s),t.setHeight(r);const e=await t.buildAsync();return this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[e]})}setCrop(s,r,t,e){return this._image.srcRect==null&&(this._image.srcRect={top:0,left:0,bottom:0,right:0}),s!=null&&(this._image.srcRect.top=s),r!=null&&(this._image.srcRect.left=r),t!=null&&(this._image.srcRect.bottom=t),e!=null&&(this._image.srcRect.right=e),this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}setRotate(s){return this._image.sheetTransform.angle=s,this._image.transform&&(this._image.transform.angle=s),this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}setForward(){return this._commandService.syncExecuteCommand(m.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:c.ArrangeTypeEnum.forward})}setBackward(){return this._commandService.syncExecuteCommand(m.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:c.ArrangeTypeEnum.backward})}setBack(){return this._commandService.syncExecuteCommand(m.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:c.ArrangeTypeEnum.back})}setFront(){return this._commandService.syncExecuteCommand(m.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:c.ArrangeTypeEnum.front})}};p=T([R(1,c.ICommandService),R(2,c.Inject(c.Injector))],p);class x extends E.FWorksheet{getFloatDomById(r){const e=this._injector.get(m.SheetCanvasFloatDomManagerService).getFloatDomInfo(r);if(!e)return null;const{unitId:n,subUnitId:i}=e,{rect:a}=e,o=a.getState(),{left:d=0,top:h=0,width:g=0,height:u=0,flipX:v=!1,flipY:_=!1,angle:I=0,skewX:S=0,skewY:O=0}=o,k=this._injector.get(w.ISheetDrawingService).getDrawingByParam({drawingId:e.id,unitId:n,subUnitId:i});return k?{position:{left:d,top:h,width:g,height:u,flipX:v,flipY:_,angle:I,skewX:S,skewY:O},componentKey:k.componentKey,allowTransform:k.allowTransform,data:k.data,id:e.id}:null}getAllFloatDoms(){const r=this._injector.get(m.SheetCanvasFloatDomManagerService),t=this._workbook.getUnitId(),e=this._worksheet.getSheetId();return Array.from(r.getFloatDomsBySubUnitId(t,e).values()).map(n=>{const{rect:i}=n,a=this._injector.get(w.ISheetDrawingService).getDrawingByParam({drawingId:n.id,unitId:t,subUnitId:e}),{left:o,top:d,width:h,height:g,flipX:u,flipY:v,angle:_,skewX:I,skewY:S}=i.getState();return{position:{left:o,top:d,width:h,height:g,flipX:u,flipY:v,angle:_,skewX:I,skewY:S},componentKey:a.componentKey,allowTransform:a.allowTransform,data:a.data,id:n.id}})}updateFloatDom(r,t){var I,S;const n=this._injector.get(m.SheetCanvasFloatDomManagerService).getFloatDomInfo(r);if(!n)return this;const{unitId:i,subUnitId:a}=n,o=this._injector.get(w.ISheetDrawingService).getDrawingByParam({unitId:i,subUnitId:a,drawingId:r}),d=this._injector.get(C.IRenderManagerService);if(!d.getRenderById(i))return this;if(!this.getSkeleton())return this;const u=(I=d.getRenderById(this.getWorkbook().getUnitId()))==null?void 0:I.with(D.ISheetSelectionRenderService);if(!u)return this;const v={...o,componentKey:t.componentKey||o.componentKey,allowTransform:t.allowTransform!==void 0?t.allowTransform:o.allowTransform,data:t.data||o.data,sheetTransform:t.position&&(S=m.transformToDrawingPosition(t.position,u))!=null?S:o.sheetTransform,transform:{...o.transform,...t.position}};if(!this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:i,subUnitId:a,drawings:[v]}))throw new Error("updateFloatDom failed");return this}batchUpdateFloatDoms(r){var a;const t=this._injector.get(m.SheetCanvasFloatDomManagerService),e=this._injector.get(w.ISheetDrawingService),n=this._injector.get(C.IRenderManagerService),i=[];for(const o of r){const d=t.getFloatDomInfo(o.id);if(!d)continue;const{unitId:h,subUnitId:g}=d,u=e.getDrawingByParam({unitId:h,subUnitId:g,drawingId:o.id});if(!u)continue;const v=n.getRenderById(h);if(!v||!this.getSkeleton())continue;const I=v.with(D.ISheetSelectionRenderService);if(!I)return this;const S={...u,componentKey:o.config.componentKey||u.componentKey,allowTransform:o.config.allowTransform!==void 0?o.config.allowTransform:u.allowTransform,data:o.config.data||u.data,sheetTransform:o.config.position&&(a=m.transformToDrawingPosition(o.config.position,I))!=null?a:u.sheetTransform,transform:{...u.transform,...o.config.position}};i.push(S)}if(i.length>0){const o=this._workbook.getUnitId(),d=this._worksheet.getSheetId();if(!this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:o,subUnitId:d,drawings:i}))throw new Error("batchUpdateFloatDoms failed")}return this}removeFloatDom(r){const e=this._injector.get(m.SheetCanvasFloatDomManagerService).getFloatDomInfo(r);if(!e)return this;const{unitId:n,subUnitId:i}=e,o=this._injector.get(w.ISheetDrawingService).getDrawingByParam({unitId:n,subUnitId:i,drawingId:r});if(!o)return this;if(!this._commandService.syncExecuteCommand(m.RemoveSheetDrawingCommand.id,{unitId:n,drawings:[o]}))throw new Error("removeFloatDom failed");return this}addFloatDomToPosition(r,t){const e=this._workbook.getUnitId(),n=this._worksheet.getSheetId(),{key:i,disposableCollection:a}=b.transformComponentKey(r,this._injector.get(F.ComponentManager)),d=this._injector.get(m.SheetCanvasFloatDomManagerService).addFloatDomToPosition({...r,componentKey:i,unitId:e,subUnitId:n},t);return d?(a.add(d.dispose),{id:d.id,dispose:()=>{a.dispose(),d.dispose()}}):(a.dispose(),null)}addFloatDomToRange(r,t,e,n){const i=this._workbook.getUnitId(),a=this._worksheet.getSheetId(),{key:o,disposableCollection:d}=b.transformComponentKey(t,this._injector.get(F.ComponentManager)),g=this._injector.get(m.SheetCanvasFloatDomManagerService).addFloatDomToRange(r.getRange(),{...t,componentKey:o,unitId:i,subUnitId:a},e,n);return g?(d.add(g.dispose),{id:g.id,dispose:()=>{d.dispose(),g.dispose()}}):(d.dispose(),null)}addFloatDomToColumnHeader(r,t,e,n){const i=this._workbook.getUnitId(),a=this._worksheet.getSheetId(),{key:o,disposableCollection:d}=b.transformComponentKey(t,this._injector.get(F.ComponentManager)),g=this._injector.get(m.SheetCanvasFloatDomManagerService).addFloatDomToColumnHeader(r,{...t,componentKey:o,unitId:i,subUnitId:a},e,n);return g?(d.add(g.dispose),{id:g.id,dispose:()=>{d.dispose(),g.dispose()}}):(d.dispose(),null)}async insertImage(r,t,e,n,i){const a=this.newOverGridImage();if(typeof r=="string")a.setSource(r);else{const h=await r.getBlob().getDataAsString();a.setSource(h,c.ImageSourceType.BASE64)}t!==void 0?a.setColumn(t):a.setColumn(0),e!==void 0?a.setRow(e):a.setRow(0),n!==void 0?a.setColumnOffset(n):a.setColumnOffset(0),i!==void 0?a.setRowOffset(i):a.setRowOffset(0);const o=await a.buildAsync();return this._commandService.syncExecuteCommand(m.InsertSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:[o]})}insertImages(r){const t=r.map(e=>(e.unitId=this._fWorkbook.getId(),e.subUnitId=this.getSheetId(),e));return this._commandService.syncExecuteCommand(m.InsertSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:t}),this}deleteImages(r){const t=r.map(e=>({unitId:this._fWorkbook.getId(),drawingId:e.getId(),subUnitId:this.getSheetId(),drawingType:e.getType()}));return this._commandService.syncExecuteCommand(m.RemoveSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:t}),this}getImages(){const t=this._injector.get(w.ISheetDrawingService).getDrawingData(this._fWorkbook.getId(),this.getSheetId()),e=[];for(const n in t){const i=t[n];i.drawingType===c.DrawingTypeEnum.DRAWING_IMAGE&&e.push(this._injector.createInstance(p,i))}return e}getImageById(r){const e=this._injector.get(w.ISheetDrawingService).getDrawingByParam({unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),drawingId:r});return e&&e.drawingType===c.DrawingTypeEnum.DRAWING_IMAGE?this._injector.createInstance(p,e):null}getActiveImages(){const t=this._injector.get(w.ISheetDrawingService).getFocusDrawings(),e=[];for(const n in t){const i=t[n];e.push(this._injector.createInstance(p,i))}return e}updateImages(r){return this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:r}),this}onImageInserted(r){const t=this._injector.get(w.ISheetDrawingService);return c.toDisposable(t.add$.subscribe(e=>{const n=e.map(i=>this._injector.createInstance(p,t.getDrawingByParam(i)));r(n)}))}onImageDeleted(r){const t=this._injector.get(w.ISheetDrawingService);return c.toDisposable(t.remove$.subscribe(e=>{const n=e.map(i=>this._injector.createInstance(p,t.getDrawingByParam(i)));r(n)}))}onImageChanged(r){const t=this._injector.get(w.ISheetDrawingService);return c.toDisposable(t.update$.subscribe(e=>{const n=e.map(i=>this._injector.createInstance(p,t.getDrawingByParam(i)));r(n)}))}newOverGridImage(){const r=this._fWorkbook.getId(),t=this.getSheetId();return this._injector.createInstance(y,r,t)}async saveCellImagesAsync(r,t){var u;const e=this._injector.get(m.IBatchSaveImagesService),n=this._fWorkbook.getId(),i=this.getSheetId(),a=t?t.map(v=>v.getRange()):[this._worksheet.getCellMatrix().getDataRange()],o=e.getCellImagesFromRanges(n,i,a);if(o.length===0)return!1;if(o.length===1)try{return await e.downloadSingleImage(o[0]),!0}catch(v){return console.error("Failed to download image:",v),!1}const d=[],h=(u=r==null?void 0:r.useCellAddress)!=null?u:!0,g=r==null?void 0:r.useColumnIndex;h&&d.push(m.FileNamePart.CELL_ADDRESS),g!==void 0&&d.push(m.FileNamePart.COLUMN_VALUE),d.length===0&&d.push(m.FileNamePart.CELL_ADDRESS);try{return await e.saveImagesWithContext(o,{fileNameParts:d,columnIndex:g},n,i),!0}catch(v){return console.error("Failed to save images:",v),!1}}}E.FWorksheet.extend(x);class G extends l.FEnum{get DrawingType(){return c.DrawingTypeEnum}get ImageSourceType(){return c.ImageSourceType}get SheetDrawingAnchorType(){return w.SheetDrawingAnchorType}}l.FEnum.extend(G);class W extends l.FEventName{get BeforeFloatDomAdd(){return"BeforeFloatDomAdd"}get FloatDomAdded(){return"FloatDomAdded"}get BeforeFloatDomUpdate(){return"BeforeFloatDomUpdate"}get FloatDomUpdated(){return"FloatDomUpdated"}get BeforeFloatDomDelete(){return"BeforeFloatDomDelete"}get FloatDomDeleted(){return"FloatDomDeleted"}get BeforeOverGridImageChange(){return"BeforeOverGridImageChange"}get OverGridImageChanged(){return"OverGridImageChanged"}get BeforeOverGridImageInsert(){return"BeforeOverGridImageInsert"}get OverGridImageInserted(){return"OverGridImageInserted"}get BeforeOverGridImageRemove(){return"BeforeOverGridImageRemove"}get OverGridImageRemoved(){return"OverGridImageRemoved"}get BeforeOverGridImageSelect(){return"BeforeOverGridImageSelect"}get OverGridImageSelected(){return"OverGridImageSelected"}}l.FEventName.extend(W);class P extends l.FUniver{_initialize(r){const t=r.get(c.ICommandService);this.disposeWithMe(this.registerEventHandler(this.Event.BeforeFloatDomAdd,()=>t.beforeCommandExecuted(e=>{if(e.id!==m.InsertSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:a}=n,o=a.filter(h=>h.drawingType===c.DrawingTypeEnum.DRAWING_DOM);if(o.length===0)return;const d={workbook:i,drawings:o};if(this.fireEvent(this.Event.BeforeFloatDomAdd,d),d.cancel)throw new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.FloatDomAdded,()=>t.onCommandExecuted(e=>{if(e.id!==m.InsertSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:a}=n,o=a.filter(d=>d.drawingType===c.DrawingTypeEnum.DRAWING_DOM);o.length!==0&&this.fireEvent(this.Event.FloatDomAdded,{workbook:i,drawings:o})}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageInsert,()=>t.beforeCommandExecuted(e=>{if(e.id!==m.InsertSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:a}=n,o={workbook:i,insertImageParams:a};if(this.fireEvent(this.Event.BeforeOverGridImageInsert,o),o.cancel)throw new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageRemove,()=>t.beforeCommandExecuted(e=>{if(e.id!==m.RemoveSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const a=r.get(f.IDrawingManagerService),{drawings:o}=n,d=o.map(g=>a.getDrawingByParam(g)),h={workbook:i,images:this._createFOverGridImage(d)};if(this.fireEvent(this.Event.BeforeOverGridImageRemove,h),h.cancel)throw new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageChange,()=>t.beforeCommandExecuted(e=>{if(e.id!==m.SetSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:a}=n,o=r.get(f.IDrawingManagerService),d=[];a.forEach(g=>{const u=o.getDrawingByParam(g);u!=null&&d.push({changeParam:g,image:this._injector.createInstance(p,u)})});const h={workbook:i,images:d};if(this.fireEvent(this.Event.BeforeOverGridImageChange,h),h.cancel)throw o.updateNotification(a),new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeFloatDomUpdate,()=>t.beforeCommandExecuted(e=>{if(e.id!==m.SetSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:a}=n,o=r.get(f.IDrawingManagerService),d=[];if(a.forEach(g=>{const u=o.getDrawingByParam(g);(u==null?void 0:u.drawingType)===c.DrawingTypeEnum.DRAWING_DOM&&d.push(u)}),d.length===0)return;const h={workbook:i,drawings:d};if(this.fireEvent(this.Event.BeforeFloatDomUpdate,h),h.cancel)throw o.updateNotification(a),new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.FloatDomUpdated,()=>t.onCommandExecuted(e=>{if(e.id!==m.SetSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:a}=n,o=r.get(f.IDrawingManagerService),d=[];a.forEach(h=>{const g=o.getDrawingByParam(h);(g==null?void 0:g.drawingType)===c.DrawingTypeEnum.DRAWING_DOM&&d.push(g)}),d.length!==0&&this.fireEvent(this.Event.FloatDomUpdated,{workbook:i,drawings:d})}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeFloatDomDelete,()=>t.beforeCommandExecuted(e=>{if(e.id!==m.RemoveSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const a=r.get(f.IDrawingManagerService),{drawings:o}=n,d=o.map(g=>a.getDrawingByParam(g)).filter(g=>(g==null?void 0:g.drawingType)===c.DrawingTypeEnum.DRAWING_DOM);if(d.length===0)return;const h={workbook:i,drawings:d};if(this.fireEvent(this.Event.BeforeFloatDomDelete,h),h.cancel)throw new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.FloatDomDeleted,()=>t.onCommandExecuted(e=>{if(e.id!==m.RemoveSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:a}=n;this.fireEvent(this.Event.FloatDomDeleted,{workbook:i,drawings:a.filter(o=>o.drawingType===c.DrawingTypeEnum.DRAWING_DOM).map(o=>o.drawingId)})}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageSelect,()=>t.beforeCommandExecuted(e=>{if(e.id!==f.SetDrawingSelectedOperation.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null)return;const a=r.get(f.IDrawingManagerService),o=a.getFocusDrawings(),d=n.map(g=>a.getDrawingByParam(g)),h={workbook:i,selectedImages:this._createFOverGridImage(d),oldSelectedImages:this._createFOverGridImage(o)};if(this.fireEvent(this.Event.BeforeOverGridImageSelect,h),h.cancel)throw new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageInserted,()=>t.onCommandExecuted(e=>{if(e.id!==m.InsertSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:a}=n;this.fireEvent(this.Event.OverGridImageInserted,{workbook:i,images:this._createFOverGridImage(a)})}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageRemoved,()=>t.onCommandExecuted(e=>{if(e.id!==m.RemoveSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:a}=n;this.fireEvent(this.Event.OverGridImageRemoved,{workbook:i,removeImageParams:a})}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageChanged,()=>t.onCommandExecuted(e=>{if(e.id!==m.SetSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:a}=n,o=r.get(f.IDrawingManagerService),d=a.map(h=>this._injector.createInstance(p,o.getDrawingByParam(h)));this.fireEvent(this.Event.OverGridImageChanged,{workbook:i,images:d})}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageSelected,()=>t.onCommandExecuted(e=>{if(e.id!==f.SetDrawingSelectedOperation.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null)return;const a=r.get(f.IDrawingManagerService),o=n.map(d=>a.getDrawingByParam(d));this.fireEvent(this.Event.OverGridImageSelected,{workbook:i,selectedImages:this._createFOverGridImage(o)})})))}_createFOverGridImage(r){return r.map(t=>this._injector.createInstance(p,t))}registerURLImageDownloader(r){return this._injector.get(c.IURLImageService).registerURLImageDownloader(r)}}l.FUniver.extend(P);class U extends E.FRange{async insertCellImageAsync(r){var i;const t=this._injector.get(C.IRenderManagerService),e=(i=C.getCurrentTypeOfRenderer(c.UniverInstanceType.UNIVER_SHEET,this._injector.get(c.IUniverInstanceService),t))==null?void 0:i.with(m.SheetDrawingUpdateController);if(!e)return!1;const n={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),row:this.getRow(),col:this.getColumn()};return typeof r=="string"?e.insertCellImageByUrl(r,n):e.insertCellImageByFile(r,n)}async saveCellImagesAsync(r){var g;const t=this._injector.get(m.IBatchSaveImagesService),e=this._workbook.getUnitId(),n=this._worksheet.getSheetId(),i=this.getRange(),a=t.getCellImagesFromRanges(e,n,[i]);if(a.length===0)return!1;if(a.length===1)try{return await t.downloadSingleImage(a[0]),!0}catch(u){return console.error("Failed to download image:",u),!1}const o=[],d=(g=r==null?void 0:r.useCellAddress)!=null?g:!0,h=r==null?void 0:r.useColumnIndex;d&&o.push(m.FileNamePart.CELL_ADDRESS),h!==void 0&&o.push(m.FileNamePart.COLUMN_VALUE),o.length===0&&o.push(m.FileNamePart.CELL_ADDRESS);try{return await t.saveImagesWithContext(a,{fileNameParts:o,columnIndex:h},e,n),!0}catch(u){return console.error("Failed to save images:",u),!1}}}E.FRange.extend(U)}));
1
+ (function(c,f){typeof exports=="object"&&typeof module<"u"?f(require("@univerjs/core"),require("@univerjs/core/facade"),require("@univerjs/drawing"),require("@univerjs/engine-render"),require("@univerjs/sheets-drawing-ui"),require("@univerjs/sheets-ui"),require("@univerjs/sheets-drawing"),require("@univerjs/sheets-ui/facade"),require("@univerjs/sheets/facade"),require("@univerjs/ui")):typeof define=="function"&&define.amd?define(["@univerjs/core","@univerjs/core/facade","@univerjs/drawing","@univerjs/engine-render","@univerjs/sheets-drawing-ui","@univerjs/sheets-ui","@univerjs/sheets-drawing","@univerjs/sheets-ui/facade","@univerjs/sheets/facade","@univerjs/ui"],f):(c=typeof globalThis<"u"?globalThis:c||self,f(c.UniverCore,c.UniverCoreFacade,c.UniverDrawing,c.UniverEngineRender,c.UniverSheetsDrawingUi,c.UniverSheetsUi,c.UniverSheetsDrawing,c.UniverSheetsUiFacade,c.UniverSheetsFacade,c.UniverUi))})(this,(function(c,f,v,E,m,C,w,R,y,T){"use strict";var N=Object.defineProperty;var H=(c,f,v)=>f in c?N(c,f,{enumerable:!0,configurable:!0,writable:!0,value:v}):c[f]=v;var A=(c,f,v)=>H(c,typeof f!="symbol"?f+"":f,v);var M=Object.getOwnPropertyDescriptor,O=(s,r,t,e)=>{for(var n=e>1?void 0:e?M(r,t):r,i=s.length-1,o;i>=0;i--)(o=s[i])&&(n=o(n)||n);return n},F=(s,r)=>(t,e)=>r(t,e,s);function B(s,r){const{from:t,to:e,flipY:n=!1,flipX:i=!1,angle:o=0,skewX:d=0,skewY:a=0}=s.sheetTransform,{column:h,columnOffset:g,row:u,rowOffset:l}=t,p=C.convertPositionSheetOverGridToAbsolute(s.unitId,s.subUnitId,{from:t,to:e},r),{width:_,height:I}=p;return{...s,column:h,columnOffset:g,row:u,rowOffset:l,width:_,height:I,flipY:n,flipX:i,angle:o,skewX:d,skewY:a}}function x(s,r,t){const{column:e,columnOffset:n,row:i,rowOffset:o,flipY:d=!1,flipX:a=!1,angle:h=0,skewX:g=0,skewY:u=0,width:l,height:p}=s,_=C.convertPositionCellToSheetOverGrid(s.unitId,s.subUnitId,{column:e,columnOffset:n,row:i,rowOffset:o},l,p,r,t),{sheetTransform:I,transform:D}=_;return{...s,sheetTransform:{...I,flipY:d,flipX:a,angle:h,skewX:g,skewY:u},transform:{...D,flipY:d,flipX:a,angle:h,skewX:g,skewY:u},axisAlignSheetTransform:m.transformToAxisAlignPosition(D,r)}}let k=class{constructor(s,r,t){A(this,"_image");this._injector=t,this._image={drawingId:c.generateRandomId(6),drawingType:c.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:c.ImageSourceType.BASE64,source:"",unitId:s,subUnitId:r,column:0,columnOffset:0,row:0,rowOffset:0,width:0,height:0,axisAlignSheetTransform:{from:{column:0,columnOffset:0,row:0,rowOffset:0},to:{column:0,columnOffset:0,row:0,rowOffset:0}}}}setImage(s){const t=this._injector.get(E.IRenderManagerService).getRenderById(s.unitId);if(!t)throw new Error(`Render Unit with unitId ${s.unitId} not found`);const e=t.with(C.SheetSkeletonManagerService);return s.sheetTransform==null&&(s.sheetTransform={from:{column:0,columnOffset:0,row:0,rowOffset:0},to:{column:0,columnOffset:0,row:0,rowOffset:0}}),s.axisAlignSheetTransform==null&&(s.axisAlignSheetTransform={from:{column:0,columnOffset:0,row:0,rowOffset:0},to:{column:0,columnOffset:0,row:0,rowOffset:0}}),this._image=B(s,e),this}setSource(s,r){const t=r!=null?r:c.ImageSourceType.URL;return this._image.source=s,this._image.imageSourceType=t,this}getSource(){return this._image.source}getSourceType(){return this._image.imageSourceType}setColumn(s){return this._image.column=s,this}setRow(s){return this._image.row=s,this}setColumnOffset(s){return this._image.columnOffset=s,this}setRowOffset(s){return this._image.rowOffset=s,this}setWidth(s){return this._image.width=s,this}setHeight(s){return this._image.height=s,this}setAnchorType(s){return this._image.anchorType=s,this}setCropTop(s){return this._initializeSrcRect(),this._image.srcRect.top=s,this}setCropLeft(s){return this._initializeSrcRect(),this._image.srcRect.left=s,this}setCropBottom(s){return this._initializeSrcRect(),this._image.srcRect.bottom=s,this}setCropRight(s){return this._initializeSrcRect(),this._image.srcRect.right=s,this}_initializeSrcRect(){this._image.srcRect==null&&(this._image.srcRect={top:0,left:0,bottom:0,right:0})}setRotate(s){return this._image.angle=s,this}setUnitId(s){return this._image.unitId=s,this}setSubUnitId(s){return this._image.subUnitId=s,this}async buildAsync(){const r=this._injector.get(E.IRenderManagerService).getRenderById(this._image.unitId);if(!r)throw new Error(`Render Unit with unitId ${this._image.unitId} not found`);const t=r.with(C.ISheetSelectionRenderService),e=r.with(C.SheetSkeletonManagerService);if(this._image.width===0||this._image.height===0){const n=await v.getImageSize(this._image.source),i=n.width,o=n.height;this._image.width===0&&(this._image.width=i),this._image.height===0&&(this._image.height=o)}return x(this._image,t,e)}};k=O([F(2,c.Inject(c.Injector))],k);let S=class extends f.FBase{constructor(s,r,t){super(),this._image=s,this._commandService=r,this._injector=t}getId(){return this._image.drawingId}getType(){return this._image.drawingType}remove(){return this._commandService.syncExecuteCommand(m.RemoveSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}toBuilder(){const s=this._injector.createInstance(k);return s.setImage(this._image),s}setSource(s,r){const t=r!=null?r:c.ImageSourceType.URL;return this._image.source=s,this._image.imageSourceType=t,this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}async setPositionAsync(s,r,t,e){const n=this.toBuilder();n.setColumn(r),n.setRow(s),t!=null&&n.setRowOffset(t),e!=null&&n.setColumnOffset(e);const i=await n.buildAsync();return this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[i]})}async setSizeAsync(s,r){const t=this.toBuilder();t.setWidth(s),t.setHeight(r);const e=await t.buildAsync();return this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[e]})}setCrop(s,r,t,e){return this._image.srcRect==null&&(this._image.srcRect={top:0,left:0,bottom:0,right:0}),s!=null&&(this._image.srcRect.top=s),r!=null&&(this._image.srcRect.left=r),t!=null&&(this._image.srcRect.bottom=t),e!=null&&(this._image.srcRect.right=e),this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}setRotate(s){if(this._image.sheetTransform.angle=s,this._image.transform&&(this._image.transform.angle=s),this._image.transform){const t=this._injector.get(E.IRenderManagerService).getRenderById(this._image.unitId);if(!t)throw new Error(`Render Unit with unitId ${this._image.unitId} not found`);const e=t.with(C.ISheetSelectionRenderService);this._image.axisAlignSheetTransform&&(this._image.axisAlignSheetTransform=m.transformToAxisAlignPosition(this._image.transform,e))}return this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:this._image.unitId,drawings:[this._image]})}setForward(){return this._commandService.syncExecuteCommand(m.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:c.ArrangeTypeEnum.forward})}setBackward(){return this._commandService.syncExecuteCommand(m.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:c.ArrangeTypeEnum.backward})}setBack(){return this._commandService.syncExecuteCommand(m.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:c.ArrangeTypeEnum.back})}setFront(){return this._commandService.syncExecuteCommand(m.SetDrawingArrangeCommand.id,{unitId:this._image.unitId,subUnitId:this._image.subUnitId,drawingIds:[this._image.drawingId],arrangeType:c.ArrangeTypeEnum.front})}};S=O([F(1,c.ICommandService),F(2,c.Inject(c.Injector))],S);class j extends y.FWorksheet{getFloatDomById(r){const e=this._injector.get(m.SheetCanvasFloatDomManagerService).getFloatDomInfo(r);if(!e)return null;const{unitId:n,subUnitId:i}=e,{rect:o}=e,d=o.getState(),{left:a=0,top:h=0,width:g=0,height:u=0,flipX:l=!1,flipY:p=!1,angle:_=0,skewX:I=0,skewY:D=0}=d,b=this._injector.get(w.ISheetDrawingService).getDrawingByParam({drawingId:e.id,unitId:n,subUnitId:i});return b?{position:{left:a,top:h,width:g,height:u,flipX:l,flipY:p,angle:_,skewX:I,skewY:D},componentKey:b.componentKey,allowTransform:b.allowTransform,data:b.data,id:e.id}:null}getAllFloatDoms(){const r=this._injector.get(m.SheetCanvasFloatDomManagerService),t=this._workbook.getUnitId(),e=this._worksheet.getSheetId();return Array.from(r.getFloatDomsBySubUnitId(t,e).values()).map(n=>{const{rect:i}=n,o=this._injector.get(w.ISheetDrawingService).getDrawingByParam({drawingId:n.id,unitId:t,subUnitId:e}),{left:d,top:a,width:h,height:g,flipX:u,flipY:l,angle:p,skewX:_,skewY:I}=i.getState();return{position:{left:d,top:a,width:h,height:g,flipX:u,flipY:l,angle:p,skewX:_,skewY:I},componentKey:o.componentKey,allowTransform:o.allowTransform,data:o.data,id:n.id}})}updateFloatDom(r,t){var _,I,D;const n=this._injector.get(m.SheetCanvasFloatDomManagerService).getFloatDomInfo(r);if(!n)return this;const{unitId:i,subUnitId:o}=n,d=this._injector.get(w.ISheetDrawingService).getDrawingByParam({unitId:i,subUnitId:o,drawingId:r}),a=this._injector.get(E.IRenderManagerService);if(!a.getRenderById(i))return this;if(!this.getSkeleton())return this;const u=(_=a.getRenderById(this.getWorkbook().getUnitId()))==null?void 0:_.with(C.ISheetSelectionRenderService);if(!u)return this;const l={...d,componentKey:t.componentKey||d.componentKey,allowTransform:t.allowTransform!==void 0?t.allowTransform:d.allowTransform,data:t.data||d.data,sheetTransform:t.position&&(I=m.transformToDrawingPosition(t.position,u))!=null?I:d.sheetTransform,transform:{...d.transform,...t.position},axisAlignSheetTransform:t.position&&(D=m.transformToAxisAlignPosition(t.position,u))!=null?D:d.sheetTransform};if(!this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:i,subUnitId:o,drawings:[l]}))throw new Error("updateFloatDom failed");return this}batchUpdateFloatDoms(r){var o,d;const t=this._injector.get(m.SheetCanvasFloatDomManagerService),e=this._injector.get(w.ISheetDrawingService),n=this._injector.get(E.IRenderManagerService),i=[];for(const a of r){const h=t.getFloatDomInfo(a.id);if(!h)continue;const{unitId:g,subUnitId:u}=h,l=e.getDrawingByParam({unitId:g,subUnitId:u,drawingId:a.id});if(!l)continue;const p=n.getRenderById(g);if(!p||!this.getSkeleton())continue;const I=p.with(C.ISheetSelectionRenderService);if(!I)return this;const D={...l,componentKey:a.config.componentKey||l.componentKey,allowTransform:a.config.allowTransform!==void 0?a.config.allowTransform:l.allowTransform,data:a.config.data||l.data,sheetTransform:a.config.position&&(o=m.transformToDrawingPosition(a.config.position,I))!=null?o:l.sheetTransform,transform:{...l.transform,...a.config.position},axisAlignSheetTransform:a.config.position&&(d=m.transformToAxisAlignPosition(a.config.position,I))!=null?d:l.sheetTransform};i.push(D)}if(i.length>0){const a=this._workbook.getUnitId(),h=this._worksheet.getSheetId();if(!this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:a,subUnitId:h,drawings:i}))throw new Error("batchUpdateFloatDoms failed")}return this}removeFloatDom(r){const e=this._injector.get(m.SheetCanvasFloatDomManagerService).getFloatDomInfo(r);if(!e)return this;const{unitId:n,subUnitId:i}=e,d=this._injector.get(w.ISheetDrawingService).getDrawingByParam({unitId:n,subUnitId:i,drawingId:r});if(!d)return this;if(!this._commandService.syncExecuteCommand(m.RemoveSheetDrawingCommand.id,{unitId:n,drawings:[d]}))throw new Error("removeFloatDom failed");return this}addFloatDomToPosition(r,t){const e=this._workbook.getUnitId(),n=this._worksheet.getSheetId(),{key:i,disposableCollection:o}=R.transformComponentKey(r,this._injector.get(T.ComponentManager)),a=this._injector.get(m.SheetCanvasFloatDomManagerService).addFloatDomToPosition({...r,componentKey:i,unitId:e,subUnitId:n},t);return a?(o.add(a.dispose),{id:a.id,dispose:()=>{o.dispose(),a.dispose()}}):(o.dispose(),null)}addFloatDomToRange(r,t,e,n){const i=this._workbook.getUnitId(),o=this._worksheet.getSheetId(),{key:d,disposableCollection:a}=R.transformComponentKey(t,this._injector.get(T.ComponentManager)),g=this._injector.get(m.SheetCanvasFloatDomManagerService).addFloatDomToRange(r.getRange(),{...t,componentKey:d,unitId:i,subUnitId:o},e,n);return g?(a.add(g.dispose),{id:g.id,dispose:()=>{a.dispose(),g.dispose()}}):(a.dispose(),null)}addFloatDomToColumnHeader(r,t,e,n){const i=this._workbook.getUnitId(),o=this._worksheet.getSheetId(),{key:d,disposableCollection:a}=R.transformComponentKey(t,this._injector.get(T.ComponentManager)),g=this._injector.get(m.SheetCanvasFloatDomManagerService).addFloatDomToColumnHeader(r,{...t,componentKey:d,unitId:i,subUnitId:o},e,n);return g?(a.add(g.dispose),{id:g.id,dispose:()=>{a.dispose(),g.dispose()}}):(a.dispose(),null)}async insertImage(r,t,e,n,i){const o=this.newOverGridImage();if(typeof r=="string")o.setSource(r);else{const h=await r.getBlob().getDataAsString();o.setSource(h,c.ImageSourceType.BASE64)}t!==void 0?o.setColumn(t):o.setColumn(0),e!==void 0?o.setRow(e):o.setRow(0),n!==void 0?o.setColumnOffset(n):o.setColumnOffset(0),i!==void 0?o.setRowOffset(i):o.setRowOffset(0);const d=await o.buildAsync();return this._commandService.syncExecuteCommand(m.InsertSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:[d]})}insertImages(r){const t=r.map(e=>(e.unitId=this._fWorkbook.getId(),e.subUnitId=this.getSheetId(),e));return this._commandService.syncExecuteCommand(m.InsertSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:t}),this}deleteImages(r){const t=r.map(e=>({unitId:this._fWorkbook.getId(),drawingId:e.getId(),subUnitId:this.getSheetId(),drawingType:e.getType()}));return this._commandService.syncExecuteCommand(m.RemoveSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:t}),this}getImages(){const t=this._injector.get(w.ISheetDrawingService).getDrawingData(this._fWorkbook.getId(),this.getSheetId()),e=[];for(const n in t){const i=t[n];i.drawingType===c.DrawingTypeEnum.DRAWING_IMAGE&&e.push(this._injector.createInstance(S,i))}return e}getImageById(r){const e=this._injector.get(w.ISheetDrawingService).getDrawingByParam({unitId:this._fWorkbook.getId(),subUnitId:this.getSheetId(),drawingId:r});return e&&e.drawingType===c.DrawingTypeEnum.DRAWING_IMAGE?this._injector.createInstance(S,e):null}getActiveImages(){const t=this._injector.get(w.ISheetDrawingService).getFocusDrawings(),e=[];for(const n in t){const i=t[n];e.push(this._injector.createInstance(S,i))}return e}updateImages(r){return this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:r}),this}onImageInserted(r){const t=this._injector.get(w.ISheetDrawingService);return c.toDisposable(t.add$.subscribe(e=>{const n=e.map(i=>this._injector.createInstance(S,t.getDrawingByParam(i)));r(n)}))}onImageDeleted(r){const t=this._injector.get(w.ISheetDrawingService);return c.toDisposable(t.remove$.subscribe(e=>{const n=e.map(i=>this._injector.createInstance(S,t.getDrawingByParam(i)));r(n)}))}onImageChanged(r){const t=this._injector.get(w.ISheetDrawingService);return c.toDisposable(t.update$.subscribe(e=>{const n=e.map(i=>this._injector.createInstance(S,t.getDrawingByParam(i)));r(n)}))}newOverGridImage(){const r=this._fWorkbook.getId(),t=this.getSheetId();return this._injector.createInstance(k,r,t)}async saveCellImagesAsync(r,t){var u;const e=this._injector.get(m.IBatchSaveImagesService),n=this._fWorkbook.getId(),i=this.getSheetId(),o=t?t.map(l=>l.getRange()):[this._worksheet.getCellMatrix().getDataRange()],d=e.getCellImagesFromRanges(n,i,o);if(d.length===0)return!1;if(d.length===1)try{return await e.downloadSingleImage(d[0]),!0}catch(l){return console.error("Failed to download image:",l),!1}const a=[],h=(u=r==null?void 0:r.useCellAddress)!=null?u:!0,g=r==null?void 0:r.useColumnIndex;h&&a.push(m.FileNamePart.CELL_ADDRESS),g!==void 0&&a.push(m.FileNamePart.COLUMN_VALUE),a.length===0&&a.push(m.FileNamePart.CELL_ADDRESS);try{return await e.saveImagesWithContext(d,{fileNameParts:a,columnIndex:g},n,i),!0}catch(l){return console.error("Failed to save images:",l),!1}}}y.FWorksheet.extend(j);class P extends f.FEnum{get DrawingType(){return c.DrawingTypeEnum}get ImageSourceType(){return c.ImageSourceType}get SheetDrawingAnchorType(){return w.SheetDrawingAnchorType}}f.FEnum.extend(P);class G extends f.FEventName{get BeforeFloatDomAdd(){return"BeforeFloatDomAdd"}get FloatDomAdded(){return"FloatDomAdded"}get BeforeFloatDomUpdate(){return"BeforeFloatDomUpdate"}get FloatDomUpdated(){return"FloatDomUpdated"}get BeforeFloatDomDelete(){return"BeforeFloatDomDelete"}get FloatDomDeleted(){return"FloatDomDeleted"}get BeforeOverGridImageChange(){return"BeforeOverGridImageChange"}get OverGridImageChanged(){return"OverGridImageChanged"}get BeforeOverGridImageInsert(){return"BeforeOverGridImageInsert"}get OverGridImageInserted(){return"OverGridImageInserted"}get BeforeOverGridImageRemove(){return"BeforeOverGridImageRemove"}get OverGridImageRemoved(){return"OverGridImageRemoved"}get BeforeOverGridImageSelect(){return"BeforeOverGridImageSelect"}get OverGridImageSelected(){return"OverGridImageSelected"}}f.FEventName.extend(G);class W extends f.FUniver{_initialize(r){const t=r.get(c.ICommandService);this.disposeWithMe(this.registerEventHandler(this.Event.BeforeFloatDomAdd,()=>t.beforeCommandExecuted(e=>{if(e.id!==m.InsertSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:o}=n,d=o.filter(h=>h.drawingType===c.DrawingTypeEnum.DRAWING_DOM);if(d.length===0)return;const a={workbook:i,drawings:d};if(this.fireEvent(this.Event.BeforeFloatDomAdd,a),a.cancel)throw new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.FloatDomAdded,()=>t.onCommandExecuted(e=>{if(e.id!==m.InsertSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:o}=n,d=o.filter(a=>a.drawingType===c.DrawingTypeEnum.DRAWING_DOM);d.length!==0&&this.fireEvent(this.Event.FloatDomAdded,{workbook:i,drawings:d})}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageInsert,()=>t.beforeCommandExecuted(e=>{if(e.id!==m.InsertSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:o}=n,d={workbook:i,insertImageParams:o};if(this.fireEvent(this.Event.BeforeOverGridImageInsert,d),d.cancel)throw new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageRemove,()=>t.beforeCommandExecuted(e=>{if(e.id!==m.RemoveSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const o=r.get(v.IDrawingManagerService),{drawings:d}=n,a=d.map(g=>o.getDrawingByParam(g)),h={workbook:i,images:this._createFOverGridImage(a)};if(this.fireEvent(this.Event.BeforeOverGridImageRemove,h),h.cancel)throw new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageChange,()=>t.beforeCommandExecuted(e=>{if(e.id!==m.SetSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:o}=n,d=r.get(v.IDrawingManagerService),a=[];o.forEach(g=>{const u=d.getDrawingByParam(g);u!=null&&a.push({changeParam:g,image:this._injector.createInstance(S,u)})});const h={workbook:i,images:a};if(this.fireEvent(this.Event.BeforeOverGridImageChange,h),h.cancel)throw d.updateNotification(o),new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeFloatDomUpdate,()=>t.beforeCommandExecuted(e=>{if(e.id!==m.SetSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:o}=n,d=r.get(v.IDrawingManagerService),a=[];if(o.forEach(g=>{const u=d.getDrawingByParam(g);(u==null?void 0:u.drawingType)===c.DrawingTypeEnum.DRAWING_DOM&&a.push(u)}),a.length===0)return;const h={workbook:i,drawings:a};if(this.fireEvent(this.Event.BeforeFloatDomUpdate,h),h.cancel)throw d.updateNotification(o),new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.FloatDomUpdated,()=>t.onCommandExecuted(e=>{if(e.id!==m.SetSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:o}=n,d=r.get(v.IDrawingManagerService),a=[];o.forEach(h=>{const g=d.getDrawingByParam(h);(g==null?void 0:g.drawingType)===c.DrawingTypeEnum.DRAWING_DOM&&a.push(g)}),a.length!==0&&this.fireEvent(this.Event.FloatDomUpdated,{workbook:i,drawings:a})}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeFloatDomDelete,()=>t.beforeCommandExecuted(e=>{if(e.id!==m.RemoveSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const o=r.get(v.IDrawingManagerService),{drawings:d}=n,a=d.map(g=>o.getDrawingByParam(g)).filter(g=>(g==null?void 0:g.drawingType)===c.DrawingTypeEnum.DRAWING_DOM);if(a.length===0)return;const h={workbook:i,drawings:a};if(this.fireEvent(this.Event.BeforeFloatDomDelete,h),h.cancel)throw new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.FloatDomDeleted,()=>t.onCommandExecuted(e=>{if(e.id!==m.RemoveSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:o}=n;this.fireEvent(this.Event.FloatDomDeleted,{workbook:i,drawings:o.filter(d=>d.drawingType===c.DrawingTypeEnum.DRAWING_DOM).map(d=>d.drawingId)})}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeOverGridImageSelect,()=>t.beforeCommandExecuted(e=>{if(e.id!==v.SetDrawingSelectedOperation.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null)return;const o=r.get(v.IDrawingManagerService),d=o.getFocusDrawings(),a=n.map(g=>o.getDrawingByParam(g)),h={workbook:i,selectedImages:this._createFOverGridImage(a),oldSelectedImages:this._createFOverGridImage(d)};if(this.fireEvent(this.Event.BeforeOverGridImageSelect,h),h.cancel)throw new c.CanceledError}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageInserted,()=>t.onCommandExecuted(e=>{if(e.id!==m.InsertSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:o}=n;this.fireEvent(this.Event.OverGridImageInserted,{workbook:i,images:this._createFOverGridImage(o)})}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageRemoved,()=>t.onCommandExecuted(e=>{if(e.id!==m.RemoveSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:o}=n;this.fireEvent(this.Event.OverGridImageRemoved,{workbook:i,removeImageParams:o})}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageChanged,()=>t.onCommandExecuted(e=>{if(e.id!==m.SetSheetDrawingCommand.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null||n==null)return;const{drawings:o}=n,d=r.get(v.IDrawingManagerService),a=o.map(h=>this._injector.createInstance(S,d.getDrawingByParam(h)));this.fireEvent(this.Event.OverGridImageChanged,{workbook:i,images:a})}))),this.disposeWithMe(this.registerEventHandler(this.Event.OverGridImageSelected,()=>t.onCommandExecuted(e=>{if(e.id!==v.SetDrawingSelectedOperation.id)return;const n=e.params,i=this.getActiveWorkbook();if(i==null)return;const o=r.get(v.IDrawingManagerService),d=n.map(a=>o.getDrawingByParam(a));this.fireEvent(this.Event.OverGridImageSelected,{workbook:i,selectedImages:this._createFOverGridImage(d)})})))}_createFOverGridImage(r){return r.map(t=>this._injector.createInstance(S,t))}registerURLImageDownloader(r){return this._injector.get(c.IURLImageService).registerURLImageDownloader(r)}}f.FUniver.extend(W);class U extends y.FRange{async insertCellImageAsync(r){var i;const t=this._injector.get(E.IRenderManagerService),e=(i=E.getCurrentTypeOfRenderer(c.UniverInstanceType.UNIVER_SHEET,this._injector.get(c.IUniverInstanceService),t))==null?void 0:i.with(m.SheetDrawingUpdateController);if(!e)return!1;const n={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),row:this.getRow(),col:this.getColumn()};return typeof r=="string"?e.insertCellImageByUrl(r,n):e.insertCellImageByFile(r,n)}async saveCellImagesAsync(r){var g;const t=this._injector.get(m.IBatchSaveImagesService),e=this._workbook.getUnitId(),n=this._worksheet.getSheetId(),i=this.getRange(),o=t.getCellImagesFromRanges(e,n,[i]);if(o.length===0)return!1;if(o.length===1)try{return await t.downloadSingleImage(o[0]),!0}catch(u){return console.error("Failed to download image:",u),!1}const d=[],a=(g=r==null?void 0:r.useCellAddress)!=null?g:!0,h=r==null?void 0:r.useColumnIndex;a&&d.push(m.FileNamePart.CELL_ADDRESS),h!==void 0&&d.push(m.FileNamePart.COLUMN_VALUE),d.length===0&&d.push(m.FileNamePart.CELL_ADDRESS);try{return await t.saveImagesWithContext(o,{fileNameParts:d,columnIndex:h},e,n),!0}catch(u){return console.error("Failed to save images:",u),!1}}}y.FRange.extend(U)}));