@univerjs/sheets-drawing-ui 0.15.0-insiders.20260107-3441c7a → 0.15.0-insiders.20260108-47c73e3

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.
@@ -1,4 +1,4 @@
1
- import { IAccessor, Workbook, Disposable, ICommandService, IContextService, Injector, LocaleService } from '@univerjs/core';
1
+ import { IAccessor, Workbook, Disposable, ICommandService, IContextService, Injector, IURLImageService, LocaleService } from '@univerjs/core';
2
2
  import { IRenderContext, IRenderModule } from '@univerjs/engine-render';
3
3
  import { ISheetLocationBase, SheetsSelectionsService } from '@univerjs/sheets';
4
4
  import { IDrawingManagerService, IImageIoService } from '@univerjs/drawing';
@@ -31,8 +31,9 @@ export declare class SheetDrawingUpdateController extends Disposable implements
31
31
  private readonly _messageService;
32
32
  private readonly _localeService;
33
33
  private readonly _injector;
34
+ private readonly _urlImageService;
34
35
  private readonly _workbookSelections;
35
- constructor(_context: IRenderContext<Workbook>, _skeletonManagerService: SheetSkeletonManagerService, _commandService: ICommandService, _selectionRenderService: ISheetSelectionRenderService, _imageIoService: IImageIoService, _fileOpenerService: ILocalFileService, _sheetDrawingService: ISheetDrawingService, _drawingManagerService: IDrawingManagerService, _contextService: IContextService, _messageService: IMessageService, _localeService: LocaleService, selectionManagerService: SheetsSelectionsService, _injector: Injector);
36
+ constructor(_context: IRenderContext<Workbook>, _skeletonManagerService: SheetSkeletonManagerService, _commandService: ICommandService, _selectionRenderService: ISheetSelectionRenderService, _imageIoService: IImageIoService, _fileOpenerService: ILocalFileService, _sheetDrawingService: ISheetDrawingService, _drawingManagerService: IDrawingManagerService, _contextService: IContextService, _messageService: IMessageService, _localeService: LocaleService, selectionManagerService: SheetsSelectionsService, _injector: Injector, _urlImageService: IURLImageService);
36
37
  insertFloatImage(): Promise<boolean>;
37
38
  insertCellImage(): Promise<boolean>;
38
39
  insertCellImageByFile(file: File, location?: ISheetLocationBase): Promise<boolean>;
@@ -1,4 +1,4 @@
1
- import { Injector } from '@univerjs/core';
1
+ import { IDisposable, Injector } from '@univerjs/core';
2
2
  import { FUniver } from '@univerjs/core/facade';
3
3
  /**
4
4
  * @ignore
@@ -9,4 +9,23 @@ export declare class FUniverDrawingMixin extends FUniver {
9
9
  */
10
10
  _initialize(injector: Injector): void;
11
11
  private _createFOverGridImage;
12
+ /**
13
+ * Register a custom image downloader for URL images
14
+ * @param downloader The downloader function that takes a URL and returns a base64 string
15
+ * @returns A disposable object to unregister the downloader
16
+ * @example
17
+ * ```ts
18
+ * const disposable = univerAPI.registerURLImageDownloader(async (url) => {
19
+ * const response = await fetch(url);
20
+ * const blob = await response.blob();
21
+ * const base64 = await new Promise<string>((resolve) => {
22
+ * const reader = new FileReader();
23
+ * reader.onloadend = () => resolve(reader.result as string);
24
+ * reader.readAsDataURL(blob);
25
+ * });
26
+ * return base64;
27
+ * });
28
+ * ```
29
+ */
30
+ registerURLImageDownloader(downloader: (url: string) => Promise<string>): IDisposable;
12
31
  }
@@ -1,4 +1,4 @@
1
- import { IRange, Disposable, IImageIoService, ImageSourceType, IUniverInstanceService } from '@univerjs/core';
1
+ import { IDisposable, IRange, Disposable, IImageIoService, ImageSourceType, IUniverInstanceService, IURLImageService } from '@univerjs/core';
2
2
  import { SheetsSelectionsService } from '@univerjs/sheets';
3
3
  declare global {
4
4
  interface Window {
@@ -112,17 +112,31 @@ export interface IBatchSaveImagesService {
112
112
  startRow: number;
113
113
  endRow: number;
114
114
  } | null;
115
+ /**
116
+ * Get all column indices that are within the current selection
117
+ */
115
118
  /**
116
119
  * Get all column indices that are within the current selection
117
120
  */
118
121
  getSelectionColumnIndices(): Set<number>;
122
+ /**
123
+ * Register a custom image downloader for URL images
124
+ * @param downloader The downloader function that takes a URL and returns a base64 string
125
+ * @returns A disposable object to unregister the downloader
126
+ */
127
+ registerURLImageDownloader(downloader: (url: string) => Promise<string>): IDisposable;
119
128
  }
120
129
  export declare const IBatchSaveImagesService: import('@wendellhu/redi').IdentifierDecorator<IBatchSaveImagesService>;
121
130
  export declare class BatchSaveImagesService extends Disposable implements IBatchSaveImagesService {
122
131
  private readonly _univerInstanceService;
123
132
  private readonly _selectionService;
124
133
  private readonly _imageIoService;
125
- constructor(_univerInstanceService: IUniverInstanceService, _selectionService: SheetsSelectionsService, _imageIoService: IImageIoService);
134
+ private readonly _urlImageService;
135
+ constructor(_univerInstanceService: IUniverInstanceService, _selectionService: SheetsSelectionsService, _imageIoService: IImageIoService, _urlImageService: IURLImageService);
136
+ /**
137
+ * @deprecated Use IURLImageService directly
138
+ */
139
+ registerURLImageDownloader(downloader: (url: string) => Promise<string>): IDisposable;
126
140
  getCellImagesInSelection(): ICellImageInfo[];
127
141
  getCellImagesFromRanges(unitId: string, subUnitId: string, ranges: IRange[]): ICellImageInfo[];
128
142
  getDataColumns(): Array<{
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 A=(c,l,f)=>H(c,typeof l!="symbol"?l+"":l,f);var B=Object.getOwnPropertyDescriptor,T=(s,r,t,e)=>{for(var n=e>1?void 0:e?B(r,t):r,i=s.length-1,o;i>=0;i--)(o=s[i])&&(n=o(n)||n);return n},R=(s,r)=>(t,e)=>r(t,e,s);function j(s,r){const{from:t,to:e,flipY:n=!1,flipX:i=!1,angle:o=0,skewX:a=0,skewY:d=0}=s.sheetTransform,{column:u,columnOffset:g,row:h,rowOffset:v}=t,p=D.convertPositionSheetOverGridToAbsolute(s.unitId,s.subUnitId,{from:t,to:e},r),{width:I,height:S}=p;return{...s,column:u,columnOffset:g,row:h,rowOffset:v,width:I,height:S,flipY:n,flipX:i,angle:o,skewX:a,skewY:d}}function M(s,r,t){const{column:e,columnOffset:n,row:i,rowOffset:o,flipY:a=!1,flipX:d=!1,angle:u=0,skewX:g=0,skewY:h=0,width:v,height:p}=s,I=D.convertPositionCellToSheetOverGrid(s.unitId,s.subUnitId,{column:e,columnOffset:n,row:i,rowOffset:o},v,p,r,t),{sheetTransform:S,transform:O}=I;return{...s,sheetTransform:{...S,flipY:a,flipX:d,angle:u,skewX:g,skewY:h},transform:{...O,flipY:a,flipX:d,angle:u,skewX:g,skewY:h}}}let y=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}}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=j(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,o=n.height;this._image.width===0&&(this._image.width=i),this._image.height===0&&(this._image.height=o)}return M(this._image,t,e)}};y=T([R(2,c.Inject(c.Injector))],y);let _=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})}};_=T([R(1,c.ICommandService),R(2,c.Inject(c.Injector))],_);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:o}=e,a=o.getState(),{left:d=0,top:u=0,width:g=0,height:h=0,flipX:v=!1,flipY:p=!1,angle:I=0,skewX:S=0,skewY:O=0}=a,k=this._injector.get(w.ISheetDrawingService).getDrawingByParam({drawingId:e.id,unitId:n,subUnitId:i});return k?{position:{left:d,top:u,width:g,height:h,flipX:v,flipY:p,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,o=this._injector.get(w.ISheetDrawingService).getDrawingByParam({drawingId:n.id,unitId:t,subUnitId:e}),{left:a,top:d,width:u,height:g,flipX:h,flipY:v,angle:p,skewX:I,skewY:S}=i.getState();return{position:{left:a,top:d,width:u,height:g,flipX:h,flipY:v,angle:p,skewX:I,skewY:S},componentKey:o.componentKey,allowTransform:o.allowTransform,data:o.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:o}=n,a=this._injector.get(w.ISheetDrawingService).getDrawingByParam({unitId:i,subUnitId:o,drawingId:r}),d=this._injector.get(C.IRenderManagerService);if(!d.getRenderById(i))return this;if(!this.getSkeleton())return this;const h=(I=d.getRenderById(this.getWorkbook().getUnitId()))==null?void 0:I.with(D.ISheetSelectionRenderService);if(!h)return this;const v={...a,componentKey:t.componentKey||a.componentKey,allowTransform:t.allowTransform!==void 0?t.allowTransform:a.allowTransform,data:t.data||a.data,sheetTransform:t.position&&(S=m.transformToDrawingPosition(t.position,h))!=null?S:a.sheetTransform,transform:{...a.transform,...t.position}};if(!this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:i,subUnitId:o,drawings:[v]}))throw new Error("updateFloatDom failed");return this}batchUpdateFloatDoms(r){var o;const t=this._injector.get(m.SheetCanvasFloatDomManagerService),e=this._injector.get(w.ISheetDrawingService),n=this._injector.get(C.IRenderManagerService),i=[];for(const a of r){const d=t.getFloatDomInfo(a.id);if(!d)continue;const{unitId:u,subUnitId:g}=d,h=e.getDrawingByParam({unitId:u,subUnitId:g,drawingId:a.id});if(!h)continue;const v=n.getRenderById(u);if(!v||!this.getSkeleton())continue;const I=v.with(D.ISheetSelectionRenderService);if(!I)return this;const S={...h,componentKey:a.config.componentKey||h.componentKey,allowTransform:a.config.allowTransform!==void 0?a.config.allowTransform:h.allowTransform,data:a.config.data||h.data,sheetTransform:a.config.position&&(o=m.transformToDrawingPosition(a.config.position,I))!=null?o:h.sheetTransform,transform:{...h.transform,...a.config.position}};i.push(S)}if(i.length>0){const a=this._workbook.getUnitId(),d=this._worksheet.getSheetId();if(!this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:a,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,a=this._injector.get(w.ISheetDrawingService).getDrawingByParam({unitId:n,subUnitId:i,drawingId:r});if(!a)return this;if(!this._commandService.syncExecuteCommand(m.RemoveSheetDrawingCommand.id,{unitId:n,drawings:[a]}))throw new Error("removeFloatDom failed");return this}addFloatDomToPosition(r,t){const e=this._workbook.getUnitId(),n=this._worksheet.getSheetId(),{key:i,disposableCollection:o}=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?(o.add(d.dispose),{id:d.id,dispose:()=>{o.dispose(),d.dispose()}}):(o.dispose(),null)}addFloatDomToRange(r,t,e,n){const i=this._workbook.getUnitId(),o=this._worksheet.getSheetId(),{key:a,disposableCollection:d}=b.transformComponentKey(t,this._injector.get(F.ComponentManager)),g=this._injector.get(m.SheetCanvasFloatDomManagerService).addFloatDomToRange(r.getRange(),{...t,componentKey:a,unitId:i,subUnitId:o},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(),o=this._worksheet.getSheetId(),{key:a,disposableCollection:d}=b.transformComponentKey(t,this._injector.get(F.ComponentManager)),g=this._injector.get(m.SheetCanvasFloatDomManagerService).addFloatDomToColumnHeader(r,{...t,componentKey:a,unitId:i,subUnitId:o},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 o=this.newOverGridImage();if(typeof r=="string")o.setSource(r);else{const u=await r.getBlob().getDataAsString();o.setSource(u,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 a=await o.buildAsync();return this._commandService.syncExecuteCommand(m.InsertSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:[a]})}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(_,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(_,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(_,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(_,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(_,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(_,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 h;const e=this._injector.get(m.IBatchSaveImagesService),n=this._fWorkbook.getId(),i=this.getSheetId(),o=t?t.map(v=>v.getRange()):[this._worksheet.getCellMatrix().getDataRange()],a=e.getCellImagesFromRanges(n,i,o);if(a.length===0)return!1;if(a.length===1)try{return await e.downloadSingleImage(a[0]),!0}catch(v){return console.error("Failed to download image:",v),!1}const d=[],u=(h=r==null?void 0:r.useCellAddress)!=null?h:!0,g=r==null?void 0:r.useColumnIndex;u&&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(a,{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 P 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(P);class W extends l.FUniver{_initialize(r){const t=r.get(c.ICommandService);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,a=o.filter(u=>u.drawingType===c.DrawingTypeEnum.DRAWING_DOM);if(a.length===0)return;const d={workbook:i,drawings:a};if(this.fireEvent(this.Event.BeforeFloatDomAdd,d),d.cancel)throw new c.CanceledError})),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,a=o.filter(d=>d.drawingType===c.DrawingTypeEnum.DRAWING_DOM);a.length!==0&&this.fireEvent(this.Event.FloatDomAdded,{workbook:i,drawings:a})})),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,a={workbook:i,insertImageParams:o};if(this.fireEvent(this.Event.BeforeOverGridImageInsert,a),a.cancel)throw new c.CanceledError})),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(f.IDrawingManagerService),{drawings:a}=n,d=a.map(g=>o.getDrawingByParam(g)),u={workbook:i,images:this._createFOverGridImage(d)};if(this.fireEvent(this.Event.BeforeOverGridImageRemove,u),u.cancel)throw new c.CanceledError})),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,a=r.get(f.IDrawingManagerService),d=[];o.forEach(g=>{const h=a.getDrawingByParam(g);h!=null&&d.push({changeParam:g,image:this._injector.createInstance(_,h)})});const u={workbook:i,images:d};if(this.fireEvent(this.Event.BeforeOverGridImageChange,u),u.cancel)throw a.updateNotification(o),new c.CanceledError})),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,a=r.get(f.IDrawingManagerService),d=[];if(o.forEach(g=>{const h=a.getDrawingByParam(g);(h==null?void 0:h.drawingType)===c.DrawingTypeEnum.DRAWING_DOM&&d.push(h)}),d.length===0)return;const u={workbook:i,drawings:d};if(this.fireEvent(this.Event.BeforeFloatDomUpdate,u),u.cancel)throw a.updateNotification(o),new c.CanceledError})),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,a=r.get(f.IDrawingManagerService),d=[];o.forEach(u=>{const g=a.getDrawingByParam(u);(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.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(f.IDrawingManagerService),{drawings:a}=n,d=a.map(g=>o.getDrawingByParam(g)).filter(g=>(g==null?void 0:g.drawingType)===c.DrawingTypeEnum.DRAWING_DOM);if(d.length===0)return;const u={workbook:i,drawings:d};if(this.fireEvent(this.Event.BeforeFloatDomDelete,u),u.cancel)throw new c.CanceledError})),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(a=>a.drawingType===c.DrawingTypeEnum.DRAWING_DOM).map(a=>a.drawingId)})})),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 o=r.get(f.IDrawingManagerService),a=o.getFocusDrawings(),d=n.map(g=>o.getDrawingByParam(g)),u={workbook:i,selectedImages:this._createFOverGridImage(d),oldSelectedImages:this._createFOverGridImage(a)};if(this.fireEvent(this.Event.BeforeOverGridImageSelect,u),u.cancel)throw new c.CanceledError})),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.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.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,a=r.get(f.IDrawingManagerService),d=o.map(u=>this._injector.createInstance(_,a.getDrawingByParam(u)));this.fireEvent(this.Event.OverGridImageChanged,{workbook:i,images:d})})),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 o=r.get(f.IDrawingManagerService),a=n.map(d=>o.getDrawingByParam(d));this.fireEvent(this.Event.OverGridImageSelected,{workbook:i,selectedImages:this._createFOverGridImage(a)})}))}_createFOverGridImage(r){return r.map(t=>this._injector.createInstance(_,t))}}l.FUniver.extend(W);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(),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(h){return console.error("Failed to download image:",h),!1}const a=[],d=(g=r==null?void 0:r.useCellAddress)!=null?g:!0,u=r==null?void 0:r.useColumnIndex;d&&a.push(m.FileNamePart.CELL_ADDRESS),u!==void 0&&a.push(m.FileNamePart.COLUMN_VALUE),a.length===0&&a.push(m.FileNamePart.CELL_ADDRESS);try{return await t.saveImagesWithContext(o,{fileNameParts:a,columnIndex:u},e,n),!0}catch(h){return console.error("Failed to save images:",h),!1}}}E.FRange.extend(U)}));
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 A=(c,l,f)=>H(c,typeof l!="symbol"?l+"":l,f);var B=Object.getOwnPropertyDescriptor,T=(s,r,t,e)=>{for(var n=e>1?void 0:e?B(r,t):r,i=s.length-1,o;i>=0;i--)(o=s[i])&&(n=o(n)||n);return n},R=(s,r)=>(t,e)=>r(t,e,s);function j(s,r){const{from:t,to:e,flipY:n=!1,flipX:i=!1,angle:o=0,skewX:a=0,skewY:d=0}=s.sheetTransform,{column:u,columnOffset:g,row:h,rowOffset:v}=t,p=D.convertPositionSheetOverGridToAbsolute(s.unitId,s.subUnitId,{from:t,to:e},r),{width:I,height:S}=p;return{...s,column:u,columnOffset:g,row:h,rowOffset:v,width:I,height:S,flipY:n,flipX:i,angle:o,skewX:a,skewY:d}}function M(s,r,t){const{column:e,columnOffset:n,row:i,rowOffset:o,flipY:a=!1,flipX:d=!1,angle:u=0,skewX:g=0,skewY:h=0,width:v,height:p}=s,I=D.convertPositionCellToSheetOverGrid(s.unitId,s.subUnitId,{column:e,columnOffset:n,row:i,rowOffset:o},v,p,r,t),{sheetTransform:S,transform:O}=I;return{...s,sheetTransform:{...S,flipY:a,flipX:d,angle:u,skewX:g,skewY:h},transform:{...O,flipY:a,flipX:d,angle:u,skewX:g,skewY:h}}}let y=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}}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=j(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,o=n.height;this._image.width===0&&(this._image.width=i),this._image.height===0&&(this._image.height=o)}return M(this._image,t,e)}};y=T([R(2,c.Inject(c.Injector))],y);let _=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})}};_=T([R(1,c.ICommandService),R(2,c.Inject(c.Injector))],_);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:o}=e,a=o.getState(),{left:d=0,top:u=0,width:g=0,height:h=0,flipX:v=!1,flipY:p=!1,angle:I=0,skewX:S=0,skewY:O=0}=a,k=this._injector.get(w.ISheetDrawingService).getDrawingByParam({drawingId:e.id,unitId:n,subUnitId:i});return k?{position:{left:d,top:u,width:g,height:h,flipX:v,flipY:p,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,o=this._injector.get(w.ISheetDrawingService).getDrawingByParam({drawingId:n.id,unitId:t,subUnitId:e}),{left:a,top:d,width:u,height:g,flipX:h,flipY:v,angle:p,skewX:I,skewY:S}=i.getState();return{position:{left:a,top:d,width:u,height:g,flipX:h,flipY:v,angle:p,skewX:I,skewY:S},componentKey:o.componentKey,allowTransform:o.allowTransform,data:o.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:o}=n,a=this._injector.get(w.ISheetDrawingService).getDrawingByParam({unitId:i,subUnitId:o,drawingId:r}),d=this._injector.get(C.IRenderManagerService);if(!d.getRenderById(i))return this;if(!this.getSkeleton())return this;const h=(I=d.getRenderById(this.getWorkbook().getUnitId()))==null?void 0:I.with(D.ISheetSelectionRenderService);if(!h)return this;const v={...a,componentKey:t.componentKey||a.componentKey,allowTransform:t.allowTransform!==void 0?t.allowTransform:a.allowTransform,data:t.data||a.data,sheetTransform:t.position&&(S=m.transformToDrawingPosition(t.position,h))!=null?S:a.sheetTransform,transform:{...a.transform,...t.position}};if(!this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:i,subUnitId:o,drawings:[v]}))throw new Error("updateFloatDom failed");return this}batchUpdateFloatDoms(r){var o;const t=this._injector.get(m.SheetCanvasFloatDomManagerService),e=this._injector.get(w.ISheetDrawingService),n=this._injector.get(C.IRenderManagerService),i=[];for(const a of r){const d=t.getFloatDomInfo(a.id);if(!d)continue;const{unitId:u,subUnitId:g}=d,h=e.getDrawingByParam({unitId:u,subUnitId:g,drawingId:a.id});if(!h)continue;const v=n.getRenderById(u);if(!v||!this.getSkeleton())continue;const I=v.with(D.ISheetSelectionRenderService);if(!I)return this;const S={...h,componentKey:a.config.componentKey||h.componentKey,allowTransform:a.config.allowTransform!==void 0?a.config.allowTransform:h.allowTransform,data:a.config.data||h.data,sheetTransform:a.config.position&&(o=m.transformToDrawingPosition(a.config.position,I))!=null?o:h.sheetTransform,transform:{...h.transform,...a.config.position}};i.push(S)}if(i.length>0){const a=this._workbook.getUnitId(),d=this._worksheet.getSheetId();if(!this._commandService.syncExecuteCommand(m.SetSheetDrawingCommand.id,{unitId:a,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,a=this._injector.get(w.ISheetDrawingService).getDrawingByParam({unitId:n,subUnitId:i,drawingId:r});if(!a)return this;if(!this._commandService.syncExecuteCommand(m.RemoveSheetDrawingCommand.id,{unitId:n,drawings:[a]}))throw new Error("removeFloatDom failed");return this}addFloatDomToPosition(r,t){const e=this._workbook.getUnitId(),n=this._worksheet.getSheetId(),{key:i,disposableCollection:o}=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?(o.add(d.dispose),{id:d.id,dispose:()=>{o.dispose(),d.dispose()}}):(o.dispose(),null)}addFloatDomToRange(r,t,e,n){const i=this._workbook.getUnitId(),o=this._worksheet.getSheetId(),{key:a,disposableCollection:d}=b.transformComponentKey(t,this._injector.get(F.ComponentManager)),g=this._injector.get(m.SheetCanvasFloatDomManagerService).addFloatDomToRange(r.getRange(),{...t,componentKey:a,unitId:i,subUnitId:o},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(),o=this._worksheet.getSheetId(),{key:a,disposableCollection:d}=b.transformComponentKey(t,this._injector.get(F.ComponentManager)),g=this._injector.get(m.SheetCanvasFloatDomManagerService).addFloatDomToColumnHeader(r,{...t,componentKey:a,unitId:i,subUnitId:o},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 o=this.newOverGridImage();if(typeof r=="string")o.setSource(r);else{const u=await r.getBlob().getDataAsString();o.setSource(u,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 a=await o.buildAsync();return this._commandService.syncExecuteCommand(m.InsertSheetDrawingCommand.id,{unitId:this._fWorkbook.getId(),drawings:[a]})}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(_,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(_,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(_,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(_,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(_,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(_,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 h;const e=this._injector.get(m.IBatchSaveImagesService),n=this._fWorkbook.getId(),i=this.getSheetId(),o=t?t.map(v=>v.getRange()):[this._worksheet.getCellMatrix().getDataRange()],a=e.getCellImagesFromRanges(n,i,o);if(a.length===0)return!1;if(a.length===1)try{return await e.downloadSingleImage(a[0]),!0}catch(v){return console.error("Failed to download image:",v),!1}const d=[],u=(h=r==null?void 0:r.useCellAddress)!=null?h:!0,g=r==null?void 0:r.useColumnIndex;u&&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(a,{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 P 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(P);class W extends l.FUniver{_initialize(r){const t=r.get(c.ICommandService);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,a=o.filter(u=>u.drawingType===c.DrawingTypeEnum.DRAWING_DOM);if(a.length===0)return;const d={workbook:i,drawings:a};if(this.fireEvent(this.Event.BeforeFloatDomAdd,d),d.cancel)throw new c.CanceledError})),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,a=o.filter(d=>d.drawingType===c.DrawingTypeEnum.DRAWING_DOM);a.length!==0&&this.fireEvent(this.Event.FloatDomAdded,{workbook:i,drawings:a})})),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,a={workbook:i,insertImageParams:o};if(this.fireEvent(this.Event.BeforeOverGridImageInsert,a),a.cancel)throw new c.CanceledError})),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(f.IDrawingManagerService),{drawings:a}=n,d=a.map(g=>o.getDrawingByParam(g)),u={workbook:i,images:this._createFOverGridImage(d)};if(this.fireEvent(this.Event.BeforeOverGridImageRemove,u),u.cancel)throw new c.CanceledError})),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,a=r.get(f.IDrawingManagerService),d=[];o.forEach(g=>{const h=a.getDrawingByParam(g);h!=null&&d.push({changeParam:g,image:this._injector.createInstance(_,h)})});const u={workbook:i,images:d};if(this.fireEvent(this.Event.BeforeOverGridImageChange,u),u.cancel)throw a.updateNotification(o),new c.CanceledError})),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,a=r.get(f.IDrawingManagerService),d=[];if(o.forEach(g=>{const h=a.getDrawingByParam(g);(h==null?void 0:h.drawingType)===c.DrawingTypeEnum.DRAWING_DOM&&d.push(h)}),d.length===0)return;const u={workbook:i,drawings:d};if(this.fireEvent(this.Event.BeforeFloatDomUpdate,u),u.cancel)throw a.updateNotification(o),new c.CanceledError})),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,a=r.get(f.IDrawingManagerService),d=[];o.forEach(u=>{const g=a.getDrawingByParam(u);(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.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(f.IDrawingManagerService),{drawings:a}=n,d=a.map(g=>o.getDrawingByParam(g)).filter(g=>(g==null?void 0:g.drawingType)===c.DrawingTypeEnum.DRAWING_DOM);if(d.length===0)return;const u={workbook:i,drawings:d};if(this.fireEvent(this.Event.BeforeFloatDomDelete,u),u.cancel)throw new c.CanceledError})),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(a=>a.drawingType===c.DrawingTypeEnum.DRAWING_DOM).map(a=>a.drawingId)})})),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 o=r.get(f.IDrawingManagerService),a=o.getFocusDrawings(),d=n.map(g=>o.getDrawingByParam(g)),u={workbook:i,selectedImages:this._createFOverGridImage(d),oldSelectedImages:this._createFOverGridImage(a)};if(this.fireEvent(this.Event.BeforeOverGridImageSelect,u),u.cancel)throw new c.CanceledError})),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.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.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,a=r.get(f.IDrawingManagerService),d=o.map(u=>this._injector.createInstance(_,a.getDrawingByParam(u)));this.fireEvent(this.Event.OverGridImageChanged,{workbook:i,images:d})})),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 o=r.get(f.IDrawingManagerService),a=n.map(d=>o.getDrawingByParam(d));this.fireEvent(this.Event.OverGridImageSelected,{workbook:i,selectedImages:this._createFOverGridImage(a)})}))}_createFOverGridImage(r){return r.map(t=>this._injector.createInstance(_,t))}registerURLImageDownloader(r){return this._injector.get(c.IURLImageService).registerURLImageDownloader(r)}}l.FUniver.extend(W);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(),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(h){return console.error("Failed to download image:",h),!1}const a=[],d=(g=r==null?void 0:r.useCellAddress)!=null?g:!0,u=r==null?void 0:r.useColumnIndex;d&&a.push(m.FileNamePart.CELL_ADDRESS),u!==void 0&&a.push(m.FileNamePart.COLUMN_VALUE),a.length===0&&a.push(m.FileNamePart.CELL_ADDRESS);try{return await t.saveImagesWithContext(o,{fileNameParts:a,columnIndex:u},e,n),!0}catch(h){return console.error("Failed to save images:",h),!1}}}E.FRange.extend(U)}));