{"version":3,"sources":["jsdelivr-header.js","/npm/@antv/g-plugin-canvas-path-generator@2.1.26/src/paths/Circle.ts","/npm/@antv/g-plugin-canvas-path-generator@2.1.26/src/paths/Ellipse.ts","/npm/@antv/g-plugin-canvas-path-generator@2.1.26/src/paths/Line.ts","/npm/@antv/g-plugin-canvas-path-generator@2.1.26/src/paths/Path.ts","/npm/@antv/g-plugin-canvas-path-generator@2.1.26/src/paths/Polygon.ts","/npm/@antv/g-plugin-canvas-path-generator@2.1.26/src/paths/Polyline.ts","/npm/@antv/g-plugin-canvas-path-generator@2.1.26/src/paths/Rect.ts","/npm/@antv/g-plugin-canvas-path-generator@2.1.26/src/index.ts"],"names":[],"mappings":"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","file":"/npm/@antv/g-plugin-canvas-path-generator@2.1.26/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@antv/g-plugin-canvas-path-generator@2.1.26/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import type { ParsedCircleStyleProps } from '@antv/g-lite';\n\nexport function generatePath(\n  context: CanvasRenderingContext2D,\n  parsedStyle: ParsedCircleStyleProps,\n) {\n  const { cx = 0, cy = 0, r } = parsedStyle;\n  context.arc(cx, cy, r, 0, Math.PI * 2, false);\n}\n","import type { ParsedEllipseStyleProps } from '@antv/g-lite';\n\nexport function generatePath(\n  context: CanvasRenderingContext2D,\n  parsedStyle: ParsedEllipseStyleProps,\n) {\n  const { cx = 0, cy = 0, rx, ry } = parsedStyle;\n\n  // @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/ellipse\n  if (context.ellipse) {\n    context.ellipse(cx, cy, rx, ry, 0, 0, Math.PI * 2, false);\n  } else {\n    // 如果不支持，则使用圆来绘制，进行变形\n    const r = rx > ry ? rx : ry;\n    const scaleX = rx > ry ? 1 : rx / ry;\n    const scaleY = rx > ry ? ry / rx : 1;\n    context.save();\n    context.scale(scaleX, scaleY);\n    context.arc(cx, cy, r, 0, Math.PI * 2);\n  }\n}\n","import type { ParsedLineStyleProps } from '@antv/g-lite';\nimport { isDisplayObject } from '@antv/g-lite';\n\nexport function generatePath(\n  context: CanvasRenderingContext2D,\n  parsedStyle: ParsedLineStyleProps,\n) {\n  const {\n    x1,\n    y1,\n    x2,\n    y2,\n    markerStart,\n    markerEnd,\n    markerStartOffset,\n    markerEndOffset,\n  } = parsedStyle;\n\n  let startOffsetX = 0;\n  let startOffsetY = 0;\n  let endOffsetX = 0;\n  let endOffsetY = 0;\n\n  let rad = 0;\n  let x: number;\n  let y: number;\n\n  if (markerStart && isDisplayObject(markerStart) && markerStartOffset) {\n    x = x2 - x1;\n    y = y2 - y1;\n    rad = Math.atan2(y, x);\n    startOffsetX = Math.cos(rad) * (markerStartOffset || 0);\n    startOffsetY = Math.sin(rad) * (markerStartOffset || 0);\n  }\n\n  if (markerEnd && isDisplayObject(markerEnd) && markerEndOffset) {\n    x = x1 - x2;\n    y = y1 - y2;\n    rad = Math.atan2(y, x);\n    endOffsetX = Math.cos(rad) * (markerEndOffset || 0);\n    endOffsetY = Math.sin(rad) * (markerEndOffset || 0);\n  }\n\n  context.moveTo(x1 + startOffsetX, y1 + startOffsetY);\n  context.lineTo(x2 + endOffsetX, y2 + endOffsetY);\n}\n","import type { ParsedPathStyleProps, Path } from '@antv/g-lite';\nimport { isDisplayObject } from '@antv/g-lite';\n\nexport function generatePath(\n  context: CanvasRenderingContext2D,\n  parsedStyle: ParsedPathStyleProps,\n) {\n  const { markerStart, markerEnd, markerStartOffset, markerEndOffset } =\n    parsedStyle;\n  const { absolutePath, segments } = parsedStyle.d;\n\n  let startOffsetX = 0;\n  let startOffsetY = 0;\n  let endOffsetX = 0;\n  let endOffsetY = 0;\n\n  let rad = 0;\n  let x: number;\n  let y: number;\n\n  if (markerStart && isDisplayObject(markerStart) && markerStartOffset) {\n    const [p1, p2] = (markerStart.parentNode as Path).getStartTangent();\n    x = p1[0] - p2[0];\n    y = p1[1] - p2[1];\n\n    rad = Math.atan2(y, x);\n    startOffsetX = Math.cos(rad) * (markerStartOffset || 0);\n    startOffsetY = Math.sin(rad) * (markerStartOffset || 0);\n  }\n\n  if (markerEnd && isDisplayObject(markerEnd) && markerEndOffset) {\n    const [p1, p2] = (markerEnd.parentNode as Path).getEndTangent();\n    x = p1[0] - p2[0];\n    y = p1[1] - p2[1];\n    rad = Math.atan2(y, x);\n    endOffsetX = Math.cos(rad) * (markerEndOffset || 0);\n    endOffsetY = Math.sin(rad) * (markerEndOffset || 0);\n  }\n\n  for (let i = 0; i < absolutePath.length; i++) {\n    const params = absolutePath[i];\n    const command = params[0];\n    const nextSegment = absolutePath[i + 1];\n    const useStartOffset =\n      i === 0 && (startOffsetX !== 0 || startOffsetY !== 0);\n    const useEndOffset =\n      (i === absolutePath.length - 1 ||\n        (nextSegment && (nextSegment[0] === 'M' || nextSegment[0] === 'Z'))) &&\n      endOffsetX !== 0 &&\n      endOffsetY !== 0;\n    const [startOffsetXTemp, startOffsetYTemp] = useStartOffset\n      ? [startOffsetX, startOffsetY]\n      : [0, 0];\n    const [endOffsetXTemp, endOffsetYTemp] = useEndOffset\n      ? [endOffsetX, endOffsetY]\n      : [0, 0];\n\n    switch (command) {\n      case 'M':\n        // Use start marker offset\n        context.moveTo(\n          params[1] + startOffsetXTemp,\n          params[2] + startOffsetYTemp,\n        );\n        break;\n      case 'L':\n        context.lineTo(params[1] + endOffsetXTemp, params[2] + endOffsetYTemp);\n        break;\n      case 'Q':\n        context.quadraticCurveTo(\n          params[1],\n          params[2],\n          params[3] + endOffsetXTemp,\n          params[4] + endOffsetYTemp,\n        );\n        break;\n      case 'C':\n        context.bezierCurveTo(\n          params[1],\n          params[2],\n          params[3],\n          params[4],\n          params[5] + endOffsetXTemp,\n          params[6] + endOffsetYTemp,\n        );\n        break;\n      case 'A': {\n        // FIXME startOffset / endOffset\n        const { arcParams } = segments[i];\n        const { cx, cy, rx, ry, startAngle, endAngle, xRotation, sweepFlag } =\n          arcParams;\n        // @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/ellipse\n        if (context.ellipse) {\n          context.ellipse(\n            cx,\n            cy,\n            rx,\n            ry,\n            xRotation,\n            startAngle,\n            endAngle,\n            !!(1 - sweepFlag),\n          );\n        } else {\n          // @see https://stackoverflow.com/a/47494351\n          const r = rx > ry ? rx : ry;\n          const scaleX = rx > ry ? 1 : rx / ry;\n          const scaleY = rx > ry ? ry / rx : 1;\n          context.translate(cx, cy);\n          context.rotate(xRotation);\n          context.scale(scaleX, scaleY);\n          context.arc(0, 0, r, startAngle, endAngle, !!(1 - sweepFlag));\n          context.scale(1 / scaleX, 1 / scaleY);\n          context.rotate(-xRotation);\n          context.translate(-cx, -cy);\n        }\n\n        if (useEndOffset) {\n          context.lineTo(params[6] + endOffsetX, params[7] + endOffsetY);\n        }\n        break;\n      }\n      case 'Z':\n        context.closePath();\n        break;\n      default:\n        break;\n    }\n  }\n}\n","import type { ParsedPolygonStyleProps } from '@antv/g-lite';\nimport { isDisplayObject } from '@antv/g-lite';\n\nexport function generatePath(\n  context: CanvasRenderingContext2D,\n  parsedStyle: ParsedPolygonStyleProps,\n) {\n  const { markerStart, markerEnd, markerStartOffset, markerEndOffset } =\n    parsedStyle;\n  const { points } = parsedStyle.points;\n  const { length } = points;\n\n  const x1 = points[0][0];\n  const y1 = points[0][1];\n  const x2 = points[length - 1][0];\n  const y2 = points[length - 1][1];\n\n  let startOffsetX = 0;\n  let startOffsetY = 0;\n  let endOffsetX = 0;\n  let endOffsetY = 0;\n\n  let rad = 0;\n  let x: number;\n  let y: number;\n\n  if (markerStart && isDisplayObject(markerStart) && markerStartOffset) {\n    x = points[1][0] - points[0][0];\n    y = points[1][1] - points[0][1];\n    rad = Math.atan2(y, x);\n    startOffsetX = Math.cos(rad) * (markerStartOffset || 0);\n    startOffsetY = Math.sin(rad) * (markerStartOffset || 0);\n  }\n\n  if (markerEnd && isDisplayObject(markerEnd) && markerEndOffset) {\n    x = points[length - 1][0] - points[0][0];\n    y = points[length - 1][1] - points[0][1];\n    rad = Math.atan2(y, x);\n    endOffsetX = Math.cos(rad) * (markerEndOffset || 0);\n    endOffsetY = Math.sin(rad) * (markerEndOffset || 0);\n  }\n\n  context.moveTo(\n    x1 + (startOffsetX || endOffsetX),\n    y1 + (startOffsetY || endOffsetY),\n  );\n  for (let i = 1; i < length - 1; i++) {\n    const point = points[i];\n    context.lineTo(point[0], point[1]);\n  }\n  context.lineTo(x2, y2);\n}\n","import type { ParsedPolylineStyleProps } from '@antv/g-lite';\nimport { isDisplayObject } from '@antv/g-lite';\n\nexport function generatePath(\n  context: CanvasRenderingContext2D,\n  parsedStyle: ParsedPolylineStyleProps,\n) {\n  const { markerStart, markerEnd, markerStartOffset, markerEndOffset } =\n    parsedStyle;\n  const { points } = parsedStyle.points;\n  const { length } = points;\n\n  const x1 = points[0][0];\n  const y1 = points[0][1];\n  const x2 = points[length - 1][0];\n  const y2 = points[length - 1][1];\n\n  let startOffsetX = 0;\n  let startOffsetY = 0;\n  let endOffsetX = 0;\n  let endOffsetY = 0;\n\n  let rad = 0;\n  let x: number;\n  let y: number;\n\n  if (markerStart && isDisplayObject(markerStart) && markerStartOffset) {\n    x = points[1][0] - points[0][0];\n    y = points[1][1] - points[0][1];\n    rad = Math.atan2(y, x);\n    startOffsetX = Math.cos(rad) * (markerStartOffset || 0);\n    startOffsetY = Math.sin(rad) * (markerStartOffset || 0);\n  }\n\n  if (markerEnd && isDisplayObject(markerEnd) && markerEndOffset) {\n    x = points[length - 2][0] - points[length - 1][0];\n    y = points[length - 2][1] - points[length - 1][1];\n    rad = Math.atan2(y, x);\n    endOffsetX = Math.cos(rad) * (markerEndOffset || 0);\n    endOffsetY = Math.sin(rad) * (markerEndOffset || 0);\n  }\n\n  context.moveTo(x1 + startOffsetX, y1 + startOffsetY);\n  for (let i = 1; i < length - 1; i++) {\n    const point = points[i];\n    context.lineTo(point[0], point[1]);\n  }\n  context.lineTo(x2 + endOffsetX, y2 + endOffsetY);\n}\n","import type { ParsedRectStyleProps } from '@antv/g-lite';\nimport { clamp } from '@antv/util';\n\nexport function generatePath(\n  context: CanvasRenderingContext2D,\n  parsedStyle: ParsedRectStyleProps,\n) {\n  const { x = 0, y = 0, radius, width, height } = parsedStyle;\n\n  const w = width;\n  const h = height;\n  const hasRadius = radius && radius.some((r) => r !== 0);\n\n  if (!hasRadius) {\n    // Canvas support negative width/height of rect\n    context.rect(x, y, w, h);\n  } else {\n    const signX = width > 0 ? 1 : -1;\n    const signY = height > 0 ? 1 : -1;\n    const sweepFlag = signX + signY === 0;\n    const [tlr, trr, brr, blr] = radius.map((r) =>\n      clamp(r, 0, Math.min(Math.abs(w) / 2, Math.abs(h) / 2)),\n    );\n\n    context.moveTo(signX * tlr + x, y);\n    context.lineTo(w - signX * trr + x, y);\n    if (trr !== 0) {\n      context.arc(\n        w - signX * trr + x,\n        signY * trr + y,\n        trr,\n        (-signY * Math.PI) / 2,\n        signX > 0 ? 0 : Math.PI,\n        sweepFlag,\n      );\n    }\n    context.lineTo(w + x, h - signY * brr + y);\n    if (brr !== 0) {\n      context.arc(\n        w - signX * brr + x,\n        h - signY * brr + y,\n        brr,\n        signX > 0 ? 0 : Math.PI,\n        signY > 0 ? Math.PI / 2 : 1.5 * Math.PI,\n        sweepFlag,\n      );\n    }\n    context.lineTo(signX * blr + x, h + y);\n    if (blr !== 0) {\n      context.arc(\n        signX * blr + x,\n        h - signY * blr + y,\n        blr,\n        signY > 0 ? Math.PI / 2 : -Math.PI / 2,\n        signX > 0 ? Math.PI : 0,\n        sweepFlag,\n      );\n    }\n    context.lineTo(x, signY * tlr + y);\n    if (tlr !== 0) {\n      context.arc(\n        signX * tlr + x,\n        signY * tlr + y,\n        tlr,\n        signX > 0 ? Math.PI : 0,\n        signY > 0 ? Math.PI * 1.5 : Math.PI / 2,\n        sweepFlag,\n      );\n    }\n  }\n}\n","import { AbstractRendererPlugin, Shape } from '@antv/g-lite';\nimport type { PathGenerator } from './interfaces';\nimport {\n  CirclePath,\n  EllipsePath,\n  LinePath,\n  PathPath,\n  PolygonPath,\n  PolylinePath,\n  RectPath,\n} from './paths';\n\nexport class Plugin extends AbstractRendererPlugin<{\n  pathGeneratorFactory: Record<Shape, PathGenerator<any>>;\n}> {\n  name = 'canvas-path-generator';\n  init(): void {\n    const pathGeneratorFactory: Record<Shape, PathGenerator<any>> = {\n      [Shape.CIRCLE]: CirclePath,\n      [Shape.ELLIPSE]: EllipsePath,\n      [Shape.RECT]: RectPath,\n      [Shape.LINE]: LinePath,\n      [Shape.POLYLINE]: PolylinePath,\n      [Shape.POLYGON]: PolygonPath,\n      [Shape.PATH]: PathPath,\n      [Shape.TEXT]: undefined,\n      [Shape.GROUP]: undefined,\n      [Shape.IMAGE]: undefined,\n      [Shape.HTML]: undefined,\n      [Shape.MESH]: undefined,\n      [Shape.FRAGMENT]: undefined,\n    };\n\n    // @ts-ignore\n    this.context.pathGeneratorFactory = pathGeneratorFactory;\n  }\n  destroy(): void {\n    // @ts-ignore\n    delete this.context.pathGeneratorFactory;\n  }\n}\n\nexport * from './interfaces';\n"]}