@leafer/worker 2.1.4 → 2.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"worker.esm.min.js","sources":["../../../../../../../src/leafer/packages/interface/src/path/IPathCommand.ts"],"sourcesContent":["import { IPointData } from '../math/IMath'\nimport { IWindingRule } from '../canvas/ICanvas'\n\ntype Command = number\ntype x = number\ntype y = number\ntype x1 = number\ntype y1 = number\ntype x2 = number\ntype y2 = number\ntype radiusX = number\ntype radiusY = number\ntype xAxisRotation = number\ntype largeArcFlag = number\ntype sweepFlag = number\n\n\nexport type MCommandData = [Command, x, y]\nexport type HCommandData = [Command, x]\nexport type VCommandData = [Command, y]\nexport type LCommandData = MCommandData\n\nexport type CCommandData = [Command, x1, y1, x2, y2, x, y]\nexport type SCommandData = [Command, x2, y2, x, y]\n\nexport type QCommandData = [Command, x1, y1, x, y]\nexport type TCommandData = [Command, x, y]\n\nexport type ZCommandData = [Command]\n\nexport type ACommandData = [Command, radiusX, radiusY, xAxisRotation, largeArcFlag, sweepFlag, x, y]\n\n\n// 非svg标准的canvas绘图命令\ntype width = number\ntype height = number\ntype rotation = number\ntype startAngle = number\ntype endAngle = number\ntype anticlockwise = boolean\ntype cornerRadius = number | number[]\ntype radius = number\n\nexport type RectCommandData = [Command, x, y, width, height]\nexport type RoundRectCommandData = [Command, x, y, width, height, cornerRadius]\nexport type EllipseCommandData = [Command, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise]\nexport type ArcCommandData = [Command, x, y, radius, startAngle, endAngle, anticlockwise]\nexport type ArcToCommandData = [Command, x1, y1, x2, y2, radius]\n\n\nexport type CanvasPathCommand = 1 | 2 | 5 | 7 | 11 // M | L | C | Q | Z canvas可以绘制的命令\n\nexport type IPathCommandData = number[] // ...(MCommandData | LCommandData | CCommandData | QCommandData | ZCommandData)\n\nexport interface IPathCommandDataWithRadius {\n data: IPathCommandData\n radius: number[]\n}\n\nexport interface IPathCommandDataWithWindingRule {\n data: IPathCommandData\n windingRule?: IWindingRule\n}\n\n// 路径命令对象\nexport interface MoveToCommandObject {\n name: 'M'\n x: number\n y: number\n}\nexport interface LineToCommandObject {\n name: 'L'\n x: number\n y: number\n}\n\nexport interface BezierCurveToCommandObject {\n name: 'C'\n x1: number\n y1: number\n x2: number\n y2: number\n x: number\n y: number\n}\n\nexport interface QuadraticCurveToCommandObject {\n name: 'Q'\n x1: number\n y1: number\n x: number\n y: number\n}\n\nexport interface ClosePathCommandObject {\n name: 'Z'\n}\n\nexport type IPathCommandObject = MoveToCommandObject | LineToCommandObject | BezierCurveToCommandObject | QuadraticCurveToCommandObject | ClosePathCommandObject // M | L | C | Q | Z canvas可以绘制的命令\n\n\n// 可视化路径节点\n\nexport interface IPathCommandNodeBase {\n name: 'M^' | 'L^' | 'C^' | 'Z^'\n x: number\n y: number\n r?: number // 圆角半径\n a?: IPointData // 第一个手柄,连接上一个节点\n b?: IPointData // 第二个手柄,连接下一个节点\n ab?: PathNodeHandleType // 手柄类型\n}\n\nexport interface MoveToCommandNode extends IPathCommandNodeBase {\n name: 'M^'\n}\nexport interface LineToCommandNode extends IPathCommandNodeBase {\n name: 'L^'\n}\n\nexport interface BezierCurveToCommandNode extends IPathCommandNodeBase {\n name: 'C^'\n}\n\nexport interface ClosePathCommandNode {\n name: 'Z^'\n x?: number\n y?: number\n r?: number // 圆角半径\n a?: IPointData\n b?: IPointData\n ab?: PathNodeHandleType\n}\n\nexport type IPathCommandNode = MoveToCommandNode | LineToCommandNode | BezierCurveToCommandNode | ClosePathCommandNode // M | L | C | Z 路径节点命令(适合可视化编辑)\n\nexport enum PathNodeHandleType { // 手柄类型\n none = 1, // 无手柄\n free = 2, // 每个手柄自由控制\n mirrorAngle = 3, // 仅镜像角度\n mirror = 4, // 镜像角度和长度\n}\n\nexport type PathNodeHandleName = 'a' | 'b' // 手柄名称\n\nexport interface IPathNodeBase {\n pathNode: IPathCommandNode\n}"],"names":["PathNodeHandleType"],"mappings":"ktBAwIYA,GAAZ,SAAYA,GACRA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,OAAA,GAAA,QACH,CALD,CAAYA,IAAAA,EAAkB,CAAA"}
1
+ {"version":3,"file":"worker.esm.min.js","sources":["../../../../../../../src/leafer/packages/interface/src/path/IPathCommand.ts"],"sourcesContent":["import { IPointData } from '../math/IMath'\nimport { IWindingRule } from '../canvas/ICanvas'\n\ntype Command = number\ntype x = number\ntype y = number\ntype x1 = number\ntype y1 = number\ntype x2 = number\ntype y2 = number\ntype radiusX = number\ntype radiusY = number\ntype xAxisRotation = number\ntype largeArcFlag = number\ntype sweepFlag = number\n\n\nexport type MCommandData = [Command, x, y]\nexport type HCommandData = [Command, x]\nexport type VCommandData = [Command, y]\nexport type LCommandData = MCommandData\n\nexport type CCommandData = [Command, x1, y1, x2, y2, x, y]\nexport type SCommandData = [Command, x2, y2, x, y]\n\nexport type QCommandData = [Command, x1, y1, x, y]\nexport type TCommandData = [Command, x, y]\n\nexport type ZCommandData = [Command]\n\nexport type ACommandData = [Command, radiusX, radiusY, xAxisRotation, largeArcFlag, sweepFlag, x, y]\n\n\n// 非svg标准的canvas绘图命令\ntype width = number\ntype height = number\ntype rotation = number\ntype startAngle = number\ntype endAngle = number\ntype anticlockwise = boolean\ntype cornerRadius = number | number[]\ntype radius = number\n\nexport type RectCommandData = [Command, x, y, width, height]\nexport type RoundRectCommandData = [Command, x, y, width, height, cornerRadius]\nexport type EllipseCommandData = [Command, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise]\nexport type ArcCommandData = [Command, x, y, radius, startAngle, endAngle, anticlockwise]\nexport type ArcToCommandData = [Command, x1, y1, x2, y2, radius]\n\n\nexport type CanvasPathCommand = 1 | 2 | 5 | 7 | 11 // M | L | C | Q | Z canvas可以绘制的命令\n\nexport type IPathCommandData = number[] // ...(MCommandData | LCommandData | CCommandData | QCommandData | ZCommandData)\n\nexport interface IPathCommandDataWithRadius {\n data: IPathCommandData\n radius: number[]\n}\n\nexport interface IPathCommandDataWithWindingRule {\n data: IPathCommandData\n windingRule?: IWindingRule\n}\n\n// 路径命令对象\nexport interface MoveToCommandObject {\n name: 'M'\n x: number\n y: number\n pressure?: number // 压感\n}\nexport interface LineToCommandObject {\n name: 'L'\n x: number\n y: number\n pressure?: number\n}\n\nexport interface BezierCurveToCommandObject {\n name: 'C'\n x1: number\n y1: number\n x2: number\n y2: number\n x: number\n y: number\n pressure?: number\n}\n\nexport interface QuadraticCurveToCommandObject {\n name: 'Q'\n x1: number\n y1: number\n x: number\n y: number\n pressure?: number\n}\n\nexport interface ClosePathCommandObject {\n name: 'Z'\n}\n\nexport type IPathCommandObject = MoveToCommandObject | LineToCommandObject | BezierCurveToCommandObject | QuadraticCurveToCommandObject | ClosePathCommandObject // M | L | C | Q | Z canvas可以绘制的命令\n\n\n// 可视化路径节点\n\nexport interface IPathCommandNodeBase {\n name: 'M^' | 'L^' | 'C^' | 'Z^'\n x: number\n y: number\n r?: number // 圆角半径\n a?: IPointData // 第一个手柄,连接上一个节点\n b?: IPointData // 第二个手柄,连接下一个节点\n ab?: PathNodeHandleType // 手柄类型\n pressure?: number // 压感\n}\n\nexport interface MoveToCommandNode extends IPathCommandNodeBase {\n name: 'M^'\n}\nexport interface LineToCommandNode extends IPathCommandNodeBase {\n name: 'L^'\n}\n\nexport interface BezierCurveToCommandNode extends IPathCommandNodeBase {\n name: 'C^'\n}\n\nexport interface ClosePathCommandNode {\n name: 'Z^'\n x?: number\n y?: number\n r?: number // 圆角半径\n a?: IPointData\n b?: IPointData\n ab?: PathNodeHandleType\n}\n\nexport type IPathCommandNode = MoveToCommandNode | LineToCommandNode | BezierCurveToCommandNode | ClosePathCommandNode // M | L | C | Z 路径节点命令(适合可视化编辑)\n\nexport enum PathNodeHandleType { // 手柄类型\n none = 1, // 无手柄\n free = 2, // 每个手柄自由控制\n mirrorAngle = 3, // 仅镜像角度\n mirror = 4, // 镜像角度和长度\n}\n\nexport type PathNodeHandleName = 'a' | 'b' // 手柄名称\n\nexport interface IPathNodeBase {\n pathNode: IPathCommandNode\n}"],"names":["PathNodeHandleType"],"mappings":"ktBA6IYA,GAAZ,SAAYA,GACRA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,OAAA,GAAA,QACH,CALD,CAAYA,IAAAA,EAAkB,CAAA"}
package/dist/worker.js CHANGED
@@ -240,7 +240,7 @@ var LeaferUI = function(exports) {
240
240
  RUNTIME: "runtime",
241
241
  LEAF: "leaf",
242
242
  TASK: "task",
243
- CNAVAS: "canvas",
243
+ CANVAS: "canvas",
244
244
  IMAGE: "image",
245
245
  types: {},
246
246
  create(typeName) {
@@ -869,7 +869,7 @@ var LeaferUI = function(exports) {
869
869
  return quick ? t.x === point.x && t.y === point.y : float$5(t.x) === float$5(point.x) && float$5(t.y) === float$5(point.y);
870
870
  },
871
871
  reset(t) {
872
- P$7.reset(t);
872
+ t.x = t.y = 0;
873
873
  }
874
874
  };
875
875
  const P$7 = PointHelper;
@@ -1073,6 +1073,7 @@ var LeaferUI = function(exports) {
1073
1073
  }
1074
1074
  reset() {
1075
1075
  MatrixHelper.reset(this);
1076
+ return this;
1076
1077
  }
1077
1078
  }
1078
1079
  const tempMatrix$2 = new Matrix;
@@ -2177,7 +2178,7 @@ var LeaferUI = function(exports) {
2177
2178
  this.worldTransform = {};
2178
2179
  if (!config) config = minSize;
2179
2180
  this.manager = manager;
2180
- this.innerId = IncrementId.create(IncrementId.CNAVAS);
2181
+ this.innerId = IncrementId.create(IncrementId.CANVAS);
2181
2182
  const {width: width, height: height, pixelRatio: pixelRatio} = config;
2182
2183
  this.autoLayout = !width || !height;
2183
2184
  this.size.pixelRatio = pixelRatio || Platform.devicePixelRatio;
@@ -2327,6 +2328,7 @@ var LeaferUI = function(exports) {
2327
2328
  }
2328
2329
  useGrayscaleAlpha(bounds) {
2329
2330
  this.setTempPixelBounds(bounds, true, true);
2331
+ if (!tempPixelBounds.width || !tempPixelBounds.height) return;
2330
2332
  let alpha, pixel;
2331
2333
  const {context: context} = this, imageData = context.getImageData(tempPixelBounds.x, tempPixelBounds.y, tempPixelBounds.width, tempPixelBounds.height), {data: data} = imageData;
2332
2334
  for (let i = 0, len = data.length; i < len; i += 4) {
@@ -2607,10 +2609,10 @@ var LeaferUI = function(exports) {
2607
2609
  const centerY = y1 + c * sin$4(startRadian + totalRadian / 2 + PI_2 * sign);
2608
2610
  startRadian -= PI_2 * sign;
2609
2611
  endRadian -= PI_2 * sign;
2610
- return ellipse$8(data, centerX, centerY, radius, radius, 0, startRadian / OneRadian, endRadian / OneRadian, anticlockwise, setPointBounds, setEndPoint, setStartPoint);
2612
+ return ellipse$7(data, centerX, centerY, radius, radius, 0, startRadian / OneRadian, endRadian / OneRadian, anticlockwise, setPointBounds, setEndPoint, setStartPoint);
2611
2613
  },
2612
2614
  arc(data, x, y, radius, startAngle, endAngle, anticlockwise, setPointBounds, setEndPoint, setStartPoint) {
2613
- return ellipse$8(data, x, y, radius, radius, 0, startAngle, endAngle, anticlockwise, setPointBounds, setEndPoint, setStartPoint);
2615
+ return ellipse$7(data, x, y, radius, radius, 0, startAngle, endAngle, anticlockwise, setPointBounds, setEndPoint, setStartPoint);
2614
2616
  },
2615
2617
  ellipse(data, cx, cy, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise, setPointBounds, setEndPoint, setStartPoint) {
2616
2618
  const rotationRadian = rotation * OneRadian;
@@ -2737,9 +2739,9 @@ var LeaferUI = function(exports) {
2737
2739
  };
2738
2740
  }
2739
2741
  };
2740
- const {getPointAndSet: getPointAndSet, toTwoPointBounds: toTwoPointBounds$1, ellipse: ellipse$8} = BezierHelper;
2742
+ const {getPointAndSet: getPointAndSet, toTwoPointBounds: toTwoPointBounds$1, ellipse: ellipse$7} = BezierHelper;
2741
2743
  const {sin: sin$3, cos: cos$3, sqrt: sqrt$2, atan2: atan2} = Math;
2742
- const {ellipse: ellipse$7} = BezierHelper;
2744
+ const {ellipse: ellipse$6} = BezierHelper;
2743
2745
  const EllipseHelper = {
2744
2746
  ellipticalArc(data, fromX, fromY, radiusX, radiusY, rotation, largeFlag, sweepFlag, toX, toY, curveMode) {
2745
2747
  const halfX = (toX - fromX) / 2;
@@ -2776,7 +2778,7 @@ var LeaferUI = function(exports) {
2776
2778
  const centerY = fromY + halfY + rotationSin * cx + rotationCos * cy;
2777
2779
  const anticlockwise = totalRadian < 0 ? 1 : 0;
2778
2780
  if (curveMode || Platform.ellipseToCurve) {
2779
- ellipse$7(data, centerX, centerY, radiusX, radiusY, rotation, startRadian / OneRadian, endRadian / OneRadian, anticlockwise);
2781
+ ellipse$6(data, centerX, centerY, radiusX, radiusY, rotation, startRadian / OneRadian, endRadian / OneRadian, anticlockwise);
2780
2782
  } else {
2781
2783
  if (radiusX === radiusY && !rotation) {
2782
2784
  data.push(PathCommandMap.O, centerX, centerY, radiusX, startRadian / OneRadian, endRadian / OneRadian, anticlockwise);
@@ -2795,7 +2797,7 @@ var LeaferUI = function(exports) {
2795
2797
  }
2796
2798
  };
2797
2799
  const {M: M$a, m: m, L: L$a, l: l, H: H, h: h, V: V, v: v, C: C$8, c: c, S: S$1, s: s, Q: Q$6, q: q, T: T, t: t, A: A, a: a, Z: Z$8, z: z, N: N$5, D: D$6, X: X$5, G: G$5, F: F$6, O: O$6, P: P$5, U: U$5} = PathCommandMap;
2798
- const {rect: rect$3, roundRect: roundRect$2, arcTo: arcTo$4, arc: arc$3, ellipse: ellipse$6, quadraticCurveTo: quadraticCurveTo$1} = BezierHelper;
2800
+ const {rect: rect$3, roundRect: roundRect$2, arcTo: arcTo$4, arc: arc$3, ellipse: ellipse$5, quadraticCurveTo: quadraticCurveTo$1} = BezierHelper;
2799
2801
  const {ellipticalArc: ellipticalArc} = EllipseHelper;
2800
2802
  const debug$f = Debug.get("PathConvert");
2801
2803
  const setEndPoint$1 = {};
@@ -3027,14 +3029,14 @@ var LeaferUI = function(exports) {
3027
3029
  break;
3028
3030
 
3029
3031
  case G$5:
3030
- ellipse$6(curveMode ? data : copyData(data, old, i, 9), old[i + 1], old[i + 2], old[i + 3], old[i + 4], old[i + 5], old[i + 6], old[i + 7], old[i + 8], null, setEndPoint$1);
3032
+ ellipse$5(curveMode ? data : copyData(data, old, i, 9), old[i + 1], old[i + 2], old[i + 3], old[i + 4], old[i + 5], old[i + 6], old[i + 7], old[i + 8], null, setEndPoint$1);
3031
3033
  x = setEndPoint$1.x;
3032
3034
  y = setEndPoint$1.y;
3033
3035
  i += 9;
3034
3036
  break;
3035
3037
 
3036
3038
  case F$6:
3037
- curveMode ? ellipse$6(data, old[i + 1], old[i + 2], old[i + 3], old[i + 4], 0, 0, 360, false) : copyData(data, old, i, 5);
3039
+ curveMode ? ellipse$5(data, old[i + 1], old[i + 2], old[i + 3], old[i + 4], 0, 0, 360, false) : copyData(data, old, i, 5);
3038
3040
  x = old[i + 1] + old[i + 3];
3039
3041
  y = old[i + 2];
3040
3042
  i += 5;
@@ -3182,7 +3184,7 @@ var LeaferUI = function(exports) {
3182
3184
  drawEllipse(data, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {
3183
3185
  BezierHelper.ellipse(null, x, y, radiusX, radiusY, isNull(rotation) ? 0 : rotation, isNull(startAngle) ? 0 : startAngle, isNull(endAngle) ? 360 : endAngle, anticlockwise, null, null, startPoint);
3184
3186
  data.push(M$9, startPoint.x, startPoint.y);
3185
- ellipse$5(data, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
3187
+ ellipse$4(data, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
3186
3188
  },
3187
3189
  drawArc(data, x, y, radius, startAngle, endAngle, anticlockwise) {
3188
3190
  BezierHelper.arc(null, x, y, radius, isNull(startAngle) ? 0 : startAngle, isNull(endAngle) ? 360 : endAngle, anticlockwise, null, null, startPoint);
@@ -3193,8 +3195,8 @@ var LeaferUI = function(exports) {
3193
3195
  BezierHelper.points(data, points, curve, close);
3194
3196
  }
3195
3197
  };
3196
- const {ellipse: ellipse$5, arc: arc$2} = PathCommandDataHelper;
3197
- const {moveTo: moveTo$4, lineTo: lineTo$3, quadraticCurveTo: quadraticCurveTo, bezierCurveTo: bezierCurveTo, closePath: closePath$3, beginPath: beginPath, rect: rect$2, roundRect: roundRect$1, ellipse: ellipse$4, arc: arc$1, arcTo: arcTo$3, drawEllipse: drawEllipse, drawArc: drawArc, drawPoints: drawPoints$2} = PathCommandDataHelper;
3198
+ const {ellipse: ellipse$4, arc: arc$2} = PathCommandDataHelper;
3199
+ const {moveTo: moveTo$4, lineTo: lineTo$3, quadraticCurveTo: quadraticCurveTo, bezierCurveTo: bezierCurveTo, closePath: closePath$3, beginPath: beginPath, rect: rect$2, roundRect: roundRect$1, ellipse: ellipse$3, arc: arc$1, arcTo: arcTo$3, drawEllipse: drawEllipse, drawArc: drawArc, drawPoints: drawPoints$2} = PathCommandDataHelper;
3198
3200
  class PathCreator {
3199
3201
  set path(value) {
3200
3202
  this.__path = value;
@@ -3250,7 +3252,7 @@ var LeaferUI = function(exports) {
3250
3252
  return this;
3251
3253
  }
3252
3254
  ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {
3253
- ellipse$4(this.__path, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
3255
+ ellipse$3(this.__path, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
3254
3256
  this.paint();
3255
3257
  return this;
3256
3258
  }
@@ -3367,7 +3369,7 @@ var LeaferUI = function(exports) {
3367
3369
  }
3368
3370
  };
3369
3371
  const {M: M$7, L: L$7, C: C$5, Q: Q$3, Z: Z$5, N: N$2, D: D$3, X: X$2, G: G$2, F: F$3, O: O$3, P: P$2, U: U$2} = PathCommandMap;
3370
- const {toTwoPointBounds: toTwoPointBounds, toTwoPointBoundsByQuadraticCurve: toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$2, arc: arc, ellipse: ellipse$3} = BezierHelper;
3372
+ const {toTwoPointBounds: toTwoPointBounds, toTwoPointBoundsByQuadraticCurve: toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$2, arc: arc, ellipse: ellipse$2} = BezierHelper;
3371
3373
  const {addPointBounds: addPointBounds, copy: copy$9, addPoint: addPoint$1, setPoint: setPoint$3, addBounds: addBounds, toBounds: toBounds$2} = TwoPointBoundsHelper;
3372
3374
  const debug$d = Debug.get("PathBounds");
3373
3375
  let radius, radiusX, radiusY;
@@ -3443,7 +3445,7 @@ var LeaferUI = function(exports) {
3443
3445
  break;
3444
3446
 
3445
3447
  case G$2:
3446
- ellipse$3(null, data[i + 1], data[i + 2], data[i + 3], data[i + 4], data[i + 5], data[i + 6], data[i + 7], data[i + 8], tempPointBounds, setEndPoint);
3448
+ ellipse$2(null, data[i + 1], data[i + 2], data[i + 3], data[i + 4], data[i + 5], data[i + 6], data[i + 7], data[i + 8], tempPointBounds, setEndPoint);
3447
3449
  i === 0 ? copy$9(setPointBounds, tempPointBounds) : addPointBounds(setPointBounds, tempPointBounds);
3448
3450
  x = setEndPoint.x;
3449
3451
  y = setEndPoint.y;
@@ -5207,6 +5209,7 @@ var LeaferUI = function(exports) {
5207
5209
  this.renderChanged = true;
5208
5210
  this.renderSpread || (this.renderSpread = 1);
5209
5211
  this.boundsChanged = true;
5212
+ this.hitCanvasChanged = true;
5210
5213
  }
5211
5214
  scaleChange() {
5212
5215
  this.scaleChanged = true;
@@ -6053,10 +6056,6 @@ var LeaferUI = function(exports) {
6053
6056
  }
6054
6057
  }
6055
6058
  }
6056
- set(_data, _isTemp) {}
6057
- get(_name) {
6058
- return undefined;
6059
- }
6060
6059
  setAttr(name, value) {
6061
6060
  this[name] = value;
6062
6061
  }
@@ -6073,37 +6072,10 @@ var LeaferUI = function(exports) {
6073
6072
  toString(options) {
6074
6073
  return JSON.stringify(this.toJSON(options));
6075
6074
  }
6076
- toSVG() {
6077
- return undefined;
6078
- }
6079
- __SVG(_data) {}
6080
- toHTML() {
6081
- return undefined;
6082
- }
6083
- __setAttr(_attrName, _newValue) {
6084
- return true;
6085
- }
6086
- __getAttr(_attrName) {
6087
- return undefined;
6088
- }
6089
- setProxyAttr(_attrName, _newValue) {}
6090
- getProxyAttr(_attrName) {
6091
- return undefined;
6092
- }
6093
- find(_condition, _options) {
6094
- return undefined;
6095
- }
6096
- findTag(_tag) {
6097
- return undefined;
6098
- }
6099
- findOne(_condition, _options) {
6100
- return undefined;
6101
- }
6102
- findId(_id) {
6103
- return undefined;
6075
+ scaleResize(scaleX, scaleY = scaleX, _noResize, _boundsType) {
6076
+ this.scaleX *= scaleX;
6077
+ this.scaleY *= scaleY;
6104
6078
  }
6105
- focus(_value) {}
6106
- updateState() {}
6107
6079
  updateLayout() {
6108
6080
  this.__layout.update();
6109
6081
  }
@@ -6119,27 +6091,6 @@ var LeaferUI = function(exports) {
6119
6091
  __extraUpdate() {
6120
6092
  if (this.leaferIsReady) this.leafer.layouter.addExtra(this);
6121
6093
  }
6122
- __updateWorldMatrix() {}
6123
- __updateLocalMatrix() {}
6124
- __updateWorldBounds() {}
6125
- __updateLocalBounds() {}
6126
- __updateLocalBoxBounds() {}
6127
- __updateLocalStrokeBounds() {}
6128
- __updateLocalRenderBounds() {}
6129
- __updateBoxBounds(_secondLayout, _bounds) {}
6130
- __updateContentBounds() {}
6131
- __updateStrokeBounds(_bounds) {}
6132
- __updateRenderBounds(_bounds) {}
6133
- __updateAutoLayout() {}
6134
- __updateFlowLayout() {}
6135
- __updateNaturalSize() {}
6136
- __updateStrokeSpread() {
6137
- return 0;
6138
- }
6139
- __updateRenderSpread() {
6140
- return 0;
6141
- }
6142
- __onUpdateSize() {}
6143
6094
  __updateEraser(value) {
6144
6095
  this.__hasEraser = value ? true : this.children.some(item => item.__.eraser);
6145
6096
  }
@@ -6153,7 +6104,6 @@ var LeaferUI = function(exports) {
6153
6104
  __updateMask(_value) {
6154
6105
  this.__hasMask = this.children.some(item => item.__.mask && item.__.visible && item.__.opacity);
6155
6106
  }
6156
- __renderMask(_canvas, _options) {}
6157
6107
  __getNowWorld(options) {
6158
6108
  if (options.matrix) {
6159
6109
  if (!this.__cameraWorld) this.__cameraWorld = {};
@@ -6309,76 +6259,12 @@ var LeaferUI = function(exports) {
6309
6259
  flip(axis, transition) {
6310
6260
  transform(this, getFlipTransform(this, axis), false, transition);
6311
6261
  }
6312
- scaleResize(scaleX, scaleY = scaleX, _noResize, _boundsType) {
6313
- this.scaleX *= scaleX;
6314
- this.scaleY *= scaleY;
6315
- }
6316
- __scaleResize(_scaleX, _scaleY) {}
6317
- resizeWidth(_width) {}
6318
- resizeHeight(_height) {}
6319
- hit(_world, _hitRadius) {
6320
- return true;
6321
- }
6322
- __hitWorld(_point, _forceHitFill) {
6323
- return true;
6324
- }
6325
- __hit(_local, _forceHitFill) {
6326
- return true;
6327
- }
6328
- __hitFill(_inner) {
6329
- return true;
6330
- }
6331
- __hitStroke(_inner, _strokeWidth) {
6332
- return true;
6333
- }
6334
- __hitPixel(_inner) {
6335
- return true;
6336
- }
6337
- __drawHitPath(_canvas) {}
6338
- __updateHitCanvas() {}
6339
- __render(_canvas, _options) {}
6340
- __drawFast(_canvas, _options) {}
6341
- __draw(_canvas, _options, _originCanvas) {}
6342
- __clip(_canvas, _options) {}
6343
- __renderShape(_canvas, _options) {}
6344
- __drawShape(_canvas, _options) {}
6345
- __updateWorldOpacity() {}
6346
- __updateChange() {}
6347
- __drawPath(_canvas) {}
6348
- __drawRenderPath(_canvas) {}
6349
- __updatePath() {}
6350
- __updateRenderPath(_updateCache) {}
6351
- getMotionPathData() {
6352
- return Plugin.need("path");
6353
- }
6354
- getMotionPoint(_motionDistance) {
6355
- return Plugin.need("path");
6356
- }
6357
- getMotionTotal() {
6358
- return 0;
6359
- }
6360
- __updateMotionPath() {}
6361
- __runAnimation(_type, _complete) {}
6362
- __updateSortChildren() {}
6363
- add(_child, _index) {}
6364
6262
  remove(_child, destroy) {
6365
6263
  if (this.parent) this.parent.remove(this, destroy);
6366
6264
  }
6367
6265
  dropTo(parent, index, resize) {
6368
6266
  drop(this, parent, index, resize);
6369
6267
  }
6370
- on(_type, _listener, _options) {}
6371
- off(_type, _listener, _options) {}
6372
- on_(_type, _listener, _bind, _options) {
6373
- return undefined;
6374
- }
6375
- off_(_id) {}
6376
- once(_type, _listener, _captureOrBind, _capture) {}
6377
- emit(_type, _event, _capture) {}
6378
- emitEvent(_event, _capture) {}
6379
- hasEvent(_type, _capture) {
6380
- return false;
6381
- }
6382
6268
  static changeAttr(attrName, defaultValue, fn) {
6383
6269
  fn ? this.addAttr(attrName, defaultValue, fn) : defineDataProcessor(this.prototype, attrName, defaultValue);
6384
6270
  }
@@ -6674,7 +6560,7 @@ var LeaferUI = function(exports) {
6674
6560
  this.levelMap = null;
6675
6561
  }
6676
6562
  }
6677
- const version = "2.1.4";
6563
+ const version = "2.1.5";
6678
6564
  class LeaferCanvas extends LeaferCanvasBase {
6679
6565
  get allowBackgroundColor() {
6680
6566
  return true;
@@ -8080,17 +7966,12 @@ var LeaferUI = function(exports) {
8080
7966
  if (!path) this.__drawPathByBox(pen);
8081
7967
  return pen;
8082
7968
  }
8083
- reset(_data) {}
8084
7969
  set(data, _transition) {
8085
7970
  if (data) Object.assign(this, data);
8086
7971
  }
8087
7972
  get(name) {
8088
7973
  return isString(name) ? this.__.__getInput(name) : this.__.__getInputData(name);
8089
7974
  }
8090
- createProxyData() {
8091
- return undefined;
8092
- }
8093
- clearProxyData() {}
8094
7975
  find(_condition, _options) {
8095
7976
  return Plugin.need("find");
8096
7977
  }
@@ -8128,6 +8009,7 @@ var LeaferUI = function(exports) {
8128
8009
  data.lazy && !this.__inLazyBounds && !Export.running ? data.__needComputePaint = true : data.__computePaint();
8129
8010
  }
8130
8011
  }
8012
+ __updatePath() {}
8131
8013
  __updateRenderPath(updateCache) {
8132
8014
  const data = this.__;
8133
8015
  if (data.path) {
@@ -8163,7 +8045,6 @@ var LeaferUI = function(exports) {
8163
8045
  this.set(keyframe);
8164
8046
  return Plugin.need("animate");
8165
8047
  }
8166
- killAnimate(_type, _nextStyle) {}
8167
8048
  export(_filename, _options) {
8168
8049
  return Plugin.need("export");
8169
8050
  }
@@ -8266,7 +8147,6 @@ var LeaferUI = function(exports) {
8266
8147
  __decorate([ surfaceType() ], exports.UI.prototype, "placeholderColor", void 0);
8267
8148
  __decorate([ dataType(100) ], exports.UI.prototype, "placeholderDelay", void 0);
8268
8149
  __decorate([ dataType({}) ], exports.UI.prototype, "data", void 0);
8269
- __decorate([ rewrite(exports.Leaf.prototype.reset) ], exports.UI.prototype, "reset", null);
8270
8150
  exports.UI = UI_1 = __decorate([ useModule(UIBounds), useModule(UIRender), rewriteAble() ], exports.UI);
8271
8151
  exports.Group = class Group extends exports.UI {
8272
8152
  get __tag() {
@@ -8302,9 +8182,6 @@ var LeaferUI = function(exports) {
8302
8182
  }
8303
8183
  return data;
8304
8184
  }
8305
- pick(_hitPoint, _options) {
8306
- return undefined;
8307
- }
8308
8185
  addAt(child, index) {
8309
8186
  this.add(child, index);
8310
8187
  }
@@ -8314,11 +8191,6 @@ var LeaferUI = function(exports) {
8314
8191
  addBefore(child, before) {
8315
8192
  this.add(child, this.children.indexOf(before));
8316
8193
  }
8317
- add(_child, _index) {}
8318
- addMany(..._children) {}
8319
- remove(_child, _destroy) {}
8320
- removeAll(_destroy) {}
8321
- clear() {}
8322
8194
  };
8323
8195
  __decorate([ dataProcessor(GroupData) ], exports.Group.prototype, "__", void 0);
8324
8196
  __decorate([ boundsType(0) ], exports.Group.prototype, "width", void 0);
@@ -8820,7 +8692,7 @@ var LeaferUI = function(exports) {
8820
8692
  __decorate([ surfaceType("#FFFFFF") ], exports.Frame.prototype, "fill", void 0);
8821
8693
  __decorate([ affectRenderBoundsType("hide") ], exports.Frame.prototype, "overflow", void 0);
8822
8694
  exports.Frame = __decorate([ registerUI() ], exports.Frame);
8823
- const {moveTo: moveTo$3, closePath: closePath$2, ellipse: ellipse$2} = PathCommandDataHelper;
8695
+ const {moveTo: moveTo$3, closePath: closePath$2, ellipse: ellipse$1} = PathCommandDataHelper;
8824
8696
  exports.Ellipse = class Ellipse extends exports.UI {
8825
8697
  get __tag() {
8826
8698
  return "Ellipse";
@@ -8832,21 +8704,21 @@ var LeaferUI = function(exports) {
8832
8704
  let open;
8833
8705
  if (innerRadius) {
8834
8706
  if (startAngle || endAngle) {
8835
- if (innerRadius < 1) ellipse$2(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
8836
- ellipse$2(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
8707
+ if (innerRadius < 1) ellipse$1(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
8708
+ ellipse$1(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
8837
8709
  } else {
8838
8710
  if (innerRadius < 1) {
8839
- ellipse$2(path, rx, ry, rx * innerRadius, ry * innerRadius);
8711
+ ellipse$1(path, rx, ry, rx * innerRadius, ry * innerRadius);
8840
8712
  moveTo$3(path, width, ry);
8841
8713
  }
8842
- ellipse$2(path, rx, ry, rx, ry, 0, 360, 0, true);
8714
+ ellipse$1(path, rx, ry, rx, ry, 0, 360, 0, true);
8843
8715
  }
8844
8716
  } else {
8845
8717
  if (startAngle || endAngle) {
8846
8718
  moveTo$3(path, rx, ry);
8847
- ellipse$2(path, rx, ry, rx, ry, 0, startAngle, endAngle, false);
8719
+ ellipse$1(path, rx, ry, rx, ry, 0, startAngle, endAngle, false);
8848
8720
  } else {
8849
- ellipse$2(path, rx, ry, rx, ry);
8721
+ ellipse$1(path, rx, ry, rx, ry);
8850
8722
  }
8851
8723
  }
8852
8724
  if (!open) closePath$2(path);
@@ -9172,51 +9044,6 @@ var LeaferUI = function(exports) {
9172
9044
  this.add(path);
9173
9045
  return this;
9174
9046
  }
9175
- beginPath() {
9176
- return this;
9177
- }
9178
- moveTo(_x, _y) {
9179
- return this;
9180
- }
9181
- lineTo(_x, _y) {
9182
- return this;
9183
- }
9184
- bezierCurveTo(_x1, _y1, _x2, _y2, _x, _y) {
9185
- return this;
9186
- }
9187
- quadraticCurveTo(_x1, _y1, _x, _y) {
9188
- return this;
9189
- }
9190
- closePath() {
9191
- return this;
9192
- }
9193
- rect(_x, _y, _width, _height) {
9194
- return this;
9195
- }
9196
- roundRect(_x, _y, _width, _height, _cornerRadius) {
9197
- return this;
9198
- }
9199
- ellipse(_x, _y, _radiusX, _radiusY, _rotation, _startAngle, _endAngle, _anticlockwise) {
9200
- return this;
9201
- }
9202
- arc(_x, _y, _radius, _startAngle, _endAngle, _anticlockwise) {
9203
- return this;
9204
- }
9205
- arcTo(_x1, _y1, _x2, _y2, _radius) {
9206
- return this;
9207
- }
9208
- drawEllipse(_x, _y, _radiusX, _radiusY, _rotation, _startAngle, _endAngle, _anticlockwise) {
9209
- return this;
9210
- }
9211
- drawArc(_x, _y, _radius, _startAngle, _endAngle, _anticlockwise) {
9212
- return this;
9213
- }
9214
- drawPoints(_points, _curve, _close) {
9215
- return this;
9216
- }
9217
- clearPath() {
9218
- return this;
9219
- }
9220
9047
  paint() {
9221
9048
  const {pathElement: pathElement} = this;
9222
9049
  if (!pathElement.__layout.boxChanged) pathElement.forceUpdate("path");
@@ -11042,7 +10869,7 @@ var LeaferUI = function(exports) {
11042
10869
  needUpdate = false;
11043
10870
  }
11044
10871
  }
11045
- if (paint.mode === "brush") PaintImage.brush(leafPaint, ui);
10872
+ if (paint.mode === "brush") PaintImage.brush(leafPaint, ui, attrName);
11046
10873
  if (!leafPaint.data) {
11047
10874
  PaintImage.createData(leafPaint, image, paint, boxBounds);
11048
10875
  const {transform: transform} = leafPaint.data, {opacity: opacity} = paint;
@@ -14856,7 +14683,8 @@ var LeaferUI = function(exports) {
14856
14683
  exports.UI.addAttr("editConfig", undefined, dataType);
14857
14684
  exports.UI.addAttr("editOuter", ui => {
14858
14685
  ui.updateLayout();
14859
- return ui.__.__isLinePath ? "LineEditTool" : "EditTool";
14686
+ const name = (ui.tag === "Line" ? "" : ui.tag) + "EditTool";
14687
+ return ui.__.__isLinePath ? "LineEditTool" : EditToolCreator.list[name] ? name : "EditTool";
14860
14688
  }, dataType);
14861
14689
  exports.UI.addAttr("editInner", "PathEditor", dataType);
14862
14690
  exports.Group.addAttr("editInner", "", dataType);
@@ -15126,8 +14954,9 @@ var LeaferUI = function(exports) {
15126
14954
  addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig);
15127
14955
  if (leafer.isApp || custom) return;
15128
14956
  leafer.__eventIds.push(leafer.on_(exports.MoveEvent.BEFORE_MOVE, e => {
15129
- const move = leafer.getValidMove(e.moveX, e.moveY, false);
15130
- if (getScrollType(leafer).includes("limit")) {
14957
+ const limit = getScrollType(leafer).includes("limit"), stopLimit = leafer.app.config.move.scrollLimit === "stop";
14958
+ const move = leafer.getValidMove(e.moveX, e.moveY, limit && stopLimit);
14959
+ if (limit && !stopLimit) {
15131
14960
  const testMove = leafer.getValidMove(0, 0);
15132
14961
  if (testMove.x || testMove.y) {
15133
14962
  const maxX = 100, maxY = 200, resistance = e.moveType === "drag" ? .3 : .05;
@@ -19365,7 +19194,7 @@ var LeaferUI = function(exports) {
19365
19194
  Plugin.add("scale-fixed");
19366
19195
  exports.UI.addAttr("scaleFixed", undefined, scaleFixedType);
19367
19196
  class EllipseBoxData extends BoxData {}
19368
- const ellipse$1 = exports.Ellipse.prototype;
19197
+ const ellipse = exports.Ellipse.prototype;
19369
19198
  exports.EllipseBox = class EllipseBox extends exports.Box {
19370
19199
  get __tag() {
19371
19200
  return "EllipseBox";
@@ -19376,7 +19205,7 @@ var LeaferUI = function(exports) {
19376
19205
  __decorate([ pathType(0) ], exports.EllipseBox.prototype, "innerRadius", void 0);
19377
19206
  __decorate([ pathType(0) ], exports.EllipseBox.prototype, "startAngle", void 0);
19378
19207
  __decorate([ pathType(0) ], exports.EllipseBox.prototype, "endAngle", void 0);
19379
- __decorate([ rewrite(ellipse$1.__updatePath) ], exports.EllipseBox.prototype, "__updatePath", null);
19208
+ __decorate([ rewrite(ellipse.__updatePath) ], exports.EllipseBox.prototype, "__updatePath", null);
19380
19209
  exports.EllipseBox = __decorate([ rewriteAble(), registerUI() ], exports.EllipseBox);
19381
19210
  class PolygonBoxData extends BoxData {
19382
19211
  get __usePathBox() {
@@ -19397,7 +19226,7 @@ var LeaferUI = function(exports) {
19397
19226
  __decorate([ rewrite(polygon.__updatePath) ], exports.PolygonBox.prototype, "__updatePath", null);
19398
19227
  exports.PolygonBox = __decorate([ rewriteAble(), registerUI() ], exports.PolygonBox);
19399
19228
  class StarBoxData extends BoxData {}
19400
- const ellipse = exports.Star.prototype;
19229
+ const star = exports.Star.prototype;
19401
19230
  exports.StarBox = class StarBox extends exports.Box {
19402
19231
  get __tag() {
19403
19232
  return "StarBox";
@@ -19407,7 +19236,7 @@ var LeaferUI = function(exports) {
19407
19236
  __decorate([ pathType(5) ], exports.StarBox.prototype, "corners", void 0);
19408
19237
  __decorate([ pathType(.382) ], exports.StarBox.prototype, "innerRadius", void 0);
19409
19238
  __decorate([ dataProcessor(StarBoxData) ], exports.StarBox.prototype, "__", void 0);
19410
- __decorate([ rewrite(ellipse.__updatePath) ], exports.StarBox.prototype, "__updatePath", null);
19239
+ __decorate([ rewrite(star.__updatePath) ], exports.StarBox.prototype, "__updatePath", null);
19411
19240
  exports.StarBox = __decorate([ rewriteAble(), registerUI() ], exports.StarBox);
19412
19241
  class PathBoxData extends BoxData {}
19413
19242
  exports.PathBox = class PathBox extends exports.Box {
@@ -1 +1 @@
1
- {"version":3,"file":"worker.min.cjs","sources":["../../../../../../../src/leafer/packages/interface/src/path/IPathCommand.ts"],"sourcesContent":["import { IPointData } from '../math/IMath'\nimport { IWindingRule } from '../canvas/ICanvas'\n\ntype Command = number\ntype x = number\ntype y = number\ntype x1 = number\ntype y1 = number\ntype x2 = number\ntype y2 = number\ntype radiusX = number\ntype radiusY = number\ntype xAxisRotation = number\ntype largeArcFlag = number\ntype sweepFlag = number\n\n\nexport type MCommandData = [Command, x, y]\nexport type HCommandData = [Command, x]\nexport type VCommandData = [Command, y]\nexport type LCommandData = MCommandData\n\nexport type CCommandData = [Command, x1, y1, x2, y2, x, y]\nexport type SCommandData = [Command, x2, y2, x, y]\n\nexport type QCommandData = [Command, x1, y1, x, y]\nexport type TCommandData = [Command, x, y]\n\nexport type ZCommandData = [Command]\n\nexport type ACommandData = [Command, radiusX, radiusY, xAxisRotation, largeArcFlag, sweepFlag, x, y]\n\n\n// 非svg标准的canvas绘图命令\ntype width = number\ntype height = number\ntype rotation = number\ntype startAngle = number\ntype endAngle = number\ntype anticlockwise = boolean\ntype cornerRadius = number | number[]\ntype radius = number\n\nexport type RectCommandData = [Command, x, y, width, height]\nexport type RoundRectCommandData = [Command, x, y, width, height, cornerRadius]\nexport type EllipseCommandData = [Command, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise]\nexport type ArcCommandData = [Command, x, y, radius, startAngle, endAngle, anticlockwise]\nexport type ArcToCommandData = [Command, x1, y1, x2, y2, radius]\n\n\nexport type CanvasPathCommand = 1 | 2 | 5 | 7 | 11 // M | L | C | Q | Z canvas可以绘制的命令\n\nexport type IPathCommandData = number[] // ...(MCommandData | LCommandData | CCommandData | QCommandData | ZCommandData)\n\nexport interface IPathCommandDataWithRadius {\n data: IPathCommandData\n radius: number[]\n}\n\nexport interface IPathCommandDataWithWindingRule {\n data: IPathCommandData\n windingRule?: IWindingRule\n}\n\n// 路径命令对象\nexport interface MoveToCommandObject {\n name: 'M'\n x: number\n y: number\n}\nexport interface LineToCommandObject {\n name: 'L'\n x: number\n y: number\n}\n\nexport interface BezierCurveToCommandObject {\n name: 'C'\n x1: number\n y1: number\n x2: number\n y2: number\n x: number\n y: number\n}\n\nexport interface QuadraticCurveToCommandObject {\n name: 'Q'\n x1: number\n y1: number\n x: number\n y: number\n}\n\nexport interface ClosePathCommandObject {\n name: 'Z'\n}\n\nexport type IPathCommandObject = MoveToCommandObject | LineToCommandObject | BezierCurveToCommandObject | QuadraticCurveToCommandObject | ClosePathCommandObject // M | L | C | Q | Z canvas可以绘制的命令\n\n\n// 可视化路径节点\n\nexport interface IPathCommandNodeBase {\n name: 'M^' | 'L^' | 'C^' | 'Z^'\n x: number\n y: number\n r?: number // 圆角半径\n a?: IPointData // 第一个手柄,连接上一个节点\n b?: IPointData // 第二个手柄,连接下一个节点\n ab?: PathNodeHandleType // 手柄类型\n}\n\nexport interface MoveToCommandNode extends IPathCommandNodeBase {\n name: 'M^'\n}\nexport interface LineToCommandNode extends IPathCommandNodeBase {\n name: 'L^'\n}\n\nexport interface BezierCurveToCommandNode extends IPathCommandNodeBase {\n name: 'C^'\n}\n\nexport interface ClosePathCommandNode {\n name: 'Z^'\n x?: number\n y?: number\n r?: number // 圆角半径\n a?: IPointData\n b?: IPointData\n ab?: PathNodeHandleType\n}\n\nexport type IPathCommandNode = MoveToCommandNode | LineToCommandNode | BezierCurveToCommandNode | ClosePathCommandNode // M | L | C | Z 路径节点命令(适合可视化编辑)\n\nexport enum PathNodeHandleType { // 手柄类型\n none = 1, // 无手柄\n free = 2, // 每个手柄自由控制\n mirrorAngle = 3, // 仅镜像角度\n mirror = 4, // 镜像角度和长度\n}\n\nexport type PathNodeHandleName = 'a' | 'b' // 手柄名称\n\nexport interface IPathNodeBase {\n pathNode: IPathCommandNode\n}"],"names":["PathNodeHandleType"],"mappings":"iBAwIYA,gtBAAAA,QAAAA,wBAAAA,GAAAA,EAAAA,QAAAA,qBAAAA,2BAAkB,CAAA,IAC1BA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,OAAA,GAAA"}
1
+ {"version":3,"file":"worker.min.cjs","sources":["../../../../../../../src/leafer/packages/interface/src/path/IPathCommand.ts"],"sourcesContent":["import { IPointData } from '../math/IMath'\nimport { IWindingRule } from '../canvas/ICanvas'\n\ntype Command = number\ntype x = number\ntype y = number\ntype x1 = number\ntype y1 = number\ntype x2 = number\ntype y2 = number\ntype radiusX = number\ntype radiusY = number\ntype xAxisRotation = number\ntype largeArcFlag = number\ntype sweepFlag = number\n\n\nexport type MCommandData = [Command, x, y]\nexport type HCommandData = [Command, x]\nexport type VCommandData = [Command, y]\nexport type LCommandData = MCommandData\n\nexport type CCommandData = [Command, x1, y1, x2, y2, x, y]\nexport type SCommandData = [Command, x2, y2, x, y]\n\nexport type QCommandData = [Command, x1, y1, x, y]\nexport type TCommandData = [Command, x, y]\n\nexport type ZCommandData = [Command]\n\nexport type ACommandData = [Command, radiusX, radiusY, xAxisRotation, largeArcFlag, sweepFlag, x, y]\n\n\n// 非svg标准的canvas绘图命令\ntype width = number\ntype height = number\ntype rotation = number\ntype startAngle = number\ntype endAngle = number\ntype anticlockwise = boolean\ntype cornerRadius = number | number[]\ntype radius = number\n\nexport type RectCommandData = [Command, x, y, width, height]\nexport type RoundRectCommandData = [Command, x, y, width, height, cornerRadius]\nexport type EllipseCommandData = [Command, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise]\nexport type ArcCommandData = [Command, x, y, radius, startAngle, endAngle, anticlockwise]\nexport type ArcToCommandData = [Command, x1, y1, x2, y2, radius]\n\n\nexport type CanvasPathCommand = 1 | 2 | 5 | 7 | 11 // M | L | C | Q | Z canvas可以绘制的命令\n\nexport type IPathCommandData = number[] // ...(MCommandData | LCommandData | CCommandData | QCommandData | ZCommandData)\n\nexport interface IPathCommandDataWithRadius {\n data: IPathCommandData\n radius: number[]\n}\n\nexport interface IPathCommandDataWithWindingRule {\n data: IPathCommandData\n windingRule?: IWindingRule\n}\n\n// 路径命令对象\nexport interface MoveToCommandObject {\n name: 'M'\n x: number\n y: number\n pressure?: number // 压感\n}\nexport interface LineToCommandObject {\n name: 'L'\n x: number\n y: number\n pressure?: number\n}\n\nexport interface BezierCurveToCommandObject {\n name: 'C'\n x1: number\n y1: number\n x2: number\n y2: number\n x: number\n y: number\n pressure?: number\n}\n\nexport interface QuadraticCurveToCommandObject {\n name: 'Q'\n x1: number\n y1: number\n x: number\n y: number\n pressure?: number\n}\n\nexport interface ClosePathCommandObject {\n name: 'Z'\n}\n\nexport type IPathCommandObject = MoveToCommandObject | LineToCommandObject | BezierCurveToCommandObject | QuadraticCurveToCommandObject | ClosePathCommandObject // M | L | C | Q | Z canvas可以绘制的命令\n\n\n// 可视化路径节点\n\nexport interface IPathCommandNodeBase {\n name: 'M^' | 'L^' | 'C^' | 'Z^'\n x: number\n y: number\n r?: number // 圆角半径\n a?: IPointData // 第一个手柄,连接上一个节点\n b?: IPointData // 第二个手柄,连接下一个节点\n ab?: PathNodeHandleType // 手柄类型\n pressure?: number // 压感\n}\n\nexport interface MoveToCommandNode extends IPathCommandNodeBase {\n name: 'M^'\n}\nexport interface LineToCommandNode extends IPathCommandNodeBase {\n name: 'L^'\n}\n\nexport interface BezierCurveToCommandNode extends IPathCommandNodeBase {\n name: 'C^'\n}\n\nexport interface ClosePathCommandNode {\n name: 'Z^'\n x?: number\n y?: number\n r?: number // 圆角半径\n a?: IPointData\n b?: IPointData\n ab?: PathNodeHandleType\n}\n\nexport type IPathCommandNode = MoveToCommandNode | LineToCommandNode | BezierCurveToCommandNode | ClosePathCommandNode // M | L | C | Z 路径节点命令(适合可视化编辑)\n\nexport enum PathNodeHandleType { // 手柄类型\n none = 1, // 无手柄\n free = 2, // 每个手柄自由控制\n mirrorAngle = 3, // 仅镜像角度\n mirror = 4, // 镜像角度和长度\n}\n\nexport type PathNodeHandleName = 'a' | 'b' // 手柄名称\n\nexport interface IPathNodeBase {\n pathNode: IPathCommandNode\n}"],"names":["PathNodeHandleType"],"mappings":"iBA6IYA,gtBAAAA,QAAAA,wBAAAA,GAAAA,EAAAA,QAAAA,qBAAAA,2BAAkB,CAAA,IAC1BA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,OAAA,GAAA"}