@univerjs/drawing 1.0.0 → 1.0.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 +1 -1
- package/lib/es/index.js +1 -1
- package/lib/index.js +1 -1
- package/lib/umd/index.js +1 -1
- package/package.json +3 -3
package/lib/cjs/index.js
CHANGED
package/lib/es/index.js
CHANGED
package/lib/index.js
CHANGED
package/lib/umd/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("rxjs")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`rxjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDrawing={},e.UniverCore,e.rxjs))})(this,function(e,t,n){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let r=5242880;function i(e){r=e}function a(){return r}let o=[`image/png`,`image/jpeg`,`image/jpg`,`image/gif`,`image/bmp`],s=(0,t.createIdentifier)(`univer.drawing-manager.service`),c={id:`drawing.operation.set-drawing-selected`,type:t.CommandType.OPERATION,handler:(e,t)=>{let n=e.get(s);return t!=null&&(n.focusDrawing(t),!0)}};var l=`@univerjs/drawing`,u=`1.0.0`;let d={};function f(e){"@babel/helpers - typeof";return f=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},f(e)}function p(e,t){if(f(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(f(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function m(e){var t=p(e,`string`);return f(t)==`symbol`?t:t+``}function h(e,t,n){return(t=m(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e){return Array.isArray(e)&&e.length>0}function _(e,t){if(e===t)return!0;if(Array.isArray(e)||Array.isArray(t))return!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length?!1:e.every((e,n)=>_(e,t[n]));if(!v(e)||!v(t))return!1;let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(n=>Object.prototype.hasOwnProperty.call(t,n)&&_(e[n],t[n]))}function v(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function y(e){return Object.getOwnPropertyNames(e).every(t=>Object.prototype.propertyIsEnumerable.call(e,t))}function b(e,n){return t.JSON1.type.writeCursor().writeAtPath(e,`r`,n).get()}function x(e){if(e===void 0)return;if(e===null||typeof e==`boolean`||typeof e==`number`||typeof e==`string`)return e;if(Array.isArray(e))return e.map(e=>x(e)??null);if(!v(e))return;let t={};return Object.entries(e).forEach(([e,n])=>{let r=x(n);r!==void 0&&(t[e]=r)}),t}function S(e,n,r,i,a){let o=x(i),s=x(r),c=a&&o!==void 0;if(c&&_(o,s))return;if(c&&v(i)&&v(r)&&y(i)&&y(r)){for(let t of new Set([...Object.keys(i),...Object.keys(r)]))S(e,[...n,t],r[t],i[t],Object.prototype.hasOwnProperty.call(i,t)&&i[t]!==void 0);return}let l=c?s===void 0?b(n,o):t.JSON1.replaceOp(n,o,s):s===void 0?null:t.JSON1.insertOp(n,s);l&&g(l)&&e.push(l)}function C(...e){for(let t of e)if(t===`__proto__`||t===`constructor`||t===`prototype`)throw Error(`Invalid drawing key`)}function w(e,t){return e!=null&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function T(e){for(let t of Object.keys(e)){C(t);let n=e[t];n!=null&&n.data&&Object.keys(n.data).forEach(e=>C(e)),n!=null&&n.order&&n.order.forEach(e=>C(e))}}var E=class{constructor(){h(this,`drawingManagerData`,{}),h(this,`_oldDrawingManagerData`,{}),h(this,`_focusDrawings`,[]),h(this,`_remove$`,new n.Subject),h(this,`remove$`,this._remove$.asObservable()),h(this,`_add$`,new n.Subject),h(this,`add$`,this._add$.asObservable()),h(this,`_update$`,new n.Subject),h(this,`update$`,this._update$.asObservable()),h(this,`_order$`,new n.Subject),h(this,`order$`,this._order$.asObservable()),h(this,`_group$`,new n.Subject),h(this,`group$`,this._group$.asObservable()),h(this,`_ungroup$`,new n.Subject),h(this,`ungroup$`,this._ungroup$.asObservable()),h(this,`_refreshTransform$`,new n.Subject),h(this,`refreshTransform$`,this._refreshTransform$.asObservable()),h(this,`_visible$`,new n.Subject),h(this,`visible$`,this._visible$.asObservable()),h(this,`_focus$`,new n.Subject),h(this,`focus$`,this._focus$.asObservable()),h(this,`_featurePluginUpdate$`,new n.Subject),h(this,`featurePluginUpdate$`,this._featurePluginUpdate$.asObservable()),h(this,`_featurePluginAdd$`,new n.Subject),h(this,`featurePluginAdd$`,this._featurePluginAdd$.asObservable()),h(this,`_featurePluginRemove$`,new n.Subject),h(this,`featurePluginRemove$`,this._featurePluginRemove$.asObservable()),h(this,`_featurePluginOrderUpdate$`,new n.Subject),h(this,`featurePluginOrderUpdate$`,this._featurePluginOrderUpdate$.asObservable()),h(this,`_featurePluginGroupUpdate$`,new n.Subject),h(this,`featurePluginGroupUpdate$`,this._featurePluginGroupUpdate$.asObservable()),h(this,`_featurePluginUngroupUpdate$`,new n.Subject),h(this,`featurePluginUngroupUpdate$`,this._featurePluginUngroupUpdate$.asObservable()),h(this,`_visible`,!0),h(this,`_editable`,!0)}dispose(){this._remove$.complete(),this._add$.complete(),this._update$.complete(),this._order$.complete(),this._focus$.complete(),this._featurePluginUpdate$.complete(),this._featurePluginAdd$.complete(),this._featurePluginRemove$.complete(),this._featurePluginOrderUpdate$.complete(),this.drawingManagerData={},this._oldDrawingManagerData={}}visibleNotification(e){this._visible$.next(e)}refreshTransform(e){e.forEach(e=>{let t=this._getCurrentBySearch(e);t!=null&&(t.transform=e.transform,Object.prototype.hasOwnProperty.call(e,`transforms`)&&(t.transforms=e.transforms),Object.prototype.hasOwnProperty.call(e,`isMultiTransform`)&&(t.isMultiTransform=e.isMultiTransform),`behindText`in e&&(t.behindText=e.behindText),`hidden`in e&&(t.hidden=e.hidden))}),this.refreshTransformNotification(e)}getDrawingDataForUnit(e){return w(this.drawingManagerData,e)||{}}removeDrawingDataForUnit(e){let t=w(this.drawingManagerData,e);if(t==null)return;delete this.drawingManagerData[e];let n=[];Object.keys(t).forEach(r=>{let i=t[r];(i==null?void 0:i.data)!=null&&Object.keys(i.data).forEach(t=>{n.push({unitId:e,subUnitId:r,drawingId:t})})}),n.length>0&&this.removeNotification(n)}registerDrawingData(e,t){C(e),T(t),this.drawingManagerData[e]=t}initializeNotification(e){let t=[],n=w(this.drawingManagerData,e);n!=null&&(Object.keys(n).forEach(r=>{this._establishDrawingMap(e,r);let i=n[r];(i==null?void 0:i.data)!=null&&Object.keys(i.data).forEach(n=>{let a=i.data[n];a.unitId=e,a.subUnitId=r,t.push(a)})}),t.length>0&&this.addNotification(t))}getDrawingData(e,t){return this._getDrawingData(e,t)}setDrawingData(e,t,n){C(e,t),Object.keys(n).forEach(e=>C(e)),this._establishDrawingMap(e,t);let r=this.drawingManagerData[e],i=r[t];this._oldDrawingManagerData={...this.drawingManagerData,[e]:{...r,[t]:{...i}}},this.drawingManagerData[e][t].data=n}getBatchAddOp(e){let n=[],r=[],i=[];e.forEach(e=>{let{op:t,invertOp:a}=this._addByParam(e);n.push({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId}),r.push(t),i.push(a)});let a=r.reduce(t.JSON1.type.compose,null),o=i.reduce(t.JSON1.type.compose,null),{unitId:s,subUnitId:c}=e[0];return{undo:o,redo:a,unitId:s,subUnitId:c,objects:n}}getBatchRemoveOpInOder(e){if(e.length===0)return{undo:null,redo:null,unitId:``,subUnitId:``,objects:[]};let t=this.getDrawingOrder(e[0].unitId,e[0].subUnitId),n=new Map;return t.forEach((e,t)=>{n.set(e,t)}),e.sort((e,t)=>(n.get(e.drawingId)??-1/0)-(n.get(t.drawingId)??-1/0)),this.getBatchRemoveOp(e)}_getExpandedBatchRemoveParams(e){let n=new Set,r=[],i=e=>{n.has(e.drawingId)||(n.add(e.drawingId),r.push({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId}))},a=e=>{n.has(e.drawingId)||(n.add(e.drawingId),r.push(e))};return e.forEach(e=>{let n=this.getDrawingByParam(e);if((n==null?void 0:n.drawingType)===t.DrawingTypeEnum.DRAWING_GROUP){let t=this.getDrawingsByGroupNested(e);if(t){let{flatChildren:e,groups:n}=t;[...e??[],...n].forEach(e=>{i(e)})}else i(n)}else n?i(n):a(e)}),r}getBatchRemoveOp(e){let n=this._getExpandedBatchRemoveParams(e),{unitId:r,subUnitId:i}=n[0]??e[0]??{unitId:``,subUnitId:``};if(n.length===0)return{undo:null,redo:null,unitId:r,subUnitId:i,objects:[]};let a=this._getDrawingOrder(r,i),o=new Map;a.forEach((e,t)=>o.set(e,t)),n.sort((e,t)=>(o.get(e.drawingId)??-1/0)-(o.get(t.drawingId)??-1/0));let s=[],c=[];n.forEach(e=>{let{op:t,invertOp:n}=this._removeByParam(e);s.unshift(t),c.push(n)});let l=s.reduce(t.JSON1.type.compose,null);return{undo:c.reduce(t.JSON1.type.compose,null),redo:l,unitId:r,subUnitId:i,objects:n}}getBatchUpdateOp(e){let n=[],r=[],i=[];if(e.forEach(e=>{let{op:t,invertOp:a}=this._updateByParam(e);g(t)&&(n.push({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId}),r.push(t),i.push(a))}),r.length===0){let{unitId:t,subUnitId:r}=e[0];return{undo:null,redo:null,unitId:t,subUnitId:r,objects:n}}let a=r.reduce(t.JSON1.type.compose,null),o=i.reduce(t.JSON1.type.compose,null),{unitId:s,subUnitId:c}=e[0];return{undo:o,redo:a,unitId:s,subUnitId:c,objects:n}}removeNotification(e){this._remove$.next(e)}addNotification(e){this._add$.next(e)}updateNotification(e){this._update$.next(e)}orderNotification(e){this._order$.next(e)}groupUpdateNotification(e){this._group$.next(e)}ungroupUpdateNotification(e){this._ungroup$.next(e)}refreshTransformNotification(e){this._refreshTransform$.next(e)}getGroupDrawingOp(e){let n=[],{unitId:r,subUnitId:i}=e[0].parent;e.forEach(e=>{n.push(this._getGroupDrawingOp(e))});let a=n.reduce(t.JSON1.type.compose,null);return{undo:t.JSON1.type.invertWithDoc(a,this.drawingManagerData),redo:a,unitId:r,subUnitId:i,objects:e}}getUngroupDrawingOp(e){let n=[],{unitId:r,subUnitId:i}=e[0].parent;e.forEach(e=>{n.push(this._getUngroupDrawingOp(e))});let a=n.reduce(t.JSON1.type.compose,null);return{undo:t.JSON1.type.invertWithDoc(a,this.drawingManagerData),redo:a,unitId:r,subUnitId:i,objects:e}}getDrawingsByGroup(e){let{unitId:t,subUnitId:n,drawingId:r}=e;if(this.getDrawingByParam({unitId:t,subUnitId:n,drawingId:r})==null)return[];let i=this._getDrawingData(t,n),a=[];return Object.keys(i).forEach(e=>{let t=i[e];t.groupId===r&&a.push(t)}),a}getDrawingsByGroupNested(e){let{unitId:n,subUnitId:r}=e,i=this.getDrawingByParam(e);if(!i)return null;let a=this._getDrawingData(n,r),o=new Map;Object.values(a).forEach(e=>{e.groupId!=null&&(o.has(e.groupId)||o.set(e.groupId,[]),o.get(e.groupId).push(e.drawingId))});let s=[],c=[],l={},u=e=>{let{drawingId:n}=e,r=o.get(n)??[];l[n]={drawingId:n,children:r},r.forEach(e=>{let n=a[e];n&&(n.drawingType===t.DrawingTypeEnum.DRAWING_GROUP?(u(n),c.push(n)):s.push(n))})};return u(i),c.push(i),{nestedIdRecord:l,flatChildren:s,groups:c}}_getGroupDrawingOp(e){let{parent:n,children:r}=e,{unitId:i,subUnitId:a,drawingId:o}=n,s=[];s.push(t.JSON1.insertOp([i,a,`data`,o],n));let c=-1/0;return r.forEach(e=>{let{unitId:t,subUnitId:n,drawingId:r}=e,i=this._hasDrawingOrder({unitId:t,subUnitId:n,drawingId:r});c=Math.max(c,i),s.push(...this._getUpdateParamCompareOp(e,this.getDrawingByParam({unitId:t,subUnitId:n,drawingId:r})))}),c===-1/0&&(c=this._getDrawingOrder(i,a).length),s.push(t.JSON1.insertOp([i,a,`order`,c],o)),s.reduce(t.JSON1.type.compose,null)}_getUngroupDrawingOp(e){let{parent:n,children:r}=e,{unitId:i,subUnitId:a,drawingId:o}=n,s=[];return r.forEach(e=>{let{unitId:t,subUnitId:n,drawingId:r}=e;s.push(...this._getUpdateParamCompareOp(e,this.getDrawingByParam({unitId:t,subUnitId:n,drawingId:r})))}),s.push(t.JSON1.removeOp([i,a,`data`,o],!0)),s.push(t.JSON1.removeOp([i,a,`order`,this._getDrawingOrder(i,a).indexOf(o)],!0)),s.reduce(t.JSON1.type.compose,null)}applyJson1(e,n,r){C(e,n),t.JSON1.type.checkValidOp(r);let i=w(this.drawingManagerData,e),a={...this.drawingManagerData,[e]:{...i,[n]:w(i,n)??{data:{},order:[]}}},o=t.JSON1.type.apply(a,r);for(let e of Object.keys(o))C(e),T(o[e]);this._oldDrawingManagerData=this.drawingManagerData,this.drawingManagerData=o}featurePluginUpdateNotification(e){this._featurePluginUpdate$.next(e)}featurePluginOrderUpdateNotification(e){this._featurePluginOrderUpdate$.next(e)}featurePluginAddNotification(e){this._featurePluginAdd$.next(e)}featurePluginRemoveNotification(e){this._featurePluginRemove$.next(e)}featurePluginGroupUpdateNotification(e){this._featurePluginGroupUpdate$.next(e)}featurePluginUngroupUpdateNotification(e){this._featurePluginUngroupUpdate$.next(e)}getDrawingByParam(e){return this._getCurrentBySearch(e)}getOldDrawingByParam(e){return this._getOldBySearch(e)}getDrawingOKey(e){let[t,n,r]=e.split(`#-#`);return this._getCurrentBySearch({unitId:t,subUnitId:n,drawingId:r})}focusDrawing(e){if(e==null||e.length===0){this._focusDrawings=[],this._focus$.next([]);return}let t=[];e.forEach(e=>{var n;let{unitId:r,subUnitId:i,drawingId:a}=e,o=(n=this._getDrawingData(r,i))==null?void 0:n[a];o!=null&&t.push(o)}),t.length>0&&(this._focusDrawings=t,this._focus$.next(t))}getFocusDrawings(){let e=[];return this._focusDrawings.forEach(t=>{var n;let{unitId:r,subUnitId:i,drawingId:a}=t,o=(n=this._getDrawingData(r,i))==null?void 0:n[a];o!=null&&e.push(o)}),e}getDrawingOrder(e,t){return this._getDrawingOrder(e,t)}setDrawingOrder(e,t,n){C(e,t),n.forEach(e=>C(e)),this._establishDrawingMap(e,t),this.drawingManagerData[e][t].order=n}orderUpdateNotification(e){this._order$.next(e)}getForwardDrawingsOp(e){let{unitId:n,subUnitId:r,drawingIds:i}=e,a=[],o=this.getDrawingOrder(n,r),s=[...i];i.forEach(e=>{let i=this._hasDrawingOrder({unitId:n,subUnitId:r,drawingId:e});if(i===-1||i===o.length-1)return;let c=t.JSON1.moveOp([n,r,`order`,i],[n,r,`order`,i+1]);a.push(c),s.includes(o[i+1])||s.push(o[i+1])});let c=a.reduce(t.JSON1.type.compose,null);return{undo:t.JSON1.type.invertWithDoc(c,this.drawingManagerData),redo:c,unitId:n,subUnitId:r,objects:{...e,drawingIds:s}}}getBackwardDrawingOp(e){let{unitId:n,subUnitId:r,drawingIds:i}=e,a=[],o=this.getDrawingOrder(n,r),s=[...i];i.forEach(e=>{let i=this._hasDrawingOrder({unitId:n,subUnitId:r,drawingId:e});if(i===-1||i===0)return;let c=t.JSON1.moveOp([n,r,`order`,i],[n,r,`order`,i-1]);a.push(c),s.includes(o[i-1])||s.push(o[i-1])});let c=a.reduce(t.JSON1.type.compose,null);return{undo:t.JSON1.type.invertWithDoc(c,this.drawingManagerData),redo:c,unitId:n,subUnitId:r,objects:{...e,drawingIds:s}}}getFrontDrawingsOp(e){let{unitId:n,subUnitId:r,drawingIds:i}=e,a=this._getOrderFromSearchParams(n,r,i),o=[...i],s=this.getDrawingOrder(n,r),c=[];a.forEach(e=>{let{drawingId:i}=e,a=this._getDrawingCount(n,r)-1,l=t.JSON1.moveOp([n,r,`order`,this._getDrawingOrder(n,r).indexOf(i)],[n,r,`order`,a]);c.push(l),o.includes(s[a])||o.push(s[a])});let l=c.reduce(t.JSON1.type.compose,null);return{undo:t.JSON1.type.invertWithDoc(l,this.drawingManagerData),redo:l,unitId:n,subUnitId:r,objects:{...e,drawingIds:o}}}getBackDrawingsOp(e){let{unitId:n,subUnitId:r,drawingIds:i}=e,a=this._getOrderFromSearchParams(n,r,i,!0),o=[...i],s=this.getDrawingOrder(n,r),c=[];a.forEach(e=>{let{drawingId:i}=e,a=t.JSON1.moveOp([n,r,`order`,this._getDrawingOrder(n,r).indexOf(i)],[n,r,`order`,0]);c.push(a),o.includes(s[0])||o.push(s[0])});let l=c.reduce(t.JSON1.type.compose,null);return{undo:t.JSON1.type.invertWithDoc(l,this.drawingManagerData),redo:l,unitId:n,subUnitId:r,objects:{...e,drawingIds:o}}}getDrawingOrderOp(e,n){let{unitId:r,subUnitId:i,drawingIds:a}=e;if(a.length!==1)return null;let o=this.getDrawingOrder(r,i),s=a[0],c=o.indexOf(s),l=(0,t.normalizeDrawingOrderIndex)(n,o.length);if(c<0||c===l)return null;let u=t.JSON1.moveOp([r,i,`order`,c],[r,i,`order`,l]),d=t.JSON1.type.invertWithDoc(u,this.drawingManagerData),f=o.slice(Math.min(c,l),Math.max(c,l)+1);return{undo:d,redo:u,unitId:r,subUnitId:i,objects:{...e,drawingIds:f}}}_getDrawingCount(e,t){return this.getDrawingOrder(e,t).length||0}_getOrderFromSearchParams(e,n,r,i=!1){return r.map(t=>({drawingId:t,zIndex:this._hasDrawingOrder({unitId:e,subUnitId:n,drawingId:t})})).sort(i===!1?t.sortRules:t.sortRulesByDesc)}_hasDrawingOrder(e){if(e==null)return-1;let{unitId:t,subUnitId:n,drawingId:r}=e;return this._establishDrawingMap(t,n),this._getDrawingOrder(t,n).indexOf(r)}_getCurrentBySearch(e){var t;if(e==null)return;let{unitId:n,subUnitId:r,drawingId:i}=e;return w((t=w(w(this.drawingManagerData,n),r))==null?void 0:t.data,i)}_getOldBySearch(e){var t;if(e==null)return;let{unitId:n,subUnitId:r,drawingId:i}=e;return w((t=w(w(this._oldDrawingManagerData,n),r))==null?void 0:t.data,i)}_establishDrawingMap(e,t,n){return C(e,t),n!=null&&C(n),w(this.drawingManagerData,e)||(this.drawingManagerData[e]={}),w(this.drawingManagerData[e],t)||(this.drawingManagerData[e][t]={data:{},order:[]}),n==null?null:w(this.drawingManagerData[e][t].data,n)}_addByParam(e){let{unitId:n,subUnitId:r,drawingId:i}=e;this._establishDrawingMap(n,r,i);let a=[t.JSON1.insertOp([n,r,`data`,i],e),t.JSON1.insertOp([n,r,`order`,this._getDrawingOrder(n,r).length],i)].reduce(t.JSON1.type.compose,null);return{op:a,invertOp:t.JSON1.type.invertWithDoc(a,this.drawingManagerData)}}_removeByParam(e){if(e==null)return{op:[],invertOp:[]};let{unitId:n,subUnitId:r,drawingId:i}=e;if(this._establishDrawingMap(n,r,i)==null)return{op:[],invertOp:[]};let a=[t.JSON1.removeOp([n,r,`data`,i],!0),t.JSON1.removeOp([n,r,`order`,this._getDrawingOrder(n,r).indexOf(i)],!0)].reduce(t.JSON1.type.compose,null);return{op:a,invertOp:t.JSON1.type.invertWithDoc(a,this.drawingManagerData)}}_updateByParam(e){let{unitId:n,subUnitId:r,drawingId:i}=e,a=this._establishDrawingMap(n,r,i);if(a==null)return{op:[],invertOp:[]};let o=this._getUpdateParamCompareOp(e,a);if(o.length===0)return{op:[],invertOp:[]};let s=o.reduce(t.JSON1.type.compose,null);return{op:s,invertOp:t.JSON1.type.invert(s)}}_getUpdateParamCompareOp(e,t){let{unitId:n,subUnitId:r,drawingId:i}=e,a=[];return Object.keys(e).forEach(o=>{let s=e[o],c=Object.prototype.hasOwnProperty.call(t,o),l=t[o];S(a,[n,r,`data`,i,o],s,l,c)}),a}_getDrawingData(e,t){var n;return((n=w(w(this.drawingManagerData,e),t))==null?void 0:n.data)||{}}_getDrawingOrder(e,t){var n;return((n=w(w(this.drawingManagerData,e),t))==null?void 0:n.order)||[]}getDrawingVisible(){return this._visible}getDrawingEditable(){return this._editable}setDrawingVisible(e){this._visible=e}setDrawingEditable(e){this._editable=e}},D=class extends E{},O=class{constructor(){h(this,`_waitCount`,0),h(this,`_change$`,new n.Subject),h(this,`change$`,this._change$),h(this,`_imageSourceCache`,new Map)}setWaitCount(e){this._waitCount=e,this._change$.next(e)}getImageSourceCache(e,n){let r=this._imageSourceCache.get(e);if(r!=null)return r;if(n===t.ImageSourceType.BASE64){let t=new Image;return t.onload=()=>this._change$.next(this._waitCount),t.onerror=()=>this._change$.next(this._waitCount),t.src=e,this._imageSourceCache.set(e,t),t}}addImageSourceCache(e,n,r){n!==t.ImageSourceType.BASE64&&r!=null&&this._imageSourceCache.set(e,r)}async getImage(e){return Promise.resolve(e)}async saveImage(e){return new Promise((n,r)=>{if(!o.includes(e.type)){r(Error(t.ImageUploadStatusType.ERROR_IMAGE_TYPE)),this._decreaseWaiting();return}if(e.size>a()){r(Error(t.ImageUploadStatusType.ERROR_EXCEED_SIZE)),this._decreaseWaiting();return}let i=new FileReader;i.readAsDataURL(e),i.onload=e=>{var i;let a=(i=e.target)==null?void 0:i.result;if(a==null){r(Error(t.ImageUploadStatusType.ERROR_IMAGE)),this._decreaseWaiting();return}n({imageId:(0,t.generateRandomId)(6),imageSourceType:t.ImageSourceType.BASE64,source:a,base64Cache:a,status:t.ImageUploadStatusType.SUCCUSS}),this._decreaseWaiting()}})}_decreaseWaiting(){--this._waitCount,this._change$.next(this._waitCount)}},k=class extends t.Disposable{constructor(...e){super(...e),h(this,`_urlImageDownloader`,null)}registerURLImageDownloader(e){return this._urlImageDownloader=e,(0,t.toDisposable)(()=>{this._urlImageDownloader=null})}async getImage(e){if(this._urlImageDownloader)try{return await this._urlImageDownloader(e)}catch(t){console.error(`Custom downloader failed for ${e}, falling back to default behavior:`,t)}return e}async downloadImage(e){if(this._urlImageDownloader)try{let t=await this._urlImageDownloader(e);return await(await fetch(t)).blob()}catch(t){console.error(`Custom downloader failed for ${e}, falling back to default fetch:`,t)}return await(await fetch(e)).blob()}};function A(e,t){return function(n,r){t(n,r,e)}}function j(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 M=class extends t.Plugin{constructor(e=d,n,r,a){super(),this._config=e,this._injector=n,this._configService=r,this._commandService=a;let{...o}=(0,t.merge)({},d,this._config);this._configService.setConfig(`drawing.config`,o),o.allowImageSize!==void 0&&i(o.allowImageSize)}onStarting(){this._initCommands(),this._initDependencies()}_initDependencies(){var e;(0,t.mergeOverrideWithDependencies)([[t.IImageIoService,{useClass:O}],[t.IURLImageService,{useClass:k}],[s,{useClass:D}]],(e=this._config)==null?void 0:e.override).forEach(e=>this._injector.add(e))}_initCommands(){[c].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}};h(M,`pluginName`,`UNIVER_DRAWING_PLUGIN`),h(M,`packageName`,l),h(M,`version`,u),M=j([A(1,(0,t.Inject)(t.Injector)),A(2,t.IConfigService),A(3,t.ICommandService)],M);let N=`univer.drawing.copy-plan`;function P(e){return JSON.parse(JSON.stringify(e))}function F(e,t,n){let r=P(e),i=t.get(e.drawingId);if(i==null)return r;if(r.unitId=n.unitId,r.subUnitId=n.targetSubUnitId,r.drawingId=i,r.groupId){let e=t.get(r.groupId);e?r.groupId=e:delete r.groupId}return r}function I(e,n){let{generateId:r=()=>(0,t.generateRandomId)(10)}=n,i=new Map;return e.forEach(e=>{i.has(e.drawingId)||i.set(e.drawingId,r())}),{idMap:i,drawings:e.map(e=>F(e,i,n))}}function L(e,n,r){if(e==null)return I(n,r);let i=e.get(N);if(i){let{generateId:e=()=>(0,t.generateRandomId)(10)}=r;if(!n.some(e=>!i.idMap.has(e.drawingId)))return i;n.forEach(t=>{i.idMap.has(t.drawingId)||i.idMap.set(t.drawingId,e())});let a=new Set(n.map(e=>e.drawingId)),o=new Map(Array.from(i.idMap.entries()).map(([e,t])=>[t,e])),s=i.drawings.filter(e=>{let t=o.get(e.drawingId);return t==null||!a.has(t)});return i.drawings=[...n.map(e=>F(e,i.idMap,r)),...s],i}let a=I(n,r);return e.set(N,a),a}let R=[t.DrawingTypeEnum.DRAWING_IMAGE,t.DrawingTypeEnum.DRAWING_SHAPE,t.DrawingTypeEnum.DRAWING_CHART,t.DrawingTypeEnum.DRAWING_SLICER,t.DrawingTypeEnum.DRAWING_TIMELINE,t.DrawingTypeEnum.DRAWING_GROUP];function z(e){return R.includes(e)}function B({unitId:e,subUnitId:t,drawingId:n},r){return typeof r==`number`?`${e}#-#${t}#-#${n}#-#${r}`:`${e}#-#${t}#-#${n}`}let V=async e=>new Promise((t,n)=>{let r=new Image;r.src=e,r.onload=()=>{t({width:r.width,height:r.height,image:r})},r.onerror=e=>{n(e)}});function H(e){return`${e.unitId}\u0000${e.subUnitId}\u0000${e.drawingId}`}function U(e,n={},r=new Set){var i,a,o;let s=H(e);if(r.has(s))return!0;if(e.drawingType===t.DrawingTypeEnum.DRAWING_GROUP){var c;r.add(s);let t=(c=n.getChildren)==null?void 0:c.call(n,e);if(t!=null){let e=t.every(e=>U(e,n,r));return r.delete(s),e}r.delete(s)}return!(((i=e.transform)==null?void 0:i.rotateEnabled)===!1||((a=n.getRenderObject)==null||(a=a.call(n,e))==null||(a=a.transformerConfig)==null?void 0:a.rotateEnabled)===!1||(o=n.isKnownNonRotatableType)!=null&&o.call(n,e.drawingType))}e.DRAWING_COPY_CONTEXT_KEY=N,e.DRAWING_GROUPABLE_TYPES=R,e.DRAWING_IMAGE_ALLOW_IMAGE_LIST=o,e.DRAWING_IMAGE_COUNT_LIMIT=10,e.DRAWING_IMAGE_HEIGHT_LIMIT=500,e.DRAWING_IMAGE_WIDTH_LIMIT=500,e.DrawingManagerService=D,e.IDrawingManagerService=s,e.ImageIoService=O,e.SetDrawingSelectedOperation=c,e.URLImageService=k,e.UnitDrawingService=E,Object.defineProperty(e,"UniverDrawingPlugin",{enumerable:!0,get:function(){return M}}),e.createDrawingCopyPlan=I,e.getDrawingImageAllowSize=a,e.getDrawingShapeKeyByDrawingSearch=B,e.getImageSize=V,e.getOrCreateDrawingCopyPlan=L,e.isGroupableDrawingType=z,e.resolveDrawingRotateEnabled=U});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("rxjs")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`rxjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDrawing={},e.UniverCore,e.rxjs))})(this,function(e,t,n){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let r=5242880;function i(e){r=e}function a(){return r}let o=[`image/png`,`image/jpeg`,`image/jpg`,`image/gif`,`image/bmp`],s=(0,t.createIdentifier)(`univer.drawing-manager.service`),c={id:`drawing.operation.set-drawing-selected`,type:t.CommandType.OPERATION,handler:(e,t)=>{let n=e.get(s);return t!=null&&(n.focusDrawing(t),!0)}};var l=`@univerjs/drawing`,u=`1.0.2`;let d={};function f(e){"@babel/helpers - typeof";return f=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},f(e)}function p(e,t){if(f(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(f(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function m(e){var t=p(e,`string`);return f(t)==`symbol`?t:t+``}function h(e,t,n){return(t=m(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e){return Array.isArray(e)&&e.length>0}function _(e,t){if(e===t)return!0;if(Array.isArray(e)||Array.isArray(t))return!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length?!1:e.every((e,n)=>_(e,t[n]));if(!v(e)||!v(t))return!1;let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(n=>Object.prototype.hasOwnProperty.call(t,n)&&_(e[n],t[n]))}function v(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function y(e){return Object.getOwnPropertyNames(e).every(t=>Object.prototype.propertyIsEnumerable.call(e,t))}function b(e,n){return t.JSON1.type.writeCursor().writeAtPath(e,`r`,n).get()}function x(e){if(e===void 0)return;if(e===null||typeof e==`boolean`||typeof e==`number`||typeof e==`string`)return e;if(Array.isArray(e))return e.map(e=>x(e)??null);if(!v(e))return;let t={};return Object.entries(e).forEach(([e,n])=>{let r=x(n);r!==void 0&&(t[e]=r)}),t}function S(e,n,r,i,a){let o=x(i),s=x(r),c=a&&o!==void 0;if(c&&_(o,s))return;if(c&&v(i)&&v(r)&&y(i)&&y(r)){for(let t of new Set([...Object.keys(i),...Object.keys(r)]))S(e,[...n,t],r[t],i[t],Object.prototype.hasOwnProperty.call(i,t)&&i[t]!==void 0);return}let l=c?s===void 0?b(n,o):t.JSON1.replaceOp(n,o,s):s===void 0?null:t.JSON1.insertOp(n,s);l&&g(l)&&e.push(l)}function C(...e){for(let t of e)if(t===`__proto__`||t===`constructor`||t===`prototype`)throw Error(`Invalid drawing key`)}function w(e,t){return e!=null&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function T(e){for(let t of Object.keys(e)){C(t);let n=e[t];n!=null&&n.data&&Object.keys(n.data).forEach(e=>C(e)),n!=null&&n.order&&n.order.forEach(e=>C(e))}}var E=class{constructor(){h(this,`drawingManagerData`,{}),h(this,`_oldDrawingManagerData`,{}),h(this,`_focusDrawings`,[]),h(this,`_remove$`,new n.Subject),h(this,`remove$`,this._remove$.asObservable()),h(this,`_add$`,new n.Subject),h(this,`add$`,this._add$.asObservable()),h(this,`_update$`,new n.Subject),h(this,`update$`,this._update$.asObservable()),h(this,`_order$`,new n.Subject),h(this,`order$`,this._order$.asObservable()),h(this,`_group$`,new n.Subject),h(this,`group$`,this._group$.asObservable()),h(this,`_ungroup$`,new n.Subject),h(this,`ungroup$`,this._ungroup$.asObservable()),h(this,`_refreshTransform$`,new n.Subject),h(this,`refreshTransform$`,this._refreshTransform$.asObservable()),h(this,`_visible$`,new n.Subject),h(this,`visible$`,this._visible$.asObservable()),h(this,`_focus$`,new n.Subject),h(this,`focus$`,this._focus$.asObservable()),h(this,`_featurePluginUpdate$`,new n.Subject),h(this,`featurePluginUpdate$`,this._featurePluginUpdate$.asObservable()),h(this,`_featurePluginAdd$`,new n.Subject),h(this,`featurePluginAdd$`,this._featurePluginAdd$.asObservable()),h(this,`_featurePluginRemove$`,new n.Subject),h(this,`featurePluginRemove$`,this._featurePluginRemove$.asObservable()),h(this,`_featurePluginOrderUpdate$`,new n.Subject),h(this,`featurePluginOrderUpdate$`,this._featurePluginOrderUpdate$.asObservable()),h(this,`_featurePluginGroupUpdate$`,new n.Subject),h(this,`featurePluginGroupUpdate$`,this._featurePluginGroupUpdate$.asObservable()),h(this,`_featurePluginUngroupUpdate$`,new n.Subject),h(this,`featurePluginUngroupUpdate$`,this._featurePluginUngroupUpdate$.asObservable()),h(this,`_visible`,!0),h(this,`_editable`,!0)}dispose(){this._remove$.complete(),this._add$.complete(),this._update$.complete(),this._order$.complete(),this._focus$.complete(),this._featurePluginUpdate$.complete(),this._featurePluginAdd$.complete(),this._featurePluginRemove$.complete(),this._featurePluginOrderUpdate$.complete(),this.drawingManagerData={},this._oldDrawingManagerData={}}visibleNotification(e){this._visible$.next(e)}refreshTransform(e){e.forEach(e=>{let t=this._getCurrentBySearch(e);t!=null&&(t.transform=e.transform,Object.prototype.hasOwnProperty.call(e,`transforms`)&&(t.transforms=e.transforms),Object.prototype.hasOwnProperty.call(e,`isMultiTransform`)&&(t.isMultiTransform=e.isMultiTransform),`behindText`in e&&(t.behindText=e.behindText),`hidden`in e&&(t.hidden=e.hidden))}),this.refreshTransformNotification(e)}getDrawingDataForUnit(e){return w(this.drawingManagerData,e)||{}}removeDrawingDataForUnit(e){let t=w(this.drawingManagerData,e);if(t==null)return;delete this.drawingManagerData[e];let n=[];Object.keys(t).forEach(r=>{let i=t[r];(i==null?void 0:i.data)!=null&&Object.keys(i.data).forEach(t=>{n.push({unitId:e,subUnitId:r,drawingId:t})})}),n.length>0&&this.removeNotification(n)}registerDrawingData(e,t){C(e),T(t),this.drawingManagerData[e]=t}initializeNotification(e){let t=[],n=w(this.drawingManagerData,e);n!=null&&(Object.keys(n).forEach(r=>{this._establishDrawingMap(e,r);let i=n[r];(i==null?void 0:i.data)!=null&&Object.keys(i.data).forEach(n=>{let a=i.data[n];a.unitId=e,a.subUnitId=r,t.push(a)})}),t.length>0&&this.addNotification(t))}getDrawingData(e,t){return this._getDrawingData(e,t)}setDrawingData(e,t,n){C(e,t),Object.keys(n).forEach(e=>C(e)),this._establishDrawingMap(e,t);let r=this.drawingManagerData[e],i=r[t];this._oldDrawingManagerData={...this.drawingManagerData,[e]:{...r,[t]:{...i}}},this.drawingManagerData[e][t].data=n}getBatchAddOp(e){let n=[],r=[],i=[];e.forEach(e=>{let{op:t,invertOp:a}=this._addByParam(e);n.push({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId}),r.push(t),i.push(a)});let a=r.reduce(t.JSON1.type.compose,null),o=i.reduce(t.JSON1.type.compose,null),{unitId:s,subUnitId:c}=e[0];return{undo:o,redo:a,unitId:s,subUnitId:c,objects:n}}getBatchRemoveOpInOder(e){if(e.length===0)return{undo:null,redo:null,unitId:``,subUnitId:``,objects:[]};let t=this.getDrawingOrder(e[0].unitId,e[0].subUnitId),n=new Map;return t.forEach((e,t)=>{n.set(e,t)}),e.sort((e,t)=>(n.get(e.drawingId)??-1/0)-(n.get(t.drawingId)??-1/0)),this.getBatchRemoveOp(e)}_getExpandedBatchRemoveParams(e){let n=new Set,r=[],i=e=>{n.has(e.drawingId)||(n.add(e.drawingId),r.push({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId}))},a=e=>{n.has(e.drawingId)||(n.add(e.drawingId),r.push(e))};return e.forEach(e=>{let n=this.getDrawingByParam(e);if((n==null?void 0:n.drawingType)===t.DrawingTypeEnum.DRAWING_GROUP){let t=this.getDrawingsByGroupNested(e);if(t){let{flatChildren:e,groups:n}=t;[...e??[],...n].forEach(e=>{i(e)})}else i(n)}else n?i(n):a(e)}),r}getBatchRemoveOp(e){let n=this._getExpandedBatchRemoveParams(e),{unitId:r,subUnitId:i}=n[0]??e[0]??{unitId:``,subUnitId:``};if(n.length===0)return{undo:null,redo:null,unitId:r,subUnitId:i,objects:[]};let a=this._getDrawingOrder(r,i),o=new Map;a.forEach((e,t)=>o.set(e,t)),n.sort((e,t)=>(o.get(e.drawingId)??-1/0)-(o.get(t.drawingId)??-1/0));let s=[],c=[];n.forEach(e=>{let{op:t,invertOp:n}=this._removeByParam(e);s.unshift(t),c.push(n)});let l=s.reduce(t.JSON1.type.compose,null);return{undo:c.reduce(t.JSON1.type.compose,null),redo:l,unitId:r,subUnitId:i,objects:n}}getBatchUpdateOp(e){let n=[],r=[],i=[];if(e.forEach(e=>{let{op:t,invertOp:a}=this._updateByParam(e);g(t)&&(n.push({unitId:e.unitId,subUnitId:e.subUnitId,drawingId:e.drawingId}),r.push(t),i.push(a))}),r.length===0){let{unitId:t,subUnitId:r}=e[0];return{undo:null,redo:null,unitId:t,subUnitId:r,objects:n}}let a=r.reduce(t.JSON1.type.compose,null),o=i.reduce(t.JSON1.type.compose,null),{unitId:s,subUnitId:c}=e[0];return{undo:o,redo:a,unitId:s,subUnitId:c,objects:n}}removeNotification(e){this._remove$.next(e)}addNotification(e){this._add$.next(e)}updateNotification(e){this._update$.next(e)}orderNotification(e){this._order$.next(e)}groupUpdateNotification(e){this._group$.next(e)}ungroupUpdateNotification(e){this._ungroup$.next(e)}refreshTransformNotification(e){this._refreshTransform$.next(e)}getGroupDrawingOp(e){let n=[],{unitId:r,subUnitId:i}=e[0].parent;e.forEach(e=>{n.push(this._getGroupDrawingOp(e))});let a=n.reduce(t.JSON1.type.compose,null);return{undo:t.JSON1.type.invertWithDoc(a,this.drawingManagerData),redo:a,unitId:r,subUnitId:i,objects:e}}getUngroupDrawingOp(e){let n=[],{unitId:r,subUnitId:i}=e[0].parent;e.forEach(e=>{n.push(this._getUngroupDrawingOp(e))});let a=n.reduce(t.JSON1.type.compose,null);return{undo:t.JSON1.type.invertWithDoc(a,this.drawingManagerData),redo:a,unitId:r,subUnitId:i,objects:e}}getDrawingsByGroup(e){let{unitId:t,subUnitId:n,drawingId:r}=e;if(this.getDrawingByParam({unitId:t,subUnitId:n,drawingId:r})==null)return[];let i=this._getDrawingData(t,n),a=[];return Object.keys(i).forEach(e=>{let t=i[e];t.groupId===r&&a.push(t)}),a}getDrawingsByGroupNested(e){let{unitId:n,subUnitId:r}=e,i=this.getDrawingByParam(e);if(!i)return null;let a=this._getDrawingData(n,r),o=new Map;Object.values(a).forEach(e=>{e.groupId!=null&&(o.has(e.groupId)||o.set(e.groupId,[]),o.get(e.groupId).push(e.drawingId))});let s=[],c=[],l={},u=e=>{let{drawingId:n}=e,r=o.get(n)??[];l[n]={drawingId:n,children:r},r.forEach(e=>{let n=a[e];n&&(n.drawingType===t.DrawingTypeEnum.DRAWING_GROUP?(u(n),c.push(n)):s.push(n))})};return u(i),c.push(i),{nestedIdRecord:l,flatChildren:s,groups:c}}_getGroupDrawingOp(e){let{parent:n,children:r}=e,{unitId:i,subUnitId:a,drawingId:o}=n,s=[];s.push(t.JSON1.insertOp([i,a,`data`,o],n));let c=-1/0;return r.forEach(e=>{let{unitId:t,subUnitId:n,drawingId:r}=e,i=this._hasDrawingOrder({unitId:t,subUnitId:n,drawingId:r});c=Math.max(c,i),s.push(...this._getUpdateParamCompareOp(e,this.getDrawingByParam({unitId:t,subUnitId:n,drawingId:r})))}),c===-1/0&&(c=this._getDrawingOrder(i,a).length),s.push(t.JSON1.insertOp([i,a,`order`,c],o)),s.reduce(t.JSON1.type.compose,null)}_getUngroupDrawingOp(e){let{parent:n,children:r}=e,{unitId:i,subUnitId:a,drawingId:o}=n,s=[];return r.forEach(e=>{let{unitId:t,subUnitId:n,drawingId:r}=e;s.push(...this._getUpdateParamCompareOp(e,this.getDrawingByParam({unitId:t,subUnitId:n,drawingId:r})))}),s.push(t.JSON1.removeOp([i,a,`data`,o],!0)),s.push(t.JSON1.removeOp([i,a,`order`,this._getDrawingOrder(i,a).indexOf(o)],!0)),s.reduce(t.JSON1.type.compose,null)}applyJson1(e,n,r){C(e,n),t.JSON1.type.checkValidOp(r);let i=w(this.drawingManagerData,e),a={...this.drawingManagerData,[e]:{...i,[n]:w(i,n)??{data:{},order:[]}}},o=t.JSON1.type.apply(a,r);for(let e of Object.keys(o))C(e),T(o[e]);this._oldDrawingManagerData=this.drawingManagerData,this.drawingManagerData=o}featurePluginUpdateNotification(e){this._featurePluginUpdate$.next(e)}featurePluginOrderUpdateNotification(e){this._featurePluginOrderUpdate$.next(e)}featurePluginAddNotification(e){this._featurePluginAdd$.next(e)}featurePluginRemoveNotification(e){this._featurePluginRemove$.next(e)}featurePluginGroupUpdateNotification(e){this._featurePluginGroupUpdate$.next(e)}featurePluginUngroupUpdateNotification(e){this._featurePluginUngroupUpdate$.next(e)}getDrawingByParam(e){return this._getCurrentBySearch(e)}getOldDrawingByParam(e){return this._getOldBySearch(e)}getDrawingOKey(e){let[t,n,r]=e.split(`#-#`);return this._getCurrentBySearch({unitId:t,subUnitId:n,drawingId:r})}focusDrawing(e){if(e==null||e.length===0){this._focusDrawings=[],this._focus$.next([]);return}let t=[];e.forEach(e=>{var n;let{unitId:r,subUnitId:i,drawingId:a}=e,o=(n=this._getDrawingData(r,i))==null?void 0:n[a];o!=null&&t.push(o)}),t.length>0&&(this._focusDrawings=t,this._focus$.next(t))}getFocusDrawings(){let e=[];return this._focusDrawings.forEach(t=>{var n;let{unitId:r,subUnitId:i,drawingId:a}=t,o=(n=this._getDrawingData(r,i))==null?void 0:n[a];o!=null&&e.push(o)}),e}getDrawingOrder(e,t){return this._getDrawingOrder(e,t)}setDrawingOrder(e,t,n){C(e,t),n.forEach(e=>C(e)),this._establishDrawingMap(e,t),this.drawingManagerData[e][t].order=n}orderUpdateNotification(e){this._order$.next(e)}getForwardDrawingsOp(e){let{unitId:n,subUnitId:r,drawingIds:i}=e,a=[],o=this.getDrawingOrder(n,r),s=[...i];i.forEach(e=>{let i=this._hasDrawingOrder({unitId:n,subUnitId:r,drawingId:e});if(i===-1||i===o.length-1)return;let c=t.JSON1.moveOp([n,r,`order`,i],[n,r,`order`,i+1]);a.push(c),s.includes(o[i+1])||s.push(o[i+1])});let c=a.reduce(t.JSON1.type.compose,null);return{undo:t.JSON1.type.invertWithDoc(c,this.drawingManagerData),redo:c,unitId:n,subUnitId:r,objects:{...e,drawingIds:s}}}getBackwardDrawingOp(e){let{unitId:n,subUnitId:r,drawingIds:i}=e,a=[],o=this.getDrawingOrder(n,r),s=[...i];i.forEach(e=>{let i=this._hasDrawingOrder({unitId:n,subUnitId:r,drawingId:e});if(i===-1||i===0)return;let c=t.JSON1.moveOp([n,r,`order`,i],[n,r,`order`,i-1]);a.push(c),s.includes(o[i-1])||s.push(o[i-1])});let c=a.reduce(t.JSON1.type.compose,null);return{undo:t.JSON1.type.invertWithDoc(c,this.drawingManagerData),redo:c,unitId:n,subUnitId:r,objects:{...e,drawingIds:s}}}getFrontDrawingsOp(e){let{unitId:n,subUnitId:r,drawingIds:i}=e,a=this._getOrderFromSearchParams(n,r,i),o=[...i],s=this.getDrawingOrder(n,r),c=[];a.forEach(e=>{let{drawingId:i}=e,a=this._getDrawingCount(n,r)-1,l=t.JSON1.moveOp([n,r,`order`,this._getDrawingOrder(n,r).indexOf(i)],[n,r,`order`,a]);c.push(l),o.includes(s[a])||o.push(s[a])});let l=c.reduce(t.JSON1.type.compose,null);return{undo:t.JSON1.type.invertWithDoc(l,this.drawingManagerData),redo:l,unitId:n,subUnitId:r,objects:{...e,drawingIds:o}}}getBackDrawingsOp(e){let{unitId:n,subUnitId:r,drawingIds:i}=e,a=this._getOrderFromSearchParams(n,r,i,!0),o=[...i],s=this.getDrawingOrder(n,r),c=[];a.forEach(e=>{let{drawingId:i}=e,a=t.JSON1.moveOp([n,r,`order`,this._getDrawingOrder(n,r).indexOf(i)],[n,r,`order`,0]);c.push(a),o.includes(s[0])||o.push(s[0])});let l=c.reduce(t.JSON1.type.compose,null);return{undo:t.JSON1.type.invertWithDoc(l,this.drawingManagerData),redo:l,unitId:n,subUnitId:r,objects:{...e,drawingIds:o}}}getDrawingOrderOp(e,n){let{unitId:r,subUnitId:i,drawingIds:a}=e;if(a.length!==1)return null;let o=this.getDrawingOrder(r,i),s=a[0],c=o.indexOf(s),l=(0,t.normalizeDrawingOrderIndex)(n,o.length);if(c<0||c===l)return null;let u=t.JSON1.moveOp([r,i,`order`,c],[r,i,`order`,l]),d=t.JSON1.type.invertWithDoc(u,this.drawingManagerData),f=o.slice(Math.min(c,l),Math.max(c,l)+1);return{undo:d,redo:u,unitId:r,subUnitId:i,objects:{...e,drawingIds:f}}}_getDrawingCount(e,t){return this.getDrawingOrder(e,t).length||0}_getOrderFromSearchParams(e,n,r,i=!1){return r.map(t=>({drawingId:t,zIndex:this._hasDrawingOrder({unitId:e,subUnitId:n,drawingId:t})})).sort(i===!1?t.sortRules:t.sortRulesByDesc)}_hasDrawingOrder(e){if(e==null)return-1;let{unitId:t,subUnitId:n,drawingId:r}=e;return this._establishDrawingMap(t,n),this._getDrawingOrder(t,n).indexOf(r)}_getCurrentBySearch(e){var t;if(e==null)return;let{unitId:n,subUnitId:r,drawingId:i}=e;return w((t=w(w(this.drawingManagerData,n),r))==null?void 0:t.data,i)}_getOldBySearch(e){var t;if(e==null)return;let{unitId:n,subUnitId:r,drawingId:i}=e;return w((t=w(w(this._oldDrawingManagerData,n),r))==null?void 0:t.data,i)}_establishDrawingMap(e,t,n){return C(e,t),n!=null&&C(n),w(this.drawingManagerData,e)||(this.drawingManagerData[e]={}),w(this.drawingManagerData[e],t)||(this.drawingManagerData[e][t]={data:{},order:[]}),n==null?null:w(this.drawingManagerData[e][t].data,n)}_addByParam(e){let{unitId:n,subUnitId:r,drawingId:i}=e;this._establishDrawingMap(n,r,i);let a=[t.JSON1.insertOp([n,r,`data`,i],e),t.JSON1.insertOp([n,r,`order`,this._getDrawingOrder(n,r).length],i)].reduce(t.JSON1.type.compose,null);return{op:a,invertOp:t.JSON1.type.invertWithDoc(a,this.drawingManagerData)}}_removeByParam(e){if(e==null)return{op:[],invertOp:[]};let{unitId:n,subUnitId:r,drawingId:i}=e;if(this._establishDrawingMap(n,r,i)==null)return{op:[],invertOp:[]};let a=[t.JSON1.removeOp([n,r,`data`,i],!0),t.JSON1.removeOp([n,r,`order`,this._getDrawingOrder(n,r).indexOf(i)],!0)].reduce(t.JSON1.type.compose,null);return{op:a,invertOp:t.JSON1.type.invertWithDoc(a,this.drawingManagerData)}}_updateByParam(e){let{unitId:n,subUnitId:r,drawingId:i}=e,a=this._establishDrawingMap(n,r,i);if(a==null)return{op:[],invertOp:[]};let o=this._getUpdateParamCompareOp(e,a);if(o.length===0)return{op:[],invertOp:[]};let s=o.reduce(t.JSON1.type.compose,null);return{op:s,invertOp:t.JSON1.type.invert(s)}}_getUpdateParamCompareOp(e,t){let{unitId:n,subUnitId:r,drawingId:i}=e,a=[];return Object.keys(e).forEach(o=>{let s=e[o],c=Object.prototype.hasOwnProperty.call(t,o),l=t[o];S(a,[n,r,`data`,i,o],s,l,c)}),a}_getDrawingData(e,t){var n;return((n=w(w(this.drawingManagerData,e),t))==null?void 0:n.data)||{}}_getDrawingOrder(e,t){var n;return((n=w(w(this.drawingManagerData,e),t))==null?void 0:n.order)||[]}getDrawingVisible(){return this._visible}getDrawingEditable(){return this._editable}setDrawingVisible(e){this._visible=e}setDrawingEditable(e){this._editable=e}},D=class extends E{},O=class{constructor(){h(this,`_waitCount`,0),h(this,`_change$`,new n.Subject),h(this,`change$`,this._change$),h(this,`_imageSourceCache`,new Map)}setWaitCount(e){this._waitCount=e,this._change$.next(e)}getImageSourceCache(e,n){let r=this._imageSourceCache.get(e);if(r!=null)return r;if(n===t.ImageSourceType.BASE64){let t=new Image;return t.onload=()=>this._change$.next(this._waitCount),t.onerror=()=>this._change$.next(this._waitCount),t.src=e,this._imageSourceCache.set(e,t),t}}addImageSourceCache(e,n,r){n!==t.ImageSourceType.BASE64&&r!=null&&this._imageSourceCache.set(e,r)}async getImage(e){return Promise.resolve(e)}async saveImage(e){return new Promise((n,r)=>{if(!o.includes(e.type)){r(Error(t.ImageUploadStatusType.ERROR_IMAGE_TYPE)),this._decreaseWaiting();return}if(e.size>a()){r(Error(t.ImageUploadStatusType.ERROR_EXCEED_SIZE)),this._decreaseWaiting();return}let i=new FileReader;i.readAsDataURL(e),i.onload=e=>{var i;let a=(i=e.target)==null?void 0:i.result;if(a==null){r(Error(t.ImageUploadStatusType.ERROR_IMAGE)),this._decreaseWaiting();return}n({imageId:(0,t.generateRandomId)(6),imageSourceType:t.ImageSourceType.BASE64,source:a,base64Cache:a,status:t.ImageUploadStatusType.SUCCUSS}),this._decreaseWaiting()}})}_decreaseWaiting(){--this._waitCount,this._change$.next(this._waitCount)}},k=class extends t.Disposable{constructor(...e){super(...e),h(this,`_urlImageDownloader`,null)}registerURLImageDownloader(e){return this._urlImageDownloader=e,(0,t.toDisposable)(()=>{this._urlImageDownloader=null})}async getImage(e){if(this._urlImageDownloader)try{return await this._urlImageDownloader(e)}catch(t){console.error(`Custom downloader failed for ${e}, falling back to default behavior:`,t)}return e}async downloadImage(e){if(this._urlImageDownloader)try{let t=await this._urlImageDownloader(e);return await(await fetch(t)).blob()}catch(t){console.error(`Custom downloader failed for ${e}, falling back to default fetch:`,t)}return await(await fetch(e)).blob()}};function A(e,t){return function(n,r){t(n,r,e)}}function j(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 M=class extends t.Plugin{constructor(e=d,n,r,a){super(),this._config=e,this._injector=n,this._configService=r,this._commandService=a;let{...o}=(0,t.merge)({},d,this._config);this._configService.setConfig(`drawing.config`,o),o.allowImageSize!==void 0&&i(o.allowImageSize)}onStarting(){this._initCommands(),this._initDependencies()}_initDependencies(){var e;(0,t.mergeOverrideWithDependencies)([[t.IImageIoService,{useClass:O}],[t.IURLImageService,{useClass:k}],[s,{useClass:D}]],(e=this._config)==null?void 0:e.override).forEach(e=>this._injector.add(e))}_initCommands(){[c].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}};h(M,`pluginName`,`UNIVER_DRAWING_PLUGIN`),h(M,`packageName`,l),h(M,`version`,u),M=j([A(1,(0,t.Inject)(t.Injector)),A(2,t.IConfigService),A(3,t.ICommandService)],M);let N=`univer.drawing.copy-plan`;function P(e){return JSON.parse(JSON.stringify(e))}function F(e,t,n){let r=P(e),i=t.get(e.drawingId);if(i==null)return r;if(r.unitId=n.unitId,r.subUnitId=n.targetSubUnitId,r.drawingId=i,r.groupId){let e=t.get(r.groupId);e?r.groupId=e:delete r.groupId}return r}function I(e,n){let{generateId:r=()=>(0,t.generateRandomId)(10)}=n,i=new Map;return e.forEach(e=>{i.has(e.drawingId)||i.set(e.drawingId,r())}),{idMap:i,drawings:e.map(e=>F(e,i,n))}}function L(e,n,r){if(e==null)return I(n,r);let i=e.get(N);if(i){let{generateId:e=()=>(0,t.generateRandomId)(10)}=r;if(!n.some(e=>!i.idMap.has(e.drawingId)))return i;n.forEach(t=>{i.idMap.has(t.drawingId)||i.idMap.set(t.drawingId,e())});let a=new Set(n.map(e=>e.drawingId)),o=new Map(Array.from(i.idMap.entries()).map(([e,t])=>[t,e])),s=i.drawings.filter(e=>{let t=o.get(e.drawingId);return t==null||!a.has(t)});return i.drawings=[...n.map(e=>F(e,i.idMap,r)),...s],i}let a=I(n,r);return e.set(N,a),a}let R=[t.DrawingTypeEnum.DRAWING_IMAGE,t.DrawingTypeEnum.DRAWING_SHAPE,t.DrawingTypeEnum.DRAWING_CHART,t.DrawingTypeEnum.DRAWING_SLICER,t.DrawingTypeEnum.DRAWING_TIMELINE,t.DrawingTypeEnum.DRAWING_GROUP];function z(e){return R.includes(e)}function B({unitId:e,subUnitId:t,drawingId:n},r){return typeof r==`number`?`${e}#-#${t}#-#${n}#-#${r}`:`${e}#-#${t}#-#${n}`}let V=async e=>new Promise((t,n)=>{let r=new Image;r.src=e,r.onload=()=>{t({width:r.width,height:r.height,image:r})},r.onerror=e=>{n(e)}});function H(e){return`${e.unitId}\u0000${e.subUnitId}\u0000${e.drawingId}`}function U(e,n={},r=new Set){var i,a,o;let s=H(e);if(r.has(s))return!0;if(e.drawingType===t.DrawingTypeEnum.DRAWING_GROUP){var c;r.add(s);let t=(c=n.getChildren)==null?void 0:c.call(n,e);if(t!=null){let e=t.every(e=>U(e,n,r));return r.delete(s),e}r.delete(s)}return!(((i=e.transform)==null?void 0:i.rotateEnabled)===!1||((a=n.getRenderObject)==null||(a=a.call(n,e))==null||(a=a.transformerConfig)==null?void 0:a.rotateEnabled)===!1||(o=n.isKnownNonRotatableType)!=null&&o.call(n,e.drawingType))}e.DRAWING_COPY_CONTEXT_KEY=N,e.DRAWING_GROUPABLE_TYPES=R,e.DRAWING_IMAGE_ALLOW_IMAGE_LIST=o,e.DRAWING_IMAGE_COUNT_LIMIT=10,e.DRAWING_IMAGE_HEIGHT_LIMIT=500,e.DRAWING_IMAGE_WIDTH_LIMIT=500,e.DrawingManagerService=D,e.IDrawingManagerService=s,e.ImageIoService=O,e.SetDrawingSelectedOperation=c,e.URLImageService=k,e.UnitDrawingService=E,Object.defineProperty(e,"UniverDrawingPlugin",{enumerable:!0,get:function(){return M}}),e.createDrawingCopyPlan=I,e.getDrawingImageAllowSize=a,e.getDrawingShapeKeyByDrawingSearch=B,e.getImageSize=V,e.getOrCreateDrawingCopyPlan=L,e.isGroupableDrawingType=z,e.resolveDrawingRotateEnabled=U});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/drawing",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Shared drawing models, commands, and services for Univer.",
|
|
6
6
|
"author": "DreamNum Co., Ltd. <developer@univer.ai>",
|
|
@@ -52,10 +52,10 @@
|
|
|
52
52
|
"rxjs": ">=7.0.0"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@univerjs/core": "1.0.
|
|
55
|
+
"@univerjs/core": "1.0.2"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@univerjs-infra/shared": "1.0.
|
|
58
|
+
"@univerjs-infra/shared": "1.0.2",
|
|
59
59
|
"rxjs": "^7.8.2",
|
|
60
60
|
"typescript": "^6.0.3",
|
|
61
61
|
"vitest": "^5.0.0"
|