@visactor/vrender-core 0.17.20-alpha.7 → 0.17.20-alpha.9

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.
Files changed (39) hide show
  1. package/cjs/common/custom-path2d.d.ts +1 -0
  2. package/cjs/common/custom-path2d.js +5 -1
  3. package/cjs/common/custom-path2d.js.map +1 -1
  4. package/cjs/event/event-manager.js +4 -2
  5. package/cjs/event/event-manager.js.map +1 -1
  6. package/cjs/graphic/config.js +2 -1
  7. package/cjs/graphic/config.js.map +1 -1
  8. package/cjs/graphic/richtext.d.ts +1 -44
  9. package/cjs/graphic/richtext.js +2 -13
  10. package/cjs/graphic/richtext.js.map +1 -1
  11. package/cjs/interface/graphic/richText.js.map +1 -1
  12. package/cjs/interface/graphic.d.ts +1 -0
  13. package/cjs/interface/graphic.js.map +1 -1
  14. package/cjs/render/contributions/render/area-render.js +4 -2
  15. package/cjs/render/contributions/render/area-render.js.map +1 -1
  16. package/cjs/render/contributions/render/draw-contribution.d.ts +1 -1
  17. package/cjs/render/contributions/render/draw-contribution.js +8 -3
  18. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  19. package/cjs/render/contributions/render/module.js.map +1 -1
  20. package/es/common/custom-path2d.d.ts +1 -0
  21. package/es/common/custom-path2d.js +5 -1
  22. package/es/common/custom-path2d.js.map +1 -1
  23. package/es/event/event-manager.js +4 -2
  24. package/es/event/event-manager.js.map +1 -1
  25. package/es/graphic/config.js +2 -1
  26. package/es/graphic/config.js.map +1 -1
  27. package/es/graphic/richtext.d.ts +1 -44
  28. package/es/graphic/richtext.js +2 -13
  29. package/es/graphic/richtext.js.map +1 -1
  30. package/es/interface/graphic/richText.js.map +1 -1
  31. package/es/interface/graphic.d.ts +1 -0
  32. package/es/interface/graphic.js.map +1 -1
  33. package/es/render/contributions/render/area-render.js +4 -2
  34. package/es/render/contributions/render/area-render.js.map +1 -1
  35. package/es/render/contributions/render/draw-contribution.d.ts +1 -1
  36. package/es/render/contributions/render/draw-contribution.js +8 -3
  37. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  38. package/es/render/contributions/render/module.js.map +1 -1
  39. package/package.json +1 -1
@@ -21,6 +21,7 @@ export declare class CustomPath2D extends CurvePath implements ICustomPath2D {
21
21
  closePath(): this;
22
22
  addCurve(curve: ICurve<IPoint>): void;
23
23
  clear(): void;
24
+ beginPath(): void;
24
25
  toString(): string;
25
26
  fromString(str: string, x?: number, y?: number, sX?: number, sY?: number): this;
26
27
  fromLine(line: ILine): void;
@@ -57,6 +57,9 @@ class CustomPath2D extends path_1.CurvePath {
57
57
  clear() {
58
58
  this.transformCbList = null, this.commandList.length = 0, this.curves.length = 0;
59
59
  }
60
+ beginPath() {
61
+ this.clear();
62
+ }
60
63
  toString() {
61
64
  if (!this.toStringCbList) {
62
65
  const list = [];
@@ -69,7 +72,8 @@ class CustomPath2D extends path_1.CurvePath {
69
72
  let path = "";
70
73
  for (let i = 0; i < bezierPathList.length; i += 6) path += `C${bezierPathList[i]} ${bezierPathList[i + 1]} ${bezierPathList[i + 2]} ${bezierPathList[i + 3]} ${bezierPathList[i + 4]} ${bezierPathList[i + 5]}`;
71
74
  return path;
72
- }, list[path_svg_1.enumCommandMap.Z] = cmd => "Z", this.toStringCbList = list;
75
+ }, list[path_svg_1.enumCommandMap.R] = cmd => `M${cmd[1]} ${cmd[2]} h${cmd[3]} v${cmd[4]} H${cmd[1]}Z`,
76
+ list[path_svg_1.enumCommandMap.Z] = cmd => "Z", this.toStringCbList = list;
73
77
  }
74
78
  const list = this.toStringCbList;
75
79
  let path = "";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/custom-path2d.ts"],"names":[],"mappings":"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","file":"custom-path2d.js","sourcesContent":["import { BoundsContext } from './bounds-context';\nimport type { CommandStrType, CommandType, ICurve, ICustomPath2D, IDirection, ILine, IPath2D } from '../interface';\nimport { CurvePath } from './segment/curve/path';\nimport { enumCommandMap, parseSvgPath } from './path-svg';\nimport type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs } from '@visactor/vutils';\nimport { Direction } from './enums';\nimport { drawArc, addArcToBezierPath } from './shape/arc';\nimport { renderCommandList } from './render-command-list';\nimport { calcLineCache } from './segment';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n// 基于d3-shape重构\n// https://github.com/vega/vega/blob/master/packages/vega-scenegraph/src/path/render.js\n\nexport class CustomPath2D extends CurvePath implements ICustomPath2D {\n commandList: CommandType[] = [];\n _boundsContext: IPath2D;\n _ctx?: IPath2D;\n direction?: IDirection;\n protected transformCbList?: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[];\n protected toStringCbList?: ((cmd: CommandType) => string)[];\n\n constructor(ctx?: IPath2D) {\n super();\n if (ctx) {\n this._ctx = ctx;\n }\n this._boundsContext = new BoundsContext(this.bounds);\n }\n\n setCtx(ctx?: IPath2D) {\n this._ctx = ctx;\n }\n\n moveTo(x: number, y: number) {\n this.commandList.push([enumCommandMap.M, x, y]);\n this._ctx && this._ctx.moveTo(x, y);\n return this;\n }\n lineTo(x: number, y: number) {\n this.commandList.push([enumCommandMap.L, x, y]);\n this._ctx && this._ctx.lineTo(x, y);\n return this;\n }\n quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number) {\n this.commandList.push([enumCommandMap.Q, aCPx, aCPy, aX, aY]);\n this._ctx && this._ctx.quadraticCurveTo(aCPx, aCPy, aX, aY);\n return this;\n }\n bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number) {\n this.commandList.push([enumCommandMap.C, aCP1x, aCP1y, aCP2x, aCP2y, aX, aY]);\n this._ctx && this._ctx.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n return this;\n }\n arcTo(aX1: number, aY1: number, aX2: number, aY2: number, aRadius: number) {\n this.commandList.push([enumCommandMap.AT, aX1, aY1, aX2, aY2, aRadius]);\n this._ctx && this._ctx.arcTo(aX1, aY1, aX2, aY2, aRadius);\n return this;\n }\n ellipse(\n aX: number,\n aY: number,\n xRadius: number,\n yRadius: number,\n aRotation: number,\n aStartAngle: number,\n aEndAngle: number,\n aClockwise: boolean\n ) {\n this.commandList.push([enumCommandMap.E, aX, aY, xRadius, yRadius, aRotation, aStartAngle, aEndAngle, aClockwise]);\n this._ctx && this._ctx.ellipse(aX, aY, xRadius, yRadius, aRotation, aStartAngle, aEndAngle, aClockwise);\n return this;\n }\n rect(x: number, y: number, w: number, h: number) {\n this.commandList.push([enumCommandMap.R, x, y, w, h]);\n this._ctx && this._ctx.rect(x, y, w, h);\n return this;\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean) {\n this.commandList.push([enumCommandMap.A, x, y, radius, startAngle, endAngle, counterclockwise]);\n this._ctx && this._ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n closePath() {\n this.commandList.push([enumCommandMap.Z]);\n this._ctx && this._ctx.closePath();\n return this;\n }\n\n addCurve(curve: ICurve<IPoint>) {\n this.curves.push(curve);\n // todo parse curve\n }\n clear() {\n this.transformCbList = null;\n this.commandList.length = 0;\n this.curves.length = 0;\n }\n\n toString(): string {\n if (!this.toStringCbList) {\n const list: ((cmd: CommandType) => string)[] = [];\n list[enumCommandMap.M] = (cmd: CommandType) => `M${cmd[1]} ${cmd[2]}`;\n list[enumCommandMap.L] = (cmd: CommandType) => `L${cmd[1]} ${cmd[2]}`;\n list[enumCommandMap.Q] = (cmd: CommandType) => `Q${cmd[1]} ${cmd[2]} ${cmd[3]} ${cmd[4]}`;\n list[enumCommandMap.C] = (cmd: CommandType) => `C${cmd[1]} ${cmd[2]} ${cmd[3]} ${cmd[4]} ${cmd[5]} ${cmd[6]}`;\n list[enumCommandMap.A] = (cmd: CommandType) => {\n const bezierPathList: number[] = [];\n addArcToBezierPath(\n bezierPathList,\n cmd[4] as number,\n cmd[5] as number,\n cmd[1] as number,\n cmd[2] as number,\n cmd[3] as number,\n cmd[3] as number\n );\n let path = '';\n for (let i = 0; i < bezierPathList.length; i += 6) {\n path += `C${bezierPathList[i]} ${bezierPathList[i + 1]} ${bezierPathList[i + 2]} ${bezierPathList[i + 3]} ${\n bezierPathList[i + 4]\n } ${bezierPathList[i + 5]}`;\n }\n return path;\n };\n // list[enumCommandMap.AT] = this.arcToTransform;\n // list[enumCommandMap.E] = this.ellipseTransform;\n // list[enumCommandMap.R] = this.rectTransform;\n // list[enumCommandMap.A] = this.arcTransform;\n list[enumCommandMap.Z] = (cmd: CommandType) => `Z`;\n this.toStringCbList = list;\n }\n\n const list = this.toStringCbList;\n let path = '';\n this.commandList.forEach(c => {\n path += list[c[0]](c);\n });\n return path;\n }\n\n fromString(str: string, x?: number, y?: number, sX?: number, sY?: number) {\n this.clear();\n\n // 解析path字符串\n const commandStrList = parseSvgPath(str) as CommandStrType[]; // TODO: 目前正则性能较差,后续需要加上回调函数供用户直接操作绘图命令\n this._runCommandStrList(commandStrList, x, y, sX, sY);\n\n // 更新bounds\n this._updateBounds();\n return this;\n }\n fromLine(line: ILine) {\n const { points, curveType, clipRangeByDimension } = line.attribute;\n if (!points) {\n return;\n }\n const cache = calcLineCache(points, curveType);\n if (clipRangeByDimension === 'x') {\n this.direction = Direction.ROW;\n } else if (clipRangeByDimension === 'y') {\n this.direction = Direction.COLUMN;\n } else if (clipRangeByDimension === 'auto') {\n this.direction = cache.direction;\n }\n this.curves = cache.curves;\n }\n fromCustomPath2D(path: ICustomPath2D, x?: number, y?: number, sX?: number, sY?: number) {\n this.clear();\n this._runCommandList(path.commandList as CommandType[], x, y, sX, sY);\n\n // 更新bounds\n this._updateBounds();\n return this;\n }\n transform(x: number, y: number, sx: number, sy: number) {\n const commandList = this.commandList;\n if (!this.transformCbList) {\n const list: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[] = [];\n list[enumCommandMap.M] = this.moveToTransform;\n list[enumCommandMap.L] = this.lineToTransform;\n list[enumCommandMap.Q] = this.quadraticCurveToTransform;\n list[enumCommandMap.C] = this.bezierCurveToTransform;\n list[enumCommandMap.AT] = this.arcToTransform;\n list[enumCommandMap.E] = this.ellipseTransform;\n list[enumCommandMap.R] = this.rectTransform;\n list[enumCommandMap.A] = this.arcTransform;\n list[enumCommandMap.Z] = this.closePathTransform;\n this.transformCbList = list;\n }\n commandList.forEach(cmd => {\n this.transformCbList[cmd[0]](cmd, x, y, sx, sy);\n });\n this._updateBounds();\n }\n\n protected moveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n }\n protected lineToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n }\n protected quadraticCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n }\n protected bezierCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n cmd[5] = (cmd[5] as number) * sx + x;\n cmd[6] = (cmd[6] as number) * sy + y;\n }\n arcToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n cmd[5] = ((cmd[5] as number) * (sx + sy)) / 2;\n }\n ellipseTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx;\n cmd[4] = (cmd[4] as number) * sy;\n }\n rectTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx;\n cmd[4] = (cmd[4] as number) * sy;\n }\n arcTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = ((cmd[3] as number) * (sx + sy)) / 2;\n }\n closePathTransform() {\n return;\n }\n protected _runCommandStrList(\n commandStrList: CommandStrType[],\n l: number = 0,\n t: number = 0,\n sX: number = 1,\n sY: number = 1\n ) {\n let current; // current instruction\n let previous = null;\n let x = 0; // current x\n let y = 0; // current y\n // let sX = 0;\n // let sY = 0;\n let controlX = 0; // current control point x\n let controlY = 0; // current control point y\n let tempX;\n let tempY;\n let tempControlX;\n let tempControlY;\n\n // if (isNil(l)) l = 0;\n // if (isNil(t)) t = 0;\n // if (isNil(sX)) sX = 1;\n // if (isNil(sY)) sY = sX;\n\n for (let i = 0, len = commandStrList.length; i < len; ++i) {\n current = commandStrList[i];\n if (sX !== 1 || sY !== 1) {\n current = scale(current, sX, sY);\n }\n\n switch (\n current[0] // first letter\n ) {\n case 'l': // lineto, relative\n x += current[1] as number;\n y += current[2] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'L': // lineto, absolute\n x = current[1] as number;\n y = current[2] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'm': // moveTo, relative\n x += current[1] as number;\n y += current[2] as number;\n this.moveTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1] as number;\n y = current[2] as number;\n this.moveTo(x + l, y + t);\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + (current[5] as number);\n tempY = y + (current[6] as number);\n controlX = x + (current[3] as number);\n controlY = y + (current[4] as number);\n this.bezierCurveTo(\n x + (current[1] as number) + l, // x1\n y + (current[2] as number) + t, // y1\n controlX + l, // x2\n controlY + t, // y2\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5] as number;\n y = current[6] as number;\n controlX = current[3] as number;\n controlY = current[4] as number;\n this.bezierCurveTo(\n (current[1] as number) + l,\n (current[2] as number) + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[3] as number);\n tempY = y + (current[4] as number);\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.bezierCurveTo(\n controlX + l,\n controlY + t,\n x + (current[1] as number) + l,\n y + (current[2] as number) + t,\n tempX + l,\n tempY + t\n );\n\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3] as number;\n tempY = current[4] as number;\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.bezierCurveTo(\n controlX + l,\n controlY + t,\n (current[1] as number) + l,\n (current[2] as number) + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = current[1] as number;\n controlY = current[2] as number;\n\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[3] as number);\n tempY = y + (current[4] as number);\n\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n tempX = current[3] as number;\n tempY = current[4] as number;\n\n this.quadraticCurveTo((current[1] as number) + l, (current[2] as number) + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = current[1] as number;\n controlY = current[2] as number;\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[1] as number);\n tempY = y + (current[2] as number);\n\n if ((previous![0] as string).match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n } else if (previous![0] === 't') {\n // calculate reflection of previous control points for t\n controlX = 2 * x - (tempControlX as number);\n controlY = 2 * y - (tempControlY as number);\n } else if (previous![0] === 'q') {\n // calculate reflection of previous control points for q\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n tempControlX = controlX;\n tempControlY = controlY;\n\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n break;\n\n case 'T':\n tempX = current[1] as number;\n tempY = current[2] as number;\n\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n drawArc(this, x + l, y + t, [\n current[1] as number,\n current[2] as number,\n current[3] as number,\n current[4] as number,\n current[5] as number,\n (current[6] as number) + x + l,\n (current[7] as number) + y + t\n ]);\n x += current[6] as number;\n y += current[7] as number;\n break;\n\n case 'A':\n drawArc(this, x + l, y + t, [\n current[1] as number,\n current[2] as number,\n current[3] as number,\n current[4] as number,\n current[5] as number,\n (current[6] as number) + l,\n (current[7] as number) + t\n ]);\n x = current[6] as number;\n y = current[7] as number;\n break;\n\n case 'z':\n case 'Z':\n this.closePath();\n break;\n }\n previous = current;\n }\n }\n\n protected _runCommandList(commandList: CommandType[], l: number = 0, t: number = 0, sX: number = 1, sY: number = 1) {\n if (l === 0 && t === 0 && sX === 1 && sY === 1) {\n this.commandList = commandList.map(entry => entry.slice() as CommandType);\n return;\n }\n\n for (let i = 0, len = commandList.length; i < len; ++i) {\n const current = commandList[i].slice() as CommandType;\n\n switch (\n current[0] // first letter\n ) {\n case enumCommandMap.L:\n this.lineToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.M:\n this.moveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.C:\n this.bezierCurveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.Q:\n this.quadraticCurveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.A:\n this.arcToTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.E:\n this.ellipseTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.R:\n this.rectTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.AT:\n this.arcToTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.Z:\n this.closePath();\n break;\n }\n }\n }\n private _updateBounds() {\n this.bounds.clear();\n renderCommandList(this.commandList, this._boundsContext as unknown as ICustomPath2D);\n }\n\n release(): void {\n this.commandList = [];\n this._boundsContext = null;\n this._ctx = null;\n }\n\n getLength(): number {\n if (this.direction === Direction.COLUMN) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.y - ec.p1.y);\n } else if (this.direction === Direction.ROW) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.x - ec.p1.x);\n }\n return this.curves.reduce((l, c) => l + c.getLength(), 0);\n }\n\n getAttrAt(distance: number): { pos: IPointLike; angle: number } {\n if (!this.curves) {\n return { pos: { x: 0, y: 0 }, angle: 0 };\n }\n let _dis = 0;\n let curve: ICurve<IPoint>;\n for (let i = 0; i < this.curves.length; i++) {\n curve = this.curves[i];\n const cl = curve.getLength(this.direction);\n if (_dis + cl >= distance) {\n break;\n } else {\n _dis += cl;\n }\n }\n const t = (distance - _dis) / curve.getLength(this.direction);\n const pos = curve.getPointAt(t);\n const angle = curve.getAngleAt(t);\n return { pos, angle };\n }\n}\n\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\n\nfunction scale(current: CommandStrType, sX: number, sY: number) {\n const c = (temp[0] = current[0]);\n if (c === 'a' || c === 'A') {\n temp[1] = sX * (current[1] as number);\n temp[2] = sY * (current[2] as number);\n temp[3] = current[3] as number;\n temp[4] = current[4] as number;\n temp[5] = current[5] as number;\n temp[6] = sX * (current[6] as number);\n temp[7] = sY * (current[7] as number);\n } else if (c === 'h' || c === 'H') {\n temp[1] = sX * (current[1] as number);\n } else if (c === 'v' || c === 'V') {\n temp[1] = sY * (current[1] as number);\n } else {\n for (let i = 1, n = current.length; i < n; ++i) {\n temp[i] = (i % 2 === 1 ? sX : sY) * (current[i] as number);\n }\n }\n return temp;\n}\n"]}
1
+ {"version":3,"sources":["../src/common/custom-path2d.ts"],"names":[],"mappings":"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","file":"custom-path2d.js","sourcesContent":["import { BoundsContext } from './bounds-context';\nimport type { CommandStrType, CommandType, ICurve, ICustomPath2D, IDirection, ILine, IPath2D } from '../interface';\nimport { CurvePath } from './segment/curve/path';\nimport { enumCommandMap, parseSvgPath } from './path-svg';\nimport type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs } from '@visactor/vutils';\nimport { Direction } from './enums';\nimport { drawArc, addArcToBezierPath } from './shape/arc';\nimport { renderCommandList } from './render-command-list';\nimport { calcLineCache } from './segment';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n// 基于d3-shape重构\n// https://github.com/vega/vega/blob/master/packages/vega-scenegraph/src/path/render.js\n\nexport class CustomPath2D extends CurvePath implements ICustomPath2D {\n commandList: CommandType[] = [];\n _boundsContext: IPath2D;\n _ctx?: IPath2D;\n direction?: IDirection;\n protected transformCbList?: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[];\n protected toStringCbList?: ((cmd: CommandType) => string)[];\n\n constructor(ctx?: IPath2D) {\n super();\n if (ctx) {\n this._ctx = ctx;\n }\n this._boundsContext = new BoundsContext(this.bounds);\n }\n\n setCtx(ctx?: IPath2D) {\n this._ctx = ctx;\n }\n\n moveTo(x: number, y: number) {\n this.commandList.push([enumCommandMap.M, x, y]);\n this._ctx && this._ctx.moveTo(x, y);\n return this;\n }\n lineTo(x: number, y: number) {\n this.commandList.push([enumCommandMap.L, x, y]);\n this._ctx && this._ctx.lineTo(x, y);\n return this;\n }\n quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number) {\n this.commandList.push([enumCommandMap.Q, aCPx, aCPy, aX, aY]);\n this._ctx && this._ctx.quadraticCurveTo(aCPx, aCPy, aX, aY);\n return this;\n }\n bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number) {\n this.commandList.push([enumCommandMap.C, aCP1x, aCP1y, aCP2x, aCP2y, aX, aY]);\n this._ctx && this._ctx.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n return this;\n }\n arcTo(aX1: number, aY1: number, aX2: number, aY2: number, aRadius: number) {\n this.commandList.push([enumCommandMap.AT, aX1, aY1, aX2, aY2, aRadius]);\n this._ctx && this._ctx.arcTo(aX1, aY1, aX2, aY2, aRadius);\n return this;\n }\n ellipse(\n aX: number,\n aY: number,\n xRadius: number,\n yRadius: number,\n aRotation: number,\n aStartAngle: number,\n aEndAngle: number,\n aClockwise: boolean\n ) {\n this.commandList.push([enumCommandMap.E, aX, aY, xRadius, yRadius, aRotation, aStartAngle, aEndAngle, aClockwise]);\n this._ctx && this._ctx.ellipse(aX, aY, xRadius, yRadius, aRotation, aStartAngle, aEndAngle, aClockwise);\n return this;\n }\n rect(x: number, y: number, w: number, h: number) {\n this.commandList.push([enumCommandMap.R, x, y, w, h]);\n this._ctx && this._ctx.rect(x, y, w, h);\n return this;\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean) {\n this.commandList.push([enumCommandMap.A, x, y, radius, startAngle, endAngle, counterclockwise]);\n this._ctx && this._ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n closePath() {\n this.commandList.push([enumCommandMap.Z]);\n this._ctx && this._ctx.closePath();\n return this;\n }\n\n addCurve(curve: ICurve<IPoint>) {\n this.curves.push(curve);\n // todo parse curve\n }\n clear() {\n this.transformCbList = null;\n this.commandList.length = 0;\n this.curves.length = 0;\n }\n\n beginPath() {\n this.clear();\n }\n\n toString(): string {\n if (!this.toStringCbList) {\n const list: ((cmd: CommandType) => string)[] = [];\n list[enumCommandMap.M] = (cmd: CommandType) => `M${cmd[1]} ${cmd[2]}`;\n list[enumCommandMap.L] = (cmd: CommandType) => `L${cmd[1]} ${cmd[2]}`;\n list[enumCommandMap.Q] = (cmd: CommandType) => `Q${cmd[1]} ${cmd[2]} ${cmd[3]} ${cmd[4]}`;\n list[enumCommandMap.C] = (cmd: CommandType) => `C${cmd[1]} ${cmd[2]} ${cmd[3]} ${cmd[4]} ${cmd[5]} ${cmd[6]}`;\n list[enumCommandMap.A] = (cmd: CommandType) => {\n const bezierPathList: number[] = [];\n addArcToBezierPath(\n bezierPathList,\n cmd[4] as number,\n cmd[5] as number,\n cmd[1] as number,\n cmd[2] as number,\n cmd[3] as number,\n cmd[3] as number\n );\n let path = '';\n for (let i = 0; i < bezierPathList.length; i += 6) {\n path += `C${bezierPathList[i]} ${bezierPathList[i + 1]} ${bezierPathList[i + 2]} ${bezierPathList[i + 3]} ${\n bezierPathList[i + 4]\n } ${bezierPathList[i + 5]}`;\n }\n return path;\n };\n // list[enumCommandMap.AT] = this.arcToTransform;\n // list[enumCommandMap.E] = this.ellipseTransform;\n list[enumCommandMap.R] = (cmd: CommandType) => `M${cmd[1]} ${cmd[2]} h${cmd[3]} v${cmd[4]} H${cmd[1]}Z`;\n // list[enumCommandMap.A] = this.arcTransform;\n list[enumCommandMap.Z] = (cmd: CommandType) => `Z`;\n this.toStringCbList = list;\n }\n\n const list = this.toStringCbList;\n let path = '';\n this.commandList.forEach(c => {\n path += list[c[0]](c);\n });\n return path;\n }\n\n fromString(str: string, x?: number, y?: number, sX?: number, sY?: number) {\n this.clear();\n\n // 解析path字符串\n const commandStrList = parseSvgPath(str) as CommandStrType[]; // TODO: 目前正则性能较差,后续需要加上回调函数供用户直接操作绘图命令\n this._runCommandStrList(commandStrList, x, y, sX, sY);\n\n // 更新bounds\n this._updateBounds();\n return this;\n }\n fromLine(line: ILine) {\n const { points, curveType, clipRangeByDimension } = line.attribute;\n if (!points) {\n return;\n }\n const cache = calcLineCache(points, curveType);\n if (clipRangeByDimension === 'x') {\n this.direction = Direction.ROW;\n } else if (clipRangeByDimension === 'y') {\n this.direction = Direction.COLUMN;\n } else if (clipRangeByDimension === 'auto') {\n this.direction = cache.direction;\n }\n this.curves = cache.curves;\n }\n fromCustomPath2D(path: ICustomPath2D, x?: number, y?: number, sX?: number, sY?: number) {\n this.clear();\n this._runCommandList(path.commandList as CommandType[], x, y, sX, sY);\n\n // 更新bounds\n this._updateBounds();\n return this;\n }\n transform(x: number, y: number, sx: number, sy: number) {\n const commandList = this.commandList;\n if (!this.transformCbList) {\n const list: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[] = [];\n list[enumCommandMap.M] = this.moveToTransform;\n list[enumCommandMap.L] = this.lineToTransform;\n list[enumCommandMap.Q] = this.quadraticCurveToTransform;\n list[enumCommandMap.C] = this.bezierCurveToTransform;\n list[enumCommandMap.AT] = this.arcToTransform;\n list[enumCommandMap.E] = this.ellipseTransform;\n list[enumCommandMap.R] = this.rectTransform;\n list[enumCommandMap.A] = this.arcTransform;\n list[enumCommandMap.Z] = this.closePathTransform;\n this.transformCbList = list;\n }\n commandList.forEach(cmd => {\n this.transformCbList[cmd[0]](cmd, x, y, sx, sy);\n });\n this._updateBounds();\n }\n\n protected moveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n }\n protected lineToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n }\n protected quadraticCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n }\n protected bezierCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n cmd[5] = (cmd[5] as number) * sx + x;\n cmd[6] = (cmd[6] as number) * sy + y;\n }\n arcToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n cmd[5] = ((cmd[5] as number) * (sx + sy)) / 2;\n }\n ellipseTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx;\n cmd[4] = (cmd[4] as number) * sy;\n }\n rectTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx;\n cmd[4] = (cmd[4] as number) * sy;\n }\n arcTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = ((cmd[3] as number) * (sx + sy)) / 2;\n }\n closePathTransform() {\n return;\n }\n protected _runCommandStrList(\n commandStrList: CommandStrType[],\n l: number = 0,\n t: number = 0,\n sX: number = 1,\n sY: number = 1\n ) {\n let current; // current instruction\n let previous = null;\n let x = 0; // current x\n let y = 0; // current y\n // let sX = 0;\n // let sY = 0;\n let controlX = 0; // current control point x\n let controlY = 0; // current control point y\n let tempX;\n let tempY;\n let tempControlX;\n let tempControlY;\n\n // if (isNil(l)) l = 0;\n // if (isNil(t)) t = 0;\n // if (isNil(sX)) sX = 1;\n // if (isNil(sY)) sY = sX;\n\n for (let i = 0, len = commandStrList.length; i < len; ++i) {\n current = commandStrList[i];\n if (sX !== 1 || sY !== 1) {\n current = scale(current, sX, sY);\n }\n\n switch (\n current[0] // first letter\n ) {\n case 'l': // lineto, relative\n x += current[1] as number;\n y += current[2] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'L': // lineto, absolute\n x = current[1] as number;\n y = current[2] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'm': // moveTo, relative\n x += current[1] as number;\n y += current[2] as number;\n this.moveTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1] as number;\n y = current[2] as number;\n this.moveTo(x + l, y + t);\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + (current[5] as number);\n tempY = y + (current[6] as number);\n controlX = x + (current[3] as number);\n controlY = y + (current[4] as number);\n this.bezierCurveTo(\n x + (current[1] as number) + l, // x1\n y + (current[2] as number) + t, // y1\n controlX + l, // x2\n controlY + t, // y2\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5] as number;\n y = current[6] as number;\n controlX = current[3] as number;\n controlY = current[4] as number;\n this.bezierCurveTo(\n (current[1] as number) + l,\n (current[2] as number) + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[3] as number);\n tempY = y + (current[4] as number);\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.bezierCurveTo(\n controlX + l,\n controlY + t,\n x + (current[1] as number) + l,\n y + (current[2] as number) + t,\n tempX + l,\n tempY + t\n );\n\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3] as number;\n tempY = current[4] as number;\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.bezierCurveTo(\n controlX + l,\n controlY + t,\n (current[1] as number) + l,\n (current[2] as number) + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = current[1] as number;\n controlY = current[2] as number;\n\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[3] as number);\n tempY = y + (current[4] as number);\n\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n tempX = current[3] as number;\n tempY = current[4] as number;\n\n this.quadraticCurveTo((current[1] as number) + l, (current[2] as number) + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = current[1] as number;\n controlY = current[2] as number;\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[1] as number);\n tempY = y + (current[2] as number);\n\n if ((previous![0] as string).match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n } else if (previous![0] === 't') {\n // calculate reflection of previous control points for t\n controlX = 2 * x - (tempControlX as number);\n controlY = 2 * y - (tempControlY as number);\n } else if (previous![0] === 'q') {\n // calculate reflection of previous control points for q\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n tempControlX = controlX;\n tempControlY = controlY;\n\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n break;\n\n case 'T':\n tempX = current[1] as number;\n tempY = current[2] as number;\n\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n drawArc(this, x + l, y + t, [\n current[1] as number,\n current[2] as number,\n current[3] as number,\n current[4] as number,\n current[5] as number,\n (current[6] as number) + x + l,\n (current[7] as number) + y + t\n ]);\n x += current[6] as number;\n y += current[7] as number;\n break;\n\n case 'A':\n drawArc(this, x + l, y + t, [\n current[1] as number,\n current[2] as number,\n current[3] as number,\n current[4] as number,\n current[5] as number,\n (current[6] as number) + l,\n (current[7] as number) + t\n ]);\n x = current[6] as number;\n y = current[7] as number;\n break;\n\n case 'z':\n case 'Z':\n this.closePath();\n break;\n }\n previous = current;\n }\n }\n\n protected _runCommandList(commandList: CommandType[], l: number = 0, t: number = 0, sX: number = 1, sY: number = 1) {\n if (l === 0 && t === 0 && sX === 1 && sY === 1) {\n this.commandList = commandList.map(entry => entry.slice() as CommandType);\n return;\n }\n\n for (let i = 0, len = commandList.length; i < len; ++i) {\n const current = commandList[i].slice() as CommandType;\n\n switch (\n current[0] // first letter\n ) {\n case enumCommandMap.L:\n this.lineToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.M:\n this.moveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.C:\n this.bezierCurveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.Q:\n this.quadraticCurveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.A:\n this.arcToTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.E:\n this.ellipseTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.R:\n this.rectTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.AT:\n this.arcToTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.Z:\n this.closePath();\n break;\n }\n }\n }\n private _updateBounds() {\n this.bounds.clear();\n renderCommandList(this.commandList, this._boundsContext as unknown as ICustomPath2D);\n }\n\n release(): void {\n this.commandList = [];\n this._boundsContext = null;\n this._ctx = null;\n }\n\n getLength(): number {\n if (this.direction === Direction.COLUMN) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.y - ec.p1.y);\n } else if (this.direction === Direction.ROW) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.x - ec.p1.x);\n }\n return this.curves.reduce((l, c) => l + c.getLength(), 0);\n }\n\n getAttrAt(distance: number): { pos: IPointLike; angle: number } {\n if (!this.curves) {\n return { pos: { x: 0, y: 0 }, angle: 0 };\n }\n let _dis = 0;\n let curve: ICurve<IPoint>;\n for (let i = 0; i < this.curves.length; i++) {\n curve = this.curves[i];\n const cl = curve.getLength(this.direction);\n if (_dis + cl >= distance) {\n break;\n } else {\n _dis += cl;\n }\n }\n const t = (distance - _dis) / curve.getLength(this.direction);\n const pos = curve.getPointAt(t);\n const angle = curve.getAngleAt(t);\n return { pos, angle };\n }\n}\n\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\n\nfunction scale(current: CommandStrType, sX: number, sY: number) {\n const c = (temp[0] = current[0]);\n if (c === 'a' || c === 'A') {\n temp[1] = sX * (current[1] as number);\n temp[2] = sY * (current[2] as number);\n temp[3] = current[3] as number;\n temp[4] = current[4] as number;\n temp[5] = current[5] as number;\n temp[6] = sX * (current[6] as number);\n temp[7] = sY * (current[7] as number);\n } else if (c === 'h' || c === 'H') {\n temp[1] = sX * (current[1] as number);\n } else if (c === 'v' || c === 'V') {\n temp[1] = sY * (current[1] as number);\n } else {\n for (let i = 1, n = current.length; i < n; ++i) {\n temp[i] = (i % 2 === 1 ? sX : sY) * (current[i] as number);\n }\n }\n return temp;\n}\n"]}
@@ -196,15 +196,17 @@ class EventManager {
196
196
  return currentTarget;
197
197
  }
198
198
  createPointerEvent(from, type, target) {
199
+ var _a, _b;
199
200
  const event = this.allocateEvent(federated_event_1.FederatedPointerEvent);
200
201
  return this.copyPointerData(from, event), this.copyMouseData(from, event), this.copyData(from, event),
201
- event.nativeEvent = from.nativeEvent, event.originalEvent = from, event.target = target || this.pickTarget(event.global.x, event.global.y, event),
202
+ event.nativeEvent = from.nativeEvent, event.originalEvent = from, event.target = target || this.pickTarget(null !== (_a = event.viewX) && void 0 !== _a ? _a : event.global.x, null !== (_b = event.viewY) && void 0 !== _b ? _b : event.global.y, event),
202
203
  "string" == typeof type && (event.type = type), event;
203
204
  }
204
205
  createWheelEvent(from, target) {
206
+ var _a, _b;
205
207
  const event = this.allocateEvent(federated_event_1.FederatedWheelEvent);
206
208
  return this.copyWheelData(from, event), this.copyMouseData(from, event), this.copyData(from, event),
207
- event.nativeEvent = from.nativeEvent, event.originalEvent = from, event.target = target || this.pickTarget(event.global.x, event.global.y, event),
209
+ event.nativeEvent = from.nativeEvent, event.originalEvent = from, event.target = target || this.pickTarget(null !== (_a = event.viewX) && void 0 !== _a ? _a : event.global.x, null !== (_b = event.viewY) && void 0 !== _b ? _b : event.global.y, event),
208
210
  event;
209
211
  }
210
212
  clonePointerEvent(from, type) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/event-manager.ts"],"names":[],"mappings":"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","file":"event-manager.js","sourcesContent":["import type { Dict } from '@visactor/vutils';\nimport { EventEmitter, Logger, get } from '@visactor/vutils';\nimport { FederatedMouseEvent, FederatedPointerEvent, FederatedWheelEvent } from './federated-event';\nimport type { IEventTarget } from '../interface/event';\nimport { WILDCARD } from './constant';\nimport type { FederatedEvent } from './federated-event/base-event';\nimport { clock } from './util';\nimport type { Cursor, IGraphic } from '../interface';\n/**\n * 代码参考自 https://github.com/pixijs/pixijs\n * The MIT License\n\n Copyright (c) 2013-2023 Mathew Groves, Chad Engler\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\n// The maximum iterations used in propagation. This prevent infinite loops.\nconst PROPAGATION_LIMIT = 2048;\n\ntype TrackingData = {\n pressTargetsByButton: {\n [id: number]: IEventTarget[];\n };\n clicksByButton: {\n [id: number]: {\n clickCount: number;\n target: IEventTarget;\n timeStamp: number;\n };\n };\n overTargets: IEventTarget[];\n};\n\ntype EventManagerConfig = {\n /**\n * 多次点击之间的最大时间,默认为 200 ms\n * @default 200\n */\n clickInterval?: number;\n};\n\ntype EmitterListener = { fn: (...args: any[]) => any; context: any; once: boolean };\ntype EmitterListeners = Record<string, EmitterListener | EmitterListener[]>;\n\nfunction isMouseLike(pointerType: string) {\n return pointerType === 'mouse' || pointerType === 'pen';\n}\n\nconst DEFAULT_CLICK_INTERVAL = 200;\n\nexport class EventManager {\n rootTarget: IEventTarget;\n\n dispatch: any = new EventEmitter();\n\n cursor: Cursor | string;\n cursorTarget: IEventTarget | null = null;\n\n protected mappingTable: Record<\n string,\n Array<{\n fn: (e: FederatedEvent, target: IEventTarget) => void;\n priority: number;\n }>\n >;\n\n protected mappingState: Record<string, any> = {\n trackingData: {}\n };\n\n protected eventPool: Map<typeof FederatedEvent, FederatedEvent[]> = new Map();\n\n // 缓存上一个坐标点的拾取结果,用于优化在同一个点连续触发事件的拾取逻辑\n private _prePointTargetCache: Dict<IEventTarget> & { stageRenderCount: number };\n\n private _config: EventManagerConfig;\n\n constructor(root: IEventTarget, config: EventManagerConfig) {\n this.rootTarget = root;\n this.mappingTable = {};\n this._config = {\n clickInterval: DEFAULT_CLICK_INTERVAL,\n ...config\n };\n this.addEventMapping('pointerdown', this.onPointerDown);\n this.addEventMapping('pointermove', this.onPointerMove);\n this.addEventMapping('pointerout', this.onPointerOut);\n this.addEventMapping('pointerleave', this.onPointerOut);\n this.addEventMapping('pointerover', this.onPointerOver);\n this.addEventMapping('pointerup', this.onPointerUp);\n this.addEventMapping('pointerupoutside', this.onPointerUpOutside);\n this.addEventMapping('wheel', this.onWheel);\n }\n\n addEventMapping(type: string, fn: (e: FederatedEvent, target: IEventTarget) => void): void {\n if (!this.mappingTable[type]) {\n this.mappingTable[type] = [];\n }\n\n this.mappingTable[type].push({\n fn,\n priority: 0\n });\n this.mappingTable[type].sort((a, b) => a.priority - b.priority);\n }\n\n dispatchEvent(e: FederatedEvent, type?: string): void {\n e.propagationStopped = false;\n e.propagationImmediatelyStopped = false;\n\n this.propagate(e, type);\n this.dispatch.emit(type || e.type, e);\n }\n\n mapEvent(e: FederatedEvent): void {\n if (!this.rootTarget) {\n return;\n }\n const mappers = this.mappingTable[e.type];\n\n let target;\n const cacheKey = `${e.canvasX}-${e.canvasY}`;\n if (\n this._prePointTargetCache?.[cacheKey] &&\n (this._prePointTargetCache?.[cacheKey] as unknown as IGraphic)?.stage &&\n (this._prePointTargetCache?.[cacheKey] as unknown as IGraphic)?.stage.renderCount ===\n (this._prePointTargetCache?.stageRenderCount as number)\n ) {\n target = this._prePointTargetCache[cacheKey];\n } else {\n target = this.pickTarget(e.viewX, e.viewY, e);\n // 缓存上一个坐标点的拾取结果,减少拾取的次数,如 pointermove pointerdown 和 pointerup 在同一个点触发\n // 如果存在params,那么就不缓存\n if (!(e as any).pickParams) {\n this._prePointTargetCache = {\n [cacheKey]: target,\n stageRenderCount: target?.stage.renderCount ?? -1\n };\n }\n }\n\n if (mappers) {\n for (let i = 0, j = mappers.length; i < j; i++) {\n mappers[i].fn(e, target);\n }\n } else {\n Logger.getInstance().warn(`[EventManager]: Event mapping not defined for ${e.type}`);\n }\n }\n\n propagate(e: FederatedEvent, type?: string): void {\n if (!e.target) {\n return;\n }\n\n const composedPath = e.composedPath();\n\n e.eventPhase = e.CAPTURING_PHASE;\n\n for (let i = 0, j = composedPath.length - 1; i < j; i++) {\n e.currentTarget = composedPath[i];\n\n this.notifyTarget(e, type);\n\n if (e.propagationStopped || e.propagationImmediatelyStopped) {\n return;\n }\n }\n\n e.eventPhase = e.AT_TARGET;\n e.currentTarget = e.target;\n\n this.notifyTarget(e, type);\n\n if (e.propagationStopped || e.propagationImmediatelyStopped) {\n return;\n }\n\n e.eventPhase = e.BUBBLING_PHASE;\n\n for (let i = composedPath.length - 2; i >= 0; i--) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n\n if (e.propagationStopped || e.propagationImmediatelyStopped) {\n return;\n }\n }\n }\n\n propagationPath(target: IEventTarget): IEventTarget[] {\n const propagationPath = [target];\n\n for (let i = 0; i < PROPAGATION_LIMIT && target !== this.rootTarget && target.parent; i++) {\n if (!target.parent) {\n throw new Error('Cannot find propagation path to disconnected target');\n }\n\n propagationPath.push(target.parent);\n\n target = target.parent;\n }\n\n propagationPath.reverse();\n\n return propagationPath;\n }\n\n protected notifyTarget(e: FederatedEvent, type?: string): void {\n type = type ?? e.type;\n const key = e.eventPhase === e.CAPTURING_PHASE || e.eventPhase === e.AT_TARGET ? `${type}capture` : type;\n\n this.notifyListeners(e, key);\n\n if (e.eventPhase === e.AT_TARGET) {\n this.notifyListeners(e, type);\n }\n }\n\n protected onPointerDown = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedPointerEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-pointer event as a pointer event');\n\n return;\n }\n\n const e = this.createPointerEvent(from, from.type, target);\n\n this.dispatchEvent(e, 'pointerdown');\n\n if (e.pointerType === 'touch') {\n this.dispatchEvent(e, 'touchstart');\n } else if (isMouseLike(e.pointerType)) {\n const isRightButton = e.button === 2;\n\n this.dispatchEvent(e, isRightButton ? 'rightdown' : 'mousedown');\n }\n\n const trackingData = this.trackingData(from.pointerId);\n\n trackingData.pressTargetsByButton[from.button] = e.composedPath();\n\n this.freeEvent(e);\n };\n\n protected onPointerMove = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedPointerEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-pointer event as a pointer event');\n\n return;\n }\n\n const e = this.createPointerEvent(from, from.type, target);\n const isMouse = isMouseLike(e.pointerType);\n const trackingData = this.trackingData(from.pointerId);\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n\n if (trackingData.overTargets && outTarget && outTarget !== this.rootTarget && outTarget !== e.target) {\n const outType = from.type === 'mousemove' ? 'mouseout' : 'pointerout';\n const outEvent = this.createPointerEvent(from, outType, outTarget || undefined);\n\n this.dispatchEvent(outEvent, 'pointerout');\n if (isMouse) {\n this.dispatchEvent(outEvent, 'mouseout');\n }\n if (!e.composedPath().includes(outTarget!)) {\n const leaveEvent = this.createPointerEvent(from, 'pointerleave', outTarget || undefined);\n\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n\n while (leaveEvent.target && !e.composedPath().includes(leaveEvent.target)) {\n leaveEvent.currentTarget = leaveEvent.target;\n\n this.notifyTarget(leaveEvent);\n if (isMouse) {\n this.notifyTarget(leaveEvent, 'mouseleave');\n }\n\n leaveEvent.target = leaveEvent.target.parent as IEventTarget;\n }\n\n this.freeEvent(leaveEvent);\n }\n\n this.freeEvent(outEvent);\n }\n\n if (outTarget !== e.target) {\n const overType = from.type === 'mousemove' ? 'mouseover' : 'pointerover';\n const overEvent = this.clonePointerEvent(e, overType);\n\n this.dispatchEvent(overEvent, 'pointerover');\n if (isMouse) {\n this.dispatchEvent(overEvent, 'mouseover');\n }\n\n let overTargetAncestor = outTarget?.parent;\n\n while (overTargetAncestor && overTargetAncestor !== this.rootTarget.parent) {\n if (overTargetAncestor === e.target) {\n break;\n }\n\n overTargetAncestor = overTargetAncestor.parent;\n }\n\n const didPointerEnter = !overTargetAncestor || overTargetAncestor === this.rootTarget.parent;\n\n if (didPointerEnter) {\n const enterEvent = this.clonePointerEvent(e, 'pointerenter');\n\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n\n while (enterEvent.target && enterEvent.target !== outTarget && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n\n this.notifyTarget(enterEvent);\n if (isMouse) {\n this.notifyTarget(enterEvent, 'mouseenter');\n }\n\n enterEvent.target = enterEvent.target.parent as IEventTarget;\n }\n\n this.freeEvent(enterEvent);\n }\n\n this.freeEvent(overEvent);\n }\n\n const propagationMethod = 'dispatchEvent';\n\n this[propagationMethod](e, 'pointermove');\n\n if (e.pointerType === 'touch') {\n this[propagationMethod](e, 'touchmove');\n }\n\n if (isMouse) {\n this[propagationMethod](e, 'mousemove');\n this.cursorTarget = e.target;\n this.cursor = (e.target?.attribute?.cursor as Cursor) || this.rootTarget.getCursor();\n }\n\n trackingData.overTargets = e.composedPath();\n\n this.freeEvent(e);\n };\n\n protected onPointerOver = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedPointerEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-pointer event as a pointer event');\n\n return;\n }\n\n const trackingData = this.trackingData(from.pointerId);\n const e = this.createPointerEvent(from, from.type, target);\n const isMouse = isMouseLike(e.pointerType);\n\n this.dispatchEvent(e, 'pointerover');\n if (isMouse) {\n this.dispatchEvent(e, 'mouseover');\n }\n if (e.pointerType === 'mouse') {\n this.cursorTarget = e.target;\n this.cursor = (e.target?.attribute?.cursor as Cursor) || this.rootTarget.getCursor();\n }\n\n const enterEvent = this.clonePointerEvent(e, 'pointerenter');\n\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n\n while (enterEvent.target && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n\n this.notifyTarget(enterEvent);\n if (isMouse) {\n this.notifyTarget(enterEvent, 'mouseenter');\n }\n\n enterEvent.target = enterEvent.target.parent as IEventTarget;\n }\n\n trackingData.overTargets = e.composedPath();\n\n this.freeEvent(e);\n this.freeEvent(enterEvent);\n };\n\n protected onPointerOut = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedPointerEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-pointer event as a pointer event');\n\n return;\n }\n\n const trackingData = this.trackingData(from.pointerId);\n\n if (trackingData.overTargets) {\n const isMouse = isMouseLike(from.pointerType);\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n\n const outEvent = this.createPointerEvent(from, 'pointerout', outTarget || undefined);\n\n this.dispatchEvent(outEvent);\n if (isMouse) {\n this.dispatchEvent(outEvent, 'mouseout');\n }\n\n const leaveEvent = this.createPointerEvent(from, 'pointerleave', outTarget || undefined);\n\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n\n while (leaveEvent.target && leaveEvent.target !== this.rootTarget.parent) {\n leaveEvent.currentTarget = leaveEvent.target;\n\n this.notifyTarget(leaveEvent);\n if (isMouse) {\n this.notifyTarget(leaveEvent, 'mouseleave');\n }\n\n leaveEvent.target = leaveEvent.target.parent as IEventTarget;\n }\n\n trackingData.overTargets = [];\n\n this.freeEvent(outEvent);\n this.freeEvent(leaveEvent);\n }\n\n this.cursorTarget = null;\n this.cursor = '';\n };\n\n protected onPointerUp = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedPointerEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-pointer event as a pointer event');\n\n return;\n }\n\n const now = clock.now();\n const e = this.createPointerEvent(from, from.type, target);\n\n this.dispatchEvent(e, 'pointerup');\n\n if (e.pointerType === 'touch') {\n this.dispatchEvent(e, 'touchend');\n } else if (isMouseLike(e.pointerType)) {\n const isRightButton = e.button === 2;\n\n this.dispatchEvent(e, isRightButton ? 'rightup' : 'mouseup');\n }\n\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n\n let clickTarget = pressTarget;\n\n if (pressTarget && !e.composedPath().includes(pressTarget)) {\n let currentTarget = pressTarget;\n\n while (currentTarget && !e.composedPath().includes(currentTarget)) {\n e.currentTarget = currentTarget;\n\n this.notifyTarget(e, 'pointerupoutside');\n\n if (e.pointerType === 'touch') {\n this.notifyTarget(e, 'touchendoutside');\n } else if (isMouseLike(e.pointerType)) {\n const isRightButton = e.button === 2;\n\n this.notifyTarget(e, isRightButton ? 'rightupoutside' : 'mouseupoutside');\n }\n\n currentTarget = currentTarget.parent as IEventTarget;\n }\n\n delete trackingData.pressTargetsByButton[from.button];\n\n clickTarget = currentTarget;\n }\n\n if (clickTarget) {\n const clickEvent = this.clonePointerEvent(e, 'click');\n\n clickEvent.target = clickTarget;\n clickEvent.path = [];\n\n if (!trackingData.clicksByButton[from.button]) {\n trackingData.clicksByButton[from.button] = {\n clickCount: 0,\n target: clickEvent.target,\n timeStamp: now\n };\n }\n\n const clickHistory = trackingData.clicksByButton[from.button];\n if (\n clickHistory.target === clickEvent.target &&\n now - clickHistory.timeStamp < (this._config.clickInterval ?? DEFAULT_CLICK_INTERVAL)\n ) {\n ++clickHistory.clickCount;\n } else {\n clickHistory.clickCount = 1;\n }\n\n clickHistory.target = clickEvent.target;\n clickHistory.timeStamp = now;\n\n clickEvent.detail = clickHistory.clickCount;\n\n if (isMouseLike(clickEvent.pointerType)) {\n this.dispatchEvent(clickEvent, 'click');\n\n if (clickHistory.clickCount === 2) {\n // 双击\n this.dispatchEvent(clickEvent, 'dblclick');\n }\n } else if (clickEvent.pointerType === 'touch') {\n this.dispatchEvent(clickEvent, 'tap');\n if (clickHistory.clickCount === 2) {\n // 双击\n this.dispatchEvent(clickEvent, 'dbltap');\n }\n }\n\n this.dispatchEvent(clickEvent, 'pointertap');\n\n this.freeEvent(clickEvent);\n }\n\n this.freeEvent(e);\n };\n\n protected onPointerUpOutside = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedPointerEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-pointer event as a pointer event');\n\n return;\n }\n\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n const e = this.createPointerEvent(from, from.type, target);\n\n if (pressTarget) {\n let currentTarget = pressTarget;\n\n while (currentTarget) {\n e.currentTarget = currentTarget;\n\n this.notifyTarget(e, 'pointerupoutside');\n\n if (e.pointerType === 'touch') {\n this.notifyTarget(e, 'touchendoutside');\n } else if (isMouseLike(e.pointerType)) {\n this.notifyTarget(e, e.button === 2 ? 'rightupoutside' : 'mouseupoutside');\n }\n\n currentTarget = currentTarget.parent as IEventTarget;\n }\n\n delete trackingData.pressTargetsByButton[from.button];\n }\n\n this.freeEvent(e);\n };\n\n protected onWheel = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedWheelEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-wheel event as a wheel event');\n\n return;\n }\n\n const wheelEvent = this.createWheelEvent(from, target);\n\n this.dispatchEvent(wheelEvent);\n this.freeEvent(wheelEvent);\n };\n\n protected findMountedTarget(propagationPath: IEventTarget[] | null): IEventTarget | null {\n if (!propagationPath) {\n return null;\n }\n\n let currentTarget = propagationPath[0];\n\n for (let i = 1; i < propagationPath.length; i++) {\n if (propagationPath[i].parent === currentTarget) {\n currentTarget = propagationPath[i];\n } else {\n break;\n }\n }\n\n return currentTarget;\n }\n\n protected createPointerEvent(\n from: FederatedPointerEvent,\n type?: string,\n target?: IEventTarget\n ): FederatedPointerEvent {\n const event = this.allocateEvent(FederatedPointerEvent);\n\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n\n if (target) {\n event.target = target;\n } else {\n event.target = this.pickTarget(event.global.x, event.global.y, event);\n }\n\n if (typeof type === 'string') {\n event.type = type;\n }\n\n return event;\n }\n\n protected createWheelEvent(from: FederatedWheelEvent, target?: IEventTarget): FederatedWheelEvent {\n const event = this.allocateEvent(FederatedWheelEvent);\n\n this.copyWheelData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = target || this.pickTarget(event.global.x, event.global.y, event);\n\n return event;\n }\n\n protected clonePointerEvent(from: FederatedPointerEvent, type?: string): FederatedPointerEvent {\n const event = this.allocateEvent(FederatedPointerEvent);\n\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from.originalEvent;\n\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n\n event.target = from.target;\n event.path = from.composedPath().slice();\n event.type = type ?? event.type;\n\n return event;\n }\n\n copyWheelData(from: FederatedWheelEvent, to: FederatedWheelEvent): void {\n to.deltaMode = from.deltaMode;\n to.deltaX = from.deltaX;\n to.deltaY = from.deltaY;\n to.deltaZ = from.deltaZ;\n }\n\n copyPointerData(from: FederatedEvent, to: FederatedEvent): void {\n if (!(from instanceof FederatedPointerEvent && to instanceof FederatedPointerEvent)) {\n return;\n }\n\n to.pointerId = from.pointerId;\n to.width = from.width;\n to.height = from.height;\n to.isPrimary = from.isPrimary;\n to.pointerType = from.pointerType;\n to.pressure = from.pressure;\n to.tangentialPressure = from.tangentialPressure;\n to.tiltX = from.tiltX;\n to.tiltY = from.tiltY;\n to.twist = from.twist;\n }\n\n copyMouseData(from: FederatedEvent, to: FederatedEvent): void {\n if (!(from instanceof FederatedMouseEvent && to instanceof FederatedMouseEvent)) {\n return;\n }\n\n to.altKey = from.altKey;\n to.button = from.button;\n to.buttons = from.buttons;\n to.ctrlKey = from.ctrlKey;\n to.shiftKey = from.shiftKey;\n to.metaKey = from.metaKey;\n\n ['client', 'movement', 'canvas', 'screen', 'global', 'offset', 'viewport'].forEach(key => {\n to[key].x = from[key].x;\n to[key].y = from[key].y;\n });\n }\n\n copyData(from: FederatedEvent, to: FederatedEvent): void {\n to.isTrusted = from.isTrusted;\n to.srcElement = from.srcElement;\n to.timeStamp = clock.now();\n to.type = from.type;\n to.detail = from.detail;\n to.view = from.view;\n to.which = from.which;\n\n to.layer.x = from.layer.x;\n to.layer.y = from.layer.y;\n\n to.page.x = from.page.x;\n to.page.y = from.page.y;\n\n (to as any).pickParams = (from as any).pickParams;\n }\n\n protected trackingData(id: number): TrackingData {\n if (!this.mappingState.trackingData[id]) {\n this.mappingState.trackingData[id] = {\n pressTargetsByButton: {},\n clicksByButton: {},\n overTarget: null\n };\n }\n\n return this.mappingState.trackingData[id];\n }\n\n protected allocateEvent<T extends FederatedEvent>(constructor: { new (boundary: EventManager): T }): T {\n if (!this.eventPool.has(constructor as any)) {\n this.eventPool.set(constructor as any, []);\n }\n\n const event = (this.eventPool.get(constructor as any)?.pop() as T) || new constructor(this);\n\n event.eventPhase = event.NONE;\n event.currentTarget = null;\n event.path = [];\n event.target = null;\n\n return event;\n }\n\n protected freeEvent<T extends FederatedEvent>(event: T): void {\n if (event.manager !== this) {\n throw new Error('It is illegal to free an event not managed by this EventManager!');\n }\n\n const constructor = event.constructor;\n\n if (!this.eventPool.has(constructor as any)) {\n this.eventPool.set(constructor as any, []);\n }\n\n this.eventPool.get(constructor as any)?.push(event);\n }\n\n private notifyListeners(e: FederatedEvent, type: string): void {\n const events = (e.currentTarget as any)._events as EmitterListeners;\n const listeners = events[type];\n\n if (listeners) {\n if ('fn' in listeners) {\n if (listeners.once) {\n e.currentTarget.removeEventListener(type, listeners.fn, { once: true });\n }\n listeners.fn.call(listeners.context, e);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n if (listeners[i].once) {\n e.currentTarget.removeEventListener(type, listeners[i].fn, { once: true });\n }\n listeners[i].fn.call(listeners[i].context, e);\n }\n }\n }\n // 永远触发WILDCARD事件代理\n this.emitDelegation(e, type);\n }\n\n private emitDelegation(e: FederatedEvent, type: string): void {\n const events = (e.currentTarget as any)._events as EmitterListeners;\n const listeners = events[WILDCARD];\n if (listeners) {\n if ('fn' in listeners) {\n listeners.fn.call(listeners.context, e, type);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n listeners[i].fn.call(listeners[i].context, e, type);\n }\n }\n }\n }\n\n private pickTarget(x: number, y: number, e: any) {\n let target;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const pickResult = this.rootTarget.pick(x, y);\n if (pickResult && pickResult.graphic) {\n target = pickResult.graphic;\n } else if (pickResult && pickResult.group) {\n target = pickResult.group;\n // } else if (x >= 0 && x <= get(this.rootTarget, 'width') && y >= 0 && y <= get(this.rootTarget, 'height')) {\n } else if ((this.rootTarget as unknown as IGraphic).AABBBounds.contains(x, y)) {\n target = this.rootTarget;\n } else {\n target = null;\n }\n if (e) {\n e.pickParams = pickResult.params;\n }\n return target;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/event/event-manager.ts"],"names":[],"mappings":"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","file":"event-manager.js","sourcesContent":["import type { Dict } from '@visactor/vutils';\nimport { EventEmitter, Logger, get } from '@visactor/vutils';\nimport { FederatedMouseEvent, FederatedPointerEvent, FederatedWheelEvent } from './federated-event';\nimport type { IEventTarget } from '../interface/event';\nimport { WILDCARD } from './constant';\nimport type { FederatedEvent } from './federated-event/base-event';\nimport { clock } from './util';\nimport type { Cursor, IGraphic } from '../interface';\n/**\n * 代码参考自 https://github.com/pixijs/pixijs\n * The MIT License\n\n Copyright (c) 2013-2023 Mathew Groves, Chad Engler\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\n// The maximum iterations used in propagation. This prevent infinite loops.\nconst PROPAGATION_LIMIT = 2048;\n\ntype TrackingData = {\n pressTargetsByButton: {\n [id: number]: IEventTarget[];\n };\n clicksByButton: {\n [id: number]: {\n clickCount: number;\n target: IEventTarget;\n timeStamp: number;\n };\n };\n overTargets: IEventTarget[];\n};\n\ntype EventManagerConfig = {\n /**\n * 多次点击之间的最大时间,默认为 200 ms\n * @default 200\n */\n clickInterval?: number;\n};\n\ntype EmitterListener = { fn: (...args: any[]) => any; context: any; once: boolean };\ntype EmitterListeners = Record<string, EmitterListener | EmitterListener[]>;\n\nfunction isMouseLike(pointerType: string) {\n return pointerType === 'mouse' || pointerType === 'pen';\n}\n\nconst DEFAULT_CLICK_INTERVAL = 200;\n\nexport class EventManager {\n rootTarget: IEventTarget;\n\n dispatch: any = new EventEmitter();\n\n cursor: Cursor | string;\n cursorTarget: IEventTarget | null = null;\n\n protected mappingTable: Record<\n string,\n Array<{\n fn: (e: FederatedEvent, target: IEventTarget) => void;\n priority: number;\n }>\n >;\n\n protected mappingState: Record<string, any> = {\n trackingData: {}\n };\n\n protected eventPool: Map<typeof FederatedEvent, FederatedEvent[]> = new Map();\n\n // 缓存上一个坐标点的拾取结果,用于优化在同一个点连续触发事件的拾取逻辑\n private _prePointTargetCache: Dict<IEventTarget> & { stageRenderCount: number };\n\n private _config: EventManagerConfig;\n\n constructor(root: IEventTarget, config: EventManagerConfig) {\n this.rootTarget = root;\n this.mappingTable = {};\n this._config = {\n clickInterval: DEFAULT_CLICK_INTERVAL,\n ...config\n };\n this.addEventMapping('pointerdown', this.onPointerDown);\n this.addEventMapping('pointermove', this.onPointerMove);\n this.addEventMapping('pointerout', this.onPointerOut);\n this.addEventMapping('pointerleave', this.onPointerOut);\n this.addEventMapping('pointerover', this.onPointerOver);\n this.addEventMapping('pointerup', this.onPointerUp);\n this.addEventMapping('pointerupoutside', this.onPointerUpOutside);\n this.addEventMapping('wheel', this.onWheel);\n }\n\n addEventMapping(type: string, fn: (e: FederatedEvent, target: IEventTarget) => void): void {\n if (!this.mappingTable[type]) {\n this.mappingTable[type] = [];\n }\n\n this.mappingTable[type].push({\n fn,\n priority: 0\n });\n this.mappingTable[type].sort((a, b) => a.priority - b.priority);\n }\n\n dispatchEvent(e: FederatedEvent, type?: string): void {\n e.propagationStopped = false;\n e.propagationImmediatelyStopped = false;\n\n this.propagate(e, type);\n this.dispatch.emit(type || e.type, e);\n }\n\n mapEvent(e: FederatedEvent): void {\n if (!this.rootTarget) {\n return;\n }\n const mappers = this.mappingTable[e.type];\n\n let target;\n const cacheKey = `${e.canvasX}-${e.canvasY}`;\n if (\n this._prePointTargetCache?.[cacheKey] &&\n (this._prePointTargetCache?.[cacheKey] as unknown as IGraphic)?.stage &&\n (this._prePointTargetCache?.[cacheKey] as unknown as IGraphic)?.stage.renderCount ===\n (this._prePointTargetCache?.stageRenderCount as number)\n ) {\n target = this._prePointTargetCache[cacheKey];\n } else {\n target = this.pickTarget(e.viewX, e.viewY, e);\n // 缓存上一个坐标点的拾取结果,减少拾取的次数,如 pointermove pointerdown 和 pointerup 在同一个点触发\n // 如果存在params,那么就不缓存\n if (!(e as any).pickParams) {\n this._prePointTargetCache = {\n [cacheKey]: target,\n stageRenderCount: target?.stage.renderCount ?? -1\n };\n }\n }\n\n if (mappers) {\n for (let i = 0, j = mappers.length; i < j; i++) {\n mappers[i].fn(e, target);\n }\n } else {\n Logger.getInstance().warn(`[EventManager]: Event mapping not defined for ${e.type}`);\n }\n }\n\n propagate(e: FederatedEvent, type?: string): void {\n if (!e.target) {\n return;\n }\n\n const composedPath = e.composedPath();\n\n e.eventPhase = e.CAPTURING_PHASE;\n\n for (let i = 0, j = composedPath.length - 1; i < j; i++) {\n e.currentTarget = composedPath[i];\n\n this.notifyTarget(e, type);\n\n if (e.propagationStopped || e.propagationImmediatelyStopped) {\n return;\n }\n }\n\n e.eventPhase = e.AT_TARGET;\n e.currentTarget = e.target;\n\n this.notifyTarget(e, type);\n\n if (e.propagationStopped || e.propagationImmediatelyStopped) {\n return;\n }\n\n e.eventPhase = e.BUBBLING_PHASE;\n\n for (let i = composedPath.length - 2; i >= 0; i--) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n\n if (e.propagationStopped || e.propagationImmediatelyStopped) {\n return;\n }\n }\n }\n\n propagationPath(target: IEventTarget): IEventTarget[] {\n const propagationPath = [target];\n\n for (let i = 0; i < PROPAGATION_LIMIT && target !== this.rootTarget && target.parent; i++) {\n if (!target.parent) {\n throw new Error('Cannot find propagation path to disconnected target');\n }\n\n propagationPath.push(target.parent);\n\n target = target.parent;\n }\n\n propagationPath.reverse();\n\n return propagationPath;\n }\n\n protected notifyTarget(e: FederatedEvent, type?: string): void {\n type = type ?? e.type;\n const key = e.eventPhase === e.CAPTURING_PHASE || e.eventPhase === e.AT_TARGET ? `${type}capture` : type;\n\n this.notifyListeners(e, key);\n\n if (e.eventPhase === e.AT_TARGET) {\n this.notifyListeners(e, type);\n }\n }\n\n protected onPointerDown = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedPointerEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-pointer event as a pointer event');\n\n return;\n }\n\n const e = this.createPointerEvent(from, from.type, target);\n\n this.dispatchEvent(e, 'pointerdown');\n\n if (e.pointerType === 'touch') {\n this.dispatchEvent(e, 'touchstart');\n } else if (isMouseLike(e.pointerType)) {\n const isRightButton = e.button === 2;\n\n this.dispatchEvent(e, isRightButton ? 'rightdown' : 'mousedown');\n }\n\n const trackingData = this.trackingData(from.pointerId);\n\n trackingData.pressTargetsByButton[from.button] = e.composedPath();\n\n this.freeEvent(e);\n };\n\n protected onPointerMove = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedPointerEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-pointer event as a pointer event');\n\n return;\n }\n\n const e = this.createPointerEvent(from, from.type, target);\n const isMouse = isMouseLike(e.pointerType);\n const trackingData = this.trackingData(from.pointerId);\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n\n if (trackingData.overTargets && outTarget && outTarget !== this.rootTarget && outTarget !== e.target) {\n const outType = from.type === 'mousemove' ? 'mouseout' : 'pointerout';\n const outEvent = this.createPointerEvent(from, outType, outTarget || undefined);\n\n this.dispatchEvent(outEvent, 'pointerout');\n if (isMouse) {\n this.dispatchEvent(outEvent, 'mouseout');\n }\n if (!e.composedPath().includes(outTarget!)) {\n const leaveEvent = this.createPointerEvent(from, 'pointerleave', outTarget || undefined);\n\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n\n while (leaveEvent.target && !e.composedPath().includes(leaveEvent.target)) {\n leaveEvent.currentTarget = leaveEvent.target;\n\n this.notifyTarget(leaveEvent);\n if (isMouse) {\n this.notifyTarget(leaveEvent, 'mouseleave');\n }\n\n leaveEvent.target = leaveEvent.target.parent as IEventTarget;\n }\n\n this.freeEvent(leaveEvent);\n }\n\n this.freeEvent(outEvent);\n }\n\n if (outTarget !== e.target) {\n const overType = from.type === 'mousemove' ? 'mouseover' : 'pointerover';\n const overEvent = this.clonePointerEvent(e, overType);\n\n this.dispatchEvent(overEvent, 'pointerover');\n if (isMouse) {\n this.dispatchEvent(overEvent, 'mouseover');\n }\n\n let overTargetAncestor = outTarget?.parent;\n\n while (overTargetAncestor && overTargetAncestor !== this.rootTarget.parent) {\n if (overTargetAncestor === e.target) {\n break;\n }\n\n overTargetAncestor = overTargetAncestor.parent;\n }\n\n const didPointerEnter = !overTargetAncestor || overTargetAncestor === this.rootTarget.parent;\n\n if (didPointerEnter) {\n const enterEvent = this.clonePointerEvent(e, 'pointerenter');\n\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n\n while (enterEvent.target && enterEvent.target !== outTarget && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n\n this.notifyTarget(enterEvent);\n if (isMouse) {\n this.notifyTarget(enterEvent, 'mouseenter');\n }\n\n enterEvent.target = enterEvent.target.parent as IEventTarget;\n }\n\n this.freeEvent(enterEvent);\n }\n\n this.freeEvent(overEvent);\n }\n\n const propagationMethod = 'dispatchEvent';\n\n this[propagationMethod](e, 'pointermove');\n\n if (e.pointerType === 'touch') {\n this[propagationMethod](e, 'touchmove');\n }\n\n if (isMouse) {\n this[propagationMethod](e, 'mousemove');\n this.cursorTarget = e.target;\n this.cursor = (e.target?.attribute?.cursor as Cursor) || this.rootTarget.getCursor();\n }\n\n trackingData.overTargets = e.composedPath();\n\n this.freeEvent(e);\n };\n\n protected onPointerOver = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedPointerEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-pointer event as a pointer event');\n\n return;\n }\n\n const trackingData = this.trackingData(from.pointerId);\n const e = this.createPointerEvent(from, from.type, target);\n const isMouse = isMouseLike(e.pointerType);\n\n this.dispatchEvent(e, 'pointerover');\n if (isMouse) {\n this.dispatchEvent(e, 'mouseover');\n }\n if (e.pointerType === 'mouse') {\n this.cursorTarget = e.target;\n this.cursor = (e.target?.attribute?.cursor as Cursor) || this.rootTarget.getCursor();\n }\n\n const enterEvent = this.clonePointerEvent(e, 'pointerenter');\n\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n\n while (enterEvent.target && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n\n this.notifyTarget(enterEvent);\n if (isMouse) {\n this.notifyTarget(enterEvent, 'mouseenter');\n }\n\n enterEvent.target = enterEvent.target.parent as IEventTarget;\n }\n\n trackingData.overTargets = e.composedPath();\n\n this.freeEvent(e);\n this.freeEvent(enterEvent);\n };\n\n protected onPointerOut = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedPointerEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-pointer event as a pointer event');\n\n return;\n }\n\n const trackingData = this.trackingData(from.pointerId);\n\n if (trackingData.overTargets) {\n const isMouse = isMouseLike(from.pointerType);\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n\n const outEvent = this.createPointerEvent(from, 'pointerout', outTarget || undefined);\n\n this.dispatchEvent(outEvent);\n if (isMouse) {\n this.dispatchEvent(outEvent, 'mouseout');\n }\n\n const leaveEvent = this.createPointerEvent(from, 'pointerleave', outTarget || undefined);\n\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n\n while (leaveEvent.target && leaveEvent.target !== this.rootTarget.parent) {\n leaveEvent.currentTarget = leaveEvent.target;\n\n this.notifyTarget(leaveEvent);\n if (isMouse) {\n this.notifyTarget(leaveEvent, 'mouseleave');\n }\n\n leaveEvent.target = leaveEvent.target.parent as IEventTarget;\n }\n\n trackingData.overTargets = [];\n\n this.freeEvent(outEvent);\n this.freeEvent(leaveEvent);\n }\n\n this.cursorTarget = null;\n this.cursor = '';\n };\n\n protected onPointerUp = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedPointerEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-pointer event as a pointer event');\n\n return;\n }\n\n const now = clock.now();\n const e = this.createPointerEvent(from, from.type, target);\n\n this.dispatchEvent(e, 'pointerup');\n\n if (e.pointerType === 'touch') {\n this.dispatchEvent(e, 'touchend');\n } else if (isMouseLike(e.pointerType)) {\n const isRightButton = e.button === 2;\n\n this.dispatchEvent(e, isRightButton ? 'rightup' : 'mouseup');\n }\n\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n\n let clickTarget = pressTarget;\n\n if (pressTarget && !e.composedPath().includes(pressTarget)) {\n let currentTarget = pressTarget;\n\n while (currentTarget && !e.composedPath().includes(currentTarget)) {\n e.currentTarget = currentTarget;\n\n this.notifyTarget(e, 'pointerupoutside');\n\n if (e.pointerType === 'touch') {\n this.notifyTarget(e, 'touchendoutside');\n } else if (isMouseLike(e.pointerType)) {\n const isRightButton = e.button === 2;\n\n this.notifyTarget(e, isRightButton ? 'rightupoutside' : 'mouseupoutside');\n }\n\n currentTarget = currentTarget.parent as IEventTarget;\n }\n\n delete trackingData.pressTargetsByButton[from.button];\n\n clickTarget = currentTarget;\n }\n\n if (clickTarget) {\n const clickEvent = this.clonePointerEvent(e, 'click');\n\n clickEvent.target = clickTarget;\n clickEvent.path = [];\n\n if (!trackingData.clicksByButton[from.button]) {\n trackingData.clicksByButton[from.button] = {\n clickCount: 0,\n target: clickEvent.target,\n timeStamp: now\n };\n }\n\n const clickHistory = trackingData.clicksByButton[from.button];\n if (\n clickHistory.target === clickEvent.target &&\n now - clickHistory.timeStamp < (this._config.clickInterval ?? DEFAULT_CLICK_INTERVAL)\n ) {\n ++clickHistory.clickCount;\n } else {\n clickHistory.clickCount = 1;\n }\n\n clickHistory.target = clickEvent.target;\n clickHistory.timeStamp = now;\n\n clickEvent.detail = clickHistory.clickCount;\n\n if (isMouseLike(clickEvent.pointerType)) {\n this.dispatchEvent(clickEvent, 'click');\n\n if (clickHistory.clickCount === 2) {\n // 双击\n this.dispatchEvent(clickEvent, 'dblclick');\n }\n } else if (clickEvent.pointerType === 'touch') {\n this.dispatchEvent(clickEvent, 'tap');\n if (clickHistory.clickCount === 2) {\n // 双击\n this.dispatchEvent(clickEvent, 'dbltap');\n }\n }\n\n this.dispatchEvent(clickEvent, 'pointertap');\n\n this.freeEvent(clickEvent);\n }\n\n this.freeEvent(e);\n };\n\n protected onPointerUpOutside = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedPointerEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-pointer event as a pointer event');\n\n return;\n }\n\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n const e = this.createPointerEvent(from, from.type, target);\n\n if (pressTarget) {\n let currentTarget = pressTarget;\n\n while (currentTarget) {\n e.currentTarget = currentTarget;\n\n this.notifyTarget(e, 'pointerupoutside');\n\n if (e.pointerType === 'touch') {\n this.notifyTarget(e, 'touchendoutside');\n } else if (isMouseLike(e.pointerType)) {\n this.notifyTarget(e, e.button === 2 ? 'rightupoutside' : 'mouseupoutside');\n }\n\n currentTarget = currentTarget.parent as IEventTarget;\n }\n\n delete trackingData.pressTargetsByButton[from.button];\n }\n\n this.freeEvent(e);\n };\n\n protected onWheel = (from: FederatedEvent, target: IEventTarget) => {\n if (!(from instanceof FederatedWheelEvent)) {\n Logger.getInstance().warn('EventManager cannot map a non-wheel event as a wheel event');\n\n return;\n }\n\n const wheelEvent = this.createWheelEvent(from, target);\n\n this.dispatchEvent(wheelEvent);\n this.freeEvent(wheelEvent);\n };\n\n protected findMountedTarget(propagationPath: IEventTarget[] | null): IEventTarget | null {\n if (!propagationPath) {\n return null;\n }\n\n let currentTarget = propagationPath[0];\n\n for (let i = 1; i < propagationPath.length; i++) {\n if (propagationPath[i].parent === currentTarget) {\n currentTarget = propagationPath[i];\n } else {\n break;\n }\n }\n\n return currentTarget;\n }\n\n protected createPointerEvent(\n from: FederatedPointerEvent,\n type?: string,\n target?: IEventTarget\n ): FederatedPointerEvent {\n const event = this.allocateEvent(FederatedPointerEvent);\n\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n\n if (target) {\n event.target = target;\n } else {\n event.target = this.pickTarget(event.viewX ?? event.global.x, event.viewY ?? event.global.y, event);\n }\n\n if (typeof type === 'string') {\n event.type = type;\n }\n\n return event;\n }\n\n protected createWheelEvent(from: FederatedWheelEvent, target?: IEventTarget): FederatedWheelEvent {\n const event = this.allocateEvent(FederatedWheelEvent);\n\n this.copyWheelData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = target || this.pickTarget(event.viewX ?? event.global.x, event.viewY ?? event.global.y, event);\n\n return event;\n }\n\n protected clonePointerEvent(from: FederatedPointerEvent, type?: string): FederatedPointerEvent {\n const event = this.allocateEvent(FederatedPointerEvent);\n\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from.originalEvent;\n\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n\n event.target = from.target;\n event.path = from.composedPath().slice();\n event.type = type ?? event.type;\n\n return event;\n }\n\n copyWheelData(from: FederatedWheelEvent, to: FederatedWheelEvent): void {\n to.deltaMode = from.deltaMode;\n to.deltaX = from.deltaX;\n to.deltaY = from.deltaY;\n to.deltaZ = from.deltaZ;\n }\n\n copyPointerData(from: FederatedEvent, to: FederatedEvent): void {\n if (!(from instanceof FederatedPointerEvent && to instanceof FederatedPointerEvent)) {\n return;\n }\n\n to.pointerId = from.pointerId;\n to.width = from.width;\n to.height = from.height;\n to.isPrimary = from.isPrimary;\n to.pointerType = from.pointerType;\n to.pressure = from.pressure;\n to.tangentialPressure = from.tangentialPressure;\n to.tiltX = from.tiltX;\n to.tiltY = from.tiltY;\n to.twist = from.twist;\n }\n\n copyMouseData(from: FederatedEvent, to: FederatedEvent): void {\n if (!(from instanceof FederatedMouseEvent && to instanceof FederatedMouseEvent)) {\n return;\n }\n\n to.altKey = from.altKey;\n to.button = from.button;\n to.buttons = from.buttons;\n to.ctrlKey = from.ctrlKey;\n to.shiftKey = from.shiftKey;\n to.metaKey = from.metaKey;\n\n ['client', 'movement', 'canvas', 'screen', 'global', 'offset', 'viewport'].forEach(key => {\n to[key].x = from[key].x;\n to[key].y = from[key].y;\n });\n }\n\n copyData(from: FederatedEvent, to: FederatedEvent): void {\n to.isTrusted = from.isTrusted;\n to.srcElement = from.srcElement;\n to.timeStamp = clock.now();\n to.type = from.type;\n to.detail = from.detail;\n to.view = from.view;\n to.which = from.which;\n\n to.layer.x = from.layer.x;\n to.layer.y = from.layer.y;\n\n to.page.x = from.page.x;\n to.page.y = from.page.y;\n\n (to as any).pickParams = (from as any).pickParams;\n }\n\n protected trackingData(id: number): TrackingData {\n if (!this.mappingState.trackingData[id]) {\n this.mappingState.trackingData[id] = {\n pressTargetsByButton: {},\n clicksByButton: {},\n overTarget: null\n };\n }\n\n return this.mappingState.trackingData[id];\n }\n\n protected allocateEvent<T extends FederatedEvent>(constructor: { new (boundary: EventManager): T }): T {\n if (!this.eventPool.has(constructor as any)) {\n this.eventPool.set(constructor as any, []);\n }\n\n const event = (this.eventPool.get(constructor as any)?.pop() as T) || new constructor(this);\n\n event.eventPhase = event.NONE;\n event.currentTarget = null;\n event.path = [];\n event.target = null;\n\n return event;\n }\n\n protected freeEvent<T extends FederatedEvent>(event: T): void {\n if (event.manager !== this) {\n throw new Error('It is illegal to free an event not managed by this EventManager!');\n }\n\n const constructor = event.constructor;\n\n if (!this.eventPool.has(constructor as any)) {\n this.eventPool.set(constructor as any, []);\n }\n\n this.eventPool.get(constructor as any)?.push(event);\n }\n\n private notifyListeners(e: FederatedEvent, type: string): void {\n const events = (e.currentTarget as any)._events as EmitterListeners;\n const listeners = events[type];\n\n if (listeners) {\n if ('fn' in listeners) {\n if (listeners.once) {\n e.currentTarget.removeEventListener(type, listeners.fn, { once: true });\n }\n listeners.fn.call(listeners.context, e);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n if (listeners[i].once) {\n e.currentTarget.removeEventListener(type, listeners[i].fn, { once: true });\n }\n listeners[i].fn.call(listeners[i].context, e);\n }\n }\n }\n // 永远触发WILDCARD事件代理\n this.emitDelegation(e, type);\n }\n\n private emitDelegation(e: FederatedEvent, type: string): void {\n const events = (e.currentTarget as any)._events as EmitterListeners;\n const listeners = events[WILDCARD];\n if (listeners) {\n if ('fn' in listeners) {\n listeners.fn.call(listeners.context, e, type);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n listeners[i].fn.call(listeners[i].context, e, type);\n }\n }\n }\n }\n\n private pickTarget(x: number, y: number, e: any) {\n let target;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const pickResult = this.rootTarget.pick(x, y);\n if (pickResult && pickResult.graphic) {\n target = pickResult.graphic;\n } else if (pickResult && pickResult.group) {\n target = pickResult.group;\n // } else if (x >= 0 && x <= get(this.rootTarget, 'width') && y >= 0 && y <= get(this.rootTarget, 'height')) {\n } else if ((this.rootTarget as unknown as IGraphic).AABBBounds.contains(x, y)) {\n target = this.rootTarget;\n } else {\n target = null;\n }\n if (e) {\n e.pickParams = pickResult.params;\n }\n return target;\n }\n}\n"]}
@@ -123,6 +123,7 @@ exports.DefaultConnectAttribute = {
123
123
  zIndex: 0,
124
124
  layout: null,
125
125
  boundsPadding: 0,
126
+ renderStyle: "default",
126
127
  pickMode: "accurate",
127
128
  customPickShape: null,
128
129
  boundsMode: "accurate",
@@ -209,7 +210,7 @@ exports.DefaultArcAttribute = Object.assign(Object.assign({}, exports.DefaultAtt
209
210
  }), exports.DefaultTextAttribute = Object.assign(Object.assign(Object.assign({}, exports.DefaultAttribute), exports.DefaultTextStyle), {
210
211
  strokeBoundsBuffer: 0,
211
212
  keepDirIn3d: !0
212
- }), exports.DefaultRichTextAttribute = Object.assign(Object.assign(Object.assign({}, exports.DefaultAttribute), exports.DefaultTextStyle), {
213
+ }), exports.DefaultRichTextAttribute = Object.assign(Object.assign({}, exports.DefaultAttribute), {
213
214
  width: 300,
214
215
  height: 300,
215
216
  ellipsis: !0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/config.ts"],"names":[],"mappings":"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","file":"config.js","sourcesContent":["// 存放公共属性\nimport { Logger, Matrix, pi2 } from '@visactor/vutils';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport type {\n IArcGraphicAttribute,\n IAreaGraphicAttribute,\n IGraphicAttribute,\n ICircleGraphicAttribute,\n IFillStyle,\n IGlyphGraphicAttribute,\n IGroupGraphicAttribute,\n IImageGraphicAttribute,\n ILineGraphicAttribute,\n IPathGraphicAttribute,\n IPolygonGraphicAttribute,\n IRect3dGraphicAttribute,\n IRectGraphicAttribute,\n IStrokeStyle,\n IGraphicStyle,\n ISymbolGraphicAttribute,\n ITextAttribute,\n ITextGraphicAttribute,\n IRichTextGraphicAttribute,\n ITransform,\n RichTextWordBreak,\n RichTextVerticalDirection,\n RichTextGlobalAlignType,\n RichTextGlobalBaselineType,\n IRichTextIconGraphicAttribute,\n IConnectedStyle,\n ILayout,\n IDebugType,\n IPickStyle\n} from '../interface';\n\nexport const DefaultLayout: ILayout = {\n alignSelf: 'auto'\n};\n\nexport const DefaultTransform: ITransform = {\n x: 0,\n y: 0,\n z: 0,\n dx: 0,\n dy: 0,\n dz: 0,\n scrollX: 0,\n scrollY: 0,\n scaleX: 1,\n scaleY: 1,\n scaleZ: 1,\n angle: 0,\n alpha: 0,\n beta: 0,\n scaleCenter: [0, 0],\n anchor: [0, 0],\n anchor3d: [0, 0],\n postMatrix: new Matrix()\n};\n\nexport const DefaultFillStyle: IFillStyle = {\n fillOpacity: 1,\n fill: false,\n shadowBlur: 0,\n shadowColor: 'black',\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\n\nconst commonStroke: Omit<IStrokeStyle, 'outerBorder' | 'innerBorder'> = {\n strokeOpacity: 1,\n lineDash: [],\n lineDashOffset: 0,\n lineWidth: 1,\n lineCap: 'butt',\n lineJoin: 'miter',\n miterLimit: 10,\n strokeBoundsBuffer: 2,\n stroke: false\n};\n\nexport const DefaultStrokeStyle: IStrokeStyle = {\n outerBorder: { ...commonStroke, distance: 0 },\n innerBorder: { ...commonStroke, distance: 0 },\n ...commonStroke\n};\n\nexport const DefaultTextStyle: Required<ITextAttribute> = {\n text: '',\n maxLineWidth: Infinity,\n textAlign: 'left',\n textBaseline: 'alphabetic',\n fontSize: 16,\n // @ts-ignore\n fontFamily: `PingFang SC,Microsoft Yahei,system-ui,-apple-system,segoe ui,\n Roboto,Helvetica,Arial,sans-serif, apple color emoji,segoe ui emoji,segoe ui symbol`,\n fontWeight: '',\n ellipsis: '…',\n fontVariant: '',\n fontStyle: '',\n lineHeight: undefined,\n underline: 0,\n lineThrough: 0,\n scaleIn3d: false,\n direction: 'horizontal',\n wordBreak: 'break-all',\n ignoreBuf: false,\n verticalMode: 0,\n wrap: false,\n whiteSpace: 'no-wrap',\n heightLimit: Infinity,\n lineClamp: Infinity,\n suffixPosition: 'end',\n disableAutoClipedPoptip: undefined\n};\n\nexport const DefaultPickStyle: IPickStyle = {\n pickStrokeBuffer: 0\n};\n\nexport const DefaultStyle: IGraphicStyle = {\n opacity: 1,\n background: null,\n backgroundCornerRadius: 0,\n texture: null,\n textureColor: 'black',\n textureSize: 10,\n texturePadding: 2,\n backgroundMode: 'no-repeat',\n backgroundFit: true,\n blur: 0,\n cursor: null,\n html: null,\n ...DefaultFillStyle,\n ...DefaultStrokeStyle,\n ...DefaultLayout,\n ...DefaultPickStyle\n};\n\nexport const DefaultConnectAttribute: Required<IConnectedStyle> = {\n connectedType: 'none',\n // connectedStyle: {\n // stroke: DefaultStrokeStyle.stroke,\n // strokeOpacity: DefaultStrokeStyle.strokeOpacity,\n // lineDash: DefaultStrokeStyle.lineDash,\n // lineDashOffset: DefaultStrokeStyle.lineDashOffset,\n // lineCap: DefaultStrokeStyle.lineCap,\n // lineJoin: DefaultStrokeStyle.lineJoin,\n // lineWidth: DefaultStrokeStyle.lineWidth,\n // fill: DefaultFillStyle.fill,\n // fillOpacity: DefaultFillStyle.fillOpacity\n // },\n connectedStyle: {}, // 默认全都继承父属性\n connectedX: NaN,\n connectedY: NaN\n} as IConnectedStyle;\n\nexport const DefaultDebugAttribute: Required<IDebugType> = {\n _debug_bounds: false\n};\n\nexport const DefaultAttribute: Required<IGraphicAttribute> = {\n strokeSeg: null,\n pickable: true,\n childrenPickable: true,\n fillPickable: true,\n strokePickable: true,\n visible: true,\n zIndex: 0,\n layout: null,\n boundsPadding: 0,\n pickMode: 'accurate',\n customPickShape: null,\n boundsMode: 'accurate',\n keepDirIn3d: true,\n shadowRootIdx: 1,\n globalZIndex: 1,\n globalCompositeOperation: '',\n overflow: 'hidden',\n ...DefaultDebugAttribute,\n ...DefaultStyle,\n ...DefaultTransform\n};\n\nexport function addAttributeToPrototype(obj: Record<string, any>, c: any, keys: string[]) {\n keys.forEach(key => {\n c.prototype[key] = obj[key];\n });\n}\nexport function rewriteProto(obj: Record<string, any>, c: Record<string, any>) {\n Object.setPrototypeOf(obj, c);\n}\n\nexport const DefaultArcAttribute: Required<IArcGraphicAttribute> = {\n ...DefaultAttribute,\n startAngle: 0,\n endAngle: pi2,\n innerRadius: 0,\n outerRadius: 1,\n cornerRadius: 0,\n padRadius: 0,\n padAngle: 0,\n cap: false,\n forceShowCap: false\n};\n\nexport const DefaultAreaAttribute: Required<IAreaGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultConnectAttribute,\n points: [],\n segments: [],\n curveType: 'linear',\n clipRange: 1,\n closePath: false\n};\n\nexport const DefaultCircleAttribute: Required<ICircleGraphicAttribute> = {\n ...DefaultAttribute,\n radius: 1,\n startAngle: 0,\n endAngle: pi2\n};\n\nexport const DefaultGroupAttribute: Required<IGroupGraphicAttribute> = {\n ...DefaultAttribute,\n width: 0,\n height: 0,\n cornerRadius: 0,\n path: [],\n clip: false,\n visibleAll: true,\n display: 'relative',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n alignContent: 'flex-start'\n};\n\nexport const DefaultGlyphAttribute: Required<IGlyphGraphicAttribute> = {\n ...DefaultAttribute,\n path: '',\n width: 0,\n height: 0,\n cornerRadius: 0,\n clip: false\n};\n\nexport const DefaultLineAttribute: Required<ILineGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultConnectAttribute,\n points: [],\n segments: [],\n curveType: 'linear',\n clipRange: 1,\n clipRangeByDimension: 'default',\n closePath: false\n};\n\nexport const DefaultPathAttribute: Required<IPathGraphicAttribute> = {\n ...DefaultAttribute,\n path: new CustomPath2D(),\n customPath: () => {\n Logger.getInstance().warn('空函数');\n }\n};\n\nexport const DefaultPolygonAttribute: Required<IPolygonGraphicAttribute> = {\n ...DefaultAttribute,\n points: [],\n cornerRadius: 0,\n closePath: true\n};\n\nexport const DefaultRectAttribute: Required<IRectGraphicAttribute> = {\n ...DefaultAttribute,\n width: 0,\n height: 0,\n x1: 0,\n y1: 0,\n strokeBoundsBuffer: 0,\n cornerRadius: 0\n};\n\nexport const DefaultRect3dAttribute: Required<IRect3dGraphicAttribute> = {\n ...DefaultAttribute,\n width: 0,\n height: 0,\n x1: 0,\n y1: 0,\n cornerRadius: 0,\n length: 0\n};\n\nexport const DefaultSymbolAttribute: Required<ISymbolGraphicAttribute> = {\n ...DefaultAttribute,\n symbolType: 'circle',\n size: 10, // 外接**正方形**的边长\n keepDirIn3d: true\n};\n\nexport const DefaultTextAttribute: Required<ITextGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultTextStyle,\n strokeBoundsBuffer: 0,\n keepDirIn3d: true\n};\n\nexport const DefaultRichTextAttribute: Required<IRichTextGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultTextStyle,\n width: 300,\n height: 300,\n ellipsis: true,\n wordBreak: 'break-word' as RichTextWordBreak,\n verticalDirection: 'top' as RichTextVerticalDirection,\n textAlign: 'left' as RichTextGlobalAlignType,\n textBaseline: 'top' as RichTextGlobalBaselineType,\n layoutDirection: 'horizontal',\n textConfig: [],\n maxHeight: undefined,\n maxWidth: undefined,\n singleLine: false\n};\n\nexport const DefaultImageAttribute: Required<IImageGraphicAttribute> = {\n repeatX: 'no-repeat',\n repeatY: 'no-repeat',\n image: '',\n width: 0,\n height: 0,\n ...DefaultAttribute,\n fill: true,\n cornerRadius: 0\n};\n\nexport const DefaultRichTextIconAttribute: Required<IRichTextIconGraphicAttribute> = {\n ...DefaultImageAttribute,\n backgroundShowMode: 'never',\n backgroundWidth: 0,\n backgroundHeight: 0,\n textAlign: 'left',\n textBaseline: 'middle',\n direction: 'horizontal',\n margin: 0,\n id: '',\n\n width: 20,\n height: 20,\n backgroundFill: 'rgba(101, 117, 168, 0.1)',\n backgroundFillOpacity: 1,\n backgroundStroke: false,\n backgroundStrokeOpacity: 1,\n backgroundRadius: 4,\n opacity: 1\n};\n"]}
1
+ {"version":3,"sources":["../src/graphic/config.ts"],"names":[],"mappings":"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","file":"config.js","sourcesContent":["// 存放公共属性\nimport { Logger, Matrix, pi2 } from '@visactor/vutils';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport type {\n IArcGraphicAttribute,\n IAreaGraphicAttribute,\n IGraphicAttribute,\n ICircleGraphicAttribute,\n IFillStyle,\n IGlyphGraphicAttribute,\n IGroupGraphicAttribute,\n IImageGraphicAttribute,\n ILineGraphicAttribute,\n IPathGraphicAttribute,\n IPolygonGraphicAttribute,\n IRect3dGraphicAttribute,\n IRectGraphicAttribute,\n IStrokeStyle,\n IGraphicStyle,\n ISymbolGraphicAttribute,\n ITextAttribute,\n ITextGraphicAttribute,\n IRichTextGraphicAttribute,\n ITransform,\n RichTextWordBreak,\n RichTextVerticalDirection,\n RichTextGlobalAlignType,\n RichTextGlobalBaselineType,\n IRichTextIconGraphicAttribute,\n IConnectedStyle,\n ILayout,\n IDebugType,\n IPickStyle\n} from '../interface';\n\nexport const DefaultLayout: ILayout = {\n alignSelf: 'auto'\n};\n\nexport const DefaultTransform: ITransform = {\n x: 0,\n y: 0,\n z: 0,\n dx: 0,\n dy: 0,\n dz: 0,\n scrollX: 0,\n scrollY: 0,\n scaleX: 1,\n scaleY: 1,\n scaleZ: 1,\n angle: 0,\n alpha: 0,\n beta: 0,\n scaleCenter: [0, 0],\n anchor: [0, 0],\n anchor3d: [0, 0],\n postMatrix: new Matrix()\n};\n\nexport const DefaultFillStyle: IFillStyle = {\n fillOpacity: 1,\n fill: false,\n shadowBlur: 0,\n shadowColor: 'black',\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\n\nconst commonStroke: Omit<IStrokeStyle, 'outerBorder' | 'innerBorder'> = {\n strokeOpacity: 1,\n lineDash: [],\n lineDashOffset: 0,\n lineWidth: 1,\n lineCap: 'butt',\n lineJoin: 'miter',\n miterLimit: 10,\n strokeBoundsBuffer: 2,\n stroke: false\n};\n\nexport const DefaultStrokeStyle: IStrokeStyle = {\n outerBorder: { ...commonStroke, distance: 0 },\n innerBorder: { ...commonStroke, distance: 0 },\n ...commonStroke\n};\n\nexport const DefaultTextStyle: Required<ITextAttribute> = {\n text: '',\n maxLineWidth: Infinity,\n textAlign: 'left',\n textBaseline: 'alphabetic',\n fontSize: 16,\n // @ts-ignore\n fontFamily: `PingFang SC,Microsoft Yahei,system-ui,-apple-system,segoe ui,\n Roboto,Helvetica,Arial,sans-serif, apple color emoji,segoe ui emoji,segoe ui symbol`,\n fontWeight: '',\n ellipsis: '…',\n fontVariant: '',\n fontStyle: '',\n lineHeight: undefined,\n underline: 0,\n lineThrough: 0,\n scaleIn3d: false,\n direction: 'horizontal',\n wordBreak: 'break-all',\n ignoreBuf: false,\n verticalMode: 0,\n wrap: false,\n whiteSpace: 'no-wrap',\n heightLimit: Infinity,\n lineClamp: Infinity,\n suffixPosition: 'end',\n disableAutoClipedPoptip: undefined\n};\n\nexport const DefaultPickStyle: IPickStyle = {\n pickStrokeBuffer: 0\n};\n\nexport const DefaultStyle: IGraphicStyle = {\n opacity: 1,\n background: null,\n backgroundCornerRadius: 0,\n texture: null,\n textureColor: 'black',\n textureSize: 10,\n texturePadding: 2,\n backgroundMode: 'no-repeat',\n backgroundFit: true,\n blur: 0,\n cursor: null,\n html: null,\n ...DefaultFillStyle,\n ...DefaultStrokeStyle,\n ...DefaultLayout,\n ...DefaultPickStyle\n};\n\nexport const DefaultConnectAttribute: Required<IConnectedStyle> = {\n connectedType: 'none',\n // connectedStyle: {\n // stroke: DefaultStrokeStyle.stroke,\n // strokeOpacity: DefaultStrokeStyle.strokeOpacity,\n // lineDash: DefaultStrokeStyle.lineDash,\n // lineDashOffset: DefaultStrokeStyle.lineDashOffset,\n // lineCap: DefaultStrokeStyle.lineCap,\n // lineJoin: DefaultStrokeStyle.lineJoin,\n // lineWidth: DefaultStrokeStyle.lineWidth,\n // fill: DefaultFillStyle.fill,\n // fillOpacity: DefaultFillStyle.fillOpacity\n // },\n connectedStyle: {}, // 默认全都继承父属性\n connectedX: NaN,\n connectedY: NaN\n} as IConnectedStyle;\n\nexport const DefaultDebugAttribute: Required<IDebugType> = {\n _debug_bounds: false\n};\n\nexport const DefaultAttribute: Required<IGraphicAttribute> = {\n strokeSeg: null,\n pickable: true,\n childrenPickable: true,\n fillPickable: true,\n strokePickable: true,\n visible: true,\n zIndex: 0,\n layout: null,\n boundsPadding: 0,\n renderStyle: 'default',\n pickMode: 'accurate',\n customPickShape: null,\n boundsMode: 'accurate',\n keepDirIn3d: true,\n shadowRootIdx: 1,\n globalZIndex: 1,\n globalCompositeOperation: '',\n overflow: 'hidden',\n ...DefaultDebugAttribute,\n ...DefaultStyle,\n ...DefaultTransform\n};\n\nexport function addAttributeToPrototype(obj: Record<string, any>, c: any, keys: string[]) {\n keys.forEach(key => {\n c.prototype[key] = obj[key];\n });\n}\nexport function rewriteProto(obj: Record<string, any>, c: Record<string, any>) {\n Object.setPrototypeOf(obj, c);\n}\n\nexport const DefaultArcAttribute: Required<IArcGraphicAttribute> = {\n ...DefaultAttribute,\n startAngle: 0,\n endAngle: pi2,\n innerRadius: 0,\n outerRadius: 1,\n cornerRadius: 0,\n padRadius: 0,\n padAngle: 0,\n cap: false,\n forceShowCap: false\n};\n\nexport const DefaultAreaAttribute: Required<IAreaGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultConnectAttribute,\n points: [],\n segments: [],\n curveType: 'linear',\n clipRange: 1,\n closePath: false\n};\n\nexport const DefaultCircleAttribute: Required<ICircleGraphicAttribute> = {\n ...DefaultAttribute,\n radius: 1,\n startAngle: 0,\n endAngle: pi2\n};\n\nexport const DefaultGroupAttribute: Required<IGroupGraphicAttribute> = {\n ...DefaultAttribute,\n width: 0,\n height: 0,\n cornerRadius: 0,\n path: [],\n clip: false,\n visibleAll: true,\n display: 'relative',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n alignContent: 'flex-start'\n};\n\nexport const DefaultGlyphAttribute: Required<IGlyphGraphicAttribute> = {\n ...DefaultAttribute,\n path: '',\n width: 0,\n height: 0,\n cornerRadius: 0,\n clip: false\n};\n\nexport const DefaultLineAttribute: Required<ILineGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultConnectAttribute,\n points: [],\n segments: [],\n curveType: 'linear',\n clipRange: 1,\n clipRangeByDimension: 'default',\n closePath: false\n};\n\nexport const DefaultPathAttribute: Required<IPathGraphicAttribute> = {\n ...DefaultAttribute,\n path: new CustomPath2D(),\n customPath: () => {\n Logger.getInstance().warn('空函数');\n }\n};\n\nexport const DefaultPolygonAttribute: Required<IPolygonGraphicAttribute> = {\n ...DefaultAttribute,\n points: [],\n cornerRadius: 0,\n closePath: true\n};\n\nexport const DefaultRectAttribute: Required<IRectGraphicAttribute> = {\n ...DefaultAttribute,\n width: 0,\n height: 0,\n x1: 0,\n y1: 0,\n strokeBoundsBuffer: 0,\n cornerRadius: 0\n};\n\nexport const DefaultRect3dAttribute: Required<IRect3dGraphicAttribute> = {\n ...DefaultAttribute,\n width: 0,\n height: 0,\n x1: 0,\n y1: 0,\n cornerRadius: 0,\n length: 0\n};\n\nexport const DefaultSymbolAttribute: Required<ISymbolGraphicAttribute> = {\n ...DefaultAttribute,\n symbolType: 'circle',\n size: 10, // 外接**正方形**的边长\n keepDirIn3d: true\n};\n\nexport const DefaultTextAttribute: Required<ITextGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultTextStyle,\n strokeBoundsBuffer: 0,\n keepDirIn3d: true\n};\n\nexport const DefaultRichTextAttribute: Required<IRichTextGraphicAttribute> = {\n ...DefaultAttribute,\n width: 300,\n height: 300,\n ellipsis: true,\n wordBreak: 'break-word' as RichTextWordBreak,\n verticalDirection: 'top' as RichTextVerticalDirection,\n textAlign: 'left' as RichTextGlobalAlignType,\n textBaseline: 'top' as RichTextGlobalBaselineType,\n layoutDirection: 'horizontal',\n textConfig: [],\n maxHeight: undefined,\n maxWidth: undefined,\n singleLine: false\n};\n\nexport const DefaultImageAttribute: Required<IImageGraphicAttribute> = {\n repeatX: 'no-repeat',\n repeatY: 'no-repeat',\n image: '',\n width: 0,\n height: 0,\n ...DefaultAttribute,\n fill: true,\n cornerRadius: 0\n};\n\nexport const DefaultRichTextIconAttribute: Required<IRichTextIconGraphicAttribute> = {\n ...DefaultImageAttribute,\n backgroundShowMode: 'never',\n backgroundWidth: 0,\n backgroundHeight: 0,\n textAlign: 'left',\n textBaseline: 'middle',\n direction: 'horizontal',\n margin: 0,\n id: '',\n\n width: 20,\n height: 20,\n backgroundFill: 'rgba(101, 117, 168, 0.1)',\n backgroundFillOpacity: 1,\n backgroundStroke: false,\n backgroundStrokeOpacity: 1,\n backgroundRadius: 4,\n opacity: 1\n};\n"]}