{"version":3,"sources":["../src/pie-chart-label.tsx"],"sourcesContent":["import type { CSSUIObject, HTMLUIProps } from \"@yamada-ui/core\"\nimport type { Dict } from \"@yamada-ui/utils\"\nimport type { ReactNode } from \"react\"\nimport { ui } from \"@yamada-ui/core\"\nimport { cx, isUndefined } from \"@yamada-ui/utils\"\n\nconst RADIAN = Math.PI / 180\nconst DEFAULT_LABEL_OFFSET = 22\n\nexport interface PieChartLabelProps {\n  styles: Dict<CSSUIObject | undefined>\n  className?: string\n  calcPercent?: boolean\n  cx?: number\n  cy?: number\n  innerRadius?: number\n  labelFormatter?: (value: number) => string\n  labelOffset?: number\n  midAngle?: number\n  middleRadius?: number\n  outerRadius?: number\n  percent?: number\n  value?: number\n  labelProps?: HTMLUIProps<\"text\">\n}\n\nexport const pieChartLabel: (props: PieChartLabelProps) => ReactNode = ({\n  className: cellClassName,\n  calcPercent,\n  cx: cxProp = 0,\n  cy: cyProp = 0,\n  innerRadius = 0,\n  labelFormatter,\n  labelOffset: labelOffsetProp,\n  midAngle = 0,\n  middleRadius = 0,\n  outerRadius = 0,\n  percent = 0,\n  styles,\n  value = 0,\n  labelProps,\n}) => {\n  const labelOffset =\n    labelOffsetProp ?? (outerRadius - innerRadius) * 0.5 + DEFAULT_LABEL_OFFSET\n\n  const x = cxProp + (middleRadius + labelOffset) * Math.cos(-midAngle * RADIAN)\n  const y = cyProp + (middleRadius + labelOffset) * Math.sin(-midAngle * RADIAN)\n\n  const textAnchor = x > cxProp ? \"start\" : x < cxProp ? \"end\" : \"middle\"\n  const displayLabel = () => {\n    if (calcPercent) {\n      return (\n        parseFloat((percent * 100).toFixed(0)) > 0 &&\n        `${(percent * 100).toFixed(0)}%`\n      )\n    } else if (!isUndefined(labelFormatter)) {\n      return labelFormatter(value)\n    } else {\n      return value\n    }\n  }\n\n  return (\n    <ui.text\n      className={cx(cellClassName, \"ui-chart__label\")}\n      dominantBaseline=\"central\"\n      textAnchor={textAnchor}\n      x={x}\n      y={y}\n      __css={styles}\n      {...labelProps}\n    >\n      {displayLabel()}\n    </ui.text>\n  )\n}\n\ninterface Point {\n  x: number\n  y: number\n}\n\nexport interface PieChartLabelLineProps {\n  styles: Dict<CSSUIObject | undefined>\n  className?: string\n  cx?: number\n  cy?: number\n  innerRadius?: number\n  labelOffset?: number\n  midAngle?: number\n  middleRadius?: number\n  outerRadius?: number\n  points?: Point[]\n  labelLineProps?: HTMLUIProps<\"path\">\n}\n\nexport const pieChartLabelLine: (\n  props: PieChartLabelLineProps,\n) => React.ReactElement<SVGElement> = ({\n  className: cellClassName,\n  cx: cxProp = 0,\n  cy: cyProp = 0,\n  innerRadius = 0,\n  labelOffset: labelOffsetProp,\n  midAngle = 0,\n  middleRadius = 0,\n  outerRadius = 0,\n  points = [{ x: 0, y: 0 }],\n  styles,\n  labelLineProps,\n}) => {\n  const labelOffset =\n    labelOffsetProp ?? (outerRadius - innerRadius) * 0.5 + DEFAULT_LABEL_OFFSET\n\n  const x = cxProp + (middleRadius + labelOffset) * Math.cos(-midAngle * RADIAN)\n  const y = cyProp + (middleRadius + labelOffset) * Math.sin(-midAngle * RADIAN)\n\n  const d = `M ${points[0]?.x} ${points[0]?.y} L ${x} ${y}`\n\n  return (\n    <ui.path\n      className={cx(cellClassName, \"ui-chart__label-line\")}\n      d={d}\n      __css={styles}\n      {...labelLineProps}\n    />\n  )\n}\n"],"mappings":";;;AAGA,SAAS,UAAU;AACnB,SAAS,IAAI,mBAAmB;AA2D5B;AAzDJ,IAAM,SAAS,KAAK,KAAK;AACzB,IAAM,uBAAuB;AAmBtB,IAAM,gBAA0D,CAAC;AAAA,EACtE,WAAW;AAAA,EACX;AAAA,EACA,IAAI,SAAS;AAAA,EACb,IAAI,SAAS;AAAA,EACb,cAAc;AAAA,EACd;AAAA,EACA,aAAa;AAAA,EACb,WAAW;AAAA,EACX,eAAe;AAAA,EACf,cAAc;AAAA,EACd,UAAU;AAAA,EACV;AAAA,EACA,QAAQ;AAAA,EACR;AACF,MAAM;AACJ,QAAM,cACJ,6CAAoB,cAAc,eAAe,MAAM;AAEzD,QAAM,IAAI,UAAU,eAAe,eAAe,KAAK,IAAI,CAAC,WAAW,MAAM;AAC7E,QAAM,IAAI,UAAU,eAAe,eAAe,KAAK,IAAI,CAAC,WAAW,MAAM;AAE7E,QAAM,aAAa,IAAI,SAAS,UAAU,IAAI,SAAS,QAAQ;AAC/D,QAAM,eAAe,MAAM;AACzB,QAAI,aAAa;AACf,aACE,YAAY,UAAU,KAAK,QAAQ,CAAC,CAAC,IAAI,KACzC,IAAI,UAAU,KAAK,QAAQ,CAAC,CAAC;AAAA,IAEjC,WAAW,CAAC,YAAY,cAAc,GAAG;AACvC,aAAO,eAAe,KAAK;AAAA,IAC7B,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SACE;AAAA,IAAC,GAAG;AAAA,IAAH;AAAA,MACC,WAAW,GAAG,eAAe,iBAAiB;AAAA,MAC9C,kBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACN,GAAG;AAAA,MAEH,uBAAa;AAAA;AAAA,EAChB;AAEJ;AAqBO,IAAM,oBAEyB,CAAC;AAAA,EACrC,WAAW;AAAA,EACX,IAAI,SAAS;AAAA,EACb,IAAI,SAAS;AAAA,EACb,cAAc;AAAA,EACd,aAAa;AAAA,EACb,WAAW;AAAA,EACX,eAAe;AAAA,EACf,cAAc;AAAA,EACd,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAAA,EACxB;AAAA,EACA;AACF,MAAM;AA9GN;AA+GE,QAAM,cACJ,6CAAoB,cAAc,eAAe,MAAM;AAEzD,QAAM,IAAI,UAAU,eAAe,eAAe,KAAK,IAAI,CAAC,WAAW,MAAM;AAC7E,QAAM,IAAI,UAAU,eAAe,eAAe,KAAK,IAAI,CAAC,WAAW,MAAM;AAE7E,QAAM,IAAI,MAAK,YAAO,CAAC,MAAR,mBAAW,CAAC,KAAI,YAAO,CAAC,MAAR,mBAAW,CAAC,MAAM,CAAC,IAAI,CAAC;AAEvD,SACE;AAAA,IAAC,GAAG;AAAA,IAAH;AAAA,MACC,WAAW,GAAG,eAAe,sBAAsB;AAAA,MACnD;AAAA,MACA,OAAO;AAAA,MACN,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}