@univerjs/docs-drawing 1.0.0-beta.1 → 1.0.0-beta.2

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/index.js CHANGED
@@ -353,10 +353,15 @@ const UpdateDrawingDocTransformCommand = {
353
353
  const jsonX = _univerjs_core.JSONX.getInstance();
354
354
  const actions = [];
355
355
  for (const { drawingId, key, value } of drawings) {
356
- var _oldDrawings$drawingI;
357
- const oldValue = (_oldDrawings$drawingI = oldDrawings[drawingId]) === null || _oldDrawings$drawingI === void 0 || (_oldDrawings$drawingI = _oldDrawings$drawingI.docTransform) === null || _oldDrawings$drawingI === void 0 ? void 0 : _oldDrawings$drawingI[key];
356
+ var _oldDrawing$docTransf;
357
+ const oldDrawing = oldDrawings[drawingId];
358
+ const oldValue = key === "srcRect" ? oldDrawing === null || oldDrawing === void 0 ? void 0 : oldDrawing.srcRect : oldDrawing === null || oldDrawing === void 0 || (_oldDrawing$docTransf = oldDrawing.docTransform) === null || _oldDrawing$docTransf === void 0 ? void 0 : _oldDrawing$docTransf[key];
358
359
  if (!_univerjs_core.Tools.diffValue(oldValue, value)) {
359
- const path = [
360
+ const path = key === "srcRect" ? [
361
+ "drawings",
362
+ drawingId,
363
+ key
364
+ ] : [
360
365
  "drawings",
361
366
  drawingId,
362
367
  "docTransform",
@@ -625,7 +630,7 @@ DocDrawingController = __decorate([
625
630
  //#endregion
626
631
  //#region package.json
627
632
  var name = "@univerjs/docs-drawing";
628
- var version = "1.0.0-beta.1";
633
+ var version = "1.0.0-beta.2";
629
634
 
630
635
  //#endregion
631
636
  //#region src/config/config.ts
package/lib/es/index.js CHANGED
@@ -352,10 +352,15 @@ const UpdateDrawingDocTransformCommand = {
352
352
  const jsonX = JSONX.getInstance();
353
353
  const actions = [];
354
354
  for (const { drawingId, key, value } of drawings) {
355
- var _oldDrawings$drawingI;
356
- const oldValue = (_oldDrawings$drawingI = oldDrawings[drawingId]) === null || _oldDrawings$drawingI === void 0 || (_oldDrawings$drawingI = _oldDrawings$drawingI.docTransform) === null || _oldDrawings$drawingI === void 0 ? void 0 : _oldDrawings$drawingI[key];
355
+ var _oldDrawing$docTransf;
356
+ const oldDrawing = oldDrawings[drawingId];
357
+ const oldValue = key === "srcRect" ? oldDrawing === null || oldDrawing === void 0 ? void 0 : oldDrawing.srcRect : oldDrawing === null || oldDrawing === void 0 || (_oldDrawing$docTransf = oldDrawing.docTransform) === null || _oldDrawing$docTransf === void 0 ? void 0 : _oldDrawing$docTransf[key];
357
358
  if (!Tools.diffValue(oldValue, value)) {
358
- const path = [
359
+ const path = key === "srcRect" ? [
360
+ "drawings",
361
+ drawingId,
362
+ key
363
+ ] : [
359
364
  "drawings",
360
365
  drawingId,
361
366
  "docTransform",
@@ -624,7 +629,7 @@ DocDrawingController = __decorate([
624
629
  //#endregion
625
630
  //#region package.json
626
631
  var name = "@univerjs/docs-drawing";
627
- var version = "1.0.0-beta.1";
632
+ var version = "1.0.0-beta.2";
628
633
 
629
634
  //#endregion
630
635
  //#region src/config/config.ts
package/lib/index.js CHANGED
@@ -352,10 +352,15 @@ const UpdateDrawingDocTransformCommand = {
352
352
  const jsonX = JSONX.getInstance();
353
353
  const actions = [];
354
354
  for (const { drawingId, key, value } of drawings) {
355
- var _oldDrawings$drawingI;
356
- const oldValue = (_oldDrawings$drawingI = oldDrawings[drawingId]) === null || _oldDrawings$drawingI === void 0 || (_oldDrawings$drawingI = _oldDrawings$drawingI.docTransform) === null || _oldDrawings$drawingI === void 0 ? void 0 : _oldDrawings$drawingI[key];
355
+ var _oldDrawing$docTransf;
356
+ const oldDrawing = oldDrawings[drawingId];
357
+ const oldValue = key === "srcRect" ? oldDrawing === null || oldDrawing === void 0 ? void 0 : oldDrawing.srcRect : oldDrawing === null || oldDrawing === void 0 || (_oldDrawing$docTransf = oldDrawing.docTransform) === null || _oldDrawing$docTransf === void 0 ? void 0 : _oldDrawing$docTransf[key];
357
358
  if (!Tools.diffValue(oldValue, value)) {
358
- const path = [
359
+ const path = key === "srcRect" ? [
360
+ "drawings",
361
+ drawingId,
362
+ key
363
+ ] : [
359
364
  "drawings",
360
365
  drawingId,
361
366
  "docTransform",
@@ -624,7 +629,7 @@ DocDrawingController = __decorate([
624
629
  //#endregion
625
630
  //#region package.json
626
631
  var name = "@univerjs/docs-drawing";
627
- var version = "1.0.0-beta.1";
632
+ var version = "1.0.0-beta.2";
628
633
 
629
634
  //#endregion
630
635
  //#region src/config/config.ts
@@ -13,11 +13,11 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import type { ICommand, IObjectPositionH, IObjectPositionV, ISize } from '@univerjs/core';
16
+ import type { ICommand, IObjectPositionH, IObjectPositionV, ISize, ISrcRect, Nullable } from '@univerjs/core';
17
17
  export interface IDrawingDocTransform {
18
18
  drawingId: string;
19
- key: 'size' | 'angle' | 'positionH' | 'positionV' | 'flipX' | 'flipY';
20
- value: ISize | number | boolean | IObjectPositionH | IObjectPositionV;
19
+ key: 'size' | 'angle' | 'positionH' | 'positionV' | 'flipX' | 'flipY' | 'srcRect';
20
+ value: ISize | number | boolean | IObjectPositionH | IObjectPositionV | Nullable<ISrcRect>;
21
21
  }
22
22
  export interface IUpdateDrawingDocTransformCommandParams {
23
23
  unitId: string;
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/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;if(!r)return!1;let c=e.get(t.ICommandService),l=e.get(t.IUniverInstanceService),{unitId:u,drawings:d,textRange:f}=r,p=l.getUnit(u,t.UniverInstanceType.UNIVER_DOC);if(!p)return!1;let m=a(e,u,f);if(!m)return!1;let{segmentId:h=``}=m;if(!((i=p.getSelfOrHeaderFooterModel(h))!=null&&i.getBody()))return!1;let g=p.getSnapshot(),_=(o=g.headers)!=null&&o[h]||(s=g.footers)!=null&&s[h]?d.map(e=>({...e,isMultiTransform:t.BooleanNumber.TRUE,transforms:e.transforms??(e.transform?[e.transform]:null)})):d,v=t.BuildTextUtils.drawing.add({selection:m,documentDataModel:p,drawings:_});if(!v)return!1;let y={id:n.RichTextEditingMutation.id,params:{unitId:u,actions:[],textRanges:[]}};return y.params.actions=v,!!c.syncExecuteCommand(y.id,y.params)}};function a(e,t,r){let i=e.get(n.DocSelectionManagerService).getActiveTextRange(),a=(r?(0,n.normalizeTextRange)(r):null)??(0,n.getContentInsertRange)(e,t);return a?{...i,startOffset:a.startOffset,endOffset:a.endOffset,collapsed:a.startOffset===a.endOffset,segmentId:a.segmentId??(i==null?void 0:i.segmentId)??``}:i??null}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;if(!r)return!1;let a=e.get(t.ICommandService),o=e.get(t.IUndoRedoService),s=e.get(u),c=e.get(t.IUniverInstanceService),l=e.get(n.DocSelectionManagerService),{unitId:d,drawings:f,textRange:m}=r,h=c.getUnit(d,t.UniverInstanceType.UNIVER_DOC);if(!h||f.length===0)return!1;let g=l.getActiveTextRange(),_=(m?(0,n.normalizeTextRange)(m):null)??(0,n.getContentInsertRange)(e,d),v=(_==null?void 0:_.segmentId)??(g==null?void 0:g.segmentId)??``,y=new t.TextX,b=t.JSONX.getInstance(),x=((i=h.getSelfOrHeaderFooterModel(v))==null||(i=i.getBody())==null?void 0:i.customBlocks)??[],S=f.map(e=>x.find(t=>t.blockId===e.drawingId)).filter(e=>!!e).sort((e,t)=>e.startIndex>t.startIndex?1:-1);if(S.length===0)return!1;let C=h.getDrawings()??{},w=new Map(f.map(e=>[e.drawingId,e])),T=S.map(e=>C[e.blockId]).filter(e=>e!=null),E=[],D=[],O=[];for(let e of S){let{blockId:t}=e,n=C[t];if(n==null)continue;let r=w.get(t),i=s.getRemoveDrawingMutationInfos({unitId:d,subUnitId:(r==null?void 0:r.subUnitId)??d,drawing:n,removeDrawings:T});(i.redoMutations.length!==0||i.undoMutations.length!==0)&&(E.push(...i.redoMutations),D.push(...i.undoMutations),O.push(i))}if(!p(O,a))return!1;let k=`doc-drawing-remove-resource:${d}:${S.map(e=>e.blockId).join(`,`)}`,A=null;(E.length>0||D.length>0)&&(A=o.__tempBatchingUndoRedo(d),o.pushUndoRedo({unitID:d,redoMutations:E,undoMutations:D,id:k}));let j=new t.MemoryCursor,M=S[0].startIndex,N=[{startOffset:M,endOffset:M}],P={id:n.RichTextEditingMutation.id,params:{unitId:d,actions:[],textRanges:N}},F=[];for(let e of S){let{startIndex:n}=e;n>j.cursor&&y.push({t:t.TextXActionType.RETAIN,len:n-j.cursor}),y.push({t:t.TextXActionType.DELETE,len:1}),j.moveCursorTo(n+1)}F.push(b.editOp(y.serialize(),(0,t.getRichTextEditPath)(h,v)));for(let e of S){let{blockId:t}=e,n=h.getDrawingsOrder().indexOf(t);F.push(b.removeOp([`drawings`,t],C[t])),F.push(b.removeOp([`drawingsOrder`,n],t))}P.params.actions=F.reduce((e,n)=>t.JSONX.compose(e,n),null);let I=a.syncExecuteCommand(P.id,P.params);return!I&&A!=null?(A.dispose(),o.rollback(k,d),!1):(A==null||A.dispose(),!!I)}};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}let g=`drawingsOrder`;function _(e,n,r){let i=new Set(n.filter(t=>e.includes(t))),a=[...e];if(i.size===0)return a;if(r===t.ArrangeTypeEnum.forward)for(let e=a.length-2;e>=0;e--)i.has(a[e])&&!i.has(a[e+1])&&([a[e],a[e+1]]=[a[e+1],a[e]]);else if(r===t.ArrangeTypeEnum.backward)for(let e=1;e<a.length;e++)i.has(a[e])&&!i.has(a[e-1])&&([a[e],a[e-1]]=[a[e-1],a[e]]);else if(r===t.ArrangeTypeEnum.front||r===t.ArrangeTypeEnum.back){let e=a.filter(e=>i.has(e)),n=a.filter(e=>!i.has(e));return r===t.ArrangeTypeEnum.front?[...n,...e]:[...e,...n]}return a}function v(e,n,r){if(n.length!==1)return[...e];let i=[...e],a=i.indexOf(n[0]);if(a<0)return i;let[o]=i.splice(a,1),s=(0,t.normalizeDrawingOrderIndex)(r,e.length);return i.splice(s,0,o),i}function y(e,n){let r=t.JSONX.getInstance(),i=[...e],a=[];for(let e=0;e<n.length;e++){let t=n[e],o=i.indexOf(t);if(o<0||o===e)continue;let s=r.moveOp([g,o],[g,e]);s&&a.push(s),i.splice(o,1),i.splice(e,0,t)}return a.reduce((e,n)=>t.JSONX.compose(e,n),null)}let b={id:`doc.command.set-drawing-arrange`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(t.ICommandService);if(r==null)return!1;let{unitId:a,drawingIds:o}=r,s=e.get(t.IUniverInstanceService).getUnit(a,t.UniverInstanceType.UNIVER_DOC),c=s==null?void 0:s.getDrawingsOrder();if(!c)return!1;let l=y(c,r.zOrder===void 0?_(c,o,r.arrangeType):v(c,o,r.zOrder));return!t.JSONX.isNoop(l)&&!!i.syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:a,actions:l,textRanges:null})}},x={id:`doc.command.update-drawing-doc-transform`,type:t.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=e.get(t.ICommandService),a=e.get(t.IUniverInstanceService),{unitId:o,drawings:s}=r,c=a.getUnit(o,t.UniverInstanceType.UNIVER_DOC);if(!c)return!1;let l=c.getSnapshot().drawings??{},u=t.JSONX.getInstance(),d=[];for(let{drawingId:e,key:n,value:r}of s){var f;let i=(f=l[e])==null||(f=f.docTransform)==null?void 0:f[n];if(!t.Tools.diffValue(i,r)){let t=[`drawings`,e,`docTransform`,n];d.push(i===void 0?u.insertOp(t,r):u.replaceOp(t,i,r))}}return!!i.syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:o,actions:d.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null,debounce:!0})}},S=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}({}),C={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},w={id:`doc.command.update-doc-drawing-wrapping-style`,type:t.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let{drawings:i,wrappingStyle:a,unitId:o}=r,s=e.get(t.ICommandService),c=e.get(t.IUniverInstanceService).getUnit(o,t.UniverInstanceType.UNIVER_DOC);if(!c)return!1;let l=c.getDrawings()??{},u=t.JSONX.getInstance(),d=[];for(let e of i){let n=l[e.drawingId];if(!n)continue;let r=C[a];if(n.layoutType!==r&&d.push(u.replaceOp([`drawings`,e.drawingId,`layoutType`],n.layoutType,r)),a===`behindText`||a===`inFrontOfText`){let r=a===`behindText`?t.BooleanNumber.TRUE:t.BooleanNumber.FALSE;n.behindDoc!==r&&d.push(u.replaceOp([`drawings`,e.drawingId,`behindDoc`],n.behindDoc,r))}if(a!==`inline`)for(let r of[`positionH`,`positionV`]){var f;let i=(f=e.docTransform)==null?void 0:f[r],a=n.docTransform[r];i&&!t.Tools.diffValue(a,i)&&d.push(u.replaceOp([`drawings`,e.drawingId,`docTransform`,r],a,i))}}let p={id:n.RichTextEditingMutation.id,params:{unitId:o,actions:d.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null}};return!!s.syncExecuteCommand(p.id,p.params)}};var T=class extends r.UnitDrawingService{};let E=(0,t.createIdentifier)(`univer.doc.plugin.doc-drawing.service`);function D(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 k=`DOC_DRAWING_PLUGIN`;function A(e,t={}){return e.map((e,t)=>({drawingId:e,index:t})).sort((e,n)=>{let r=j(t[e.drawingId]);return r===j(t[n.drawingId])?e.index-n.index:r?-1:1}).map(({drawingId:e})=>e)}function j(e){return(e==null?void 0:e.layoutType)===t.PositionedObjectLayoutType.WRAP_NONE&&e.behindDoc===t.BooleanNumber.TRUE}let M=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??{},order:t??[]})}return``},n=e=>{if(!e)return{data:{},order:[]};try{return JSON.parse(e)}catch{return{data:{},order:[]}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:k,businesses:[t.UniverInstanceType.UNIVER_DOC],toJson:t=>e(t),parseJson:e=>n(e),onUnLoad:e=>{this._setDrawingDataForUnit(e,{data:{},order:[]})},onLoad:(e,t)=>{this._setDrawingDataForUnit(e,{data:t.data??{},order:t.order??[]})}}))}_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:A(a,i)}};return this._docDrawingService.registerDrawingData(e,o),this._drawingManagerService.registerDrawingData(e,s),!0}_initCommands(){[i,f,x,w,b].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}};M=O([D(0,E),D(1,r.IDrawingManagerService),D(2,t.IResourceManagerService),D(3,t.IUniverInstanceService),D(4,t.ICommandService)],M);var N=`@univerjs/docs-drawing`,P=`1.0.0-beta.1`;let F={},I=class extends t.Plugin{constructor(e=F,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},F,this._config);this._configService.setConfig(`docs-drawing.config`,i)}onStarting(){[[M],[d],[u,{useClass:d}],[T],[E,{useClass:T}]].forEach(e=>this._injector.add(e)),(0,t.touchDependencies)(this._injector,[[M]])}};l(I,`pluginName`,k),l(I,`packageName`,N),l(I,`version`,P),l(I,`type`,t.UniverInstanceType.UNIVER_DOC),I=O([(0,t.DependentOn)(n.UniverDocsPlugin,r.UniverDrawingPlugin),D(1,(0,t.Inject)(t.Injector)),D(2,t.IConfigService)],I),e.DOCS_DRAWING_PLUGIN=k,e.DocDrawingAdapterService=d,Object.defineProperty(e,"DocDrawingController",{enumerable:!0,get:function(){return M}}),e.DocDrawingService=T,e.IDocDrawingAdapterService=u,e.IDocDrawingService=E,e.InsertDocDrawingCommand=i,e.RemoveDocDrawingCommand=f,e.SetDocDrawingArrangeCommand=b,e.TextWrappingStyle=S,Object.defineProperty(e,"UniverDocsDrawingPlugin",{enumerable:!0,get:function(){return I}}),e.UpdateDocDrawingWrappingStyleCommand=w,e.UpdateDrawingDocTransformCommand=x,e.WRAPPING_STYLE_TO_LAYOUT_TYPE=C,e.getDocDrawingRenderOrder=A});
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;if(!r)return!1;let c=e.get(t.ICommandService),l=e.get(t.IUniverInstanceService),{unitId:u,drawings:d,textRange:f}=r,p=l.getUnit(u,t.UniverInstanceType.UNIVER_DOC);if(!p)return!1;let m=a(e,u,f);if(!m)return!1;let{segmentId:h=``}=m;if(!((i=p.getSelfOrHeaderFooterModel(h))!=null&&i.getBody()))return!1;let g=p.getSnapshot(),_=(o=g.headers)!=null&&o[h]||(s=g.footers)!=null&&s[h]?d.map(e=>({...e,isMultiTransform:t.BooleanNumber.TRUE,transforms:e.transforms??(e.transform?[e.transform]:null)})):d,v=t.BuildTextUtils.drawing.add({selection:m,documentDataModel:p,drawings:_});if(!v)return!1;let y={id:n.RichTextEditingMutation.id,params:{unitId:u,actions:[],textRanges:[]}};return y.params.actions=v,!!c.syncExecuteCommand(y.id,y.params)}};function a(e,t,r){let i=e.get(n.DocSelectionManagerService).getActiveTextRange(),a=(r?(0,n.normalizeTextRange)(r):null)??(0,n.getContentInsertRange)(e,t);return a?{...i,startOffset:a.startOffset,endOffset:a.endOffset,collapsed:a.startOffset===a.endOffset,segmentId:a.segmentId??(i==null?void 0:i.segmentId)??``}:i??null}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;if(!r)return!1;let a=e.get(t.ICommandService),o=e.get(t.IUndoRedoService),s=e.get(u),c=e.get(t.IUniverInstanceService),l=e.get(n.DocSelectionManagerService),{unitId:d,drawings:f,textRange:m}=r,h=c.getUnit(d,t.UniverInstanceType.UNIVER_DOC);if(!h||f.length===0)return!1;let g=l.getActiveTextRange(),_=(m?(0,n.normalizeTextRange)(m):null)??(0,n.getContentInsertRange)(e,d),v=(_==null?void 0:_.segmentId)??(g==null?void 0:g.segmentId)??``,y=new t.TextX,b=t.JSONX.getInstance(),x=((i=h.getSelfOrHeaderFooterModel(v))==null||(i=i.getBody())==null?void 0:i.customBlocks)??[],S=f.map(e=>x.find(t=>t.blockId===e.drawingId)).filter(e=>!!e).sort((e,t)=>e.startIndex>t.startIndex?1:-1);if(S.length===0)return!1;let C=h.getDrawings()??{},w=new Map(f.map(e=>[e.drawingId,e])),T=S.map(e=>C[e.blockId]).filter(e=>e!=null),E=[],D=[],O=[];for(let e of S){let{blockId:t}=e,n=C[t];if(n==null)continue;let r=w.get(t),i=s.getRemoveDrawingMutationInfos({unitId:d,subUnitId:(r==null?void 0:r.subUnitId)??d,drawing:n,removeDrawings:T});(i.redoMutations.length!==0||i.undoMutations.length!==0)&&(E.push(...i.redoMutations),D.push(...i.undoMutations),O.push(i))}if(!p(O,a))return!1;let k=`doc-drawing-remove-resource:${d}:${S.map(e=>e.blockId).join(`,`)}`,A=null;(E.length>0||D.length>0)&&(A=o.__tempBatchingUndoRedo(d),o.pushUndoRedo({unitID:d,redoMutations:E,undoMutations:D,id:k}));let j=new t.MemoryCursor,M=S[0].startIndex,N=[{startOffset:M,endOffset:M}],P={id:n.RichTextEditingMutation.id,params:{unitId:d,actions:[],textRanges:N}},F=[];for(let e of S){let{startIndex:n}=e;n>j.cursor&&y.push({t:t.TextXActionType.RETAIN,len:n-j.cursor}),y.push({t:t.TextXActionType.DELETE,len:1}),j.moveCursorTo(n+1)}F.push(b.editOp(y.serialize(),(0,t.getRichTextEditPath)(h,v)));for(let e of S){let{blockId:t}=e,n=h.getDrawingsOrder().indexOf(t);F.push(b.removeOp([`drawings`,t],C[t])),F.push(b.removeOp([`drawingsOrder`,n],t))}P.params.actions=F.reduce((e,n)=>t.JSONX.compose(e,n),null);let I=a.syncExecuteCommand(P.id,P.params);return!I&&A!=null?(A.dispose(),o.rollback(k,d),!1):(A==null||A.dispose(),!!I)}};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}let g=`drawingsOrder`;function _(e,n,r){let i=new Set(n.filter(t=>e.includes(t))),a=[...e];if(i.size===0)return a;if(r===t.ArrangeTypeEnum.forward)for(let e=a.length-2;e>=0;e--)i.has(a[e])&&!i.has(a[e+1])&&([a[e],a[e+1]]=[a[e+1],a[e]]);else if(r===t.ArrangeTypeEnum.backward)for(let e=1;e<a.length;e++)i.has(a[e])&&!i.has(a[e-1])&&([a[e],a[e-1]]=[a[e-1],a[e]]);else if(r===t.ArrangeTypeEnum.front||r===t.ArrangeTypeEnum.back){let e=a.filter(e=>i.has(e)),n=a.filter(e=>!i.has(e));return r===t.ArrangeTypeEnum.front?[...n,...e]:[...e,...n]}return a}function v(e,n,r){if(n.length!==1)return[...e];let i=[...e],a=i.indexOf(n[0]);if(a<0)return i;let[o]=i.splice(a,1),s=(0,t.normalizeDrawingOrderIndex)(r,e.length);return i.splice(s,0,o),i}function y(e,n){let r=t.JSONX.getInstance(),i=[...e],a=[];for(let e=0;e<n.length;e++){let t=n[e],o=i.indexOf(t);if(o<0||o===e)continue;let s=r.moveOp([g,o],[g,e]);s&&a.push(s),i.splice(o,1),i.splice(e,0,t)}return a.reduce((e,n)=>t.JSONX.compose(e,n),null)}let b={id:`doc.command.set-drawing-arrange`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(t.ICommandService);if(r==null)return!1;let{unitId:a,drawingIds:o}=r,s=e.get(t.IUniverInstanceService).getUnit(a,t.UniverInstanceType.UNIVER_DOC),c=s==null?void 0:s.getDrawingsOrder();if(!c)return!1;let l=y(c,r.zOrder===void 0?_(c,o,r.arrangeType):v(c,o,r.zOrder));return!t.JSONX.isNoop(l)&&!!i.syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:a,actions:l,textRanges:null})}},x={id:`doc.command.update-drawing-doc-transform`,type:t.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=e.get(t.ICommandService),a=e.get(t.IUniverInstanceService),{unitId:o,drawings:s}=r,c=a.getUnit(o,t.UniverInstanceType.UNIVER_DOC);if(!c)return!1;let l=c.getSnapshot().drawings??{},u=t.JSONX.getInstance(),d=[];for(let{drawingId:e,key:n,value:r}of s){var f;let i=l[e],a=n===`srcRect`?i==null?void 0:i.srcRect:i==null||(f=i.docTransform)==null?void 0:f[n];if(!t.Tools.diffValue(a,r)){let t=n===`srcRect`?[`drawings`,e,n]:[`drawings`,e,`docTransform`,n];d.push(a===void 0?u.insertOp(t,r):u.replaceOp(t,a,r))}}return!!i.syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:o,actions:d.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null,debounce:!0})}},S=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}({}),C={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},w={id:`doc.command.update-doc-drawing-wrapping-style`,type:t.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let{drawings:i,wrappingStyle:a,unitId:o}=r,s=e.get(t.ICommandService),c=e.get(t.IUniverInstanceService).getUnit(o,t.UniverInstanceType.UNIVER_DOC);if(!c)return!1;let l=c.getDrawings()??{},u=t.JSONX.getInstance(),d=[];for(let e of i){let n=l[e.drawingId];if(!n)continue;let r=C[a];if(n.layoutType!==r&&d.push(u.replaceOp([`drawings`,e.drawingId,`layoutType`],n.layoutType,r)),a===`behindText`||a===`inFrontOfText`){let r=a===`behindText`?t.BooleanNumber.TRUE:t.BooleanNumber.FALSE;n.behindDoc!==r&&d.push(u.replaceOp([`drawings`,e.drawingId,`behindDoc`],n.behindDoc,r))}if(a!==`inline`)for(let r of[`positionH`,`positionV`]){var f;let i=(f=e.docTransform)==null?void 0:f[r],a=n.docTransform[r];i&&!t.Tools.diffValue(a,i)&&d.push(u.replaceOp([`drawings`,e.drawingId,`docTransform`,r],a,i))}}let p={id:n.RichTextEditingMutation.id,params:{unitId:o,actions:d.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null}};return!!s.syncExecuteCommand(p.id,p.params)}};var T=class extends r.UnitDrawingService{};let E=(0,t.createIdentifier)(`univer.doc.plugin.doc-drawing.service`);function D(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 k=`DOC_DRAWING_PLUGIN`;function A(e,t={}){return e.map((e,t)=>({drawingId:e,index:t})).sort((e,n)=>{let r=j(t[e.drawingId]);return r===j(t[n.drawingId])?e.index-n.index:r?-1:1}).map(({drawingId:e})=>e)}function j(e){return(e==null?void 0:e.layoutType)===t.PositionedObjectLayoutType.WRAP_NONE&&e.behindDoc===t.BooleanNumber.TRUE}let M=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??{},order:t??[]})}return``},n=e=>{if(!e)return{data:{},order:[]};try{return JSON.parse(e)}catch{return{data:{},order:[]}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:k,businesses:[t.UniverInstanceType.UNIVER_DOC],toJson:t=>e(t),parseJson:e=>n(e),onUnLoad:e=>{this._setDrawingDataForUnit(e,{data:{},order:[]})},onLoad:(e,t)=>{this._setDrawingDataForUnit(e,{data:t.data??{},order:t.order??[]})}}))}_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:A(a,i)}};return this._docDrawingService.registerDrawingData(e,o),this._drawingManagerService.registerDrawingData(e,s),!0}_initCommands(){[i,f,x,w,b].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}};M=O([D(0,E),D(1,r.IDrawingManagerService),D(2,t.IResourceManagerService),D(3,t.IUniverInstanceService),D(4,t.ICommandService)],M);var N=`@univerjs/docs-drawing`,P=`1.0.0-beta.2`;let F={},I=class extends t.Plugin{constructor(e=F,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},F,this._config);this._configService.setConfig(`docs-drawing.config`,i)}onStarting(){[[M],[d],[u,{useClass:d}],[T],[E,{useClass:T}]].forEach(e=>this._injector.add(e)),(0,t.touchDependencies)(this._injector,[[M]])}};l(I,`pluginName`,k),l(I,`packageName`,N),l(I,`version`,P),l(I,`type`,t.UniverInstanceType.UNIVER_DOC),I=O([(0,t.DependentOn)(n.UniverDocsPlugin,r.UniverDrawingPlugin),D(1,(0,t.Inject)(t.Injector)),D(2,t.IConfigService)],I),e.DOCS_DRAWING_PLUGIN=k,e.DocDrawingAdapterService=d,Object.defineProperty(e,"DocDrawingController",{enumerable:!0,get:function(){return M}}),e.DocDrawingService=T,e.IDocDrawingAdapterService=u,e.IDocDrawingService=E,e.InsertDocDrawingCommand=i,e.RemoveDocDrawingCommand=f,e.SetDocDrawingArrangeCommand=b,e.TextWrappingStyle=S,Object.defineProperty(e,"UniverDocsDrawingPlugin",{enumerable:!0,get:function(){return I}}),e.UpdateDocDrawingWrappingStyleCommand=w,e.UpdateDrawingDocTransformCommand=x,e.WRAPPING_STYLE_TO_LAYOUT_TYPE=C,e.getDocDrawingRenderOrder=A});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/docs-drawing",
3
- "version": "1.0.0-beta.1",
3
+ "version": "1.0.0-beta.2",
4
4
  "private": false,
5
5
  "description": "Drawing model integration for Univer Docs.",
6
6
  "author": "DreamNum Co., Ltd. <developer@univer.ai>",
@@ -59,15 +59,15 @@
59
59
  "lib"
60
60
  ],
61
61
  "dependencies": {
62
- "@univerjs/core": "1.0.0-beta.1",
63
- "@univerjs/docs": "1.0.0-beta.1",
64
- "@univerjs/drawing": "1.0.0-beta.1"
62
+ "@univerjs/docs": "1.0.0-beta.2",
63
+ "@univerjs/core": "1.0.0-beta.2",
64
+ "@univerjs/drawing": "1.0.0-beta.2"
65
65
  },
66
66
  "devDependencies": {
67
67
  "typescript": "^6.0.3",
68
68
  "vitest": "^4.1.10",
69
- "@univerjs/engine-render": "1.0.0-beta.1",
70
- "@univerjs-infra/shared": "1.0.0-beta.1"
69
+ "@univerjs/engine-render": "1.0.0-beta.2",
70
+ "@univerjs-infra/shared": "1.0.0-beta.2"
71
71
  },
72
72
  "scripts": {
73
73
  "test": "vitest run",