@leafer-in/resize 2.2.10 → 2.3.0

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/dist/resize.cjs CHANGED
@@ -148,13 +148,17 @@ function scaleResizeFontSize(leaf, scaleX, scaleY, direction) {
148
148
  }
149
149
 
150
150
  function scaleResizePath(leaf, scaleX, scaleY) {
151
- PathScaler.scale(leaf.__.path, scaleX, scaleY);
152
- leaf.path = leaf.__.path;
151
+ let {path: path} = leaf.__;
152
+ if (!draw.isTrackChanges(leaf.leafer)) path = [ ...path ];
153
+ PathScaler.scale(path, scaleX, scaleY);
154
+ leaf.path = path;
153
155
  }
154
156
 
155
157
  function scaleResizePoints(leaf, scaleX, scaleY) {
156
- const {points: points} = leaf;
157
- draw.isObject(points[0]) ? points.forEach(p => {
158
+ let {points: points} = leaf;
159
+ const isOb = draw.isObject(points[0]);
160
+ if (!draw.isTrackChanges(leaf.leafer)) points = isOb ? draw.DataHelper.clone(points) : [ ...points ];
161
+ isOb ? points.forEach(p => {
158
162
  p.x *= scaleX, p.y *= scaleY;
159
163
  }) : PathScaler.scalePoints(points, scaleX, scaleY);
160
164
  leaf.points = points;
@@ -1,4 +1,4 @@
1
- import { PathCommandMap, MatrixHelper, Direction9, isUndefined, isArray, isObject, Leaf, Text, Path, Line, Polygon, Group, Box, Plugin } from "@leafer-ui/draw";
1
+ import { PathCommandMap, MatrixHelper, Direction9, isUndefined, isArray, isObject, isTrackChanges, DataHelper, Leaf, Text, Path, Line, Polygon, Group, Box, Plugin } from "@leafer-ui/draw";
2
2
 
3
3
  const {M: M, L: L, C: C, Q: Q, Z: Z, N: N, D: D, X: X, G: G, F: F, O: O, P: P, U: U} = PathCommandMap;
4
4
 
@@ -146,13 +146,17 @@ function scaleResizeFontSize(leaf, scaleX, scaleY, direction) {
146
146
  }
147
147
 
148
148
  function scaleResizePath(leaf, scaleX, scaleY) {
149
- PathScaler.scale(leaf.__.path, scaleX, scaleY);
150
- leaf.path = leaf.__.path;
149
+ let {path: path} = leaf.__;
150
+ if (!isTrackChanges(leaf.leafer)) path = [ ...path ];
151
+ PathScaler.scale(path, scaleX, scaleY);
152
+ leaf.path = path;
151
153
  }
152
154
 
153
155
  function scaleResizePoints(leaf, scaleX, scaleY) {
154
- const {points: points} = leaf;
155
- isObject(points[0]) ? points.forEach(p => {
156
+ let {points: points} = leaf;
157
+ const isOb = isObject(points[0]);
158
+ if (!isTrackChanges(leaf.leafer)) points = isOb ? DataHelper.clone(points) : [ ...points ];
159
+ isOb ? points.forEach(p => {
156
160
  p.x *= scaleX, p.y *= scaleY;
157
161
  }) : PathScaler.scalePoints(points, scaleX, scaleY);
158
162
  leaf.points = points;
@@ -1,2 +1,2 @@
1
- import{PathCommandMap as t,MatrixHelper as e,Direction9 as i,isUndefined as s,isArray as o,isObject as a,Leaf as n,Text as c,Path as h,Line as l,Polygon as r,Group as p,Box as _,Plugin as f}from"@leafer-ui/draw";const{M:d,L:u,C:g,Q:y,Z:z,N:x,D:b,X:k,G:R,F:S,O:w,P:m,U:v}=t,O={scale(t,e,i){if(!t)return;let s,o=0,a=t.length;for(;o<a;)switch(s=t[o],s){case d:case u:B(t,e,i,o,1),o+=3;break;case g:B(t,e,i,o,3),o+=7;break;case y:B(t,e,i,o,2),o+=5;break;case z:o+=1;break;case x:B(t,e,i,o,2),o+=5;break;case b:B(t,e,i,o,2),o+=9;break;case k:B(t,e,i,o,2),o+=6;break;case R:B(t,e,i,o,2),o+=9;break;case S:B(t,e,i,o,2),o+=5;break;case w:t[o]=R,t.splice(o+4,0,t[o+3],0),B(t,e,i,o,2),o+=9,a+=2;break;case m:t[o]=S,t.splice(o+4,0,t[o+3]),B(t,e,i,o,2),o+=5,a+=1;break;case v:B(t,e,i,o,2),o+=6}},scalePoints(t,e,i,s,o){for(let a=o?s+1:0,n=o?a+2*o:t.length;a<n;a+=2)t[a]*=e,t[a+1]*=i}},{scalePoints:B}=O,C=e.get(),{topLeft:H,top:I,topRight:P,right:W,bottom:X,left:A}=i;function F(t,e,i){t.pathInputed?M(t,e,i):(1!==e&&(t.width*=e),1!==i&&(t.height*=i))}function L(t,e,i,n){let c=e;if(!s(n)){const s=t.__layout;let{width:o,height:a}=s.boxBounds;switch(o*=i-e,a*=e-i,n){case I:case X:c=i,s.affectScaleOrRotation?t.moveInner(-o/2,0):t.x-=o/2;break;case A:case W:s.affectScaleOrRotation?t.moveInner(0,-a/2):t.y-=a/2;break;case H:case P:s.affectScaleOrRotation?t.moveInner(0,-a):t.y-=a}}t.fontSize*=c;const h=t.__,{padding:l,lineHeight:r,letterSpacing:p}=h;l&&(t.padding=o(l)?l.map(t=>t*c):l*c),h.__autoWidth||(t.width*=c),h.__autoHeight||(t.height*=c),a(r)?"px"===r.type&&(h.lineHeight={type:"px",value:r.value*c}):r&&(h.lineHeight=r*c),a(p)?"px"===p.type&&(h.letterSpacing={type:"px",value:p.value*c}):p&&(h.letterSpacing=p*c)}function M(t,e,i){O.scale(t.__.path,e,i),t.path=t.__.path}function Y(t,e,i){const{points:s}=t;a(s[0])?s.forEach(t=>{t.x*=e,t.y*=i}):O.scalePoints(s,e,i),t.points=s}function D(t,e,i){const{children:s}=t;for(let t=0;t<s.length;t++)C.a=e,C.d=i,s[t].transform(C,!0)}const E=n.prototype,G={},N={},{copy:Q,scale:U,toOuterPoint:Z}=e;E.scaleResize=function(t,e=t,i,s){const o=this;if(i||o.editConfig&&"scale"===o.editConfig.editSize)o.scaleX*=t,o.scaleY*=e;else{if(t<0&&(o.scaleX*=-1,t=-t),e<0&&(o.scaleY*=-1,e=-e),"stroke"===s){Q(N,this.__localMatrix),t<0&&U(N,-1,1),e<0&&U(N,1,-1);const{boxBounds:i,strokeBounds:s}=this.__layout,{x:o,y:a,width:n,height:c}=s;G.x=(o-i.x)*(t-1),G.y=(a-i.y)*(e-1),Z(N,G,G,!0),this.x+=G.x,this.y+=G.y,t=(n*t-(n-i.width))/i.width,e=(c*e-(c-i.height))/i.height}this.__scaleResize(t,e)}},E.__scaleResize=function(t,e){F(this,t,e)},E.resizeWidth=function(t,e="inner"){const i=t/this.getBounds("box",e).width||1;this.scaleOf("top-left",i,this.__.lockRatio?i:1,!0)},E.resizeHeight=function(t,e="inner"){const i=t/this.getBounds("box",e).height||1;this.scaleOf("top-left",this.__.lockRatio?i:1,i,!0)},c.prototype.__scaleResize=function(t,e){const{app:i,editConfig:s}=this,o=i&&i.editor,a=o&&o.dragPoint;if(this.__.resizeFontSize||s&&"font-size"===s.editSize||a&&"font-size"===o.mergedConfig.editSize)L(this,t,e,a&&a.direction);else{const{__autoWidth:i,__autoHeight:s,textAlign:o,verticalAlign:a}=this.__,{boxBounds:n}=this.__layout;i&&"left"!==o&&1!==t&&(this.x+=n.x),s&&"top"!==a&&1!==e&&(this.y+=n.y),F(this,t,e)}},h.prototype.__scaleResize=function(t,e){M(this,t,e)},l.prototype.__scaleResize=function(t,e){this.pathInputed?M(this,t,e):this.points?Y(this,t,e):this.width*=t},r.prototype.__scaleResize=function(t,e){this.pathInputed?M(this,t,e):this.points?Y(this,t,e):F(this,t,e)},p.prototype.__scaleResize=function(t,e){D(this,t,e)},_.prototype.__scaleResize=function(t,e){const{resizeChildren:i,__autoSize:s}=this.__;s&&i||F(this,t,e),i&&D(this,t,e)},f.add("resize");export{O as PathScaler,F as scaleResize,L as scaleResizeFontSize,D as scaleResizeGroup,M as scaleResizePath,Y as scaleResizePoints};
1
+ import{PathCommandMap as t,MatrixHelper as e,Direction9 as i,isUndefined as s,isArray as o,isObject as a,isTrackChanges as n,DataHelper as c,Leaf as h,Text as l,Path as r,Line as p,Polygon as f,Group as _,Box as d,Plugin as u}from"@leafer-ui/draw";const{M:g,L:y,C:z,Q:x,Z:b,N:k,D:R,X:S,G:w,F:m,O:v,P:O,U:B}=t,C={scale(t,e,i){if(!t)return;let s,o=0,a=t.length;for(;o<a;)switch(s=t[o],s){case g:case y:H(t,e,i,o,1),o+=3;break;case z:H(t,e,i,o,3),o+=7;break;case x:H(t,e,i,o,2),o+=5;break;case b:o+=1;break;case k:H(t,e,i,o,2),o+=5;break;case R:H(t,e,i,o,2),o+=9;break;case S:H(t,e,i,o,2),o+=6;break;case w:H(t,e,i,o,2),o+=9;break;case m:H(t,e,i,o,2),o+=5;break;case v:t[o]=w,t.splice(o+4,0,t[o+3],0),H(t,e,i,o,2),o+=9,a+=2;break;case O:t[o]=m,t.splice(o+4,0,t[o+3]),H(t,e,i,o,2),o+=5,a+=1;break;case B:H(t,e,i,o,2),o+=6}},scalePoints(t,e,i,s,o){for(let a=o?s+1:0,n=o?a+2*o:t.length;a<n;a+=2)t[a]*=e,t[a+1]*=i}},{scalePoints:H}=C,I=e.get(),{topLeft:P,top:W,topRight:X,right:A,bottom:F,left:L}=i;function M(t,e,i){t.pathInputed?D(t,e,i):(1!==e&&(t.width*=e),1!==i&&(t.height*=i))}function Y(t,e,i,n){let c=e;if(!s(n)){const s=t.__layout;let{width:o,height:a}=s.boxBounds;switch(o*=i-e,a*=e-i,n){case W:case F:c=i,s.affectScaleOrRotation?t.moveInner(-o/2,0):t.x-=o/2;break;case L:case A:s.affectScaleOrRotation?t.moveInner(0,-a/2):t.y-=a/2;break;case P:case X:s.affectScaleOrRotation?t.moveInner(0,-a):t.y-=a}}t.fontSize*=c;const h=t.__,{padding:l,lineHeight:r,letterSpacing:p}=h;l&&(t.padding=o(l)?l.map(t=>t*c):l*c),h.__autoWidth||(t.width*=c),h.__autoHeight||(t.height*=c),a(r)?"px"===r.type&&(h.lineHeight={type:"px",value:r.value*c}):r&&(h.lineHeight=r*c),a(p)?"px"===p.type&&(h.letterSpacing={type:"px",value:p.value*c}):p&&(h.letterSpacing=p*c)}function D(t,e,i){let{path:s}=t.__;n(t.leafer)||(s=[...s]),C.scale(s,e,i),t.path=s}function E(t,e,i){let{points:s}=t;const o=a(s[0]);n(t.leafer)||(s=o?c.clone(s):[...s]),o?s.forEach(t=>{t.x*=e,t.y*=i}):C.scalePoints(s,e,i),t.points=s}function G(t,e,i){const{children:s}=t;for(let t=0;t<s.length;t++)I.a=e,I.d=i,s[t].transform(I,!0)}const N=h.prototype,Q={},U={},{copy:Z,scale:j,toOuterPoint:q}=e;N.scaleResize=function(t,e=t,i,s){const o=this;if(i||o.editConfig&&"scale"===o.editConfig.editSize)o.scaleX*=t,o.scaleY*=e;else{if(t<0&&(o.scaleX*=-1,t=-t),e<0&&(o.scaleY*=-1,e=-e),"stroke"===s){Z(U,this.__localMatrix),t<0&&j(U,-1,1),e<0&&j(U,1,-1);const{boxBounds:i,strokeBounds:s}=this.__layout,{x:o,y:a,width:n,height:c}=s;Q.x=(o-i.x)*(t-1),Q.y=(a-i.y)*(e-1),q(U,Q,Q,!0),this.x+=Q.x,this.y+=Q.y,t=(n*t-(n-i.width))/i.width,e=(c*e-(c-i.height))/i.height}this.__scaleResize(t,e)}},N.__scaleResize=function(t,e){M(this,t,e)},N.resizeWidth=function(t,e="inner"){const i=t/this.getBounds("box",e).width||1;this.scaleOf("top-left",i,this.__.lockRatio?i:1,!0)},N.resizeHeight=function(t,e="inner"){const i=t/this.getBounds("box",e).height||1;this.scaleOf("top-left",this.__.lockRatio?i:1,i,!0)},l.prototype.__scaleResize=function(t,e){const{app:i,editConfig:s}=this,o=i&&i.editor,a=o&&o.dragPoint;if(this.__.resizeFontSize||s&&"font-size"===s.editSize||a&&"font-size"===o.mergedConfig.editSize)Y(this,t,e,a&&a.direction);else{const{__autoWidth:i,__autoHeight:s,textAlign:o,verticalAlign:a}=this.__,{boxBounds:n}=this.__layout;i&&"left"!==o&&1!==t&&(this.x+=n.x),s&&"top"!==a&&1!==e&&(this.y+=n.y),M(this,t,e)}},r.prototype.__scaleResize=function(t,e){D(this,t,e)},p.prototype.__scaleResize=function(t,e){this.pathInputed?D(this,t,e):this.points?E(this,t,e):this.width*=t},f.prototype.__scaleResize=function(t,e){this.pathInputed?D(this,t,e):this.points?E(this,t,e):M(this,t,e)},_.prototype.__scaleResize=function(t,e){G(this,t,e)},d.prototype.__scaleResize=function(t,e){const{resizeChildren:i,__autoSize:s}=this.__;s&&i||M(this,t,e),i&&G(this,t,e)},u.add("resize");export{C as PathScaler,M as scaleResize,Y as scaleResizeFontSize,G as scaleResizeGroup,D as scaleResizePath,E as scaleResizePoints};
2
2
  //# sourceMappingURL=resize.esm.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resize.esm.min.js","sources":["../../../../../../src/in/packages/resize/src/PathScaler.ts","../../../../../../src/in/packages/resize/src/scaler.ts","../../../../../../src/in/packages/resize/src/resize.ts","../../../../../../src/in/packages/resize/src/index.ts"],"sourcesContent":["import { IPathCommandData } from '@leafer-ui/interface'\n\nimport { PathCommandMap as Command } from '@leafer-ui/draw'\n\n\nconst { M, L, C, Q, Z, N, D, X, G, F, O, P, U } = Command\n\nexport const PathScaler = {\n\n scale(data: IPathCommandData, scaleX: number, scaleY: number): void {\n if (!data) return\n\n let command: number\n let i = 0, len = data.length\n\n while (i < len) {\n command = data[i]\n switch (command) {\n case M: //moveto(x, y)\n case L: //lineto(x, y)\n scalePoints(data, scaleX, scaleY, i, 1)\n i += 3\n break\n case C: //bezierCurveTo(x1, y1, x2, y2, x, y)\n scalePoints(data, scaleX, scaleY, i, 3)\n i += 7\n break\n case Q: //quadraticCurveTo(x1, y1, x, y)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case Z: //closepath()\n i += 1\n break\n\n // canvas command\n\n case N: // rect(x, y, width, height)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case D: // roundRect(x, y, width, height, radius1, radius2, radius3, radius4)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case X: // simple roundRect(x, y, width, height, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n case G: // ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case F: // simple ellipse(x, y, radiusX, radiusY)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case O: // arc(x, y, radius, startAngle, endAngle, anticlockwise)\n data[i] = G // to ellipse\n data.splice(i + 4, 0, data[i + 3], 0)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 7 + 2\n len += 2\n break\n case P: // simple arc(x, y, radius)\n data[i] = F // to simple ellipse\n data.splice(i + 4, 0, data[i + 3])\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 4 + 1\n len += 1\n break\n case U: // arcTo(x1, y1, x2, y2, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n }\n }\n\n },\n\n scalePoints(data: IPathCommandData, scaleX: number, scaleY: number, start?: number, pointCount?: number): void {\n for (let i = pointCount ? start + 1 : 0, end = pointCount ? i + pointCount * 2 : data.length; i < end; i += 2) {\n data[i] *= scaleX\n data[i + 1] *= scaleY\n }\n }\n\n}\n\nconst { scalePoints } = PathScaler","import { IBranch, ILeaf, ILine, IPolygon, IText, IPointData } from '@leafer-ui/interface'\nimport { Direction9, MatrixHelper, isArray, isObject, isUndefined } from '@leafer-ui/draw'\n\nimport { PathScaler } from './PathScaler'\n\n\nconst matrix = MatrixHelper.get()\nconst { topLeft, top, topRight, right, bottom, left } = Direction9\n\nexport function scaleResize(leaf: ILeaf, scaleX: number, scaleY: number): void {\n if (leaf.pathInputed) {\n scaleResizePath(leaf, scaleX, scaleY)\n } else {\n // fix: Text / Box auto width / height, need check scale === 1\n if (scaleX !== 1) leaf.width *= scaleX\n if (scaleY !== 1) leaf.height *= scaleY\n }\n}\n\nexport function scaleResizeFontSize(leaf: IText, scaleX: number, scaleY: number, direction?: Direction9): void {\n let fontScale = scaleX\n\n if (!isUndefined(direction)) {\n\n const layout = leaf.__layout\n\n let { width, height } = layout.boxBounds\n width *= scaleY - scaleX\n height *= scaleX - scaleY\n\n switch (direction) { // 编辑器控制点的位置\n case top:\n case bottom:\n fontScale = scaleY\n layout.affectScaleOrRotation ? leaf.moveInner(-width / 2, 0) : leaf.x -= width / 2\n break\n case left:\n case right:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height / 2) : leaf.y -= height / 2\n break\n case topLeft:\n case topRight:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height) : leaf.y -= height\n break\n }\n\n }\n\n leaf.fontSize *= fontScale\n\n const data = leaf.__, { padding, lineHeight, letterSpacing } = data\n if (padding) leaf.padding = isArray(padding) ? padding.map(item => item * fontScale) : padding * fontScale\n if (!data.__autoWidth) leaf.width *= fontScale\n if (!data.__autoHeight) leaf.height *= fontScale\n\n if (isObject(lineHeight)) {\n if (lineHeight.type === 'px') data.lineHeight = { type: 'px', value: lineHeight.value * fontScale }\n } else if (lineHeight) data.lineHeight = lineHeight * fontScale\n\n if (isObject(letterSpacing)) {\n if (letterSpacing.type === 'px') data.letterSpacing = { type: 'px', value: letterSpacing.value * fontScale }\n } else if (letterSpacing) data.letterSpacing = letterSpacing * fontScale\n\n}\n\nexport function scaleResizePath(leaf: ILeaf, scaleX: number, scaleY: number): void {\n PathScaler.scale(leaf.__.path, scaleX, scaleY)\n leaf.path = leaf.__.path\n}\n\nexport function scaleResizePoints(leaf: ILine | IPolygon, scaleX: number, scaleY: number): void {\n const { points } = leaf\n isObject(points[0]) ? (points as IPointData[]).forEach(p => { p.x *= scaleX, p.y *= scaleY }) : PathScaler.scalePoints(points as number[], scaleX, scaleY)\n leaf.points = points\n}\n\n\nexport function scaleResizeGroup(group: IBranch, scaleX: number, scaleY: number): void {\n const { children } = group\n for (let i = 0; i < children.length; i++) {\n matrix.a = scaleX // must update\n matrix.d = scaleY\n children[i].transform(matrix, true)\n }\n}","import { IBoundsType, ILeaf, IPointData, IMatrixData, ILocationType } from '@leafer-ui/interface'\nimport { Leaf, Path, Line, Text, Polygon, Group, Box, UI, MatrixHelper } from '@leafer-ui/draw'\n\nimport { scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints } from './scaler'\n\n\n// leaf\nconst leaf = Leaf.prototype as ILeaf, tempPoint = {} as IPointData, tempMatrix = {} as IMatrixData, { copy, scale, toOuterPoint } = MatrixHelper\n\nleaf.scaleResize = function (scaleX: number, scaleY = scaleX, noResize?: boolean, boundsType?: IBoundsType): void {\n const data = this as UI\n if (noResize || (data.editConfig && data.editConfig.editSize === 'scale')) {\n data.scaleX *= scaleX\n data.scaleY *= scaleY\n } else {\n\n if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX\n if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY\n\n if (boundsType === 'stroke') {\n copy(tempMatrix, this.__localMatrix)\n if (scaleX < 0) scale(tempMatrix, -1, 1)\n if (scaleY < 0) scale(tempMatrix, 1, -1)\n\n const { boxBounds, strokeBounds } = this.__layout, { x, y, width, height } = strokeBounds\n tempPoint.x = (x - boxBounds.x) * (scaleX - 1)\n tempPoint.y = (y - boxBounds.y) * (scaleY - 1)\n toOuterPoint(tempMatrix, tempPoint, tempPoint, true)\n this.x += tempPoint.x\n this.y += tempPoint.y\n\n scaleX = (width * scaleX - (width - boxBounds.width)) / boxBounds.width\n scaleY = (height * scaleY - (height - boxBounds.height)) / boxBounds.height\n }\n\n this.__scaleResize(scaleX, scaleY)\n }\n}\n\n\nleaf.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResize(this, scaleX, scaleY)\n}\n\n\nleaf.resizeWidth = function (width: number, relative: ILocationType = 'inner'): void {\n const scale = width / this.getBounds('box', relative).width || 1 // 不允许为0\n this.scaleOf('top-left', scale, this.__.lockRatio ? scale : 1, true)\n}\n\n\nleaf.resizeHeight = function (height: number, relative: ILocationType = 'inner'): void {\n const scale = height / this.getBounds('box', relative).height || 1 // 不允许为0\n this.scaleOf('top-left', this.__.lockRatio ? scale : 1, scale, true)\n}\n\n\n// UI\n\nText.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { app, editConfig } = this, editor = app && app.editor, dragPoint = editor && editor.dragPoint\n\n if (this.__.resizeFontSize || (editConfig && editConfig.editSize === 'font-size') || (dragPoint && editor.mergedConfig.editSize === 'font-size')) {\n scaleResizeFontSize(this, scaleX, scaleY, dragPoint && dragPoint.direction)\n } else {\n const { __autoWidth, __autoHeight, textAlign, verticalAlign } = this.__, { boxBounds } = this.__layout\n if (__autoWidth && textAlign !== 'left' && scaleX !== 1) this.x += boxBounds.x\n if (__autoHeight && verticalAlign !== 'top' && scaleY !== 1) this.y += boxBounds.y\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\nPath.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizePath(this, scaleX, scaleY)\n}\n\n\nLine.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n this.width *= scaleX\n }\n}\n\n\nPolygon.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\n// group\n\nGroup.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizeGroup(this, scaleX, scaleY)\n}\n\n\nBox.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { resizeChildren, __autoSize } = this.__\n if (!(__autoSize && resizeChildren)) scaleResize(this, scaleX, scaleY)\n if (resizeChildren) scaleResizeGroup(this, scaleX, scaleY)\n}","export { PathScaler } from './PathScaler'\nexport { scaleResize, scaleResizeGroup, scaleResizeFontSize, scaleResizePath, scaleResizePoints } from './scaler'\n\nimport { Plugin } from '@leafer-ui/draw'\n\nimport './resize'\n\nPlugin.add('resize')"],"names":["M","L","C","Q","Z","N","D","X","G","F","O","P","U","Command","PathScaler","scale","data","scaleX","scaleY","command","i","len","length","scalePoints","splice","start","pointCount","end","matrix","MatrixHelper","get","topLeft","top","topRight","right","bottom","left","Direction9","scaleResize","leaf","pathInputed","scaleResizePath","width","height","scaleResizeFontSize","direction","fontScale","isUndefined","layout","__layout","boxBounds","affectScaleOrRotation","moveInner","x","y","fontSize","__","padding","lineHeight","letterSpacing","isArray","map","item","__autoWidth","__autoHeight","isObject","type","value","path","scaleResizePoints","points","forEach","p","scaleResizeGroup","group","children","a","d","transform","Leaf","prototype","tempPoint","tempMatrix","copy","toOuterPoint","noResize","boundsType","this","editConfig","editSize","__localMatrix","strokeBounds","__scaleResize","resizeWidth","relative","getBounds","scaleOf","lockRatio","resizeHeight","Text","app","editor","dragPoint","resizeFontSize","mergedConfig","textAlign","verticalAlign","Path","Line","Polygon","Group","Box","resizeChildren","__autoSize","Plugin","add"],"mappings":"oNAKA,MAAMA,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,GAAMC,EAErCC,EAAa,CAEtB,KAAAC,CAAMC,EAAwBC,EAAgBC,GAC1C,IAAKF,EAAM,OAEX,IAAIG,EACAC,EAAI,EAAGC,EAAML,EAAKM,OAEtB,KAAOF,EAAIC,GAEP,OADAF,EAAUH,EAAKI,GACPD,GACJ,KAAKnB,EACL,KAAKC,EACDsB,EAAYP,EAAMC,EAAQC,EAAQE,EAAG,GACrCA,GAAK,EACL,MACJ,KAAKlB,EACDqB,EAAYP,EAAMC,EAAQC,EAAQE,EAAG,GACrCA,GAAK,EACL,MACJ,KAAKjB,EACDoB,EAAYP,EAAMC,EAAQC,EAAQE,EAAG,GACrCA,GAAK,EACL,MACJ,KAAKhB,EACDgB,GAAK,EACL,MAIJ,KAAKf,EACDkB,EAAYP,EAAMC,EAAQC,EAAQE,EAAG,GACrCA,GAAK,EACL,MACJ,KAAKd,EACDiB,EAAYP,EAAMC,EAAQC,EAAQE,EAAG,GACrCA,GAAK,EACL,MACJ,KAAKb,EACDgB,EAAYP,EAAMC,EAAQC,EAAQE,EAAG,GACrCA,GAAK,EACL,MACJ,KAAKZ,EACDe,EAAYP,EAAMC,EAAQC,EAAQE,EAAG,GACrCA,GAAK,EACL,MACJ,KAAKX,EACDc,EAAYP,EAAMC,EAAQC,EAAQE,EAAG,GACrCA,GAAK,EACL,MACJ,KAAKV,EACDM,EAAKI,GAAKZ,EACVQ,EAAKQ,OAAOJ,EAAI,EAAG,EAAGJ,EAAKI,EAAI,GAAI,GACnCG,EAAYP,EAAMC,EAAQC,EAAQE,EAAG,GACrCA,GAAK,EACLC,GAAO,EACP,MACJ,KAAKV,EACDK,EAAKI,GAAKX,EACVO,EAAKQ,OAAOJ,EAAI,EAAG,EAAGJ,EAAKI,EAAI,IAC/BG,EAAYP,EAAMC,EAAQC,EAAQE,EAAG,GACrCA,GAAK,EACLC,GAAO,EACP,MACJ,KAAKT,EACDW,EAAYP,EAAMC,EAAQC,EAAQE,EAAG,GACrCA,GAAK,EAKrB,EAEA,WAAAG,CAAYP,EAAwBC,EAAgBC,EAAgBO,EAAgBC,GAChF,IAAK,IAAIN,EAAIM,EAAaD,EAAQ,EAAI,EAAGE,EAAMD,EAAaN,EAAiB,EAAbM,EAAiBV,EAAKM,OAAQF,EAAIO,EAAKP,GAAK,EACxGJ,EAAKI,IAAMH,EACXD,EAAKI,EAAI,IAAMF,CAEvB,IAIEK,YAAEA,GAAgBT,ECnFlBc,EAASC,EAAaC,OACtBC,QAAEA,EAAOC,IAAEA,EAAGC,SAAEA,EAAQC,MAAEA,EAAKC,OAAEA,EAAMC,KAAEA,GAASC,WAExCC,EAAYC,EAAatB,EAAgBC,GACjDqB,EAAKC,YACLC,EAAgBF,EAAMtB,EAAQC,IAGf,IAAXD,IAAcsB,EAAKG,OAASzB,GACjB,IAAXC,IAAcqB,EAAKI,QAAUzB,GAEzC,CAEM,SAAU0B,EAAoBL,EAAatB,EAAgBC,EAAgB2B,GAC7E,IAAIC,EAAY7B,EAEhB,IAAK8B,EAAYF,GAAY,CAEzB,MAAMG,EAAST,EAAKU,SAEpB,IAAIP,MAAEA,EAAKC,OAAEA,GAAWK,EAAOE,UAI/B,OAHAR,GAASxB,EAASD,EAClB0B,GAAU1B,EAASC,EAEX2B,GACJ,KAAKb,EACL,KAAKG,EACDW,EAAY5B,EACZ8B,EAAOG,sBAAwBZ,EAAKa,WAAWV,EAAQ,EAAG,GAAKH,EAAKc,GAAKX,EAAQ,EACjF,MACJ,KAAKN,EACL,KAAKF,EACDc,EAAOG,sBAAwBZ,EAAKa,UAAU,GAAIT,EAAS,GAAKJ,EAAKe,GAAKX,EAAS,EACnF,MACJ,KAAKZ,EACL,KAAKE,EACDe,EAAOG,sBAAwBZ,EAAKa,UAAU,GAAIT,GAAUJ,EAAKe,GAAKX,EAIlF,CAEAJ,EAAKgB,UAAYT,EAEjB,MAAM9B,EAAOuB,EAAKiB,IAAIC,QAAEA,EAAOC,WAAEA,EAAUC,cAAEA,GAAkB3C,EAC3DyC,IAASlB,EAAKkB,QAAUG,EAAQH,GAAWA,EAAQI,IAAIC,GAAQA,EAAOhB,GAAaW,EAAUX,GAC5F9B,EAAK+C,cAAaxB,EAAKG,OAASI,GAChC9B,EAAKgD,eAAczB,EAAKI,QAAUG,GAEnCmB,EAASP,GACe,OAApBA,EAAWQ,OAAelD,EAAK0C,WAAa,CAAEQ,KAAM,KAAMC,MAAOT,EAAWS,MAAQrB,IACjFY,IAAY1C,EAAK0C,WAAaA,EAAaZ,GAElDmB,EAASN,GACkB,OAAvBA,EAAcO,OAAelD,EAAK2C,cAAgB,CAAEO,KAAM,KAAMC,MAAOR,EAAcQ,MAAQrB,IAC1Fa,IAAe3C,EAAK2C,cAAgBA,EAAgBb,EAEnE,UAEgBL,EAAgBF,EAAatB,EAAgBC,GACzDJ,EAAWC,MAAMwB,EAAKiB,GAAGY,KAAMnD,EAAQC,GACvCqB,EAAK6B,KAAO7B,EAAKiB,GAAGY,IACxB,UAEgBC,EAAkB9B,EAAwBtB,EAAgBC,GACtE,MAAMoD,OAAEA,GAAW/B,EACnB0B,EAASK,EAAO,IAAOA,EAAwBC,QAAQC,IAAOA,EAAEnB,GAAKpC,EAAQuD,EAAElB,GAAKpC,IAAYJ,EAAWS,YAAY+C,EAAoBrD,EAAQC,GACnJqB,EAAK+B,OAASA,CAClB,UAGgBG,EAAiBC,EAAgBzD,EAAgBC,GAC7D,MAAMyD,SAAEA,GAAaD,EACrB,IAAK,IAAItD,EAAI,EAAGA,EAAIuD,EAASrD,OAAQF,IACjCQ,EAAOgD,EAAI3D,EACXW,EAAOiD,EAAI3D,EACXyD,EAASvD,GAAG0D,UAAUlD,GAAQ,EAEtC,CC7EA,MAAMW,EAAOwC,EAAKC,UAAoBC,EAAY,CAAA,EAAkBC,EAAa,CAAA,GAAmBC,KAAEA,EAAIpE,MAAEA,EAAKqE,aAAEA,GAAiBvD,EAEpIU,EAAKD,YAAc,SAAUrB,EAAgBC,EAASD,EAAQoE,EAAoBC,GAC9E,MAAMtE,EAAOuE,KACb,GAAIF,GAAarE,EAAKwE,YAA2C,UAA7BxE,EAAKwE,WAAWC,SAChDzE,EAAKC,QAAUA,EACfD,EAAKE,QAAUA,MACZ,CAKH,GAHID,EAAS,IAAGD,EAAKC,WAAcA,GAAUA,GACzCC,EAAS,IAAGF,EAAKE,WAAcA,GAAUA,GAE1B,WAAfoE,EAAyB,CACzBH,EAAKD,EAAYK,KAAKG,eAClBzE,EAAS,GAAGF,EAAMmE,GAAY,EAAI,GAClChE,EAAS,GAAGH,EAAMmE,EAAY,MAElC,MAAMhC,UAAEA,EAASyC,aAAEA,GAAiBJ,KAAKtC,UAAUI,EAAEA,EAACC,EAAEA,EAACZ,MAAEA,EAAKC,OAAEA,GAAWgD,EAC7EV,EAAU5B,GAAKA,EAAIH,EAAUG,IAAMpC,EAAS,GAC5CgE,EAAU3B,GAAKA,EAAIJ,EAAUI,IAAMpC,EAAS,GAC5CkE,EAAaF,EAAYD,EAAWA,GAAW,GAC/CM,KAAKlC,GAAK4B,EAAU5B,EACpBkC,KAAKjC,GAAK2B,EAAU3B,EAEpBrC,GAAUyB,EAAQzB,GAAUyB,EAAQQ,EAAUR,QAAUQ,EAAUR,MAClExB,GAAUyB,EAASzB,GAAUyB,EAASO,EAAUP,SAAWO,EAAUP,MACzE,CAEA4C,KAAKK,cAAc3E,EAAQC,EAC/B,CACJ,EAGAqB,EAAKqD,cAAgB,SAAU3E,EAAgBC,GAC3CoB,EAAYiD,KAAMtE,EAAQC,EAC9B,EAGAqB,EAAKsD,YAAc,SAAUnD,EAAeoD,EAA0B,SAClE,MAAM/E,EAAQ2B,EAAQ6C,KAAKQ,UAAU,MAAOD,GAAUpD,OAAS,EAC/D6C,KAAKS,QAAQ,WAAYjF,EAAOwE,KAAK/B,GAAGyC,UAAYlF,EAAQ,GAAG,EACnE,EAGAwB,EAAK2D,aAAe,SAAUvD,EAAgBmD,EAA0B,SACpE,MAAM/E,EAAQ4B,EAAS4C,KAAKQ,UAAU,MAAOD,GAAUnD,QAAU,EACjE4C,KAAKS,QAAQ,WAAYT,KAAK/B,GAAGyC,UAAYlF,EAAQ,EAAGA,GAAO,EACnE,EAKAoF,EAAKnB,UAAUY,cAAgB,SAAU3E,EAAgBC,GACrD,MAAMkF,IAAEA,EAAGZ,WAAEA,GAAeD,KAAMc,EAASD,GAAOA,EAAIC,OAAQC,EAAYD,GAAUA,EAAOC,UAE3F,GAAIf,KAAK/B,GAAG+C,gBAAmBf,GAAsC,cAAxBA,EAAWC,UAA8Ba,GAA8C,cAAjCD,EAAOG,aAAaf,SACnH7C,EAAoB2C,KAAMtE,EAAQC,EAAQoF,GAAaA,EAAUzD,eAC9D,CACH,MAAMkB,YAAEA,EAAWC,aAAEA,EAAYyC,UAAEA,EAASC,cAAEA,GAAkBnB,KAAK/B,IAAIN,UAAEA,GAAcqC,KAAKtC,SAC1Fc,GAA6B,SAAd0C,GAAmC,IAAXxF,IAAcsE,KAAKlC,GAAKH,EAAUG,GACzEW,GAAkC,QAAlB0C,GAAsC,IAAXxF,IAAcqE,KAAKjC,GAAKJ,EAAUI,GACjFhB,EAAYiD,KAAMtE,EAAQC,EAC9B,CACJ,EAGAyF,EAAK3B,UAAUY,cAAgB,SAAU3E,EAAgBC,GACrDuB,EAAgB8C,KAAMtE,EAAQC,EAClC,EAGA0F,EAAK5B,UAAUY,cAAgB,SAAU3E,EAAgBC,GACjDqE,KAAK/C,YACLC,EAAgB8C,KAAMtE,EAAQC,GACvBqE,KAAKjB,OACZD,EAAkBkB,KAAMtE,EAAQC,GAEhCqE,KAAK7C,OAASzB,CAEtB,EAGA4F,EAAQ7B,UAAUY,cAAgB,SAAU3E,EAAgBC,GACpDqE,KAAK/C,YACLC,EAAgB8C,KAAMtE,EAAQC,GACvBqE,KAAKjB,OACZD,EAAkBkB,KAAMtE,EAAQC,GAEhCoB,EAAYiD,KAAMtE,EAAQC,EAElC,EAKA4F,EAAM9B,UAAUY,cAAgB,SAAU3E,EAAgBC,GACtDuD,EAAiBc,KAAMtE,EAAQC,EACnC,EAGA6F,EAAI/B,UAAUY,cAAgB,SAAU3E,EAAgBC,GACpD,MAAM8F,eAAEA,EAAcC,WAAEA,GAAe1B,KAAK/B,GACtCyD,GAAcD,GAAiB1E,EAAYiD,KAAMtE,EAAQC,GAC3D8F,GAAgBvC,EAAiBc,KAAMtE,EAAQC,EACvD,ECxGAgG,EAAOC,IAAI"}
1
+ {"version":3,"file":"resize.esm.min.js","sources":["../../../../../../src/in/packages/resize/src/PathScaler.ts","../../../../../../src/in/packages/resize/src/scaler.ts","../../../../../../src/in/packages/resize/src/resize.ts","../../../../../../src/in/packages/resize/src/index.ts"],"sourcesContent":["import { IPathCommandData } from '@leafer-ui/interface'\n\nimport { PathCommandMap as Command } from '@leafer-ui/draw'\n\n\nconst { M, L, C, Q, Z, N, D, X, G, F, O, P, U } = Command\n\nexport const PathScaler = {\n\n scale(data: IPathCommandData, scaleX: number, scaleY: number): void {\n if (!data) return\n\n let command: number\n let i = 0, len = data.length\n\n while (i < len) {\n command = data[i]\n switch (command) {\n case M: //moveto(x, y)\n case L: //lineto(x, y)\n scalePoints(data, scaleX, scaleY, i, 1)\n i += 3\n break\n case C: //bezierCurveTo(x1, y1, x2, y2, x, y)\n scalePoints(data, scaleX, scaleY, i, 3)\n i += 7\n break\n case Q: //quadraticCurveTo(x1, y1, x, y)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case Z: //closepath()\n i += 1\n break\n\n // canvas command\n\n case N: // rect(x, y, width, height)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case D: // roundRect(x, y, width, height, radius1, radius2, radius3, radius4)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case X: // simple roundRect(x, y, width, height, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n case G: // ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case F: // simple ellipse(x, y, radiusX, radiusY)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case O: // arc(x, y, radius, startAngle, endAngle, anticlockwise)\n data[i] = G // to ellipse\n data.splice(i + 4, 0, data[i + 3], 0)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 7 + 2\n len += 2\n break\n case P: // simple arc(x, y, radius)\n data[i] = F // to simple ellipse\n data.splice(i + 4, 0, data[i + 3])\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 4 + 1\n len += 1\n break\n case U: // arcTo(x1, y1, x2, y2, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n }\n }\n\n },\n\n scalePoints(data: IPathCommandData, scaleX: number, scaleY: number, start?: number, pointCount?: number): void {\n for (let i = pointCount ? start + 1 : 0, end = pointCount ? i + pointCount * 2 : data.length; i < end; i += 2) {\n data[i] *= scaleX\n data[i + 1] *= scaleY\n }\n }\n\n}\n\nconst { scalePoints } = PathScaler","import { IBranch, ILeaf, ILine, IPolygon, IText, IPointData } from '@leafer-ui/interface'\nimport { Direction9, MatrixHelper, isArray, isObject, isUndefined, isTrackChanges, DataHelper } from '@leafer-ui/draw'\n\nimport { PathScaler } from './PathScaler'\n\n\nconst matrix = MatrixHelper.get()\nconst { topLeft, top, topRight, right, bottom, left } = Direction9\n\nexport function scaleResize(leaf: ILeaf, scaleX: number, scaleY: number): void {\n if (leaf.pathInputed) {\n scaleResizePath(leaf, scaleX, scaleY)\n } else {\n // fix: Text / Box auto width / height, need check scale === 1\n if (scaleX !== 1) leaf.width *= scaleX\n if (scaleY !== 1) leaf.height *= scaleY\n }\n}\n\nexport function scaleResizeFontSize(leaf: IText, scaleX: number, scaleY: number, direction?: Direction9): void {\n let fontScale = scaleX\n\n if (!isUndefined(direction)) {\n\n const layout = leaf.__layout\n\n let { width, height } = layout.boxBounds\n width *= scaleY - scaleX\n height *= scaleX - scaleY\n\n switch (direction) { // 编辑器控制点的位置\n case top:\n case bottom:\n fontScale = scaleY\n layout.affectScaleOrRotation ? leaf.moveInner(-width / 2, 0) : leaf.x -= width / 2\n break\n case left:\n case right:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height / 2) : leaf.y -= height / 2\n break\n case topLeft:\n case topRight:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height) : leaf.y -= height\n break\n }\n\n }\n\n leaf.fontSize *= fontScale\n\n const data = leaf.__, { padding, lineHeight, letterSpacing } = data\n if (padding) leaf.padding = isArray(padding) ? padding.map(item => item * fontScale) : padding * fontScale\n if (!data.__autoWidth) leaf.width *= fontScale\n if (!data.__autoHeight) leaf.height *= fontScale\n\n if (isObject(lineHeight)) {\n if (lineHeight.type === 'px') data.lineHeight = { type: 'px', value: lineHeight.value * fontScale }\n } else if (lineHeight) data.lineHeight = lineHeight * fontScale\n\n if (isObject(letterSpacing)) {\n if (letterSpacing.type === 'px') data.letterSpacing = { type: 'px', value: letterSpacing.value * fontScale }\n } else if (letterSpacing) data.letterSpacing = letterSpacing * fontScale\n\n}\n\nexport function scaleResizePath(leaf: ILeaf, scaleX: number, scaleY: number): void {\n let { path } = leaf.__\n if (!isTrackChanges(leaf.leafer)) path = [...path] // 避免产生引用,导致污染历史数据\n PathScaler.scale(path, scaleX, scaleY)\n leaf.path = path\n}\n\nexport function scaleResizePoints(leaf: ILine | IPolygon, scaleX: number, scaleY: number): void {\n let { points } = leaf\n const isOb = isObject(points[0])\n if (!isTrackChanges(leaf.leafer)) points = isOb ? DataHelper.clone(points) as IPointData[] : [...points] as number[] // 避免产生引用,导致污染历史数据\n isOb ? (points as IPointData[]).forEach(p => { p.x *= scaleX, p.y *= scaleY }) : PathScaler.scalePoints(points as number[], scaleX, scaleY)\n leaf.points = points\n}\n\n\nexport function scaleResizeGroup(group: IBranch, scaleX: number, scaleY: number): void {\n const { children } = group\n for (let i = 0; i < children.length; i++) {\n matrix.a = scaleX // must update\n matrix.d = scaleY\n children[i].transform(matrix, true)\n }\n}","import { IBoundsType, ILeaf, IPointData, IMatrixData, ILocationType } from '@leafer-ui/interface'\nimport { Leaf, Path, Line, Text, Polygon, Group, Box, UI, MatrixHelper } from '@leafer-ui/draw'\n\nimport { scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints } from './scaler'\n\n\n// leaf\nconst leaf = Leaf.prototype as ILeaf, tempPoint = {} as IPointData, tempMatrix = {} as IMatrixData, { copy, scale, toOuterPoint } = MatrixHelper\n\nleaf.scaleResize = function (scaleX: number, scaleY = scaleX, noResize?: boolean, boundsType?: IBoundsType): void {\n const data = this as UI\n if (noResize || (data.editConfig && data.editConfig.editSize === 'scale')) {\n data.scaleX *= scaleX\n data.scaleY *= scaleY\n } else {\n\n if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX\n if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY\n\n if (boundsType === 'stroke') {\n copy(tempMatrix, this.__localMatrix)\n if (scaleX < 0) scale(tempMatrix, -1, 1)\n if (scaleY < 0) scale(tempMatrix, 1, -1)\n\n const { boxBounds, strokeBounds } = this.__layout, { x, y, width, height } = strokeBounds\n tempPoint.x = (x - boxBounds.x) * (scaleX - 1)\n tempPoint.y = (y - boxBounds.y) * (scaleY - 1)\n toOuterPoint(tempMatrix, tempPoint, tempPoint, true)\n this.x += tempPoint.x\n this.y += tempPoint.y\n\n scaleX = (width * scaleX - (width - boxBounds.width)) / boxBounds.width\n scaleY = (height * scaleY - (height - boxBounds.height)) / boxBounds.height\n }\n\n this.__scaleResize(scaleX, scaleY)\n }\n}\n\n\nleaf.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResize(this, scaleX, scaleY)\n}\n\n\nleaf.resizeWidth = function (width: number, relative: ILocationType = 'inner'): void {\n const scale = width / this.getBounds('box', relative).width || 1 // 不允许为0\n this.scaleOf('top-left', scale, this.__.lockRatio ? scale : 1, true)\n}\n\n\nleaf.resizeHeight = function (height: number, relative: ILocationType = 'inner'): void {\n const scale = height / this.getBounds('box', relative).height || 1 // 不允许为0\n this.scaleOf('top-left', this.__.lockRatio ? scale : 1, scale, true)\n}\n\n\n// UI\n\nText.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { app, editConfig } = this, editor = app && app.editor, dragPoint = editor && editor.dragPoint\n\n if (this.__.resizeFontSize || (editConfig && editConfig.editSize === 'font-size') || (dragPoint && editor.mergedConfig.editSize === 'font-size')) {\n scaleResizeFontSize(this, scaleX, scaleY, dragPoint && dragPoint.direction)\n } else {\n const { __autoWidth, __autoHeight, textAlign, verticalAlign } = this.__, { boxBounds } = this.__layout\n if (__autoWidth && textAlign !== 'left' && scaleX !== 1) this.x += boxBounds.x\n if (__autoHeight && verticalAlign !== 'top' && scaleY !== 1) this.y += boxBounds.y\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\nPath.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizePath(this, scaleX, scaleY)\n}\n\n\nLine.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n this.width *= scaleX\n }\n}\n\n\nPolygon.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\n// group\n\nGroup.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizeGroup(this, scaleX, scaleY)\n}\n\n\nBox.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { resizeChildren, __autoSize } = this.__\n if (!(__autoSize && resizeChildren)) scaleResize(this, scaleX, scaleY)\n if (resizeChildren) scaleResizeGroup(this, scaleX, scaleY)\n}","export { PathScaler } from './PathScaler'\nexport { scaleResize, scaleResizeGroup, scaleResizeFontSize, scaleResizePath, scaleResizePoints } from './scaler'\n\nimport { Plugin } from '@leafer-ui/draw'\n\nimport './resize'\n\nPlugin.add('resize')"],"names":["M","L","C","Q","Z","N","D","X","G","F","O","P","U","Command","PathScaler","scale","data","scaleX","scaleY","command","i","len","length","scalePoints","splice","start","pointCount","end","matrix","MatrixHelper","get","topLeft","top","topRight","right","bottom","left","Direction9","scaleResize","leaf","pathInputed","scaleResizePath","width","height","scaleResizeFontSize","direction","fontScale","isUndefined","layout","__layout","boxBounds","affectScaleOrRotation","moveInner","x","y","fontSize","__","padding","lineHeight","letterSpacing","isArray","map","item","__autoWidth","__autoHeight","isObject","type","value","path","isTrackChanges","leafer","scaleResizePoints","points","isOb","DataHelper","clone","forEach","p","scaleResizeGroup","group","children","a","d","transform","Leaf","prototype","tempPoint","tempMatrix","copy","toOuterPoint","noResize","boundsType","this","editConfig","editSize","__localMatrix","strokeBounds","__scaleResize","resizeWidth","relative","getBounds","scaleOf","lockRatio","resizeHeight","Text","app","editor","dragPoint","resizeFontSize","mergedConfig","textAlign","verticalAlign","Path","Line","Polygon","Group","Box","resizeChildren","__autoSize","Plugin","add"],"mappings":"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"}
package/dist/resize.js CHANGED
@@ -141,12 +141,16 @@ this.LeaferIN.resize = function(exports, draw) {
141
141
  } else if (letterSpacing) data.letterSpacing = letterSpacing * fontScale;
142
142
  }
143
143
  function scaleResizePath(leaf, scaleX, scaleY) {
144
- PathScaler.scale(leaf.__.path, scaleX, scaleY);
145
- leaf.path = leaf.__.path;
144
+ let {path: path} = leaf.__;
145
+ if (!draw.isTrackChanges(leaf.leafer)) path = [ ...path ];
146
+ PathScaler.scale(path, scaleX, scaleY);
147
+ leaf.path = path;
146
148
  }
147
149
  function scaleResizePoints(leaf, scaleX, scaleY) {
148
- const {points: points} = leaf;
149
- draw.isObject(points[0]) ? points.forEach(p => {
150
+ let {points: points} = leaf;
151
+ const isOb = draw.isObject(points[0]);
152
+ if (!draw.isTrackChanges(leaf.leafer)) points = isOb ? draw.DataHelper.clone(points) : [ ...points ];
153
+ isOb ? points.forEach(p => {
150
154
  p.x *= scaleX, p.y *= scaleY;
151
155
  }) : PathScaler.scalePoints(points, scaleX, scaleY);
152
156
  leaf.points = points;
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("@leafer-ui/draw");const{M:t,L:i,C:s,Q:o,Z:a,N:n,D:c,X:h,G:r,F:l,O:p,P:_,U:f}=e.PathCommandMap,u={scale(e,u,g){if(!e)return;let x,z=0,y=e.length;for(;z<y;)switch(x=e[z],x){case t:case i:d(e,u,g,z,1),z+=3;break;case s:d(e,u,g,z,3),z+=7;break;case o:d(e,u,g,z,2),z+=5;break;case a:z+=1;break;case n:d(e,u,g,z,2),z+=5;break;case c:d(e,u,g,z,2),z+=9;break;case h:d(e,u,g,z,2),z+=6;break;case r:d(e,u,g,z,2),z+=9;break;case l:d(e,u,g,z,2),z+=5;break;case p:e[z]=r,e.splice(z+4,0,e[z+3],0),d(e,u,g,z,2),z+=9,y+=2;break;case _:e[z]=l,e.splice(z+4,0,e[z+3]),d(e,u,g,z,2),z+=5,y+=1;break;case f:d(e,u,g,z,2),z+=6}},scalePoints(e,t,i,s,o){for(let a=o?s+1:0,n=o?a+2*o:e.length;a<n;a+=2)e[a]*=t,e[a+1]*=i}},{scalePoints:d}=u,g=e.MatrixHelper.get(),{topLeft:x,top:z,topRight:y,right:b,bottom:R,left:k}=e.Direction9;function S(e,t,i){e.pathInputed?w(e,t,i):(1!==t&&(e.width*=t),1!==i&&(e.height*=i))}function P(t,i,s,o){let a=i;if(!e.isUndefined(o)){const e=t.__layout;let{width:n,height:c}=e.boxBounds;switch(n*=s-i,c*=i-s,o){case z:case R:a=s,e.affectScaleOrRotation?t.moveInner(-n/2,0):t.x-=n/2;break;case k:case b:e.affectScaleOrRotation?t.moveInner(0,-c/2):t.y-=c/2;break;case x:case y:e.affectScaleOrRotation?t.moveInner(0,-c):t.y-=c}}t.fontSize*=a;const n=t.__,{padding:c,lineHeight:h,letterSpacing:r}=n;c&&(t.padding=e.isArray(c)?c.map(e=>e*a):c*a),n.__autoWidth||(t.width*=a),n.__autoHeight||(t.height*=a),e.isObject(h)?"px"===h.type&&(n.lineHeight={type:"px",value:h.value*a}):h&&(n.lineHeight=h*a),e.isObject(r)?"px"===r.type&&(n.letterSpacing={type:"px",value:r.value*a}):r&&(n.letterSpacing=r*a)}function w(e,t,i){u.scale(e.__.path,t,i),e.path=e.__.path}function O(t,i,s){const{points:o}=t;e.isObject(o[0])?o.forEach(e=>{e.x*=i,e.y*=s}):u.scalePoints(o,i,s),t.points=o}function m(e,t,i){const{children:s}=e;for(let e=0;e<s.length;e++)g.a=t,g.d=i,s[e].transform(g,!0)}const v=e.Leaf.prototype,H={},B={},{copy:C,scale:I,toOuterPoint:M}=e.MatrixHelper;v.scaleResize=function(e,t=e,i,s){const o=this;if(i||o.editConfig&&"scale"===o.editConfig.editSize)o.scaleX*=e,o.scaleY*=t;else{if(e<0&&(o.scaleX*=-1,e=-e),t<0&&(o.scaleY*=-1,t=-t),"stroke"===s){C(B,this.__localMatrix),e<0&&I(B,-1,1),t<0&&I(B,1,-1);const{boxBounds:i,strokeBounds:s}=this.__layout,{x:o,y:a,width:n,height:c}=s;H.x=(o-i.x)*(e-1),H.y=(a-i.y)*(t-1),M(B,H,H,!0),this.x+=H.x,this.y+=H.y,e=(n*e-(n-i.width))/i.width,t=(c*t-(c-i.height))/i.height}this.__scaleResize(e,t)}},v.__scaleResize=function(e,t){S(this,e,t)},v.resizeWidth=function(e,t="inner"){const i=e/this.getBounds("box",t).width||1;this.scaleOf("top-left",i,this.__.lockRatio?i:1,!0)},v.resizeHeight=function(e,t="inner"){const i=e/this.getBounds("box",t).height||1;this.scaleOf("top-left",this.__.lockRatio?i:1,i,!0)},e.Text.prototype.__scaleResize=function(e,t){const{app:i,editConfig:s}=this,o=i&&i.editor,a=o&&o.dragPoint;if(this.__.resizeFontSize||s&&"font-size"===s.editSize||a&&"font-size"===o.mergedConfig.editSize)P(this,e,t,a&&a.direction);else{const{__autoWidth:i,__autoHeight:s,textAlign:o,verticalAlign:a}=this.__,{boxBounds:n}=this.__layout;i&&"left"!==o&&1!==e&&(this.x+=n.x),s&&"top"!==a&&1!==t&&(this.y+=n.y),S(this,e,t)}},e.Path.prototype.__scaleResize=function(e,t){w(this,e,t)},e.Line.prototype.__scaleResize=function(e,t){this.pathInputed?w(this,e,t):this.points?O(this,e,t):this.width*=e},e.Polygon.prototype.__scaleResize=function(e,t){this.pathInputed?w(this,e,t):this.points?O(this,e,t):S(this,e,t)},e.Group.prototype.__scaleResize=function(e,t){m(this,e,t)},e.Box.prototype.__scaleResize=function(e,t){const{resizeChildren:i,__autoSize:s}=this.__;s&&i||S(this,e,t),i&&m(this,e,t)},e.Plugin.add("resize"),exports.PathScaler=u,exports.scaleResize=S,exports.scaleResizeFontSize=P,exports.scaleResizeGroup=m,exports.scaleResizePath=w,exports.scaleResizePoints=O;
1
+ "use strict";var e=require("@leafer-ui/draw");const{M:t,L:i,C:s,Q:o,Z:a,N:n,D:c,X:h,G:r,F:l,O:p,P:f,U:_}=e.PathCommandMap,u={scale(e,u,g){if(!e)return;let x,z=0,y=e.length;for(;z<y;)switch(x=e[z],x){case t:case i:d(e,u,g,z,1),z+=3;break;case s:d(e,u,g,z,3),z+=7;break;case o:d(e,u,g,z,2),z+=5;break;case a:z+=1;break;case n:d(e,u,g,z,2),z+=5;break;case c:d(e,u,g,z,2),z+=9;break;case h:d(e,u,g,z,2),z+=6;break;case r:d(e,u,g,z,2),z+=9;break;case l:d(e,u,g,z,2),z+=5;break;case p:e[z]=r,e.splice(z+4,0,e[z+3],0),d(e,u,g,z,2),z+=9,y+=2;break;case f:e[z]=l,e.splice(z+4,0,e[z+3]),d(e,u,g,z,2),z+=5,y+=1;break;case _:d(e,u,g,z,2),z+=6}},scalePoints(e,t,i,s,o){for(let a=o?s+1:0,n=o?a+2*o:e.length;a<n;a+=2)e[a]*=t,e[a+1]*=i}},{scalePoints:d}=u,g=e.MatrixHelper.get(),{topLeft:x,top:z,topRight:y,right:b,bottom:R,left:k}=e.Direction9;function S(e,t,i){e.pathInputed?w(e,t,i):(1!==t&&(e.width*=t),1!==i&&(e.height*=i))}function P(t,i,s,o){let a=i;if(!e.isUndefined(o)){const e=t.__layout;let{width:n,height:c}=e.boxBounds;switch(n*=s-i,c*=i-s,o){case z:case R:a=s,e.affectScaleOrRotation?t.moveInner(-n/2,0):t.x-=n/2;break;case k:case b:e.affectScaleOrRotation?t.moveInner(0,-c/2):t.y-=c/2;break;case x:case y:e.affectScaleOrRotation?t.moveInner(0,-c):t.y-=c}}t.fontSize*=a;const n=t.__,{padding:c,lineHeight:h,letterSpacing:r}=n;c&&(t.padding=e.isArray(c)?c.map(e=>e*a):c*a),n.__autoWidth||(t.width*=a),n.__autoHeight||(t.height*=a),e.isObject(h)?"px"===h.type&&(n.lineHeight={type:"px",value:h.value*a}):h&&(n.lineHeight=h*a),e.isObject(r)?"px"===r.type&&(n.letterSpacing={type:"px",value:r.value*a}):r&&(n.letterSpacing=r*a)}function w(t,i,s){let{path:o}=t.__;e.isTrackChanges(t.leafer)||(o=[...o]),u.scale(o,i,s),t.path=o}function O(t,i,s){let{points:o}=t;const a=e.isObject(o[0]);e.isTrackChanges(t.leafer)||(o=a?e.DataHelper.clone(o):[...o]),a?o.forEach(e=>{e.x*=i,e.y*=s}):u.scalePoints(o,i,s),t.points=o}function m(e,t,i){const{children:s}=e;for(let e=0;e<s.length;e++)g.a=t,g.d=i,s[e].transform(g,!0)}const v=e.Leaf.prototype,C={},H={},{copy:B,scale:I,toOuterPoint:M}=e.MatrixHelper;v.scaleResize=function(e,t=e,i,s){const o=this;if(i||o.editConfig&&"scale"===o.editConfig.editSize)o.scaleX*=e,o.scaleY*=t;else{if(e<0&&(o.scaleX*=-1,e=-e),t<0&&(o.scaleY*=-1,t=-t),"stroke"===s){B(H,this.__localMatrix),e<0&&I(H,-1,1),t<0&&I(H,1,-1);const{boxBounds:i,strokeBounds:s}=this.__layout,{x:o,y:a,width:n,height:c}=s;C.x=(o-i.x)*(e-1),C.y=(a-i.y)*(t-1),M(H,C,C,!0),this.x+=C.x,this.y+=C.y,e=(n*e-(n-i.width))/i.width,t=(c*t-(c-i.height))/i.height}this.__scaleResize(e,t)}},v.__scaleResize=function(e,t){S(this,e,t)},v.resizeWidth=function(e,t="inner"){const i=e/this.getBounds("box",t).width||1;this.scaleOf("top-left",i,this.__.lockRatio?i:1,!0)},v.resizeHeight=function(e,t="inner"){const i=e/this.getBounds("box",t).height||1;this.scaleOf("top-left",this.__.lockRatio?i:1,i,!0)},e.Text.prototype.__scaleResize=function(e,t){const{app:i,editConfig:s}=this,o=i&&i.editor,a=o&&o.dragPoint;if(this.__.resizeFontSize||s&&"font-size"===s.editSize||a&&"font-size"===o.mergedConfig.editSize)P(this,e,t,a&&a.direction);else{const{__autoWidth:i,__autoHeight:s,textAlign:o,verticalAlign:a}=this.__,{boxBounds:n}=this.__layout;i&&"left"!==o&&1!==e&&(this.x+=n.x),s&&"top"!==a&&1!==t&&(this.y+=n.y),S(this,e,t)}},e.Path.prototype.__scaleResize=function(e,t){w(this,e,t)},e.Line.prototype.__scaleResize=function(e,t){this.pathInputed?w(this,e,t):this.points?O(this,e,t):this.width*=e},e.Polygon.prototype.__scaleResize=function(e,t){this.pathInputed?w(this,e,t):this.points?O(this,e,t):S(this,e,t)},e.Group.prototype.__scaleResize=function(e,t){m(this,e,t)},e.Box.prototype.__scaleResize=function(e,t){const{resizeChildren:i,__autoSize:s}=this.__;s&&i||S(this,e,t),i&&m(this,e,t)},e.Plugin.add("resize"),exports.PathScaler=u,exports.scaleResize=S,exports.scaleResizeFontSize=P,exports.scaleResizeGroup=m,exports.scaleResizePath=w,exports.scaleResizePoints=O;
2
2
  //# sourceMappingURL=resize.min.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"resize.min.cjs","sources":["../../../../../../src/in/packages/resize/src/PathScaler.ts","../../../../../../src/in/packages/resize/src/scaler.ts","../../../../../../src/in/packages/resize/src/resize.ts","../../../../../../src/in/packages/resize/src/index.ts"],"sourcesContent":["import { IPathCommandData } from '@leafer-ui/interface'\n\nimport { PathCommandMap as Command } from '@leafer-ui/draw'\n\n\nconst { M, L, C, Q, Z, N, D, X, G, F, O, P, U } = Command\n\nexport const PathScaler = {\n\n scale(data: IPathCommandData, scaleX: number, scaleY: number): void {\n if (!data) return\n\n let command: number\n let i = 0, len = data.length\n\n while (i < len) {\n command = data[i]\n switch (command) {\n case M: //moveto(x, y)\n case L: //lineto(x, y)\n scalePoints(data, scaleX, scaleY, i, 1)\n i += 3\n break\n case C: //bezierCurveTo(x1, y1, x2, y2, x, y)\n scalePoints(data, scaleX, scaleY, i, 3)\n i += 7\n break\n case Q: //quadraticCurveTo(x1, y1, x, y)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case Z: //closepath()\n i += 1\n break\n\n // canvas command\n\n case N: // rect(x, y, width, height)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case D: // roundRect(x, y, width, height, radius1, radius2, radius3, radius4)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case X: // simple roundRect(x, y, width, height, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n case G: // ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case F: // simple ellipse(x, y, radiusX, radiusY)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case O: // arc(x, y, radius, startAngle, endAngle, anticlockwise)\n data[i] = G // to ellipse\n data.splice(i + 4, 0, data[i + 3], 0)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 7 + 2\n len += 2\n break\n case P: // simple arc(x, y, radius)\n data[i] = F // to simple ellipse\n data.splice(i + 4, 0, data[i + 3])\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 4 + 1\n len += 1\n break\n case U: // arcTo(x1, y1, x2, y2, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n }\n }\n\n },\n\n scalePoints(data: IPathCommandData, scaleX: number, scaleY: number, start?: number, pointCount?: number): void {\n for (let i = pointCount ? start + 1 : 0, end = pointCount ? i + pointCount * 2 : data.length; i < end; i += 2) {\n data[i] *= scaleX\n data[i + 1] *= scaleY\n }\n }\n\n}\n\nconst { scalePoints } = PathScaler","import { IBranch, ILeaf, ILine, IPolygon, IText, IPointData } from '@leafer-ui/interface'\nimport { Direction9, MatrixHelper, isArray, isObject, isUndefined } from '@leafer-ui/draw'\n\nimport { PathScaler } from './PathScaler'\n\n\nconst matrix = MatrixHelper.get()\nconst { topLeft, top, topRight, right, bottom, left } = Direction9\n\nexport function scaleResize(leaf: ILeaf, scaleX: number, scaleY: number): void {\n if (leaf.pathInputed) {\n scaleResizePath(leaf, scaleX, scaleY)\n } else {\n // fix: Text / Box auto width / height, need check scale === 1\n if (scaleX !== 1) leaf.width *= scaleX\n if (scaleY !== 1) leaf.height *= scaleY\n }\n}\n\nexport function scaleResizeFontSize(leaf: IText, scaleX: number, scaleY: number, direction?: Direction9): void {\n let fontScale = scaleX\n\n if (!isUndefined(direction)) {\n\n const layout = leaf.__layout\n\n let { width, height } = layout.boxBounds\n width *= scaleY - scaleX\n height *= scaleX - scaleY\n\n switch (direction) { // 编辑器控制点的位置\n case top:\n case bottom:\n fontScale = scaleY\n layout.affectScaleOrRotation ? leaf.moveInner(-width / 2, 0) : leaf.x -= width / 2\n break\n case left:\n case right:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height / 2) : leaf.y -= height / 2\n break\n case topLeft:\n case topRight:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height) : leaf.y -= height\n break\n }\n\n }\n\n leaf.fontSize *= fontScale\n\n const data = leaf.__, { padding, lineHeight, letterSpacing } = data\n if (padding) leaf.padding = isArray(padding) ? padding.map(item => item * fontScale) : padding * fontScale\n if (!data.__autoWidth) leaf.width *= fontScale\n if (!data.__autoHeight) leaf.height *= fontScale\n\n if (isObject(lineHeight)) {\n if (lineHeight.type === 'px') data.lineHeight = { type: 'px', value: lineHeight.value * fontScale }\n } else if (lineHeight) data.lineHeight = lineHeight * fontScale\n\n if (isObject(letterSpacing)) {\n if (letterSpacing.type === 'px') data.letterSpacing = { type: 'px', value: letterSpacing.value * fontScale }\n } else if (letterSpacing) data.letterSpacing = letterSpacing * fontScale\n\n}\n\nexport function scaleResizePath(leaf: ILeaf, scaleX: number, scaleY: number): void {\n PathScaler.scale(leaf.__.path, scaleX, scaleY)\n leaf.path = leaf.__.path\n}\n\nexport function scaleResizePoints(leaf: ILine | IPolygon, scaleX: number, scaleY: number): void {\n const { points } = leaf\n isObject(points[0]) ? (points as IPointData[]).forEach(p => { p.x *= scaleX, p.y *= scaleY }) : PathScaler.scalePoints(points as number[], scaleX, scaleY)\n leaf.points = points\n}\n\n\nexport function scaleResizeGroup(group: IBranch, scaleX: number, scaleY: number): void {\n const { children } = group\n for (let i = 0; i < children.length; i++) {\n matrix.a = scaleX // must update\n matrix.d = scaleY\n children[i].transform(matrix, true)\n }\n}","import { IBoundsType, ILeaf, IPointData, IMatrixData, ILocationType } from '@leafer-ui/interface'\nimport { Leaf, Path, Line, Text, Polygon, Group, Box, UI, MatrixHelper } from '@leafer-ui/draw'\n\nimport { scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints } from './scaler'\n\n\n// leaf\nconst leaf = Leaf.prototype as ILeaf, tempPoint = {} as IPointData, tempMatrix = {} as IMatrixData, { copy, scale, toOuterPoint } = MatrixHelper\n\nleaf.scaleResize = function (scaleX: number, scaleY = scaleX, noResize?: boolean, boundsType?: IBoundsType): void {\n const data = this as UI\n if (noResize || (data.editConfig && data.editConfig.editSize === 'scale')) {\n data.scaleX *= scaleX\n data.scaleY *= scaleY\n } else {\n\n if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX\n if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY\n\n if (boundsType === 'stroke') {\n copy(tempMatrix, this.__localMatrix)\n if (scaleX < 0) scale(tempMatrix, -1, 1)\n if (scaleY < 0) scale(tempMatrix, 1, -1)\n\n const { boxBounds, strokeBounds } = this.__layout, { x, y, width, height } = strokeBounds\n tempPoint.x = (x - boxBounds.x) * (scaleX - 1)\n tempPoint.y = (y - boxBounds.y) * (scaleY - 1)\n toOuterPoint(tempMatrix, tempPoint, tempPoint, true)\n this.x += tempPoint.x\n this.y += tempPoint.y\n\n scaleX = (width * scaleX - (width - boxBounds.width)) / boxBounds.width\n scaleY = (height * scaleY - (height - boxBounds.height)) / boxBounds.height\n }\n\n this.__scaleResize(scaleX, scaleY)\n }\n}\n\n\nleaf.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResize(this, scaleX, scaleY)\n}\n\n\nleaf.resizeWidth = function (width: number, relative: ILocationType = 'inner'): void {\n const scale = width / this.getBounds('box', relative).width || 1 // 不允许为0\n this.scaleOf('top-left', scale, this.__.lockRatio ? scale : 1, true)\n}\n\n\nleaf.resizeHeight = function (height: number, relative: ILocationType = 'inner'): void {\n const scale = height / this.getBounds('box', relative).height || 1 // 不允许为0\n this.scaleOf('top-left', this.__.lockRatio ? scale : 1, scale, true)\n}\n\n\n// UI\n\nText.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { app, editConfig } = this, editor = app && app.editor, dragPoint = editor && editor.dragPoint\n\n if (this.__.resizeFontSize || (editConfig && editConfig.editSize === 'font-size') || (dragPoint && editor.mergedConfig.editSize === 'font-size')) {\n scaleResizeFontSize(this, scaleX, scaleY, dragPoint && dragPoint.direction)\n } else {\n const { __autoWidth, __autoHeight, textAlign, verticalAlign } = this.__, { boxBounds } = this.__layout\n if (__autoWidth && textAlign !== 'left' && scaleX !== 1) this.x += boxBounds.x\n if (__autoHeight && verticalAlign !== 'top' && scaleY !== 1) this.y += boxBounds.y\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\nPath.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizePath(this, scaleX, scaleY)\n}\n\n\nLine.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n this.width *= scaleX\n }\n}\n\n\nPolygon.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\n// group\n\nGroup.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizeGroup(this, scaleX, scaleY)\n}\n\n\nBox.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { resizeChildren, __autoSize } = this.__\n if (!(__autoSize && resizeChildren)) scaleResize(this, scaleX, scaleY)\n if (resizeChildren) scaleResizeGroup(this, scaleX, scaleY)\n}","export { PathScaler } from './PathScaler'\nexport { scaleResize, scaleResizeGroup, scaleResizeFontSize, scaleResizePath, scaleResizePoints } from './scaler'\n\nimport { Plugin } from '@leafer-ui/draw'\n\nimport './resize'\n\nPlugin.add('resize')"],"names":["M","L","C","Q","Z","N","D","X","G","F","O","P","U","Command","PathScaler","scale","data","scaleX","scaleY","command","i","len","length","scalePoints","splice","start","pointCount","end","matrix","MatrixHelper","get","topLeft","top","topRight","right","bottom","left","Direction9","scaleResize","leaf","pathInputed","scaleResizePath","width","height","scaleResizeFontSize","direction","fontScale","isUndefined","layout","__layout","boxBounds","affectScaleOrRotation","moveInner","x","y","fontSize","__","padding","lineHeight","letterSpacing","isArray","map","item","__autoWidth","__autoHeight","isObject","type","value","path","scaleResizePoints","points","forEach","p","scaleResizeGroup","group","children","a","d","transform","Leaf","prototype","tempPoint","tempMatrix","copy","toOuterPoint","noResize","boundsType","this","editConfig","editSize","__localMatrix","strokeBounds","__scaleResize","resizeWidth","relative","getBounds","scaleOf","lockRatio","resizeHeight","Text","app","editor","dragPoint","resizeFontSize","mergedConfig","textAlign","verticalAlign","Path","Line","Polygon","Group","Box","resizeChildren","__autoSize","Plugin","add"],"mappings":"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"}
1
+ {"version":3,"file":"resize.min.cjs","sources":["../../../../../../src/in/packages/resize/src/PathScaler.ts","../../../../../../src/in/packages/resize/src/scaler.ts","../../../../../../src/in/packages/resize/src/resize.ts","../../../../../../src/in/packages/resize/src/index.ts"],"sourcesContent":["import { IPathCommandData } from '@leafer-ui/interface'\n\nimport { PathCommandMap as Command } from '@leafer-ui/draw'\n\n\nconst { M, L, C, Q, Z, N, D, X, G, F, O, P, U } = Command\n\nexport const PathScaler = {\n\n scale(data: IPathCommandData, scaleX: number, scaleY: number): void {\n if (!data) return\n\n let command: number\n let i = 0, len = data.length\n\n while (i < len) {\n command = data[i]\n switch (command) {\n case M: //moveto(x, y)\n case L: //lineto(x, y)\n scalePoints(data, scaleX, scaleY, i, 1)\n i += 3\n break\n case C: //bezierCurveTo(x1, y1, x2, y2, x, y)\n scalePoints(data, scaleX, scaleY, i, 3)\n i += 7\n break\n case Q: //quadraticCurveTo(x1, y1, x, y)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case Z: //closepath()\n i += 1\n break\n\n // canvas command\n\n case N: // rect(x, y, width, height)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case D: // roundRect(x, y, width, height, radius1, radius2, radius3, radius4)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case X: // simple roundRect(x, y, width, height, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n case G: // ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case F: // simple ellipse(x, y, radiusX, radiusY)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case O: // arc(x, y, radius, startAngle, endAngle, anticlockwise)\n data[i] = G // to ellipse\n data.splice(i + 4, 0, data[i + 3], 0)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 7 + 2\n len += 2\n break\n case P: // simple arc(x, y, radius)\n data[i] = F // to simple ellipse\n data.splice(i + 4, 0, data[i + 3])\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 4 + 1\n len += 1\n break\n case U: // arcTo(x1, y1, x2, y2, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n }\n }\n\n },\n\n scalePoints(data: IPathCommandData, scaleX: number, scaleY: number, start?: number, pointCount?: number): void {\n for (let i = pointCount ? start + 1 : 0, end = pointCount ? i + pointCount * 2 : data.length; i < end; i += 2) {\n data[i] *= scaleX\n data[i + 1] *= scaleY\n }\n }\n\n}\n\nconst { scalePoints } = PathScaler","import { IBranch, ILeaf, ILine, IPolygon, IText, IPointData } from '@leafer-ui/interface'\nimport { Direction9, MatrixHelper, isArray, isObject, isUndefined, isTrackChanges, DataHelper } from '@leafer-ui/draw'\n\nimport { PathScaler } from './PathScaler'\n\n\nconst matrix = MatrixHelper.get()\nconst { topLeft, top, topRight, right, bottom, left } = Direction9\n\nexport function scaleResize(leaf: ILeaf, scaleX: number, scaleY: number): void {\n if (leaf.pathInputed) {\n scaleResizePath(leaf, scaleX, scaleY)\n } else {\n // fix: Text / Box auto width / height, need check scale === 1\n if (scaleX !== 1) leaf.width *= scaleX\n if (scaleY !== 1) leaf.height *= scaleY\n }\n}\n\nexport function scaleResizeFontSize(leaf: IText, scaleX: number, scaleY: number, direction?: Direction9): void {\n let fontScale = scaleX\n\n if (!isUndefined(direction)) {\n\n const layout = leaf.__layout\n\n let { width, height } = layout.boxBounds\n width *= scaleY - scaleX\n height *= scaleX - scaleY\n\n switch (direction) { // 编辑器控制点的位置\n case top:\n case bottom:\n fontScale = scaleY\n layout.affectScaleOrRotation ? leaf.moveInner(-width / 2, 0) : leaf.x -= width / 2\n break\n case left:\n case right:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height / 2) : leaf.y -= height / 2\n break\n case topLeft:\n case topRight:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height) : leaf.y -= height\n break\n }\n\n }\n\n leaf.fontSize *= fontScale\n\n const data = leaf.__, { padding, lineHeight, letterSpacing } = data\n if (padding) leaf.padding = isArray(padding) ? padding.map(item => item * fontScale) : padding * fontScale\n if (!data.__autoWidth) leaf.width *= fontScale\n if (!data.__autoHeight) leaf.height *= fontScale\n\n if (isObject(lineHeight)) {\n if (lineHeight.type === 'px') data.lineHeight = { type: 'px', value: lineHeight.value * fontScale }\n } else if (lineHeight) data.lineHeight = lineHeight * fontScale\n\n if (isObject(letterSpacing)) {\n if (letterSpacing.type === 'px') data.letterSpacing = { type: 'px', value: letterSpacing.value * fontScale }\n } else if (letterSpacing) data.letterSpacing = letterSpacing * fontScale\n\n}\n\nexport function scaleResizePath(leaf: ILeaf, scaleX: number, scaleY: number): void {\n let { path } = leaf.__\n if (!isTrackChanges(leaf.leafer)) path = [...path] // 避免产生引用,导致污染历史数据\n PathScaler.scale(path, scaleX, scaleY)\n leaf.path = path\n}\n\nexport function scaleResizePoints(leaf: ILine | IPolygon, scaleX: number, scaleY: number): void {\n let { points } = leaf\n const isOb = isObject(points[0])\n if (!isTrackChanges(leaf.leafer)) points = isOb ? DataHelper.clone(points) as IPointData[] : [...points] as number[] // 避免产生引用,导致污染历史数据\n isOb ? (points as IPointData[]).forEach(p => { p.x *= scaleX, p.y *= scaleY }) : PathScaler.scalePoints(points as number[], scaleX, scaleY)\n leaf.points = points\n}\n\n\nexport function scaleResizeGroup(group: IBranch, scaleX: number, scaleY: number): void {\n const { children } = group\n for (let i = 0; i < children.length; i++) {\n matrix.a = scaleX // must update\n matrix.d = scaleY\n children[i].transform(matrix, true)\n }\n}","import { IBoundsType, ILeaf, IPointData, IMatrixData, ILocationType } from '@leafer-ui/interface'\nimport { Leaf, Path, Line, Text, Polygon, Group, Box, UI, MatrixHelper } from '@leafer-ui/draw'\n\nimport { scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints } from './scaler'\n\n\n// leaf\nconst leaf = Leaf.prototype as ILeaf, tempPoint = {} as IPointData, tempMatrix = {} as IMatrixData, { copy, scale, toOuterPoint } = MatrixHelper\n\nleaf.scaleResize = function (scaleX: number, scaleY = scaleX, noResize?: boolean, boundsType?: IBoundsType): void {\n const data = this as UI\n if (noResize || (data.editConfig && data.editConfig.editSize === 'scale')) {\n data.scaleX *= scaleX\n data.scaleY *= scaleY\n } else {\n\n if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX\n if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY\n\n if (boundsType === 'stroke') {\n copy(tempMatrix, this.__localMatrix)\n if (scaleX < 0) scale(tempMatrix, -1, 1)\n if (scaleY < 0) scale(tempMatrix, 1, -1)\n\n const { boxBounds, strokeBounds } = this.__layout, { x, y, width, height } = strokeBounds\n tempPoint.x = (x - boxBounds.x) * (scaleX - 1)\n tempPoint.y = (y - boxBounds.y) * (scaleY - 1)\n toOuterPoint(tempMatrix, tempPoint, tempPoint, true)\n this.x += tempPoint.x\n this.y += tempPoint.y\n\n scaleX = (width * scaleX - (width - boxBounds.width)) / boxBounds.width\n scaleY = (height * scaleY - (height - boxBounds.height)) / boxBounds.height\n }\n\n this.__scaleResize(scaleX, scaleY)\n }\n}\n\n\nleaf.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResize(this, scaleX, scaleY)\n}\n\n\nleaf.resizeWidth = function (width: number, relative: ILocationType = 'inner'): void {\n const scale = width / this.getBounds('box', relative).width || 1 // 不允许为0\n this.scaleOf('top-left', scale, this.__.lockRatio ? scale : 1, true)\n}\n\n\nleaf.resizeHeight = function (height: number, relative: ILocationType = 'inner'): void {\n const scale = height / this.getBounds('box', relative).height || 1 // 不允许为0\n this.scaleOf('top-left', this.__.lockRatio ? scale : 1, scale, true)\n}\n\n\n// UI\n\nText.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { app, editConfig } = this, editor = app && app.editor, dragPoint = editor && editor.dragPoint\n\n if (this.__.resizeFontSize || (editConfig && editConfig.editSize === 'font-size') || (dragPoint && editor.mergedConfig.editSize === 'font-size')) {\n scaleResizeFontSize(this, scaleX, scaleY, dragPoint && dragPoint.direction)\n } else {\n const { __autoWidth, __autoHeight, textAlign, verticalAlign } = this.__, { boxBounds } = this.__layout\n if (__autoWidth && textAlign !== 'left' && scaleX !== 1) this.x += boxBounds.x\n if (__autoHeight && verticalAlign !== 'top' && scaleY !== 1) this.y += boxBounds.y\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\nPath.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizePath(this, scaleX, scaleY)\n}\n\n\nLine.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n this.width *= scaleX\n }\n}\n\n\nPolygon.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\n// group\n\nGroup.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizeGroup(this, scaleX, scaleY)\n}\n\n\nBox.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { resizeChildren, __autoSize } = this.__\n if (!(__autoSize && resizeChildren)) scaleResize(this, scaleX, scaleY)\n if (resizeChildren) scaleResizeGroup(this, scaleX, scaleY)\n}","export { PathScaler } from './PathScaler'\nexport { scaleResize, scaleResizeGroup, scaleResizeFontSize, scaleResizePath, scaleResizePoints } from './scaler'\n\nimport { Plugin } from '@leafer-ui/draw'\n\nimport './resize'\n\nPlugin.add('resize')"],"names":["M","L","C","Q","Z","N","D","X","G","F","O","P","U","Command","PathScaler","scale","data","scaleX","scaleY","command","i","len","length","scalePoints","splice","start","pointCount","end","matrix","MatrixHelper","get","topLeft","top","topRight","right","bottom","left","Direction9","scaleResize","leaf","pathInputed","scaleResizePath","width","height","scaleResizeFontSize","direction","fontScale","isUndefined","layout","__layout","boxBounds","affectScaleOrRotation","moveInner","x","y","fontSize","__","padding","lineHeight","letterSpacing","isArray","map","item","__autoWidth","__autoHeight","isObject","type","value","path","isTrackChanges","leafer","scaleResizePoints","points","isOb","DataHelper","clone","forEach","p","scaleResizeGroup","group","children","a","d","transform","Leaf","prototype","tempPoint","tempMatrix","copy","toOuterPoint","noResize","boundsType","this","editConfig","editSize","__localMatrix","strokeBounds","__scaleResize","resizeWidth","relative","getBounds","scaleOf","lockRatio","resizeHeight","Text","app","editor","dragPoint","resizeFontSize","mergedConfig","textAlign","verticalAlign","Path","Line","Polygon","Group","Box","resizeChildren","__autoSize","Plugin","add"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- this.LeaferIN=this.LeaferIN||{},this.LeaferIN.resize=function(e,t){"use strict";const{M:i,L:s,C:o,Q:a,Z:n,N:c,D:h,X:r,G:l,F:p,O:f,P:_,U:u}=t.PathCommandMap,d={scale(e,t,d){if(!e)return;let z,y=0,x=e.length;for(;y<x;)switch(z=e[y],z){case i:case s:g(e,t,d,y,1),y+=3;break;case o:g(e,t,d,y,3),y+=7;break;case a:g(e,t,d,y,2),y+=5;break;case n:y+=1;break;case c:g(e,t,d,y,2),y+=5;break;case h:g(e,t,d,y,2),y+=9;break;case r:g(e,t,d,y,2),y+=6;break;case l:g(e,t,d,y,2),y+=9;break;case p:g(e,t,d,y,2),y+=5;break;case f:e[y]=l,e.splice(y+4,0,e[y+3],0),g(e,t,d,y,2),y+=9,x+=2;break;case _:e[y]=p,e.splice(y+4,0,e[y+3]),g(e,t,d,y,2),y+=5,x+=1;break;case u:g(e,t,d,y,2),y+=6}},scalePoints(e,t,i,s,o){for(let a=o?s+1:0,n=o?a+2*o:e.length;a<n;a+=2)e[a]*=t,e[a+1]*=i}},{scalePoints:g}=d,z=t.MatrixHelper.get(),{topLeft:y,top:x,topRight:b,right:R,bottom:k,left:S}=t.Direction9;function P(e,t,i){e.pathInputed?I(e,t,i):(1!==t&&(e.width*=t),1!==i&&(e.height*=i))}function w(e,i,s,o){let a=i;if(!t.isUndefined(o)){const t=e.__layout;let{width:n,height:c}=t.boxBounds;switch(n*=s-i,c*=i-s,o){case x:case k:a=s,t.affectScaleOrRotation?e.moveInner(-n/2,0):e.x-=n/2;break;case S:case R:t.affectScaleOrRotation?e.moveInner(0,-c/2):e.y-=c/2;break;case y:case b:t.affectScaleOrRotation?e.moveInner(0,-c):e.y-=c}}e.fontSize*=a;const n=e.__,{padding:c,lineHeight:h,letterSpacing:r}=n;c&&(e.padding=t.isArray(c)?c.map(e=>e*a):c*a),n.__autoWidth||(e.width*=a),n.__autoHeight||(e.height*=a),t.isObject(h)?"px"===h.type&&(n.lineHeight={type:"px",value:h.value*a}):h&&(n.lineHeight=h*a),t.isObject(r)?"px"===r.type&&(n.letterSpacing={type:"px",value:r.value*a}):r&&(n.letterSpacing=r*a)}function I(e,t,i){d.scale(e.__.path,t,i),e.path=e.__.path}function O(e,i,s){const{points:o}=e;t.isObject(o[0])?o.forEach(e=>{e.x*=i,e.y*=s}):d.scalePoints(o,i,s),e.points=o}function m(e,t,i){const{children:s}=e;for(let e=0;e<s.length;e++)z.a=t,z.d=i,s[e].transform(z,!0)}const v=t.Leaf.prototype,H={},L={},{copy:B,scale:C,toOuterPoint:M}=t.MatrixHelper;return v.scaleResize=function(e,t=e,i,s){const o=this;if(i||o.editConfig&&"scale"===o.editConfig.editSize)o.scaleX*=e,o.scaleY*=t;else{if(e<0&&(o.scaleX*=-1,e=-e),t<0&&(o.scaleY*=-1,t=-t),"stroke"===s){B(L,this.__localMatrix),e<0&&C(L,-1,1),t<0&&C(L,1,-1);const{boxBounds:i,strokeBounds:s}=this.__layout,{x:o,y:a,width:n,height:c}=s;H.x=(o-i.x)*(e-1),H.y=(a-i.y)*(t-1),M(L,H,H,!0),this.x+=H.x,this.y+=H.y,e=(n*e-(n-i.width))/i.width,t=(c*t-(c-i.height))/i.height}this.__scaleResize(e,t)}},v.__scaleResize=function(e,t){P(this,e,t)},v.resizeWidth=function(e,t="inner"){const i=e/this.getBounds("box",t).width||1;this.scaleOf("top-left",i,this.__.lockRatio?i:1,!0)},v.resizeHeight=function(e,t="inner"){const i=e/this.getBounds("box",t).height||1;this.scaleOf("top-left",this.__.lockRatio?i:1,i,!0)},t.Text.prototype.__scaleResize=function(e,t){const{app:i,editConfig:s}=this,o=i&&i.editor,a=o&&o.dragPoint;if(this.__.resizeFontSize||s&&"font-size"===s.editSize||a&&"font-size"===o.mergedConfig.editSize)w(this,e,t,a&&a.direction);else{const{__autoWidth:i,__autoHeight:s,textAlign:o,verticalAlign:a}=this.__,{boxBounds:n}=this.__layout;i&&"left"!==o&&1!==e&&(this.x+=n.x),s&&"top"!==a&&1!==t&&(this.y+=n.y),P(this,e,t)}},t.Path.prototype.__scaleResize=function(e,t){I(this,e,t)},t.Line.prototype.__scaleResize=function(e,t){this.pathInputed?I(this,e,t):this.points?O(this,e,t):this.width*=e},t.Polygon.prototype.__scaleResize=function(e,t){this.pathInputed?I(this,e,t):this.points?O(this,e,t):P(this,e,t)},t.Group.prototype.__scaleResize=function(e,t){m(this,e,t)},t.Box.prototype.__scaleResize=function(e,t){const{resizeChildren:i,__autoSize:s}=this.__;s&&i||P(this,e,t),i&&m(this,e,t)},t.Plugin.add("resize"),e.PathScaler=d,e.scaleResize=P,e.scaleResizeFontSize=w,e.scaleResizeGroup=m,e.scaleResizePath=I,e.scaleResizePoints=O,e}({},LeaferUI);
1
+ this.LeaferIN=this.LeaferIN||{},this.LeaferIN.resize=function(e,t){"use strict";const{M:i,L:s,C:a,Q:o,Z:n,N:c,D:h,X:l,G:r,F:p,O:f,P:_,U:u}=t.PathCommandMap,d={scale(e,t,d){if(!e)return;let z,y=0,x=e.length;for(;y<x;)switch(z=e[y],z){case i:case s:g(e,t,d,y,1),y+=3;break;case a:g(e,t,d,y,3),y+=7;break;case o:g(e,t,d,y,2),y+=5;break;case n:y+=1;break;case c:g(e,t,d,y,2),y+=5;break;case h:g(e,t,d,y,2),y+=9;break;case l:g(e,t,d,y,2),y+=6;break;case r:g(e,t,d,y,2),y+=9;break;case p:g(e,t,d,y,2),y+=5;break;case f:e[y]=r,e.splice(y+4,0,e[y+3],0),g(e,t,d,y,2),y+=9,x+=2;break;case _:e[y]=p,e.splice(y+4,0,e[y+3]),g(e,t,d,y,2),y+=5,x+=1;break;case u:g(e,t,d,y,2),y+=6}},scalePoints(e,t,i,s,a){for(let o=a?s+1:0,n=a?o+2*a:e.length;o<n;o+=2)e[o]*=t,e[o+1]*=i}},{scalePoints:g}=d,z=t.MatrixHelper.get(),{topLeft:y,top:x,topRight:b,right:R,bottom:k,left:S}=t.Direction9;function P(e,t,i){e.pathInputed?I(e,t,i):(1!==t&&(e.width*=t),1!==i&&(e.height*=i))}function w(e,i,s,a){let o=i;if(!t.isUndefined(a)){const t=e.__layout;let{width:n,height:c}=t.boxBounds;switch(n*=s-i,c*=i-s,a){case x:case k:o=s,t.affectScaleOrRotation?e.moveInner(-n/2,0):e.x-=n/2;break;case S:case R:t.affectScaleOrRotation?e.moveInner(0,-c/2):e.y-=c/2;break;case y:case b:t.affectScaleOrRotation?e.moveInner(0,-c):e.y-=c}}e.fontSize*=o;const n=e.__,{padding:c,lineHeight:h,letterSpacing:l}=n;c&&(e.padding=t.isArray(c)?c.map(e=>e*o):c*o),n.__autoWidth||(e.width*=o),n.__autoHeight||(e.height*=o),t.isObject(h)?"px"===h.type&&(n.lineHeight={type:"px",value:h.value*o}):h&&(n.lineHeight=h*o),t.isObject(l)?"px"===l.type&&(n.letterSpacing={type:"px",value:l.value*o}):l&&(n.letterSpacing=l*o)}function I(e,i,s){let{path:a}=e.__;t.isTrackChanges(e.leafer)||(a=[...a]),d.scale(a,i,s),e.path=a}function O(e,i,s){let{points:a}=e;const o=t.isObject(a[0]);t.isTrackChanges(e.leafer)||(a=o?t.DataHelper.clone(a):[...a]),o?a.forEach(e=>{e.x*=i,e.y*=s}):d.scalePoints(a,i,s),e.points=a}function m(e,t,i){const{children:s}=e;for(let e=0;e<s.length;e++)z.a=t,z.d=i,s[e].transform(z,!0)}const C=t.Leaf.prototype,H={},v={},{copy:L,scale:B,toOuterPoint:M}=t.MatrixHelper;return C.scaleResize=function(e,t=e,i,s){const a=this;if(i||a.editConfig&&"scale"===a.editConfig.editSize)a.scaleX*=e,a.scaleY*=t;else{if(e<0&&(a.scaleX*=-1,e=-e),t<0&&(a.scaleY*=-1,t=-t),"stroke"===s){L(v,this.__localMatrix),e<0&&B(v,-1,1),t<0&&B(v,1,-1);const{boxBounds:i,strokeBounds:s}=this.__layout,{x:a,y:o,width:n,height:c}=s;H.x=(a-i.x)*(e-1),H.y=(o-i.y)*(t-1),M(v,H,H,!0),this.x+=H.x,this.y+=H.y,e=(n*e-(n-i.width))/i.width,t=(c*t-(c-i.height))/i.height}this.__scaleResize(e,t)}},C.__scaleResize=function(e,t){P(this,e,t)},C.resizeWidth=function(e,t="inner"){const i=e/this.getBounds("box",t).width||1;this.scaleOf("top-left",i,this.__.lockRatio?i:1,!0)},C.resizeHeight=function(e,t="inner"){const i=e/this.getBounds("box",t).height||1;this.scaleOf("top-left",this.__.lockRatio?i:1,i,!0)},t.Text.prototype.__scaleResize=function(e,t){const{app:i,editConfig:s}=this,a=i&&i.editor,o=a&&a.dragPoint;if(this.__.resizeFontSize||s&&"font-size"===s.editSize||o&&"font-size"===a.mergedConfig.editSize)w(this,e,t,o&&o.direction);else{const{__autoWidth:i,__autoHeight:s,textAlign:a,verticalAlign:o}=this.__,{boxBounds:n}=this.__layout;i&&"left"!==a&&1!==e&&(this.x+=n.x),s&&"top"!==o&&1!==t&&(this.y+=n.y),P(this,e,t)}},t.Path.prototype.__scaleResize=function(e,t){I(this,e,t)},t.Line.prototype.__scaleResize=function(e,t){this.pathInputed?I(this,e,t):this.points?O(this,e,t):this.width*=e},t.Polygon.prototype.__scaleResize=function(e,t){this.pathInputed?I(this,e,t):this.points?O(this,e,t):P(this,e,t)},t.Group.prototype.__scaleResize=function(e,t){m(this,e,t)},t.Box.prototype.__scaleResize=function(e,t){const{resizeChildren:i,__autoSize:s}=this.__;s&&i||P(this,e,t),i&&m(this,e,t)},t.Plugin.add("resize"),e.PathScaler=d,e.scaleResize=P,e.scaleResizeFontSize=w,e.scaleResizeGroup=m,e.scaleResizePath=I,e.scaleResizePoints=O,e}({},LeaferUI);
2
2
  //# sourceMappingURL=resize.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resize.min.js","sources":["../../../../../../src/in/packages/resize/src/PathScaler.ts","../../../../../../src/in/packages/resize/src/scaler.ts","../../../../../../src/in/packages/resize/src/resize.ts","../../../../../../src/in/packages/resize/src/index.ts"],"sourcesContent":["import { IPathCommandData } from '@leafer-ui/interface'\n\nimport { PathCommandMap as Command } from '@leafer-ui/draw'\n\n\nconst { M, L, C, Q, Z, N, D, X, G, F, O, P, U } = Command\n\nexport const PathScaler = {\n\n scale(data: IPathCommandData, scaleX: number, scaleY: number): void {\n if (!data) return\n\n let command: number\n let i = 0, len = data.length\n\n while (i < len) {\n command = data[i]\n switch (command) {\n case M: //moveto(x, y)\n case L: //lineto(x, y)\n scalePoints(data, scaleX, scaleY, i, 1)\n i += 3\n break\n case C: //bezierCurveTo(x1, y1, x2, y2, x, y)\n scalePoints(data, scaleX, scaleY, i, 3)\n i += 7\n break\n case Q: //quadraticCurveTo(x1, y1, x, y)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case Z: //closepath()\n i += 1\n break\n\n // canvas command\n\n case N: // rect(x, y, width, height)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case D: // roundRect(x, y, width, height, radius1, radius2, radius3, radius4)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case X: // simple roundRect(x, y, width, height, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n case G: // ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case F: // simple ellipse(x, y, radiusX, radiusY)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case O: // arc(x, y, radius, startAngle, endAngle, anticlockwise)\n data[i] = G // to ellipse\n data.splice(i + 4, 0, data[i + 3], 0)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 7 + 2\n len += 2\n break\n case P: // simple arc(x, y, radius)\n data[i] = F // to simple ellipse\n data.splice(i + 4, 0, data[i + 3])\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 4 + 1\n len += 1\n break\n case U: // arcTo(x1, y1, x2, y2, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n }\n }\n\n },\n\n scalePoints(data: IPathCommandData, scaleX: number, scaleY: number, start?: number, pointCount?: number): void {\n for (let i = pointCount ? start + 1 : 0, end = pointCount ? i + pointCount * 2 : data.length; i < end; i += 2) {\n data[i] *= scaleX\n data[i + 1] *= scaleY\n }\n }\n\n}\n\nconst { scalePoints } = PathScaler","import { IBranch, ILeaf, ILine, IPolygon, IText, IPointData } from '@leafer-ui/interface'\nimport { Direction9, MatrixHelper, isArray, isObject, isUndefined } from '@leafer-ui/draw'\n\nimport { PathScaler } from './PathScaler'\n\n\nconst matrix = MatrixHelper.get()\nconst { topLeft, top, topRight, right, bottom, left } = Direction9\n\nexport function scaleResize(leaf: ILeaf, scaleX: number, scaleY: number): void {\n if (leaf.pathInputed) {\n scaleResizePath(leaf, scaleX, scaleY)\n } else {\n // fix: Text / Box auto width / height, need check scale === 1\n if (scaleX !== 1) leaf.width *= scaleX\n if (scaleY !== 1) leaf.height *= scaleY\n }\n}\n\nexport function scaleResizeFontSize(leaf: IText, scaleX: number, scaleY: number, direction?: Direction9): void {\n let fontScale = scaleX\n\n if (!isUndefined(direction)) {\n\n const layout = leaf.__layout\n\n let { width, height } = layout.boxBounds\n width *= scaleY - scaleX\n height *= scaleX - scaleY\n\n switch (direction) { // 编辑器控制点的位置\n case top:\n case bottom:\n fontScale = scaleY\n layout.affectScaleOrRotation ? leaf.moveInner(-width / 2, 0) : leaf.x -= width / 2\n break\n case left:\n case right:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height / 2) : leaf.y -= height / 2\n break\n case topLeft:\n case topRight:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height) : leaf.y -= height\n break\n }\n\n }\n\n leaf.fontSize *= fontScale\n\n const data = leaf.__, { padding, lineHeight, letterSpacing } = data\n if (padding) leaf.padding = isArray(padding) ? padding.map(item => item * fontScale) : padding * fontScale\n if (!data.__autoWidth) leaf.width *= fontScale\n if (!data.__autoHeight) leaf.height *= fontScale\n\n if (isObject(lineHeight)) {\n if (lineHeight.type === 'px') data.lineHeight = { type: 'px', value: lineHeight.value * fontScale }\n } else if (lineHeight) data.lineHeight = lineHeight * fontScale\n\n if (isObject(letterSpacing)) {\n if (letterSpacing.type === 'px') data.letterSpacing = { type: 'px', value: letterSpacing.value * fontScale }\n } else if (letterSpacing) data.letterSpacing = letterSpacing * fontScale\n\n}\n\nexport function scaleResizePath(leaf: ILeaf, scaleX: number, scaleY: number): void {\n PathScaler.scale(leaf.__.path, scaleX, scaleY)\n leaf.path = leaf.__.path\n}\n\nexport function scaleResizePoints(leaf: ILine | IPolygon, scaleX: number, scaleY: number): void {\n const { points } = leaf\n isObject(points[0]) ? (points as IPointData[]).forEach(p => { p.x *= scaleX, p.y *= scaleY }) : PathScaler.scalePoints(points as number[], scaleX, scaleY)\n leaf.points = points\n}\n\n\nexport function scaleResizeGroup(group: IBranch, scaleX: number, scaleY: number): void {\n const { children } = group\n for (let i = 0; i < children.length; i++) {\n matrix.a = scaleX // must update\n matrix.d = scaleY\n children[i].transform(matrix, true)\n }\n}","import { IBoundsType, ILeaf, IPointData, IMatrixData, ILocationType } from '@leafer-ui/interface'\nimport { Leaf, Path, Line, Text, Polygon, Group, Box, UI, MatrixHelper } from '@leafer-ui/draw'\n\nimport { scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints } from './scaler'\n\n\n// leaf\nconst leaf = Leaf.prototype as ILeaf, tempPoint = {} as IPointData, tempMatrix = {} as IMatrixData, { copy, scale, toOuterPoint } = MatrixHelper\n\nleaf.scaleResize = function (scaleX: number, scaleY = scaleX, noResize?: boolean, boundsType?: IBoundsType): void {\n const data = this as UI\n if (noResize || (data.editConfig && data.editConfig.editSize === 'scale')) {\n data.scaleX *= scaleX\n data.scaleY *= scaleY\n } else {\n\n if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX\n if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY\n\n if (boundsType === 'stroke') {\n copy(tempMatrix, this.__localMatrix)\n if (scaleX < 0) scale(tempMatrix, -1, 1)\n if (scaleY < 0) scale(tempMatrix, 1, -1)\n\n const { boxBounds, strokeBounds } = this.__layout, { x, y, width, height } = strokeBounds\n tempPoint.x = (x - boxBounds.x) * (scaleX - 1)\n tempPoint.y = (y - boxBounds.y) * (scaleY - 1)\n toOuterPoint(tempMatrix, tempPoint, tempPoint, true)\n this.x += tempPoint.x\n this.y += tempPoint.y\n\n scaleX = (width * scaleX - (width - boxBounds.width)) / boxBounds.width\n scaleY = (height * scaleY - (height - boxBounds.height)) / boxBounds.height\n }\n\n this.__scaleResize(scaleX, scaleY)\n }\n}\n\n\nleaf.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResize(this, scaleX, scaleY)\n}\n\n\nleaf.resizeWidth = function (width: number, relative: ILocationType = 'inner'): void {\n const scale = width / this.getBounds('box', relative).width || 1 // 不允许为0\n this.scaleOf('top-left', scale, this.__.lockRatio ? scale : 1, true)\n}\n\n\nleaf.resizeHeight = function (height: number, relative: ILocationType = 'inner'): void {\n const scale = height / this.getBounds('box', relative).height || 1 // 不允许为0\n this.scaleOf('top-left', this.__.lockRatio ? scale : 1, scale, true)\n}\n\n\n// UI\n\nText.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { app, editConfig } = this, editor = app && app.editor, dragPoint = editor && editor.dragPoint\n\n if (this.__.resizeFontSize || (editConfig && editConfig.editSize === 'font-size') || (dragPoint && editor.mergedConfig.editSize === 'font-size')) {\n scaleResizeFontSize(this, scaleX, scaleY, dragPoint && dragPoint.direction)\n } else {\n const { __autoWidth, __autoHeight, textAlign, verticalAlign } = this.__, { boxBounds } = this.__layout\n if (__autoWidth && textAlign !== 'left' && scaleX !== 1) this.x += boxBounds.x\n if (__autoHeight && verticalAlign !== 'top' && scaleY !== 1) this.y += boxBounds.y\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\nPath.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizePath(this, scaleX, scaleY)\n}\n\n\nLine.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n this.width *= scaleX\n }\n}\n\n\nPolygon.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\n// group\n\nGroup.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizeGroup(this, scaleX, scaleY)\n}\n\n\nBox.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { resizeChildren, __autoSize } = this.__\n if (!(__autoSize && resizeChildren)) scaleResize(this, scaleX, scaleY)\n if (resizeChildren) scaleResizeGroup(this, scaleX, scaleY)\n}","export { PathScaler } from './PathScaler'\nexport { scaleResize, scaleResizeGroup, scaleResizeFontSize, scaleResizePath, scaleResizePoints } from './scaler'\n\nimport { Plugin } from '@leafer-ui/draw'\n\nimport './resize'\n\nPlugin.add('resize')"],"names":["M","L","C","Q","Z","N","D","X","G","F","O","P","U","Command","PathScaler","scale","data","scaleX","scaleY","command","i","len","length","scalePoints","splice","start","pointCount","end","matrix","MatrixHelper","get","topLeft","top","topRight","right","bottom","left","Direction9","scaleResize","leaf","pathInputed","scaleResizePath","width","height","scaleResizeFontSize","direction","fontScale","isUndefined","layout","__layout","boxBounds","affectScaleOrRotation","moveInner","x","y","fontSize","__","padding","lineHeight","letterSpacing","isArray","map","item","__autoWidth","__autoHeight","isObject","type","value","path","scaleResizePoints","points","forEach","p","scaleResizeGroup","group","children","a","d","transform","Leaf","prototype","tempPoint","tempMatrix","copy","toOuterPoint","noResize","boundsType","this","editConfig","editSize","__localMatrix","strokeBounds","__scaleResize","resizeWidth","relative","getBounds","scaleOf","lockRatio","resizeHeight","Text","app","editor","dragPoint","resizeFontSize","mergedConfig","textAlign","verticalAlign","Path","Line","Polygon","Group","Box","resizeChildren","__autoSize","Plugin","add"],"mappings":"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"}
1
+ {"version":3,"file":"resize.min.js","sources":["../../../../../../src/in/packages/resize/src/PathScaler.ts","../../../../../../src/in/packages/resize/src/scaler.ts","../../../../../../src/in/packages/resize/src/resize.ts","../../../../../../src/in/packages/resize/src/index.ts"],"sourcesContent":["import { IPathCommandData } from '@leafer-ui/interface'\n\nimport { PathCommandMap as Command } from '@leafer-ui/draw'\n\n\nconst { M, L, C, Q, Z, N, D, X, G, F, O, P, U } = Command\n\nexport const PathScaler = {\n\n scale(data: IPathCommandData, scaleX: number, scaleY: number): void {\n if (!data) return\n\n let command: number\n let i = 0, len = data.length\n\n while (i < len) {\n command = data[i]\n switch (command) {\n case M: //moveto(x, y)\n case L: //lineto(x, y)\n scalePoints(data, scaleX, scaleY, i, 1)\n i += 3\n break\n case C: //bezierCurveTo(x1, y1, x2, y2, x, y)\n scalePoints(data, scaleX, scaleY, i, 3)\n i += 7\n break\n case Q: //quadraticCurveTo(x1, y1, x, y)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case Z: //closepath()\n i += 1\n break\n\n // canvas command\n\n case N: // rect(x, y, width, height)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case D: // roundRect(x, y, width, height, radius1, radius2, radius3, radius4)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case X: // simple roundRect(x, y, width, height, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n case G: // ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case F: // simple ellipse(x, y, radiusX, radiusY)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case O: // arc(x, y, radius, startAngle, endAngle, anticlockwise)\n data[i] = G // to ellipse\n data.splice(i + 4, 0, data[i + 3], 0)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 7 + 2\n len += 2\n break\n case P: // simple arc(x, y, radius)\n data[i] = F // to simple ellipse\n data.splice(i + 4, 0, data[i + 3])\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 4 + 1\n len += 1\n break\n case U: // arcTo(x1, y1, x2, y2, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n }\n }\n\n },\n\n scalePoints(data: IPathCommandData, scaleX: number, scaleY: number, start?: number, pointCount?: number): void {\n for (let i = pointCount ? start + 1 : 0, end = pointCount ? i + pointCount * 2 : data.length; i < end; i += 2) {\n data[i] *= scaleX\n data[i + 1] *= scaleY\n }\n }\n\n}\n\nconst { scalePoints } = PathScaler","import { IBranch, ILeaf, ILine, IPolygon, IText, IPointData } from '@leafer-ui/interface'\nimport { Direction9, MatrixHelper, isArray, isObject, isUndefined, isTrackChanges, DataHelper } from '@leafer-ui/draw'\n\nimport { PathScaler } from './PathScaler'\n\n\nconst matrix = MatrixHelper.get()\nconst { topLeft, top, topRight, right, bottom, left } = Direction9\n\nexport function scaleResize(leaf: ILeaf, scaleX: number, scaleY: number): void {\n if (leaf.pathInputed) {\n scaleResizePath(leaf, scaleX, scaleY)\n } else {\n // fix: Text / Box auto width / height, need check scale === 1\n if (scaleX !== 1) leaf.width *= scaleX\n if (scaleY !== 1) leaf.height *= scaleY\n }\n}\n\nexport function scaleResizeFontSize(leaf: IText, scaleX: number, scaleY: number, direction?: Direction9): void {\n let fontScale = scaleX\n\n if (!isUndefined(direction)) {\n\n const layout = leaf.__layout\n\n let { width, height } = layout.boxBounds\n width *= scaleY - scaleX\n height *= scaleX - scaleY\n\n switch (direction) { // 编辑器控制点的位置\n case top:\n case bottom:\n fontScale = scaleY\n layout.affectScaleOrRotation ? leaf.moveInner(-width / 2, 0) : leaf.x -= width / 2\n break\n case left:\n case right:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height / 2) : leaf.y -= height / 2\n break\n case topLeft:\n case topRight:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height) : leaf.y -= height\n break\n }\n\n }\n\n leaf.fontSize *= fontScale\n\n const data = leaf.__, { padding, lineHeight, letterSpacing } = data\n if (padding) leaf.padding = isArray(padding) ? padding.map(item => item * fontScale) : padding * fontScale\n if (!data.__autoWidth) leaf.width *= fontScale\n if (!data.__autoHeight) leaf.height *= fontScale\n\n if (isObject(lineHeight)) {\n if (lineHeight.type === 'px') data.lineHeight = { type: 'px', value: lineHeight.value * fontScale }\n } else if (lineHeight) data.lineHeight = lineHeight * fontScale\n\n if (isObject(letterSpacing)) {\n if (letterSpacing.type === 'px') data.letterSpacing = { type: 'px', value: letterSpacing.value * fontScale }\n } else if (letterSpacing) data.letterSpacing = letterSpacing * fontScale\n\n}\n\nexport function scaleResizePath(leaf: ILeaf, scaleX: number, scaleY: number): void {\n let { path } = leaf.__\n if (!isTrackChanges(leaf.leafer)) path = [...path] // 避免产生引用,导致污染历史数据\n PathScaler.scale(path, scaleX, scaleY)\n leaf.path = path\n}\n\nexport function scaleResizePoints(leaf: ILine | IPolygon, scaleX: number, scaleY: number): void {\n let { points } = leaf\n const isOb = isObject(points[0])\n if (!isTrackChanges(leaf.leafer)) points = isOb ? DataHelper.clone(points) as IPointData[] : [...points] as number[] // 避免产生引用,导致污染历史数据\n isOb ? (points as IPointData[]).forEach(p => { p.x *= scaleX, p.y *= scaleY }) : PathScaler.scalePoints(points as number[], scaleX, scaleY)\n leaf.points = points\n}\n\n\nexport function scaleResizeGroup(group: IBranch, scaleX: number, scaleY: number): void {\n const { children } = group\n for (let i = 0; i < children.length; i++) {\n matrix.a = scaleX // must update\n matrix.d = scaleY\n children[i].transform(matrix, true)\n }\n}","import { IBoundsType, ILeaf, IPointData, IMatrixData, ILocationType } from '@leafer-ui/interface'\nimport { Leaf, Path, Line, Text, Polygon, Group, Box, UI, MatrixHelper } from '@leafer-ui/draw'\n\nimport { scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints } from './scaler'\n\n\n// leaf\nconst leaf = Leaf.prototype as ILeaf, tempPoint = {} as IPointData, tempMatrix = {} as IMatrixData, { copy, scale, toOuterPoint } = MatrixHelper\n\nleaf.scaleResize = function (scaleX: number, scaleY = scaleX, noResize?: boolean, boundsType?: IBoundsType): void {\n const data = this as UI\n if (noResize || (data.editConfig && data.editConfig.editSize === 'scale')) {\n data.scaleX *= scaleX\n data.scaleY *= scaleY\n } else {\n\n if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX\n if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY\n\n if (boundsType === 'stroke') {\n copy(tempMatrix, this.__localMatrix)\n if (scaleX < 0) scale(tempMatrix, -1, 1)\n if (scaleY < 0) scale(tempMatrix, 1, -1)\n\n const { boxBounds, strokeBounds } = this.__layout, { x, y, width, height } = strokeBounds\n tempPoint.x = (x - boxBounds.x) * (scaleX - 1)\n tempPoint.y = (y - boxBounds.y) * (scaleY - 1)\n toOuterPoint(tempMatrix, tempPoint, tempPoint, true)\n this.x += tempPoint.x\n this.y += tempPoint.y\n\n scaleX = (width * scaleX - (width - boxBounds.width)) / boxBounds.width\n scaleY = (height * scaleY - (height - boxBounds.height)) / boxBounds.height\n }\n\n this.__scaleResize(scaleX, scaleY)\n }\n}\n\n\nleaf.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResize(this, scaleX, scaleY)\n}\n\n\nleaf.resizeWidth = function (width: number, relative: ILocationType = 'inner'): void {\n const scale = width / this.getBounds('box', relative).width || 1 // 不允许为0\n this.scaleOf('top-left', scale, this.__.lockRatio ? scale : 1, true)\n}\n\n\nleaf.resizeHeight = function (height: number, relative: ILocationType = 'inner'): void {\n const scale = height / this.getBounds('box', relative).height || 1 // 不允许为0\n this.scaleOf('top-left', this.__.lockRatio ? scale : 1, scale, true)\n}\n\n\n// UI\n\nText.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { app, editConfig } = this, editor = app && app.editor, dragPoint = editor && editor.dragPoint\n\n if (this.__.resizeFontSize || (editConfig && editConfig.editSize === 'font-size') || (dragPoint && editor.mergedConfig.editSize === 'font-size')) {\n scaleResizeFontSize(this, scaleX, scaleY, dragPoint && dragPoint.direction)\n } else {\n const { __autoWidth, __autoHeight, textAlign, verticalAlign } = this.__, { boxBounds } = this.__layout\n if (__autoWidth && textAlign !== 'left' && scaleX !== 1) this.x += boxBounds.x\n if (__autoHeight && verticalAlign !== 'top' && scaleY !== 1) this.y += boxBounds.y\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\nPath.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizePath(this, scaleX, scaleY)\n}\n\n\nLine.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n this.width *= scaleX\n }\n}\n\n\nPolygon.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\n// group\n\nGroup.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizeGroup(this, scaleX, scaleY)\n}\n\n\nBox.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { resizeChildren, __autoSize } = this.__\n if (!(__autoSize && resizeChildren)) scaleResize(this, scaleX, scaleY)\n if (resizeChildren) scaleResizeGroup(this, scaleX, scaleY)\n}","export { PathScaler } from './PathScaler'\nexport { scaleResize, scaleResizeGroup, scaleResizeFontSize, scaleResizePath, scaleResizePoints } from './scaler'\n\nimport { Plugin } from '@leafer-ui/draw'\n\nimport './resize'\n\nPlugin.add('resize')"],"names":["M","L","C","Q","Z","N","D","X","G","F","O","P","U","Command","PathScaler","scale","data","scaleX","scaleY","command","i","len","length","scalePoints","splice","start","pointCount","end","matrix","MatrixHelper","get","topLeft","top","topRight","right","bottom","left","Direction9","scaleResize","leaf","pathInputed","scaleResizePath","width","height","scaleResizeFontSize","direction","fontScale","isUndefined","layout","__layout","boxBounds","affectScaleOrRotation","moveInner","x","y","fontSize","__","padding","lineHeight","letterSpacing","isArray","map","item","__autoWidth","__autoHeight","isObject","type","value","path","isTrackChanges","leafer","scaleResizePoints","points","isOb","DataHelper","clone","forEach","p","scaleResizeGroup","group","children","a","d","transform","Leaf","prototype","tempPoint","tempMatrix","copy","toOuterPoint","noResize","boundsType","this","editConfig","editSize","__localMatrix","strokeBounds","__scaleResize","resizeWidth","relative","getBounds","scaleOf","lockRatio","resizeHeight","Text","app","editor","dragPoint","resizeFontSize","mergedConfig","textAlign","verticalAlign","Path","Line","Polygon","Group","Box","resizeChildren","__autoSize","Plugin","add"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leafer-in/resize",
3
- "version": "2.2.10",
3
+ "version": "2.3.0",
4
4
  "description": "@leafer-in/resize",
5
5
  "author": "Chao (Leafer) Wan",
6
6
  "license": "MIT",
@@ -34,8 +34,8 @@
34
34
  "leaferjs"
35
35
  ],
36
36
  "peerDependencies": {
37
- "@leafer-ui/draw": "^2.2.10",
38
- "@leafer-ui/interface": "^2.2.10",
39
- "@leafer-in/interface": "^2.2.10"
37
+ "@leafer-ui/draw": "^2.3.0",
38
+ "@leafer-ui/interface": "^2.3.0",
39
+ "@leafer-in/interface": "^2.3.0"
40
40
  }
41
41
  }
package/src/scaler.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { IBranch, ILeaf, ILine, IPolygon, IText, IPointData } from '@leafer-ui/interface'
2
- import { Direction9, MatrixHelper, isArray, isObject, isUndefined } from '@leafer-ui/draw'
2
+ import { Direction9, MatrixHelper, isArray, isObject, isUndefined, isTrackChanges, DataHelper } from '@leafer-ui/draw'
3
3
 
4
4
  import { PathScaler } from './PathScaler'
5
5
 
@@ -64,13 +64,17 @@ export function scaleResizeFontSize(leaf: IText, scaleX: number, scaleY: number,
64
64
  }
65
65
 
66
66
  export function scaleResizePath(leaf: ILeaf, scaleX: number, scaleY: number): void {
67
- PathScaler.scale(leaf.__.path, scaleX, scaleY)
68
- leaf.path = leaf.__.path
67
+ let { path } = leaf.__
68
+ if (!isTrackChanges(leaf.leafer)) path = [...path] // 避免产生引用,导致污染历史数据
69
+ PathScaler.scale(path, scaleX, scaleY)
70
+ leaf.path = path
69
71
  }
70
72
 
71
73
  export function scaleResizePoints(leaf: ILine | IPolygon, scaleX: number, scaleY: number): void {
72
- const { points } = leaf
73
- isObject(points[0]) ? (points as IPointData[]).forEach(p => { p.x *= scaleX, p.y *= scaleY }) : PathScaler.scalePoints(points as number[], scaleX, scaleY)
74
+ let { points } = leaf
75
+ const isOb = isObject(points[0])
76
+ if (!isTrackChanges(leaf.leafer)) points = isOb ? DataHelper.clone(points) as IPointData[] : [...points] as number[] // 避免产生引用,导致污染历史数据
77
+ isOb ? (points as IPointData[]).forEach(p => { p.x *= scaleX, p.y *= scaleY }) : PathScaler.scalePoints(points as number[], scaleX, scaleY)
74
78
  leaf.points = points
75
79
  }
76
80