leafer-game 2.2.4 → 2.2.6
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/web.esm.min.js.map +1 -1
- package/dist/web.js +74 -46
- package/dist/web.min.cjs.map +1 -1
- package/dist/web.min.js +1 -1
- package/dist/web.min.js.map +1 -1
- package/dist/web.module.js +78 -46
- package/dist/web.module.min.js +1 -1
- package/dist/web.module.min.js.map +1 -1
- package/package.json +12 -12
package/dist/web.esm.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.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":"
|
|
1
|
+
{"version":3,"file":"web.esm.min.js","sources":["../../../../src/leafer/packages/interface/src/path/IPathCommand.ts"],"sourcesContent":["import { IPointData } from '../math/IMath'\nimport { IWindingRule } from '../canvas/ICanvas'\nimport { IObject } from '../data/IData'\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}\n\n// points 转曲线\nexport type IPointsCurveType =\n | 'Q' // 使用二次贝塞尔曲线平滑 points\n | 'C' // 使用三次贝塞尔曲线平滑 points\n | (string & {})\n\nexport type IPointsCurveValue = boolean | number\n\nexport interface IPointsCurveData {\n type: IPointsCurveType\n value: IPointsCurveValue\n}\n\nexport type IPointsCurve = IPointsCurveData | IPointsCurveValue\n\nexport interface IPointsCurveFunction {\n (data: IPathCommandData, originPoints: number[] | IPointData[], curve?: boolean | number, close?: boolean, options?: IObject): void\n}\n\nexport interface IPointsCurveFunctionMap {\n [name: string]: IPointsCurveFunction\n}"],"names":["PathNodeHandleType"],"mappings":"wLA8IYA,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/web.js
CHANGED
|
@@ -434,7 +434,7 @@ var LeaferUI = function(exports) {
|
|
|
434
434
|
}
|
|
435
435
|
const {sin: sin$6, cos: cos$6, acos: acos, sqrt: sqrt$5} = Math;
|
|
436
436
|
const {float: float$5} = MathHelper;
|
|
437
|
-
const tempPoint$
|
|
437
|
+
const tempPoint$7 = {};
|
|
438
438
|
function getWorld() {
|
|
439
439
|
return Object.assign(Object.assign(Object.assign({}, getMatrixData()), getBoundsData()), {
|
|
440
440
|
scaleX: 1,
|
|
@@ -491,8 +491,8 @@ var LeaferUI = function(exports) {
|
|
|
491
491
|
to.f = t.f * pixelRatio;
|
|
492
492
|
},
|
|
493
493
|
scaleOfOuter(t, origin, scaleX, scaleY) {
|
|
494
|
-
M$7.toInnerPoint(t, origin, tempPoint$
|
|
495
|
-
M$7.scaleOfInner(t, tempPoint$
|
|
494
|
+
M$7.toInnerPoint(t, origin, tempPoint$7);
|
|
495
|
+
M$7.scaleOfInner(t, tempPoint$7, scaleX, scaleY);
|
|
496
496
|
},
|
|
497
497
|
scaleOfInner(t, origin, scaleX, scaleY = scaleX) {
|
|
498
498
|
M$7.translateInner(t, origin.x, origin.y);
|
|
@@ -510,8 +510,8 @@ var LeaferUI = function(exports) {
|
|
|
510
510
|
t.d = c * sinR + d * cosR;
|
|
511
511
|
},
|
|
512
512
|
rotateOfOuter(t, origin, rotation) {
|
|
513
|
-
M$7.toInnerPoint(t, origin, tempPoint$
|
|
514
|
-
M$7.rotateOfInner(t, tempPoint$
|
|
513
|
+
M$7.toInnerPoint(t, origin, tempPoint$7);
|
|
514
|
+
M$7.rotateOfInner(t, tempPoint$7, rotation);
|
|
515
515
|
},
|
|
516
516
|
rotateOfInner(t, origin, rotation) {
|
|
517
517
|
M$7.translateInner(t, origin.x, origin.y);
|
|
@@ -532,8 +532,8 @@ var LeaferUI = function(exports) {
|
|
|
532
532
|
}
|
|
533
533
|
},
|
|
534
534
|
skewOfOuter(t, origin, skewX, skewY) {
|
|
535
|
-
M$7.toInnerPoint(t, origin, tempPoint$
|
|
536
|
-
M$7.skewOfInner(t, tempPoint$
|
|
535
|
+
M$7.toInnerPoint(t, origin, tempPoint$7);
|
|
536
|
+
M$7.skewOfInner(t, tempPoint$7, skewX, skewY);
|
|
537
537
|
},
|
|
538
538
|
skewOfInner(t, origin, skewX, skewY = 0) {
|
|
539
539
|
M$7.translateInner(t, origin.x, origin.y);
|
|
@@ -951,7 +951,7 @@ var LeaferUI = function(exports) {
|
|
|
951
951
|
return this;
|
|
952
952
|
}
|
|
953
953
|
}
|
|
954
|
-
const tempPoint$
|
|
954
|
+
const tempPoint$6 = new Point;
|
|
955
955
|
class Matrix {
|
|
956
956
|
constructor(a, b, c, d, e, f) {
|
|
957
957
|
this.set(a, b, c, d, e, f);
|
|
@@ -1814,7 +1814,7 @@ var LeaferUI = function(exports) {
|
|
|
1814
1814
|
return name;
|
|
1815
1815
|
}
|
|
1816
1816
|
const D$5 = Debug;
|
|
1817
|
-
const debug$
|
|
1817
|
+
const debug$h = Debug.get("RunTime");
|
|
1818
1818
|
const Run = {
|
|
1819
1819
|
currentId: 0,
|
|
1820
1820
|
currentName: "",
|
|
@@ -1832,7 +1832,7 @@ var LeaferUI = function(exports) {
|
|
|
1832
1832
|
const time = R$1.idMap[id], name = R$1.nameMap[id];
|
|
1833
1833
|
const duration = microsecond ? (performance.now() - time) / 1e3 : Date.now() - time;
|
|
1834
1834
|
R$1.idMap[id] = R$1.nameMap[id] = R$1.nameToIdMap[name] = undefined;
|
|
1835
|
-
debug$
|
|
1835
|
+
debug$h.log(name, duration, "ms");
|
|
1836
1836
|
},
|
|
1837
1837
|
endOfName(name, microsecond) {
|
|
1838
1838
|
const id = R$1.nameToIdMap[name];
|
|
@@ -1862,17 +1862,17 @@ var LeaferUI = function(exports) {
|
|
|
1862
1862
|
return Plugin.need("editor");
|
|
1863
1863
|
}
|
|
1864
1864
|
};
|
|
1865
|
-
const debug$
|
|
1865
|
+
const debug$g = Debug.get("UICreator");
|
|
1866
1866
|
const UICreator = {
|
|
1867
1867
|
list: {},
|
|
1868
1868
|
register(UI) {
|
|
1869
1869
|
const {__tag: tag} = UI.prototype;
|
|
1870
|
-
if (list$1[tag]) debug$
|
|
1870
|
+
if (list$1[tag]) debug$g.repeat(tag);
|
|
1871
1871
|
list$1[tag] = UI;
|
|
1872
1872
|
},
|
|
1873
1873
|
get(tag, data, x, y, width, height) {
|
|
1874
1874
|
if (!list$1[tag]) {
|
|
1875
|
-
debug$
|
|
1875
|
+
debug$g.warn("not register " + tag);
|
|
1876
1876
|
return undefined;
|
|
1877
1877
|
}
|
|
1878
1878
|
const ui = new list$1[tag](data);
|
|
@@ -1886,14 +1886,14 @@ var LeaferUI = function(exports) {
|
|
|
1886
1886
|
}
|
|
1887
1887
|
};
|
|
1888
1888
|
const {list: list$1} = UICreator;
|
|
1889
|
-
const debug$
|
|
1889
|
+
const debug$f = Debug.get("EventCreator");
|
|
1890
1890
|
const EventCreator = {
|
|
1891
1891
|
nameList: {},
|
|
1892
1892
|
register(Event) {
|
|
1893
1893
|
let name;
|
|
1894
1894
|
Object.keys(Event).forEach(key => {
|
|
1895
1895
|
name = Event[key];
|
|
1896
|
-
if (isString(name)) nameList[name] && debug$
|
|
1896
|
+
if (isString(name)) nameList[name] && debug$f.repeat(name), nameList[name] = Event;
|
|
1897
1897
|
});
|
|
1898
1898
|
},
|
|
1899
1899
|
changeName(oldName, newName) {
|
|
@@ -2529,7 +2529,7 @@ var LeaferUI = function(exports) {
|
|
|
2529
2529
|
const {setPoint: setPoint$1, addPoint: addPoint$1} = TwoPointBoundsHelper;
|
|
2530
2530
|
const {set: set$3, toNumberPoints: toNumberPoints} = PointHelper;
|
|
2531
2531
|
const {M: M$6, L: L$7, C: C$5, Q: Q$4, Z: Z$6} = PathCommandMap;
|
|
2532
|
-
const tempPoint$
|
|
2532
|
+
const tempPoint$5 = {};
|
|
2533
2533
|
const BezierHelper = {
|
|
2534
2534
|
points(data, originPoints, curve, close) {
|
|
2535
2535
|
let points = toNumberPoints(originPoints);
|
|
@@ -2702,8 +2702,8 @@ var LeaferUI = function(exports) {
|
|
|
2702
2702
|
addMode ? addPoint$1(pointBounds, fromX, fromY) : setPoint$1(pointBounds, fromX, fromY);
|
|
2703
2703
|
addPoint$1(pointBounds, toX, toY);
|
|
2704
2704
|
for (let i = 0, len = tList.length; i < len; i++) {
|
|
2705
|
-
getPointAndSet(tList[i], fromX, fromY, x1, y1, x2, y2, toX, toY, tempPoint$
|
|
2706
|
-
addPoint$1(pointBounds, tempPoint$
|
|
2705
|
+
getPointAndSet(tList[i], fromX, fromY, x1, y1, x2, y2, toX, toY, tempPoint$5);
|
|
2706
|
+
addPoint$1(pointBounds, tempPoint$5.x, tempPoint$5.y);
|
|
2707
2707
|
}
|
|
2708
2708
|
},
|
|
2709
2709
|
getPointAndSet(t, fromX, fromY, x1, y1, x2, y2, toX, toY, setPoint) {
|
|
@@ -2807,7 +2807,7 @@ var LeaferUI = function(exports) {
|
|
|
2807
2807
|
const {M: M$5, m: m, L: L$6, l: l, H: H, h: h, V: V, v: v, C: C$4, c: c, S: S, s: s, Q: Q$3, q: q, T: T, t: t, A: A, a: a, Z: Z$5, z: z, N: N$3, D: D$4, X: X$3, G: G$3, F: F$4, O: O$3, P: P$3, U: U$3} = PathCommandMap;
|
|
2808
2808
|
const {rect: rect$3, roundRect: roundRect$2, arcTo: arcTo$3, arc: arc$3, ellipse: ellipse$4, quadraticCurveTo: quadraticCurveTo$1} = BezierHelper;
|
|
2809
2809
|
const {ellipticalArc: ellipticalArc} = EllipseHelper;
|
|
2810
|
-
const debug$
|
|
2810
|
+
const debug$e = Debug.get("PathConvert");
|
|
2811
2811
|
const setEndPoint$1 = {};
|
|
2812
2812
|
const PathConvert = {
|
|
2813
2813
|
current: {
|
|
@@ -3072,7 +3072,7 @@ var LeaferUI = function(exports) {
|
|
|
3072
3072
|
break;
|
|
3073
3073
|
|
|
3074
3074
|
default:
|
|
3075
|
-
debug$
|
|
3075
|
+
debug$e.error(`command: ${command} [index:${i}]`, old);
|
|
3076
3076
|
return data;
|
|
3077
3077
|
}
|
|
3078
3078
|
lastCommand = command;
|
|
@@ -3129,7 +3129,9 @@ var LeaferUI = function(exports) {
|
|
|
3129
3129
|
const {getMinDistanceFrom: getMinDistanceFrom, getRadianFrom: getRadianFrom} = PointHelper;
|
|
3130
3130
|
const {tan: tan, min: min$1, abs: abs$5} = Math;
|
|
3131
3131
|
const startPoint = {};
|
|
3132
|
+
const debug$d = Debug.get("PointsCurve");
|
|
3132
3133
|
const PathCommandDataHelper = {
|
|
3134
|
+
pointsCurveList: {},
|
|
3133
3135
|
beginPath(data) {
|
|
3134
3136
|
data.length = 0;
|
|
3135
3137
|
},
|
|
@@ -3199,11 +3201,19 @@ var LeaferUI = function(exports) {
|
|
|
3199
3201
|
data.push(M$4, startPoint.x, startPoint.y);
|
|
3200
3202
|
arc$2(data, x, y, radius, startAngle, endAngle, anticlockwise);
|
|
3201
3203
|
},
|
|
3202
|
-
drawPoints(data, points, curve, close) {
|
|
3203
|
-
|
|
3204
|
+
drawPoints(data, points, curve, close, options) {
|
|
3205
|
+
let type = "Q";
|
|
3206
|
+
if (isObject(curve)) type = curve.type, curve = curve.value;
|
|
3207
|
+
if (!pointsCurveList[type]) debug$d.warn("not found:", type), type = "Q";
|
|
3208
|
+
pointsCurveList[type](data, points, curve, close, options);
|
|
3204
3209
|
}
|
|
3205
3210
|
};
|
|
3206
|
-
const {ellipse: ellipse$3, arc: arc$2} = PathCommandDataHelper;
|
|
3211
|
+
const {ellipse: ellipse$3, arc: arc$2, pointsCurveList: pointsCurveList} = PathCommandDataHelper;
|
|
3212
|
+
function registerPointsCurve(type, fn) {
|
|
3213
|
+
if (pointsCurveList[type]) debug$d.repeat(type);
|
|
3214
|
+
pointsCurveList[type] = fn;
|
|
3215
|
+
}
|
|
3216
|
+
registerPointsCurve("Q", BezierHelper.points);
|
|
3207
3217
|
const {moveTo: moveTo$4, lineTo: lineTo$3, quadraticCurveTo: quadraticCurveTo, bezierCurveTo: bezierCurveTo, closePath: closePath$3, beginPath: beginPath, rect: rect$2, roundRect: roundRect$1, ellipse: ellipse$2, arc: arc$1, arcTo: arcTo$2, drawEllipse: drawEllipse, drawArc: drawArc, drawPoints: drawPoints$2} = PathCommandDataHelper;
|
|
3208
3218
|
class PathCreator {
|
|
3209
3219
|
set path(value) {
|
|
@@ -4480,7 +4490,7 @@ var LeaferUI = function(exports) {
|
|
|
4480
4490
|
if (!excludeNames.includes(name) && (!exclude || !exclude.includes(name))) {
|
|
4481
4491
|
if (module.prototype) {
|
|
4482
4492
|
const d = getDescriptor(module.prototype, name);
|
|
4483
|
-
if (d
|
|
4493
|
+
if (d) Object.defineProperty(target.prototype, name, d);
|
|
4484
4494
|
} else {
|
|
4485
4495
|
target.prototype[name] = module[name];
|
|
4486
4496
|
}
|
|
@@ -5664,7 +5674,7 @@ var LeaferUI = function(exports) {
|
|
|
5664
5674
|
}
|
|
5665
5675
|
};
|
|
5666
5676
|
const {setLayout: setLayout, multiplyParent: multiplyParent$2, translateInner: translateInner, defaultWorld: defaultWorld} = MatrixHelper;
|
|
5667
|
-
const {toPoint: toPoint$3, tempPoint: tempPoint$
|
|
5677
|
+
const {toPoint: toPoint$3, tempPoint: tempPoint$4} = AroundHelper;
|
|
5668
5678
|
const LeafMatrix = {
|
|
5669
5679
|
__updateWorldMatrix() {
|
|
5670
5680
|
const {parent: parent, __layout: __layout, __world: __world, __scrollWorld: __scrollWorld, __: __} = this;
|
|
@@ -5684,8 +5694,8 @@ var LeaferUI = function(exports) {
|
|
|
5684
5694
|
local.e = data.x + data.offsetX;
|
|
5685
5695
|
local.f = data.y + data.offsetY;
|
|
5686
5696
|
if (data.around || data.origin) {
|
|
5687
|
-
toPoint$3(data.around || data.origin, layout.boxBounds, tempPoint$
|
|
5688
|
-
translateInner(local, -tempPoint$
|
|
5697
|
+
toPoint$3(data.around || data.origin, layout.boxBounds, tempPoint$4);
|
|
5698
|
+
translateInner(local, -tempPoint$4.x, -tempPoint$4.y, !data.around);
|
|
5689
5699
|
}
|
|
5690
5700
|
}
|
|
5691
5701
|
this.__layout.matrixChanged = undefined;
|
|
@@ -6606,7 +6616,7 @@ var LeaferUI = function(exports) {
|
|
|
6606
6616
|
this.levelMap = null;
|
|
6607
6617
|
}
|
|
6608
6618
|
}
|
|
6609
|
-
const version = "2.2.
|
|
6619
|
+
const version = "2.2.6";
|
|
6610
6620
|
const debug$5 = Debug.get("LeaferCanvas");
|
|
6611
6621
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
6612
6622
|
set zIndex(zIndex) {
|
|
@@ -7432,7 +7442,7 @@ var LeaferUI = function(exports) {
|
|
|
7432
7442
|
}
|
|
7433
7443
|
}
|
|
7434
7444
|
Renderer.clipSpread = 10;
|
|
7435
|
-
const tempPoint$
|
|
7445
|
+
const tempPoint$3 = {};
|
|
7436
7446
|
const {copyRadiusPoint: copyRadiusPoint$1} = PointHelper;
|
|
7437
7447
|
const {hitRadiusPoint: hitRadiusPoint$1} = BoundsHelper;
|
|
7438
7448
|
class Picker {
|
|
@@ -7564,7 +7574,7 @@ var LeaferUI = function(exports) {
|
|
|
7564
7574
|
for (let i = len - 1; i > -1; i--) {
|
|
7565
7575
|
child = children[i], data = child.__;
|
|
7566
7576
|
if (!data.visible || onlyHitMask && !data.mask) continue;
|
|
7567
|
-
hit = hitRadiusPoint$1(child.__world, data.hitRadius ? copyRadiusPoint$1(tempPoint$
|
|
7577
|
+
hit = hitRadiusPoint$1(child.__world, data.hitRadius ? copyRadiusPoint$1(tempPoint$3, point, data.hitRadius) : point);
|
|
7568
7578
|
if (child.isBranch) {
|
|
7569
7579
|
if (hit || child.__ignoreHitWorld) {
|
|
7570
7580
|
if (child.isBranchLeaf && data.__clipAfterFill && !child.__hitWorld(point, true)) continue;
|
|
@@ -7582,7 +7592,7 @@ var LeaferUI = function(exports) {
|
|
|
7582
7592
|
if (child.__hitWorld(point, onlyHitMask && child.mask === "path" ? true : undefined)) {
|
|
7583
7593
|
const {parent: parent, mask: mask} = child;
|
|
7584
7594
|
if (parent && parent.__hasMask && mask && !(mask === "clipping" || mask === "clipping-path")) {
|
|
7585
|
-
if (!parent.children.some(item => !item.mask &&
|
|
7595
|
+
if (!parent.children.some(item => !item.mask && this.isHitLeaf(item, point))) return;
|
|
7586
7596
|
}
|
|
7587
7597
|
const leaf = proxy || child, {hitThrough: hitThrough} = child, {findList: findList} = this;
|
|
7588
7598
|
if (hitThrough) {
|
|
@@ -7592,6 +7602,15 @@ var LeaferUI = function(exports) {
|
|
|
7592
7602
|
findList.add(leaf);
|
|
7593
7603
|
}
|
|
7594
7604
|
}
|
|
7605
|
+
isHitLeaf(leaf, point) {
|
|
7606
|
+
if (leaf.isBranch) {
|
|
7607
|
+
const {findList: findList} = this, old = findList.length;
|
|
7608
|
+
this.eachFind([ leaf ], false);
|
|
7609
|
+
const count = findList.length - old;
|
|
7610
|
+
for (let i = 0; i < count; i++) findList.remove(findList.indexAt(findList.length - 1));
|
|
7611
|
+
return !!count;
|
|
7612
|
+
} else return leaf.__hitWorld(point);
|
|
7613
|
+
}
|
|
7595
7614
|
clear() {
|
|
7596
7615
|
this.point = null;
|
|
7597
7616
|
this.findList = null;
|
|
@@ -8064,7 +8083,7 @@ var LeaferUI = function(exports) {
|
|
|
8064
8083
|
}
|
|
8065
8084
|
if (data.__useEffect) {
|
|
8066
8085
|
const {shadow: shadow, fill: fill, stroke: stroke} = data, otherEffect = data.innerShadow || data.blur || data.backgroundBlur || data.filter;
|
|
8067
|
-
stintSet$2(data, "__isFastShadow", shadow && !otherEffect && shadow.length < 2 && !shadow[0].spread && !Effect.isTransformShadow(shadow[0]) && fill && !data.__isTransparentFill && !(isArray(fill) && fill.length > 1) && (this.useFastShadow || !stroke || stroke && data.strokeAlign === "inside"));
|
|
8086
|
+
stintSet$2(data, "__isFastShadow", shadow && !otherEffect && shadow.length < 2 && !shadow[0].spread && !Effect.isTransformShadow(shadow[0]) && !(shadow[0].blendMode && shadow[0].blendMode !== "pass-through") && fill && !data.__isTransparentFill && !(isArray(fill) && fill.length > 1) && (this.useFastShadow || !stroke || stroke && data.strokeAlign === "inside"));
|
|
8068
8087
|
data.__useEffect = !!(shadow || otherEffect);
|
|
8069
8088
|
}
|
|
8070
8089
|
data.__checkSingle();
|
|
@@ -8927,7 +8946,7 @@ var LeaferUI = function(exports) {
|
|
|
8927
8946
|
__decorate([ surfaceType("#FFFFFF") ], exports.Frame.prototype, "fill", void 0);
|
|
8928
8947
|
__decorate([ affectRenderBoundsType("hide") ], exports.Frame.prototype, "overflow", void 0);
|
|
8929
8948
|
exports.Frame = __decorate([ registerUI() ], exports.Frame);
|
|
8930
|
-
const {moveTo: moveTo$3, closePath: closePath$2, ellipse: ellipse} = PathCommandDataHelper, {tempPoint: tempPoint$
|
|
8949
|
+
const {moveTo: moveTo$3, closePath: closePath$2, ellipse: ellipse} = PathCommandDataHelper, {tempPoint: tempPoint$2, set: set$2, rotate: rotate$2} = PointHelper, {abs: abs$4} = Math, tempCenter = {};
|
|
8931
8950
|
exports.Ellipse = class Ellipse extends exports.UI {
|
|
8932
8951
|
get __tag() {
|
|
8933
8952
|
return "Ellipse";
|
|
@@ -8947,9 +8966,9 @@ var LeaferUI = function(exports) {
|
|
|
8947
8966
|
if (drawInnerEllipse) {
|
|
8948
8967
|
if (closedAngle) {
|
|
8949
8968
|
closePath$2(path);
|
|
8950
|
-
set$2(tempPoint$
|
|
8951
|
-
rotate$2(tempPoint$
|
|
8952
|
-
moveTo$3(path, tempPoint$
|
|
8969
|
+
set$2(tempPoint$2, rx + innerRx, ry), set$2(tempCenter, rx, ry);
|
|
8970
|
+
rotate$2(tempPoint$2, endAngle, tempCenter, rx, ry);
|
|
8971
|
+
moveTo$3(path, tempPoint$2.x, tempPoint$2.y);
|
|
8953
8972
|
}
|
|
8954
8973
|
ellipse(path, rx, ry, innerRx, innerRy, 0, endAngle, startAngle, true);
|
|
8955
8974
|
} else {
|
|
@@ -8996,7 +9015,7 @@ var LeaferUI = function(exports) {
|
|
|
8996
9015
|
const data = this.__;
|
|
8997
9016
|
const path = data.path = [];
|
|
8998
9017
|
if (data.points) {
|
|
8999
|
-
drawPoints$1(path, data.points, data.curve, data.closed);
|
|
9018
|
+
drawPoints$1(path, data.points, data.curve, data.closed, data);
|
|
9000
9019
|
} else {
|
|
9001
9020
|
const {width: width, height: height, sides: sides, startAngle: startAngle} = data;
|
|
9002
9021
|
const rx = width / 2, ry = height / 2;
|
|
@@ -9071,7 +9090,7 @@ var LeaferUI = function(exports) {
|
|
|
9071
9090
|
const data = this.__;
|
|
9072
9091
|
const path = data.path = [];
|
|
9073
9092
|
if (data.points) {
|
|
9074
|
-
drawPoints(path, data.points, data.curve, data.closed);
|
|
9093
|
+
drawPoints(path, data.points, data.curve, data.closed, data);
|
|
9075
9094
|
} else {
|
|
9076
9095
|
moveTo(path, 0, 0);
|
|
9077
9096
|
lineTo(path, this.width, 0);
|
|
@@ -14122,7 +14141,7 @@ var LeaferUI = function(exports) {
|
|
|
14122
14141
|
};
|
|
14123
14142
|
const {getDistance: getDistance} = HighBezierHelper;
|
|
14124
14143
|
const {M: M, L: L, C: C, Z: Z} = PathCommandMap, {float: float} = MathHelper, {set: set, getAngle: getAngle, getDistanceFrom: getDistanceFrom, getDistancePoint: getDistancePoint} = PointHelper;
|
|
14125
|
-
const tempPoint = {}, tempFrom = {};
|
|
14144
|
+
const tempPoint$1 = {}, tempFrom = {};
|
|
14126
14145
|
const HighCurveHelper = {
|
|
14127
14146
|
transform(data, matrix) {
|
|
14128
14147
|
let i = 0, command;
|
|
@@ -14148,11 +14167,11 @@ var LeaferUI = function(exports) {
|
|
|
14148
14167
|
},
|
|
14149
14168
|
transformPoints(data, matrix, start, pointCount) {
|
|
14150
14169
|
for (let i = start + 1, end = i + pointCount * 2; i < end; i += 2) {
|
|
14151
|
-
tempPoint.x = data[i];
|
|
14152
|
-
tempPoint.y = data[i + 1];
|
|
14153
|
-
MatrixHelper.toOuterPoint(matrix, tempPoint);
|
|
14154
|
-
data[i] = tempPoint.x;
|
|
14155
|
-
data[i + 1] = tempPoint.y;
|
|
14170
|
+
tempPoint$1.x = data[i];
|
|
14171
|
+
tempPoint$1.y = data[i + 1];
|
|
14172
|
+
MatrixHelper.toOuterPoint(matrix, tempPoint$1);
|
|
14173
|
+
data[i] = tempPoint$1.x;
|
|
14174
|
+
data[i + 1] = tempPoint$1.y;
|
|
14156
14175
|
}
|
|
14157
14176
|
},
|
|
14158
14177
|
getMotionPathData(data) {
|
|
@@ -14385,9 +14404,11 @@ var LeaferUI = function(exports) {
|
|
|
14385
14404
|
const {updateMatrix: updateMatrix, updateAllMatrix: updateAllMatrix} = LeafHelper;
|
|
14386
14405
|
const {updateBounds: updateBounds} = BranchHelper;
|
|
14387
14406
|
const {toVertical: toVertical} = PointHelper;
|
|
14407
|
+
const tempPoint = {};
|
|
14388
14408
|
exports.UI.addAttr("motionPath", undefined, motionPathType);
|
|
14389
14409
|
exports.UI.addAttr("motionPrecision", 1, motionPathType);
|
|
14390
14410
|
exports.UI.addAttr("motion", undefined, motionPathType);
|
|
14411
|
+
exports.UI.addAttr("motionAround", undefined, motionPathType);
|
|
14391
14412
|
exports.UI.addAttr("motionVertical", "below", motionPathType);
|
|
14392
14413
|
exports.UI.addAttr("motionRotation", true, motionPathType);
|
|
14393
14414
|
ui$1.getMotionPath = function() {
|
|
@@ -14404,8 +14425,14 @@ var LeaferUI = function(exports) {
|
|
|
14404
14425
|
const data = getMotionPathData(pathElement);
|
|
14405
14426
|
if (!data.total) return {};
|
|
14406
14427
|
const point = HighCurveHelper.getDistancePoint(data, motionDistance, pathElement.motionPrecision, offsetX);
|
|
14407
|
-
const {motionRotation: motionRotation} = this;
|
|
14428
|
+
const {motionRotation: motionRotation, motionAround: motionAround} = this;
|
|
14408
14429
|
if (isNumber(motionRotation)) point.rotation += motionRotation;
|
|
14430
|
+
if (motionAround && motionAround !== "top-left") {
|
|
14431
|
+
AroundHelper.toPoint(motionAround, this.__layout.boxBounds, tempPoint);
|
|
14432
|
+
PointHelper.set(tempPoint, point.x - tempPoint.x * this.scaleX, point.y - tempPoint.y * this.scaleY);
|
|
14433
|
+
if (point.rotation) PointHelper.rotate(tempPoint, point.rotation, point);
|
|
14434
|
+
PointHelper.copy(point, tempPoint);
|
|
14435
|
+
}
|
|
14409
14436
|
let verticalType, verticalOffset;
|
|
14410
14437
|
if (isObject(motionVertical)) verticalType = motionVertical.type, verticalOffset = motionVertical.offset; else if (isNumber(motionVertical)) verticalOffset = motionVertical; else verticalType = motionVertical;
|
|
14411
14438
|
if (verticalType !== "below" || offsetY) {
|
|
@@ -14810,6 +14837,7 @@ var LeaferUI = function(exports) {
|
|
|
14810
14837
|
exports.pathType = pathType;
|
|
14811
14838
|
exports.pen = pen;
|
|
14812
14839
|
exports.positionType = positionType;
|
|
14840
|
+
exports.registerPointsCurve = registerPointsCurve;
|
|
14813
14841
|
exports.registerUI = registerUI;
|
|
14814
14842
|
exports.registerUIEvent = registerUIEvent;
|
|
14815
14843
|
exports.resizeType = resizeType;
|
|
@@ -14825,7 +14853,7 @@ var LeaferUI = function(exports) {
|
|
|
14825
14853
|
exports.surfaceType = surfaceType;
|
|
14826
14854
|
exports.tempBounds = tempBounds$2;
|
|
14827
14855
|
exports.tempMatrix = tempMatrix$2;
|
|
14828
|
-
exports.tempPoint = tempPoint$
|
|
14856
|
+
exports.tempPoint = tempPoint$6;
|
|
14829
14857
|
exports.tryToNumber = tryToNumber;
|
|
14830
14858
|
exports.useCanvas = useCanvas;
|
|
14831
14859
|
exports.useModule = useModule;
|
package/dist/web.min.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.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":"
|
|
1
|
+
{"version":3,"file":"web.min.cjs","sources":["../../../../src/leafer/packages/interface/src/path/IPathCommand.ts"],"sourcesContent":["import { IPointData } from '../math/IMath'\nimport { IWindingRule } from '../canvas/ICanvas'\nimport { IObject } from '../data/IData'\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}\n\n// points 转曲线\nexport type IPointsCurveType =\n | 'Q' // 使用二次贝塞尔曲线平滑 points\n | 'C' // 使用三次贝塞尔曲线平滑 points\n | (string & {})\n\nexport type IPointsCurveValue = boolean | number\n\nexport interface IPointsCurveData {\n type: IPointsCurveType\n value: IPointsCurveValue\n}\n\nexport type IPointsCurve = IPointsCurveData | IPointsCurveValue\n\nexport interface IPointsCurveFunction {\n (data: IPathCommandData, originPoints: number[] | IPointData[], curve?: boolean | number, close?: boolean, options?: IObject): void\n}\n\nexport interface IPointsCurveFunctionMap {\n [name: string]: IPointsCurveFunction\n}"],"names":["PathNodeHandleType"],"mappings":"iBA8IYA,sLAAAA,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"}
|