{"version":3,"file":"taiga-ui-addon-charts-utils.mjs","sources":["../../../projects/addon-charts/utils/line-angle.ts","../../../projects/addon-charts/utils/line-length.ts","../../../projects/addon-charts/utils/control-point.ts","../../../projects/addon-charts/utils/describe-sector.ts","../../../projects/addon-charts/utils/draw-curve.ts","../../../projects/addon-charts/utils/draw-line.ts","../../../projects/addon-charts/utils/draw.ts","../../../projects/addon-charts/utils/taiga-ui-addon-charts-utils.ts"],"sourcesContent":["import {type TuiPoint} from '@taiga-ui/core/types';\n\nexport function tuiLineAngle(a: TuiPoint, b: TuiPoint): number {\n    const x = b[0] - a[0];\n    const y = b[1] - a[1];\n\n    return Math.atan2(y, x);\n}\n","import {type TuiPoint} from '@taiga-ui/core/types';\n\nexport function tuiLineLength(a: TuiPoint, b: TuiPoint): number {\n    const x = b[0] - a[0];\n    const y = b[1] - a[1];\n\n    return Math.sqrt(x ** 2 + y ** 2);\n}\n","import {type TuiPoint} from '@taiga-ui/core/types';\n\nimport {tuiLineAngle} from './line-angle';\nimport {tuiLineLength} from './line-length';\n\nexport function tuiControlPoint(\n    current?: TuiPoint,\n    previous?: TuiPoint,\n    next?: TuiPoint,\n    reverse = false,\n    smoothing = 0.2,\n): TuiPoint {\n    const fallback = current || ([0, 0] as const);\n    const p = previous || current || ([0, 0] as const);\n    const n = next || current || ([0, 0] as const);\n    const angle = tuiLineAngle(p, n) + (reverse ? Math.PI : 0);\n    const length = tuiLineLength(p, n) * smoothing;\n    const x = fallback[0] + Math.cos(angle) * length;\n    const y = fallback[1] + Math.sin(angle) * length;\n\n    return [x, y];\n}\n","import {tuiToInt} from '@taiga-ui/cdk/utils/math';\n\nconst EMPTY = 'M 100 0 A 100 100 0 1 1 100 0 L 0 0';\n\nfunction toRadians(deg: number): number {\n    return (deg * Math.PI) / 180;\n}\n\n/**\n * Describes a normalized sector by angles. Normalized meaning it supposed to work with\n * SVG with viewBox=\"-1 -1 2 2\" so that 0 coordinates in cartesian and polar match the same spot.\n * Everything is multiplied by 100 (including viewBox of SVG to host this) so IE properly\n * handles hover events.\n *\n * @param startAngle starting angle in degrees\n * @param endAngle ending angle in degrees\n */\nexport function tuiDescribeSector(startAngle = 0, endAngle = 0): string {\n    const startRad = toRadians(startAngle);\n    const endRad = toRadians(endAngle);\n    const startX = Math.cos(startRad) * 100;\n    const startY = Math.sin(startRad) * 100;\n    const endX = Math.cos(endRad) * 100;\n    const endY = Math.sin(endRad) * 100;\n    const largeArcFlag = tuiToInt(endAngle - startAngle > 180);\n    const result = [\n        'M',\n        startX,\n        startY,\n        'A 100 100 0',\n        largeArcFlag,\n        1,\n        endX,\n        endY,\n        'L 0 0',\n    ];\n\n    return Number.isNaN(endX) ? EMPTY : result.join(' ');\n}\n","import {type TuiPoint} from '@taiga-ui/core/types';\n\nimport {tuiControlPoint} from './control-point';\n\nexport function tuiDrawCurve(\n    array: readonly TuiPoint[],\n    index: number,\n    smoothing: number,\n): string {\n    const [cpsX, cpsY] = tuiControlPoint(\n        array[index - 1],\n        array[index - 2],\n        array[index],\n        false,\n        smoothing,\n    );\n    const [cpeX, cpeY] = tuiControlPoint(\n        array[index],\n        array[index - 1],\n        array[index + 1],\n        true,\n        smoothing,\n    );\n\n    const point = array[index] ?? [0, 0];\n\n    return `C ${cpsX},${cpsY} ${cpeX},${cpeY} ${point[0]},${point[1]}`;\n}\n","export function tuiDrawLine(point: [number, number]): string {\n    return `L ${point}`;\n}\n","import {type TuiPoint} from '@taiga-ui/core/types';\n\nimport {tuiDrawCurve} from './draw-curve';\nimport {tuiDrawLine} from './draw-line';\n\nconst COEFFICIENT = 500;\n\nexport function tuiDraw(\n    array: readonly TuiPoint[],\n    index: number,\n    smoothing: number,\n): string {\n    const point: readonly [number, number] = [...(array[index] ?? [0, 0])];\n\n    return smoothing\n        ? tuiDrawCurve(array, index, smoothing / COEFFICIENT)\n        : tuiDrawLine([point[0], point[1]]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}