@univerjs/docs-drawing 1.0.0-alpha.2 → 1.0.0-alpha.4
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.
- package/lib/cjs/facade.js +559 -0
- package/lib/cjs/index.js +504 -45
- package/lib/es/facade.js +558 -0
- package/lib/es/index.js +497 -47
- package/lib/facade.js +558 -0
- package/lib/index.js +497 -47
- package/lib/types/commands/commands/insert-doc-drawing.command.d.ts +26 -0
- package/lib/types/commands/commands/remove-doc-drawing.command.d.ts +28 -0
- package/lib/types/commands/commands/set-drawing-arrange.command.d.ts +25 -0
- package/lib/types/commands/commands/update-doc-drawing-transform.command.d.ts +27 -0
- package/lib/types/commands/commands/update-doc-drawing-wrapping-style.command.d.ts +36 -0
- package/lib/types/controllers/doc-drawing.controller.d.ts +4 -2
- package/lib/types/facade/f-document-image.d.ts +324 -0
- package/lib/types/facade/f-document.d.ts +120 -0
- package/lib/types/facade/f-enum.d.ts +84 -0
- package/lib/types/facade/index.d.ts +19 -0
- package/lib/types/index.d.ts +12 -0
- package/lib/types/services/doc-drawing-adapter.service.d.ts +54 -0
- package/lib/umd/facade.js +1 -0
- package/lib/umd/index.js +1 -1
- package/package.json +17 -5
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023-present DreamNum Co., Ltd.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import type { IDisposable, IMutationInfo } from '@univerjs/core';
|
|
17
|
+
import type { IDocDrawing } from './doc-drawing.service';
|
|
18
|
+
export interface IDocDrawingRemoveMutationInfoParams {
|
|
19
|
+
unitId: string;
|
|
20
|
+
subUnitId: string;
|
|
21
|
+
drawing: IDocDrawing;
|
|
22
|
+
removeDrawings: readonly IDocDrawing[];
|
|
23
|
+
}
|
|
24
|
+
export interface IDocDrawingEditCommandInfoParams {
|
|
25
|
+
unitId: string;
|
|
26
|
+
subUnitId: string;
|
|
27
|
+
drawing: IDocDrawing;
|
|
28
|
+
}
|
|
29
|
+
export interface IDocDrawingMutationInfos {
|
|
30
|
+
redoMutations: IMutationInfo[];
|
|
31
|
+
undoMutations: IMutationInfo[];
|
|
32
|
+
}
|
|
33
|
+
export interface IDocDrawingEditCommandInfo {
|
|
34
|
+
label?: string;
|
|
35
|
+
commandId: string;
|
|
36
|
+
commandParams?: unknown;
|
|
37
|
+
disable?: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface IDocDrawingAdapter {
|
|
40
|
+
getRemoveDrawingMutationInfos?: (params: IDocDrawingRemoveMutationInfoParams) => IDocDrawingMutationInfos | null | undefined;
|
|
41
|
+
getEditDrawingCommandInfo?: (params: IDocDrawingEditCommandInfoParams) => IDocDrawingEditCommandInfo | null | undefined;
|
|
42
|
+
}
|
|
43
|
+
export interface IDocDrawingAdapterService {
|
|
44
|
+
registerAdapter(adapter: IDocDrawingAdapter): IDisposable;
|
|
45
|
+
getRemoveDrawingMutationInfos(params: IDocDrawingRemoveMutationInfoParams): IDocDrawingMutationInfos;
|
|
46
|
+
getEditDrawingCommandInfo(params: IDocDrawingEditCommandInfoParams): IDocDrawingEditCommandInfo | null;
|
|
47
|
+
}
|
|
48
|
+
export declare const IDocDrawingAdapterService: import("@wendellhu/redi").IdentifierDecorator<IDocDrawingAdapterService>;
|
|
49
|
+
export declare class DocDrawingAdapterService implements IDocDrawingAdapterService {
|
|
50
|
+
private readonly _adapters;
|
|
51
|
+
registerAdapter(adapter: IDocDrawingAdapter): IDisposable;
|
|
52
|
+
getRemoveDrawingMutationInfos(params: IDocDrawingRemoveMutationInfoParams): IDocDrawingMutationInfos;
|
|
53
|
+
getEditDrawingCommandInfo(params: IDocDrawingEditCommandInfoParams): IDocDrawingEditCommandInfo | null;
|
|
54
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/docs"),require("@univerjs/docs-drawing"),require("@univerjs/docs/facade"),require("@univerjs/drawing"),require("@univerjs/core/facade")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/docs-drawing`,`@univerjs/docs/facade`,`@univerjs/drawing`,`@univerjs/core/facade`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsDrawingFacade={},e.UniverCore,e.UniverDocs,e.UniverDocsDrawing,e.UniverDocsFacade,e.UniverDrawing,e.UniverCoreFacade))})(this,function(e,t,n,r,i,a,o){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var s=class{constructor(e,t,n){this._document=e,this._imageId=t,this._injector=n}getUnitId(){return this._document.getId()}getId(){return this._imageId}getSource(){var e;return(e=this.getImageData())==null?void 0:e.source}getSourceType(){var e;return(e=this.getImageData())==null?void 0:e.imageSourceType}getSize(){var e,t;return(e=(t=this.getImageData())==null?void 0:t.docTransform.size)==null?null:e}getAngle(){var e;return(e=this.getImageData())==null?void 0:e.docTransform.angle}getPositionH(){var e,t;return(e=(t=this.getImageData())==null?void 0:t.docTransform.positionH)==null?null:e}getPositionV(){var e,t;return(e=(t=this.getImageData())==null?void 0:t.docTransform.positionV)==null?null:e}getImageData(){var e;let n=(e=this._document.getDocumentDataModel().getDrawings())==null?void 0:e[this._imageId];return!n||n.drawingType!==t.DrawingTypeEnum.DRAWING_IMAGE?null:n}setSize(e,t){return this._updateTransform(`size`,{width:e,height:t})}setRotate(e){return this._updateTransform(`angle`,e)}setPositionH(e){return this._updateTransform(`positionH`,e)}setPositionV(e){return this._updateTransform(`positionV`,e)}setWrappingStyle(e){let n=this.getImageData();return n?this._injector.get(t.ICommandService).syncExecuteCommand(r.UpdateDocDrawingWrappingStyleCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawings:[n],wrappingStyle:e}):!1}setForward(){return this._arrange(t.ArrangeTypeEnum.forward)}setBackward(){return this._arrange(t.ArrangeTypeEnum.backward)}setBack(){return this._arrange(t.ArrangeTypeEnum.back)}setFront(){return this._arrange(t.ArrangeTypeEnum.front)}remove(){let e=this.getImageData(),n=this._getTextRange();return!e||!n?!1:this._injector.get(t.ICommandService).syncExecuteCommand(r.RemoveDocDrawingCommand.id,{unitId:this.getUnitId(),drawings:[{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawingId:this._imageId,drawingType:t.DrawingTypeEnum.DRAWING_IMAGE}],textRange:n})}_updateTransform(e,n){return this._injector.get(t.ICommandService).syncExecuteCommand(r.UpdateDrawingDocTransformCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawings:[{drawingId:this._imageId,key:e,value:n}]})}_arrange(e){return this._injector.get(t.ICommandService).syncExecuteCommand(r.SetDocDrawingArrangeCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawingIds:[this._imageId],arrangeType:e})}_getTextRange(){let{body:e,headers:t={},footers:n={}}=this._document.getDocumentDataModel().getSnapshot(),r=[{segmentId:``,body:e},...Object.entries(t).map(([e,t])=>({segmentId:e,body:t.body})),...Object.entries(n).map(([e,t])=>({segmentId:e,body:t.body}))];for(let{segmentId:e,body:t}of r){var i;let n=t==null||(i=t.customBlocks)==null?void 0:i.find(e=>e.blockId===this._imageId);if(n)return{startOffset:n.startIndex,endOffset:n.startIndex,collapsed:!0,segmentId:e}}return null}},c=class extends i.FDocument{async insertImage(e){var i,a,o,c;let u=this.getId(),d=(0,t.generateRandomId)(6),f=l(await this._getIntrinsicSize(e.source,e.imageSourceType),e),p=(0,n.buildDocTransform)(f.width,f.height),m=(i=e.wrappingStyle)==null?r.TextWrappingStyle.INLINE:i,h={...p,angle:(a=e.angle)==null?p.angle:a,positionH:(o=e.positionH)==null?p.positionH:o,positionV:(c=e.positionV)==null?p.positionV:c},g=(0,n.docDrawingPositionToTransform)(h),_={unitId:u,subUnitId:u,drawingId:d,drawingType:t.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:e.imageSourceType,source:e.source,transform:g,docTransform:h,behindDoc:m===r.TextWrappingStyle.BEHIND_TEXT?t.BooleanNumber.TRUE:t.BooleanNumber.FALSE,title:``,description:``,layoutType:r.WRAPPING_STYLE_TO_LAYOUT_TYPE[m],wrapText:t.WrapTextType.BOTH_SIDES,distB:0,distL:0,distR:0,distT:0};return this._injector.get(t.ICommandService).syncExecuteCommand(r.InsertDocDrawingCommand.id,{unitId:u,drawings:[_],textRange:e.textRange})?this._injector.createInstance(s,this,d,this._injector):null}getImage(e){var n;let r=(n=this.getDocumentDataModel().getDrawings())==null?void 0:n[e];return!r||r.drawingType!==t.DrawingTypeEnum.DRAWING_IMAGE?null:this._injector.createInstance(s,this,e,this._injector)}getImages(){var e,n;let r=this.getDocumentDataModel(),i=(e=r.getDrawings())==null?{}:e;return((n=r.getDrawingsOrder())==null?Object.keys(i):n).filter(e=>{var n;return((n=i[e])==null?void 0:n.drawingType)===t.DrawingTypeEnum.DRAWING_IMAGE}).map(e=>this._injector.createInstance(s,this,e,this._injector))}async _getIntrinsicSize(e,n){let r=this._injector.has(t.IImageIoService)?this._injector.get(t.IImageIoService):null,i=e;if(n===t.ImageSourceType.UUID&&r)i=await r.getImage(e);else if(n===t.ImageSourceType.URL&&this._injector.has(t.IURLImageService))try{i=await this._injector.get(t.IURLImageService).getImage(e)}catch{i=e}let{width:o,height:s,image:c}=await(0,a.getImageSize)(i);return r==null||r.addImageSourceCache(e,n,c),{width:o,height:s}}};function l(e,t){let{width:n,height:r}=e;if(t.width!=null&&t.height!=null)return{width:t.width,height:t.height};if(t.width!=null)return{width:t.width,height:r*t.width/n};if(t.height!=null)return{width:n*t.height/r,height:t.height};let i=Math.min(1,a.DRAWING_IMAGE_WIDTH_LIMIT/n,a.DRAWING_IMAGE_HEIGHT_LIMIT/r);return{width:n*i,height:r*i}}i.FDocument.extend(c);var u=class extends o.FEnum{get DocsImageWrappingStyle(){return r.TextWrappingStyle}get DocsImageRelativeFromH(){return t.ObjectRelativeFromH}get DocsImageRelativeFromV(){return t.ObjectRelativeFromV}};o.FEnum.extend(u),e.FDocumentImage=s});
|
package/lib/umd/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/drawing")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/drawing`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsDrawing={},e.UniverCore,e.UniverDrawing))})(this,function(e,t,n){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var r=class extends n.UnitDrawingService{};let i=(0,t.createIdentifier)(`univer.doc.plugin.doc-drawing.service`);function a(e,t){return function(n,r){t(n,r,e)}}function o(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let s=`DOC_DRAWING_PLUGIN`;function c(e,t={}){return e.map((e,t)=>({drawingId:e,index:t})).sort((e,n)=>{let r=l(t[e.drawingId]);return r===l(t[n.drawingId])?e.index-n.index:r?-1:1}).map(({drawingId:e})=>e)}function l(e){return(e==null?void 0:e.layoutType)===t.PositionedObjectLayoutType.WRAP_NONE&&e.behindDoc===t.BooleanNumber.TRUE}let u=class extends t.Disposable{constructor(e,t,n,r){super(),this._docDrawingService=e,this._drawingManagerService=t,this._resourceManagerService=n,this._univerInstanceService=r,this._init()}_init(){this._initSnapshot()}_initSnapshot(){let e=e=>{let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);if(n){let e=n.getSnapshot().drawings,t=n.getSnapshot().drawingsOrder;return JSON.stringify({data:e==null?{}:e,order:t==null?[]:t})}return``},n=e=>{if(!e)return{data:{},order:[]};try{return JSON.parse(e)}catch{return{data:{},order:[]}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:s,businesses:[t.UniverInstanceType.UNIVER_DOC],toJson:t=>e(t),parseJson:e=>n(e),onUnLoad:e=>{this._setDrawingDataForUnit(e,{data:{},order:[]})},onLoad:(e,t)=>{var n,r;this._setDrawingDataForUnit(e,{data:(n=t.data)==null?{}:n,order:(r=t.order)==null?[]:r})}}))}_setDrawingDataForUnit(e,t){let n=this._univerInstanceService.getUnit(e);n!=null&&(n.resetDrawing(t.data,t.order),this.loadDrawingDataForUnit(e))}loadDrawingDataForUnit(e){let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);if(!n)return!1;let r=e,i=n.getDrawings(),a=n.getDrawingsOrder();if(!i||!a)return!1;let o={[r]:{unitId:e,subUnitId:r,data:i,order:a}},s={[r]:{...o[r],order:c(a,i)}};return this._docDrawingService.registerDrawingData(e,o),this._drawingManagerService.registerDrawingData(e,s),!0}};u=o([a(0,i),a(1,n.IDrawingManagerService),a(2,t.IResourceManagerService),a(3,t.IUniverInstanceService)],u);var d=`@univerjs/docs-drawing`,f=`1.0.0-alpha.2`;let p={};function m(e){"@babel/helpers - typeof";return m=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},m(e)}function h(e,t){if(m(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(m(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function g(e){var t=h(e,`string`);return m(t)==`symbol`?t:t+``}function _(e,t,n){return(t=g(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let v=class extends t.Plugin{constructor(e=p,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},p,this._config);this._configService.setConfig(`docs-drawing.config`,i)}onStarting(){[[u],[r],[i,{useClass:r}]].forEach(e=>this._injector.add(e)),(0,t.touchDependencies)(this._injector,[[u]])}};_(v,`pluginName`,s),_(v,`packageName`,d),_(v,`version`,f),_(v,`type`,t.UniverInstanceType.UNIVER_DOC),v=o([a(1,(0,t.Inject)(t.Injector)),a(2,t.IConfigService)],v),e.DOCS_DRAWING_PLUGIN=s,Object.defineProperty(e,"DocDrawingController",{enumerable:!0,get:function(){return u}}),e.DocDrawingService=r,e.IDocDrawingService=i,Object.defineProperty(e,"UniverDocsDrawingPlugin",{enumerable:!0,get:function(){return v}}),e.getDocDrawingRenderOrder=c});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/docs"),require("@univerjs/drawing")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/drawing`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsDrawing={},e.UniverCore,e.UniverDocs,e.UniverDrawing))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let i={id:`doc.command.insert-doc-image`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i,o,s,c,l;if(!r)return!1;let u=e.get(t.ICommandService),d=e.get(t.IUniverInstanceService),{unitId:f,drawings:p,textRange:m}=r,h=d.getUnit(f,t.UniverInstanceType.UNIVER_DOC);if(!h)return!1;let g=a(e,f,m);if(!g)return!1;let{collapsed:_,startOffset:v,segmentId:y=``}=g,b=(i=h.getSelfOrHeaderFooterModel(y))==null?void 0:i.getBody();if(!b)return!1;let x=new t.TextX,S=t.JSONX.getInstance(),C=[],w=h.getSnapshot(),T=(o=w.headers)!=null&&o[y]||(s=w.footers)!=null&&s[y]?p.map(e=>{var n;return{...e,isMultiTransform:t.BooleanNumber.TRUE,transforms:(n=e.transforms)==null?e.transform?[e.transform]:null:n}}):p,E=(c=(l=w.drawingsOrder)==null?void 0:l.length)==null?0:c,D=0;if(_)v>0&&x.push({t:t.TextXActionType.RETAIN,len:v});else{var O,k;let e=t.BuildTextUtils.selection.delete([g],b,0,null,!1);x.push(...e);let n=(0,t.getCustomBlockIdsInSelections)(b,[g]),r=(O=h.getDrawings())==null?{}:O,i=(k=h.getDrawingsOrder())==null?[]:k,a=n.sort((e,t)=>i.indexOf(e)>i.indexOf(t)?-1:+(i.indexOf(e)<i.indexOf(t)));if(a.length>0)for(let e of a){let t=r[e],n=i.indexOf(e);if(t==null||n<0)continue;let a=S.removeOp([`drawings`,e],t),o=S.removeOp([`drawingsOrder`,n],e);C.push(a),C.push(o),D++}}x.push({t:t.TextXActionType.INSERT,body:{dataStream:`\b`.repeat(T.length),customBlocks:T.map((e,t)=>({startIndex:t,blockId:e.drawingId}))},len:T.length});let A=(0,t.getRichTextEditPath)(h,y),j=S.editOp(x.serialize(),A);C.push(j);for(let e of T){let{drawingId:t}=e,n=S.insertOp([`drawings`,t],e),r=S.insertOp([`drawingsOrder`,E-D],t);C.push(n),C.push(r)}let M={id:n.RichTextEditingMutation.id,params:{unitId:f,actions:[],textRanges:[]}};return M.params.actions=C.reduce((e,n)=>t.JSONX.compose(e,n),null),!!u.syncExecuteCommand(M.id,M.params)}};function a(e,t,r){var i,a;let o=e.get(n.DocSelectionManagerService).getActiveTextRange(),s=r?(0,n.normalizeTextRange)(r):null,c=s==null?(0,n.getContentInsertRange)(e,t):s;return c?{...o,startOffset:c.startOffset,endOffset:c.endOffset,collapsed:c.startOffset===c.endOffset,segmentId:(i=(a=c.segmentId)==null?o==null?void 0:o.segmentId:a)==null?``:i}:o==null?null:o}function o(e){"@babel/helpers - typeof";return o=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},o(e)}function s(e,t){if(o(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(o(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function c(e){var t=s(e,`string`);return o(t)==`symbol`?t:t+``}function l(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let u=(0,t.createIdentifier)(`doc.drawing-adapter.service`);var d=class{constructor(){l(this,`_adapters`,[])}registerAdapter(e){return this._adapters.push(e),(0,t.toDisposable)(()=>{let t=this._adapters.indexOf(e);t>=0&&this._adapters.splice(t,1)})}getRemoveDrawingMutationInfos(e){let t={redoMutations:[],undoMutations:[]};for(let r of this._adapters){var n;let i=(n=r.getRemoveDrawingMutationInfos)==null?void 0:n.call(r,e);i&&(t.redoMutations.push(...i.redoMutations),t.undoMutations.push(...i.undoMutations))}return t}getEditDrawingCommandInfo(e){for(let n of this._adapters){var t;let r=(t=n.getEditDrawingCommandInfo)==null?void 0:t.call(n,e);if(r)return r}return null}};let f={id:`doc.command.remove-doc-image`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i,a,o,s,c;if(!r)return!1;let l=e.get(t.ICommandService),d=e.get(t.IUndoRedoService),f=e.get(u),m=e.get(t.IUniverInstanceService),h=e.get(n.DocSelectionManagerService),{unitId:g,drawings:_,textRange:v}=r,y=m.getUnit(g,t.UniverInstanceType.UNIVER_DOC);if(!y||_.length===0)return!1;let b=h.getActiveTextRange(),x=v?(0,n.normalizeTextRange)(v):null,S=x==null?(0,n.getContentInsertRange)(e,g):x,C=(i=(a=S==null?void 0:S.segmentId)==null?b==null?void 0:b.segmentId:a)==null?``:i,w=new t.TextX,T=t.JSONX.getInstance(),E=(o=(s=y.getSelfOrHeaderFooterModel(C))==null||(s=s.getBody())==null?void 0:s.customBlocks)==null?[]:o,D=_.map(e=>E.find(t=>t.blockId===e.drawingId)).filter(e=>!!e).sort((e,t)=>e.startIndex>t.startIndex?1:-1);if(D.length===0)return!1;let O=(c=y.getDrawings())==null?{}:c,k=new Map(_.map(e=>[e.drawingId,e])),A=D.map(e=>O[e.blockId]).filter(e=>e!=null),j=[],M=[],N=[];for(let e of D){var P;let{blockId:t}=e,n=O[t];if(n==null)continue;let r=k.get(t),i=f.getRemoveDrawingMutationInfos({unitId:g,subUnitId:(P=r==null?void 0:r.subUnitId)==null?g:P,drawing:n,removeDrawings:A});i.redoMutations.length===0&&i.undoMutations.length===0||(j.push(...i.redoMutations),M.push(...i.undoMutations),N.push(i))}if(!p(N,l))return!1;let F=`doc-drawing-remove-resource:${g}:${D.map(e=>e.blockId).join(`,`)}`,I=null;(j.length>0||M.length>0)&&(I=d.__tempBatchingUndoRedo(g),d.pushUndoRedo({unitID:g,redoMutations:j,undoMutations:M,id:F}));let L=new t.MemoryCursor,R=D[0].startIndex,z=[{startOffset:R,endOffset:R}],B={id:n.RichTextEditingMutation.id,params:{unitId:g,actions:[],textRanges:z}},V=[];for(let e of D){let{startIndex:n}=e;n>L.cursor&&w.push({t:t.TextXActionType.RETAIN,len:n-L.cursor}),w.push({t:t.TextXActionType.DELETE,len:1}),L.moveCursorTo(n+1)}V.push(T.editOp(w.serialize(),(0,t.getRichTextEditPath)(y,C)));for(let e of D){let{blockId:t}=e,n=y.getDrawingsOrder().indexOf(t);V.push(T.removeOp([`drawings`,t],O[t])),V.push(T.removeOp([`drawingsOrder`,n],t))}B.params.actions=V.reduce((e,n)=>t.JSONX.compose(e,n),null);let H=l.syncExecuteCommand(B.id,B.params);return!H&&I!=null?(I.dispose(),d.rollback(F,g),!1):(I==null||I.dispose(),!!H)}};function p(e,t){let n=[];for(let r of e){if(!h(r.redoMutations,t))return m([...n].reverse(),t),!1;n.push(r.undoMutations)}return!0}function m(e,t){e.forEach(e=>h(e,t))}function h(e,t){for(let n of e)if(!t.syncExecuteCommand(n.id,n.params))return!1;return!0}var g=class extends r.UnitDrawingService{};let _=(0,t.createIdentifier)(`univer.doc.plugin.doc-drawing.service`),v={id:`doc.command.set-drawing-arrange`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(t.ICommandService),a=e.get(_);if(r==null)return!1;let{unitId:o,subUnitId:s,drawingIds:c,arrangeType:l}=r,u={unitId:o,subUnitId:s,drawingIds:c},d;if(l===t.ArrangeTypeEnum.forward?d=a.getForwardDrawingsOp(u):l===t.ArrangeTypeEnum.backward?d=a.getBackwardDrawingOp(u):l===t.ArrangeTypeEnum.front?d=a.getFrontDrawingsOp(u):l===t.ArrangeTypeEnum.back&&(d=a.getBackDrawingsOp(u)),d==null)return!1;let{redo:f}=d;if(f==null)return!1;let p=[],m=t.Tools.deepClone(f);m=m.slice(3),m.unshift(`drawingsOrder`),p.push(m);let h={id:n.RichTextEditingMutation.id,params:{unitId:o,actions:[],textRanges:null}};return h.params.actions=p.reduce((e,n)=>t.JSONX.compose(e,n),null),!!i.syncExecuteCommand(h.id,h.params)}},y={id:`doc.command.update-drawing-doc-transform`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i;if(!r)return!1;let a=e.get(t.ICommandService),o=e.get(t.IUniverInstanceService),{unitId:s,drawings:c}=r,l=o.getUnit(s,t.UniverInstanceType.UNIVER_DOC);if(!l)return!1;let u=(i=l.getSnapshot().drawings)==null?{}:i,d=t.JSONX.getInstance(),f=[];for(let{drawingId:e,key:n,value:r}of c){var p;let i=(p=u[e])==null||(p=p.docTransform)==null?void 0:p[n];if(!t.Tools.diffValue(i,r)){let t=[`drawings`,e,`docTransform`,n];f.push(i===void 0?d.insertOp(t,r):d.replaceOp(t,i,r))}}return!!a.syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:s,actions:f.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null,debounce:!0})}},b=function(e){return e.INLINE=`inline`,e.BEHIND_TEXT=`behindText`,e.IN_FRONT_OF_TEXT=`inFrontOfText`,e.WRAP_SQUARE=`wrapSquare`,e.WRAP_TOP_AND_BOTTOM=`wrapTopAndBottom`,e}({}),x={inline:t.PositionedObjectLayoutType.INLINE,wrapSquare:t.PositionedObjectLayoutType.WRAP_SQUARE,wrapTopAndBottom:t.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM,inFrontOfText:t.PositionedObjectLayoutType.WRAP_NONE,behindText:t.PositionedObjectLayoutType.WRAP_NONE},S={id:`doc.command.update-doc-drawing-wrapping-style`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i;if(!r)return!1;let{drawings:a,wrappingStyle:o,unitId:s}=r,c=e.get(t.ICommandService),l=e.get(t.IUniverInstanceService).getUnit(s,t.UniverInstanceType.UNIVER_DOC);if(!l)return!1;let u=(i=l.getDrawings())==null?{}:i,d=t.JSONX.getInstance(),f=[];for(let e of a){let n=u[e.drawingId];if(!n)continue;let r=x[o];if(n.layoutType!==r&&f.push(d.replaceOp([`drawings`,e.drawingId,`layoutType`],n.layoutType,r)),o===`behindText`||o===`inFrontOfText`){let r=o===`behindText`?t.BooleanNumber.TRUE:t.BooleanNumber.FALSE;n.behindDoc!==r&&f.push(d.replaceOp([`drawings`,e.drawingId,`behindDoc`],n.behindDoc,r))}if(o!==`inline`)for(let r of[`positionH`,`positionV`]){var p;let i=(p=e.docTransform)==null?void 0:p[r],a=n.docTransform[r];i&&!t.Tools.diffValue(a,i)&&f.push(d.replaceOp([`drawings`,e.drawingId,`docTransform`,r],a,i))}}let m={id:n.RichTextEditingMutation.id,params:{unitId:s,actions:f.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null}};return!!c.syncExecuteCommand(m.id,m.params)}};function C(e,t){return function(n,r){t(n,r,e)}}function w(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let T=`DOC_DRAWING_PLUGIN`;function E(e,t={}){return e.map((e,t)=>({drawingId:e,index:t})).sort((e,n)=>{let r=D(t[e.drawingId]);return r===D(t[n.drawingId])?e.index-n.index:r?-1:1}).map(({drawingId:e})=>e)}function D(e){return(e==null?void 0:e.layoutType)===t.PositionedObjectLayoutType.WRAP_NONE&&e.behindDoc===t.BooleanNumber.TRUE}let O=class extends t.Disposable{constructor(e,t,n,r,i){super(),this._docDrawingService=e,this._drawingManagerService=t,this._resourceManagerService=n,this._univerInstanceService=r,this._commandService=i,this._init()}_init(){this._initSnapshot(),this._initCommands()}_initSnapshot(){let e=e=>{let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);if(n){let e=n.getSnapshot().drawings,t=n.getSnapshot().drawingsOrder;return JSON.stringify({data:e==null?{}:e,order:t==null?[]:t})}return``},n=e=>{if(!e)return{data:{},order:[]};try{return JSON.parse(e)}catch{return{data:{},order:[]}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:T,businesses:[t.UniverInstanceType.UNIVER_DOC],toJson:t=>e(t),parseJson:e=>n(e),onUnLoad:e=>{this._setDrawingDataForUnit(e,{data:{},order:[]})},onLoad:(e,t)=>{var n,r;this._setDrawingDataForUnit(e,{data:(n=t.data)==null?{}:n,order:(r=t.order)==null?[]:r})}}))}_setDrawingDataForUnit(e,t){let n=this._univerInstanceService.getUnit(e);n!=null&&(n.resetDrawing(t.data,t.order),this.loadDrawingDataForUnit(e))}loadDrawingDataForUnit(e){let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);if(!n)return!1;let r=e,i=n.getDrawings(),a=n.getDrawingsOrder();if(!i||!a)return!1;let o={[r]:{unitId:e,subUnitId:r,data:i,order:a}},s={[r]:{...o[r],order:E(a,i)}};return this._docDrawingService.registerDrawingData(e,o),this._drawingManagerService.registerDrawingData(e,s),!0}_initCommands(){[i,f,y,S,v].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}};O=w([C(0,_),C(1,r.IDrawingManagerService),C(2,t.IResourceManagerService),C(3,t.IUniverInstanceService),C(4,t.ICommandService)],O);var k=`@univerjs/docs-drawing`,A=`1.0.0-alpha.4`;let j={},M=class extends t.Plugin{constructor(e=j,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},j,this._config);this._configService.setConfig(`docs-drawing.config`,i)}onStarting(){[[O],[d],[u,{useClass:d}],[g],[_,{useClass:g}]].forEach(e=>this._injector.add(e)),(0,t.touchDependencies)(this._injector,[[O]])}};l(M,`pluginName`,T),l(M,`packageName`,k),l(M,`version`,A),l(M,`type`,t.UniverInstanceType.UNIVER_DOC),M=w([C(1,(0,t.Inject)(t.Injector)),C(2,t.IConfigService)],M),e.DOCS_DRAWING_PLUGIN=T,e.DocDrawingAdapterService=d,Object.defineProperty(e,"DocDrawingController",{enumerable:!0,get:function(){return O}}),e.DocDrawingService=g,e.IDocDrawingAdapterService=u,e.IDocDrawingService=_,e.InsertDocDrawingCommand=i,e.RemoveDocDrawingCommand=f,e.SetDocDrawingArrangeCommand=v,e.TextWrappingStyle=b,Object.defineProperty(e,"UniverDocsDrawingPlugin",{enumerable:!0,get:function(){return M}}),e.UpdateDocDrawingWrappingStyleCommand=S,e.UpdateDrawingDocTransformCommand=y,e.WRAPPING_STYLE_TO_LAYOUT_TYPE=x,e.getDocDrawingRenderOrder=E});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/docs-drawing",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Drawing model integration for Univer Docs.",
|
|
6
6
|
"author": "DreamNum Co., Ltd. <developer@univer.ai>",
|
|
@@ -35,6 +35,16 @@
|
|
|
35
35
|
"require": "./lib/cjs/*",
|
|
36
36
|
"types": "./lib/types/index.d.ts"
|
|
37
37
|
},
|
|
38
|
+
"./facade": {
|
|
39
|
+
"import": "./lib/es/facade.js",
|
|
40
|
+
"require": "./lib/cjs/facade.js",
|
|
41
|
+
"types": "./lib/types/facade/index.d.ts"
|
|
42
|
+
},
|
|
43
|
+
"./lib/facade": {
|
|
44
|
+
"import": "./lib/es/facade.js",
|
|
45
|
+
"require": "./lib/cjs/facade.js",
|
|
46
|
+
"types": "./lib/types/facade/index.d.ts"
|
|
47
|
+
},
|
|
38
48
|
"./lib/*": "./lib/*"
|
|
39
49
|
},
|
|
40
50
|
"main": "./lib/es/index.js",
|
|
@@ -49,13 +59,15 @@
|
|
|
49
59
|
"lib"
|
|
50
60
|
],
|
|
51
61
|
"dependencies": {
|
|
52
|
-
"@univerjs/
|
|
53
|
-
"@univerjs/
|
|
62
|
+
"@univerjs/core": "1.0.0-alpha.4",
|
|
63
|
+
"@univerjs/drawing": "1.0.0-alpha.4",
|
|
64
|
+
"@univerjs/docs": "1.0.0-alpha.4"
|
|
54
65
|
},
|
|
55
66
|
"devDependencies": {
|
|
56
67
|
"typescript": "^6.0.3",
|
|
57
|
-
"vitest": "^4.1.
|
|
58
|
-
"@univerjs-infra/shared": "1.0.0-alpha.
|
|
68
|
+
"vitest": "^4.1.10",
|
|
69
|
+
"@univerjs-infra/shared": "1.0.0-alpha.4",
|
|
70
|
+
"@univerjs/engine-render": "1.0.0-alpha.4"
|
|
59
71
|
},
|
|
60
72
|
"scripts": {
|
|
61
73
|
"test": "vitest run",
|