@impulse-ui-native/charts 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/index.d.mts +17 -0
- package/dist/components/index.js +8 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/line-chart-body.d.mts +14 -0
- package/dist/components/line-chart-body.js +90 -0
- package/dist/components/line-chart-body.js.map +1 -0
- package/dist/components/line-chart.d.mts +10 -0
- package/dist/components/line-chart.js +21 -0
- package/dist/components/line-chart.js.map +1 -0
- package/dist/components/multi-line-chart-body.d.mts +11 -0
- package/dist/components/multi-line-chart-body.js +98 -0
- package/dist/components/multi-line-chart-body.js.map +1 -0
- package/dist/components/multi-line-chart.d.mts +11 -0
- package/dist/components/multi-line-chart.js +21 -0
- package/dist/components/multi-line-chart.js.map +1 -0
- package/dist/components/primitives/grid.d.mts +10 -0
- package/dist/components/primitives/grid.js +65 -0
- package/dist/components/primitives/grid.js.map +1 -0
- package/dist/components/primitives/index.d.mts +14 -0
- package/dist/components/primitives/index.js +13 -0
- package/dist/components/primitives/index.js.map +1 -0
- package/dist/components/primitives/label.d.mts +10 -0
- package/dist/components/primitives/label.js +94 -0
- package/dist/components/primitives/label.js.map +1 -0
- package/dist/components/primitives/line.d.mts +11 -0
- package/dist/components/primitives/line.js +50 -0
- package/dist/components/primitives/line.js.map +1 -0
- package/dist/components/primitives/x-axis.d.mts +11 -0
- package/dist/components/primitives/x-axis.js +93 -0
- package/dist/components/primitives/x-axis.js.map +1 -0
- package/dist/components/primitives/y-axis.d.mts +11 -0
- package/dist/components/primitives/y-axis.js +95 -0
- package/dist/components/primitives/y-axis.js.map +1 -0
- package/dist/constants/axis.constants.d.mts +6 -0
- package/dist/constants/axis.constants.js +11 -0
- package/dist/constants/axis.constants.js.map +1 -0
- package/dist/constants/grid.constants.d.mts +6 -0
- package/dist/constants/grid.constants.js +11 -0
- package/dist/constants/grid.constants.js.map +1 -0
- package/dist/constants/index.d.mts +11 -0
- package/dist/constants/index.js +6 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/label.constants.d.mts +11 -0
- package/dist/constants/label.constants.js +12 -0
- package/dist/constants/label.constants.js.map +1 -0
- package/dist/constants/line-chart.constants.d.mts +8 -0
- package/dist/constants/line-chart.constants.js +7 -0
- package/dist/constants/line-chart.constants.js.map +1 -0
- package/dist/constants/line.constants.d.mts +15 -0
- package/dist/constants/line.constants.js +18 -0
- package/dist/constants/line.constants.js.map +1 -0
- package/dist/contexts/index.d.mts +2 -0
- package/dist/contexts/index.js +1 -0
- package/dist/contexts/index.js.map +1 -0
- package/dist/hooks/index.d.mts +12 -0
- package/dist/hooks/index.js +9 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/use-chart-canvas.hook.d.mts +9 -0
- package/dist/hooks/use-chart-canvas.hook.js +10 -0
- package/dist/hooks/use-chart-canvas.hook.js.map +1 -0
- package/dist/hooks/use-line-chart.hook.d.mts +10 -0
- package/dist/hooks/use-line-chart.hook.js +13 -0
- package/dist/hooks/use-line-chart.hook.js.map +1 -0
- package/dist/hooks/use-multi-line-chart.hook.d.mts +12 -0
- package/dist/hooks/use-multi-line-chart.hook.js +44 -0
- package/dist/hooks/use-multi-line-chart.hook.js.map +1 -0
- package/dist/index.d.mts +36 -321
- package/dist/index.js +6 -1083
- package/dist/index.js.map +1 -1
- package/dist/line-chart.types-yxru5uWc.d.mts +62 -0
- package/dist/types/axis.types.d.mts +49 -0
- package/dist/types/axis.types.js +1 -0
- package/dist/types/axis.types.js.map +1 -0
- package/dist/types/common.types.d.mts +57 -0
- package/dist/types/common.types.js +1 -0
- package/dist/types/common.types.js.map +1 -0
- package/dist/types/grid.types.d.mts +5 -0
- package/dist/types/grid.types.js +1 -0
- package/dist/types/grid.types.js.map +1 -0
- package/dist/types/index.d.mts +11 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/label.types.d.mts +24 -0
- package/dist/types/label.types.js +1 -0
- package/dist/types/label.types.js.map +1 -0
- package/dist/types/line-chart.types.d.mts +5 -0
- package/dist/types/line-chart.types.js +1 -0
- package/dist/types/line-chart.types.js.map +1 -0
- package/dist/types/line.types.d.mts +11 -0
- package/dist/types/line.types.js +1 -0
- package/dist/types/line.types.js.map +1 -0
- package/dist/types/multi-line-chart.types.d.mts +23 -0
- package/dist/types/multi-line-chart.types.js +1 -0
- package/dist/types/multi-line-chart.types.js.map +1 -0
- package/dist/types/style.types.d.mts +19 -0
- package/dist/types/style.types.js +1 -0
- package/dist/types/style.types.js.map +1 -0
- package/dist/types/use-line-chart.types.d.mts +29 -0
- package/dist/types/use-line-chart.types.js +1 -0
- package/dist/types/use-line-chart.types.js.map +1 -0
- package/dist/types/use-multi-line-chart.types.d.mts +16 -0
- package/dist/types/use-multi-line-chart.types.js +1 -0
- package/dist/types/use-multi-line-chart.types.js.map +1 -0
- package/dist/utils/axis.util.d.mts +15 -0
- package/dist/utils/axis.util.js +82 -0
- package/dist/utils/axis.util.js.map +1 -0
- package/dist/utils/chart-layout.util.d.mts +8 -0
- package/dist/utils/chart-layout.util.js +55 -0
- package/dist/utils/chart-layout.util.js.map +1 -0
- package/dist/utils/grid.util.d.mts +11 -0
- package/dist/utils/grid.util.js +56 -0
- package/dist/utils/grid.util.js.map +1 -0
- package/dist/utils/index.d.mts +17 -0
- package/dist/utils/index.js +44 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/label.util.d.mts +10 -0
- package/dist/utils/label.util.js +24 -0
- package/dist/utils/label.util.js.map +1 -0
- package/dist/utils/line-chart.util.d.mts +11 -0
- package/dist/utils/line-chart.util.js +133 -0
- package/dist/utils/line-chart.util.js.map +1 -0
- package/dist/utils/line.util.d.mts +10 -0
- package/dist/utils/line.util.js +36 -0
- package/dist/utils/line.util.js.map +1 -0
- package/dist/utils/multi-line-chart.util.d.mts +10 -0
- package/dist/utils/multi-line-chart.util.js +23 -0
- package/dist/utils/multi-line-chart.util.js.map +1 -0
- package/dist/utils/paragraph-builder.util.d.mts +10 -0
- package/dist/utils/paragraph-builder.util.js +16 -0
- package/dist/utils/paragraph-builder.util.js.map +1 -0
- package/package.json +7 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/grid.tsx","../src/constants/axis.constants.ts","../src/constants/grid.constants.ts","../src/constants/label.constants.ts","../src/constants/line.constants.ts","../src/constants/line-chart.constants.ts","../src/utils/axis.util.ts","../src/utils/chart-layout.util.ts","../src/utils/grid.util.ts","../src/utils/label.util.ts","../src/utils/line.util.ts","../src/utils/line-chart.util.ts","../src/utils/multi-line-chart.util.ts","../src/utils/paragraph-builder.util.ts","../src/components/primitives/label.tsx","../src/components/primitives/line.tsx","../src/components/primitives/x-axis.tsx","../src/components/primitives/y-axis.tsx","../src/components/line-chart.tsx","../src/hooks/use-chart-canvas.hook.ts","../src/hooks/use-line-chart.hook.ts","../src/hooks/use-multi-line-chart.hook.ts","../src/components/line-chart-body.tsx","../src/components/multi-line-chart.tsx","../src/components/multi-line-chart-body.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { DashPathEffect, Group, Path } from \"@shopify/react-native-skia\";\n\nimport { memo } from \"@impulse-ui-native/core\";\n\nimport { GridDefaultXVisible, GridDefaultYVisible } from \"../../constants\";\nimport { ChartXValue, GridProps } from \"../../types\";\nimport {\n createHorizontalGridPath,\n createVerticalGridPath,\n resolveGridLineOptions,\n} from \"../../utils\";\n\nexport const Grid = memo(function Grid<X extends ChartXValue = number>(\n props: GridProps<X>,\n) {\n const { options, plot, theme, xScale, xTicks, yScale, yTicks } = props;\n\n const xStyle = useMemo(\n () =>\n resolveGridLineOptions(\n options?.x,\n GridDefaultXVisible,\n theme.colors.border.subtle.value,\n ),\n [options?.x, theme.colors.border.subtle.value],\n );\n\n const yStyle = useMemo(\n () =>\n resolveGridLineOptions(\n options?.y,\n GridDefaultYVisible,\n theme.colors.border.subtle.value,\n ),\n [options?.y, theme.colors.border.subtle.value],\n );\n\n const xPath = useMemo(\n () => createVerticalGridPath(xTicks, xScale, plot),\n [plot, xScale, xTicks],\n );\n\n const yPath = useMemo(\n () => createHorizontalGridPath(yTicks, yScale, plot),\n [plot, yScale, yTicks],\n );\n\n return (\n <Group>\n {xStyle.visible && xPath ? (\n <Path\n path={xPath}\n color={xStyle.color}\n opacity={xStyle.opacity}\n strokeWidth={xStyle.width}\n style=\"stroke\"\n >\n {xStyle.dash?.length ? (\n <DashPathEffect intervals={[...xStyle.dash]} />\n ) : null}\n </Path>\n ) : null}\n\n {yStyle.visible && yPath ? (\n <Path\n path={yPath}\n color={yStyle.color}\n opacity={yStyle.opacity}\n strokeWidth={yStyle.width}\n style=\"stroke\"\n >\n {yStyle.dash?.length ? (\n <DashPathEffect intervals={[...yStyle.dash]} />\n ) : null}\n </Path>\n ) : null}\n </Group>\n );\n});\n","export const AxisDefaultWidth = 1;\nexport const AxisDefaultOpacity = 1;\nexport const AxisDefaultTickLength = 4;\nexport const AxisDefaultLabelGap = 4;\n","export const GridDefaultWidth = 1;\nexport const GridDefaultOpacity = 1;\nexport const GridDefaultXVisible = true;\nexport const GridDefaultYVisible = true;\n","import { SkTextFontFeatures } from \"@shopify/react-native-skia\";\n\nimport { LabelHorizontalAlignment, LabelVerticalAlignment } from \"../types\";\n\nexport const TabularNumsFeature: SkTextFontFeatures = {\n name: \"tnum\",\n value: 1,\n};\n\nexport const LabelDefaultHorizontalAlignment: LabelHorizontalAlignment = \"left\";\nexport const LabelDefaultVerticalAlignment: LabelVerticalAlignment = \"top\";\n","import { ChartColorTokens } from \"@impulse-ui-native/theme\";\n\nimport { ChartStrokeCap, ChartStrokeJoin, LineChartCurve } from \"../types\";\n\nexport const LineDefaultColor = ChartColorTokens[0];\nexport const LineDefaultColors = ChartColorTokens;\nexport const LineDefaultWidth = 2;\nexport const LineDefaultOpacity = 1;\nexport const LineDefaultCurve: LineChartCurve = \"linear\";\nexport const LineDefaultCap: ChartStrokeCap = \"round\";\nexport const LineDefaultJoin: ChartStrokeJoin = \"round\";\n","import { ChartNumericDomain } from \"../types\";\n\nexport const LineChartDefaultTickCount = 5;\n\nexport const LineChartDefaultNumericDomain: ChartNumericDomain = [0, 1];\n","import {\n AxisLayout,\n AxisTick,\n ChartRect,\n CreateAxisLayoutProps,\n CreateYAxisLayoutProps,\n LineChartScale,\n} from \"../types\";\n\nexport function createAxisTicks<Value>(\n values: readonly Value[],\n scale: LineChartScale<Value>,\n): AxisTick<Value>[] {\n return values.reduce<AxisTick<Value>[]>((ticks, value) => {\n const position = scale(value);\n\n if (position !== undefined && Number.isFinite(position)) {\n ticks.push({ value, position });\n }\n\n return ticks;\n }, []);\n}\n\nexport function createXAxisLayout<Value>(\n props: CreateAxisLayoutProps<Value>,\n): AxisLayout<Value> {\n const ticks = createAxisTicks(props.values, props.scale);\n const axisY = props.plot.y + props.plot.height;\n const labelOffset = props.tickLength + props.labelGap;\n\n return {\n line: {\n start: { x: props.plot.x, y: axisY },\n end: { x: props.plot.x + props.plot.width, y: axisY },\n },\n ticks: ticks.map((tick, index) => ({\n ...tick,\n start: { x: tick.position, y: axisY },\n end: { x: tick.position, y: axisY + props.tickLength },\n labelRect: createXAxisLabelRect(ticks, index, props.region, labelOffset),\n })),\n };\n}\n\nexport function createYAxisLayout(\n props: CreateYAxisLayoutProps,\n): AxisLayout<number> {\n const ticks = createAxisTicks(props.values, props.scale);\n const axisX = props.plot.x;\n const labelWidth = props.region.width - props.tickLength - props.labelGap;\n\n return {\n line: {\n start: { x: axisX, y: props.plot.y },\n end: { x: axisX, y: props.plot.y + props.plot.height },\n },\n ticks: ticks.map((tick) => ({\n ...tick,\n start: { x: axisX - props.tickLength, y: tick.position },\n end: { x: axisX, y: tick.position },\n labelRect: createYAxisLabelRect(\n tick.position,\n props.region,\n labelWidth,\n props.fontSize,\n ),\n })),\n };\n}\n\nexport function createXAxisLabelRect(\n ticks: readonly AxisTick<unknown>[],\n index: number,\n region: ChartRect,\n offset: number,\n): ChartRect {\n const tick = ticks[index]!;\n const previous = ticks[index - 1];\n const next = ticks[index + 1];\n const previousSpacing = previous\n ? Math.abs(tick.position - previous.position)\n : next\n ? Math.abs(next.position - tick.position)\n : region.width;\n const nextSpacing = next\n ? Math.abs(next.position - tick.position)\n : previous\n ? Math.abs(tick.position - previous.position)\n : region.width;\n const width = Math.max(0, Math.min(previousSpacing, nextSpacing));\n\n return {\n x: tick.position - width / 2,\n y: region.y + offset,\n width,\n height: Math.max(0, region.height - offset),\n };\n}\n\nexport function createYAxisLabelRect(\n position: number,\n region: ChartRect,\n width: number,\n fontSize: number,\n): ChartRect {\n return {\n x: region.x,\n y: position - fontSize,\n width: Math.max(0, width),\n height: fontSize * 2,\n };\n}\n\nexport function formatAxisTick<Value>(\n value: Value,\n format?: (value: Value) => string,\n): string {\n return format ? format(value) : String(value);\n}\n","import { ChartInsets, ChartLayout, ChartRect, ChartSize } from \"../types\";\n\nexport function createChartLayout(\n size: ChartSize,\n insets: Partial<ChartInsets> = {},\n): ChartLayout {\n const resolvedInsets: ChartInsets = {\n top: insets.top ?? 0,\n right: insets.right ?? 0,\n bottom: insets.bottom ?? 0,\n left: insets.left ?? 0,\n };\n\n const plotWidth = Math.max(\n 0,\n size.width - resolvedInsets.left - resolvedInsets.right,\n );\n const plotHeight = Math.max(\n 0,\n size.height - resolvedInsets.top - resolvedInsets.bottom,\n );\n\n const plot = {\n x: resolvedInsets.left,\n y: resolvedInsets.top,\n width: plotWidth,\n height: plotHeight,\n };\n\n return {\n size,\n insets: resolvedInsets,\n plot,\n xAxis: {\n x: plot.x,\n y: plot.y + plot.height,\n width: plot.width,\n height: resolvedInsets.bottom,\n },\n yAxis: {\n x: 0,\n y: plot.y,\n width: resolvedInsets.left,\n height: plot.height,\n },\n };\n}\n\nexport function createInsetRect(rect: ChartRect, amount: number): ChartRect {\n const inset = Math.max(0, amount);\n const horizontalInset = Math.min(inset, rect.width / 2);\n const verticalInset = Math.min(inset, rect.height / 2);\n\n return {\n x: rect.x + horizontalInset,\n y: rect.y + verticalInset,\n width: Math.max(0, rect.width - horizontalInset * 2),\n height: Math.max(0, rect.height - verticalInset * 2),\n };\n}\n","import { Skia, SkPath } from \"@shopify/react-native-skia\";\n\nimport { GridDefaultOpacity, GridDefaultWidth } from \"../constants\";\nimport {\n ChartGridLineOptions,\n ChartRect,\n LineChartScale,\n ResolvedGridLineOptions,\n} from \"../types\";\nimport { createAxisTicks } from \"./axis.util\";\n\nexport function createVerticalGridPath<Value>(\n values: readonly Value[],\n scale: LineChartScale<Value>,\n plot: ChartRect,\n): SkPath | null {\n const ticks = createAxisTicks(values, scale);\n\n if (ticks.length === 0) {\n return null;\n }\n\n const path = Skia.Path.Make();\n\n ticks.forEach(({ position }) => {\n path.moveTo(position, plot.y);\n path.lineTo(position, plot.y + plot.height);\n });\n\n return path;\n}\n\nexport function createHorizontalGridPath<Value>(\n values: readonly Value[],\n scale: LineChartScale<Value>,\n plot: ChartRect,\n): SkPath | null {\n const ticks = createAxisTicks(values, scale);\n\n if (ticks.length === 0) {\n return null;\n }\n\n const path = Skia.Path.Make();\n\n ticks.forEach(({ position }) => {\n path.moveTo(plot.x, position);\n path.lineTo(plot.x + plot.width, position);\n });\n\n return path;\n}\n\nexport function resolveGridLineOptions(\n options: boolean | ChartGridLineOptions | undefined,\n defaultVisible: boolean,\n defaultColor: string,\n): ResolvedGridLineOptions {\n if (typeof options === \"boolean\") {\n return {\n visible: options,\n color: defaultColor,\n width: GridDefaultWidth,\n opacity: GridDefaultOpacity,\n };\n }\n\n return {\n visible: isGridLineVisible(options, defaultVisible),\n color: options?.color ?? defaultColor,\n width: options?.width ?? GridDefaultWidth,\n opacity: options?.opacity ?? GridDefaultOpacity,\n dash: options?.dash,\n };\n}\n\nfunction isGridLineVisible(\n options: boolean | ChartGridLineOptions | undefined,\n defaultVisible: boolean,\n): boolean {\n if (typeof options === \"boolean\") {\n return options;\n }\n\n return options?.visible ?? defaultVisible;\n}\n","import { TextAlign } from \"@shopify/react-native-skia\";\n\nimport {\n ChartRect,\n LabelHorizontalAlignment,\n LabelVerticalAlignment,\n} from \"../types\";\n\nexport function getLabelTextAlign(\n alignment: LabelHorizontalAlignment,\n): TextAlign {\n if (alignment === \"center\") {\n return TextAlign.Center;\n }\n\n if (alignment === \"right\") {\n return TextAlign.Right;\n }\n\n return TextAlign.Left;\n}\n\nexport function getLabelY(\n rect: ChartRect,\n paragraphHeight: number,\n alignment: LabelVerticalAlignment,\n): number {\n if (alignment === \"center\") {\n return rect.y + (rect.height - paragraphHeight) / 2;\n }\n\n if (alignment === \"bottom\") {\n return rect.y + rect.height - paragraphHeight;\n }\n\n return rect.y;\n}\n","import { Skia, SkPath } from \"@shopify/react-native-skia\";\nimport { line as createD3Line, curveLinear, curveMonotoneX } from \"d3-shape\";\n\nimport {\n ChartRect,\n ChartXValue,\n LineChartCoordinate,\n LineChartCurve,\n} from \"../types\";\n\nexport function createLinePath<X extends ChartXValue>(\n coordinates: readonly LineChartCoordinate<X>[],\n curve: LineChartCurve,\n): SkPath | null {\n const pathData = createD3Line<LineChartCoordinate<X>>()\n .defined((coordinate) => coordinate.x !== null && coordinate.y !== null)\n .x((coordinate) => coordinate.x!)\n .y((coordinate) => coordinate.y!)\n .curve(curve === \"monotone\" ? curveMonotoneX : curveLinear)(coordinates);\n\n return pathData ? Skia.Path.MakeFromSVGString(pathData) : null;\n}\n\nexport function fitLineCoordinatesToRect<X extends ChartXValue>(\n coordinates: readonly LineChartCoordinate<X>[],\n source: ChartRect,\n target: ChartRect,\n): LineChartCoordinate<X>[] {\n return coordinates.map((coordinate) => ({\n ...coordinate,\n x:\n coordinate.x === null\n ? null\n : mapCoordinate(\n coordinate.x,\n source.x,\n source.width,\n target.x,\n target.width,\n ),\n y:\n coordinate.y === null\n ? null\n : mapCoordinate(\n coordinate.y,\n source.y,\n source.height,\n target.y,\n target.height,\n ),\n }));\n}\n\nfunction mapCoordinate(\n value: number,\n sourceStart: number,\n sourceLength: number,\n targetStart: number,\n targetLength: number,\n): number {\n if (sourceLength <= 0) {\n return targetStart + targetLength / 2;\n }\n\n return targetStart + ((value - sourceStart) / sourceLength) * targetLength;\n}\n","import { extent } from \"d3-array\";\nimport { scaleLinear, scalePoint, scaleTime } from \"d3-scale\";\n\nimport {\n LineChartDefaultNumericDomain,\n LineChartDefaultTickCount,\n} from \"../constants\";\nimport {\n ChartNumericDomain,\n ChartXValue,\n LineChartCoordinate,\n LineChartPoint,\n LineChartScale,\n LineChartXScaleModel,\n UseLineChartProps,\n UseLineChartResult,\n} from \"../types\";\n\nexport function createLineChartModel<X extends ChartXValue>(\n props: UseLineChartProps<X>,\n): UseLineChartResult<X> {\n const xTickCount = getTickCount(props.xAxis?.tickCount);\n const yTickCount = getTickCount(props.yAxis?.tickCount);\n const xRange: ChartNumericDomain = [\n props.plot.x,\n props.plot.x + props.plot.width,\n ];\n const yRange: ChartNumericDomain = [\n props.plot.y + props.plot.height,\n props.plot.y,\n ];\n\n const xModel = createXScale(\n props.data.map((point) => point.x),\n props.xScaleType ?? \"linear\",\n xRange,\n xTickCount,\n );\n\n const yValues = props.data.reduce<number[]>((values, point) => {\n if (point.y !== null && Number.isFinite(point.y)) {\n values.push(point.y);\n }\n\n return values;\n }, []);\n const yDomain = props.yAxis?.domain ?? getNumericDomain(yValues);\n const d3YScale = scaleLinear().domain(yDomain).range(yRange);\n\n if (!props.yAxis?.domain && yTickCount > 0) {\n d3YScale.nice(yTickCount);\n }\n\n const resolvedYDomain = d3YScale.domain() as [number, number];\n const yScale: LineChartScale<number> = (value) => d3YScale(value);\n const coordinates = createLineChartCoordinates(\n props.data,\n xModel.scale,\n yScale,\n );\n\n return {\n xDomain: xModel.domain,\n yDomain: resolvedYDomain,\n xTicks: xModel.ticks,\n yTicks: d3YScale.ticks(yTickCount),\n coordinates,\n xScale: xModel.scale,\n yScale,\n };\n}\n\nexport function createLineChartCoordinates<X extends ChartXValue>(\n data: readonly LineChartPoint<X>[],\n xScale: LineChartScale<X>,\n yScale: LineChartScale<number>,\n): LineChartCoordinate<X>[] {\n return data.map((datum, index) => {\n const x = xScale(datum.x);\n const y = datum.y === null ? undefined : yScale(datum.y);\n\n return {\n datum,\n index,\n x: isFiniteCoordinate(x) ? x : null,\n y: isFiniteCoordinate(y) ? y : null,\n };\n });\n}\n\nfunction createXScale<X extends ChartXValue>(\n values: readonly X[],\n scaleType: UseLineChartProps<X>[\"xScaleType\"],\n range: ChartNumericDomain,\n tickCount: number,\n): LineChartXScaleModel<X> {\n if (scaleType === \"point\") {\n const d3Scale = scalePoint<X>().domain(values).range(range);\n const domain = d3Scale.domain();\n\n return {\n domain,\n ticks: selectPointTicks(domain, tickCount),\n scale: (value) => d3Scale(value),\n };\n }\n\n if (scaleType === \"time\") {\n const dates = values.filter(\n (value): value is Extract<X, Date> =>\n value instanceof Date && Number.isFinite(value.getTime()),\n );\n const [minimum, maximum] = extent(dates);\n const domain =\n minimum && maximum\n ? ([minimum, maximum] as const)\n : ([new Date(0), new Date(1)] as const);\n const d3Scale = scaleTime().domain(domain).range(range);\n\n if (tickCount > 0) {\n d3Scale.nice(tickCount);\n }\n\n return {\n domain: d3Scale.domain() as X[],\n ticks: d3Scale.ticks(tickCount) as X[],\n scale: (value) =>\n value instanceof Date && Number.isFinite(value.getTime())\n ? d3Scale(value)\n : undefined,\n };\n }\n\n const numbers = values.filter(\n (value): value is Extract<X, number> =>\n typeof value === \"number\" && Number.isFinite(value),\n );\n const d3Scale = scaleLinear().domain(getNumericDomain(numbers)).range(range);\n\n if (tickCount > 0) {\n d3Scale.nice(tickCount);\n }\n\n return {\n domain: d3Scale.domain() as X[],\n ticks: d3Scale.ticks(tickCount) as X[],\n scale: (value) =>\n typeof value === \"number\" && Number.isFinite(value)\n ? d3Scale(value)\n : undefined,\n };\n}\n\nfunction getNumericDomain(values: readonly number[]): ChartNumericDomain {\n const [minimum, maximum] = extent(values);\n\n return minimum === undefined || maximum === undefined\n ? LineChartDefaultNumericDomain\n : [minimum, maximum];\n}\n\nfunction getTickCount(tickCount: number | undefined): number {\n return tickCount === undefined || !Number.isFinite(tickCount)\n ? LineChartDefaultTickCount\n : Math.max(0, Math.floor(tickCount));\n}\n\nfunction selectPointTicks<X>(values: readonly X[], tickCount: number): X[] {\n if (tickCount <= 0 || values.length === 0) {\n return [];\n }\n\n if (values.length <= tickCount) {\n return [...values];\n }\n\n if (tickCount === 1) {\n return [values[0]!];\n }\n\n const lastIndex = values.length - 1;\n\n return Array.from({ length: tickCount }, (_, index) => {\n const valueIndex = Math.round((index * lastIndex) / (tickCount - 1));\n\n return values[valueIndex]!;\n });\n}\n\nfunction isFiniteCoordinate(value: number | undefined): value is number {\n return value !== undefined && Number.isFinite(value);\n}\n","import {\n LineDefaultColor,\n LineDefaultColors,\n LineDefaultWidth,\n} from \"../constants\";\nimport { ChartRect, ChartXValue, MultiLineChartSeriesModel } from \"../types\";\nimport { createInsetRect } from \"./chart-layout.util\";\nimport { fitLineCoordinatesToRect } from \"./line.util\";\n\nexport function createDrawableMultiLineChartSeries<X extends ChartXValue>(\n series: MultiLineChartSeriesModel<X>,\n index: number,\n plot: ChartRect,\n): MultiLineChartSeriesModel<X> {\n const width = series.line?.width ?? LineDefaultWidth;\n const linePlot = createInsetRect(plot, width / 2);\n\n return {\n ...series,\n coordinates: fitLineCoordinatesToRect(series.coordinates, plot, linePlot),\n line: {\n ...series.line,\n color:\n series.line?.color ??\n LineDefaultColors[index % LineDefaultColors.length] ??\n LineDefaultColor,\n },\n };\n}\n","import {\n Skia,\n SkParagraphStyle,\n SkTypefaceFontProvider,\n} from \"@shopify/react-native-skia\";\n\ninterface CreateParagraphBuilderProps {\n paragraphStyle?: SkParagraphStyle;\n typefaceProvider?: SkTypefaceFontProvider;\n}\n\nexport function createParagraphBuilder(props: CreateParagraphBuilderProps) {\n if (props.typefaceProvider) {\n return Skia.ParagraphBuilder.Make(\n props.paragraphStyle,\n props.typefaceProvider,\n );\n }\n\n return Skia.ParagraphBuilder.Make(props.paragraphStyle);\n}\n","import { useMemo } from \"react\";\nimport {\n Group,\n Paragraph,\n Skia,\n SkTextFontFeatures,\n SkTextStyle,\n} from \"@shopify/react-native-skia\";\n\nimport { memo } from \"@impulse-ui-native/core\";\n\nimport {\n LabelDefaultHorizontalAlignment,\n LabelDefaultVerticalAlignment,\n TabularNumsFeature,\n} from \"../../constants\";\nimport { LabelProps } from \"../../types\";\nimport {\n createParagraphBuilder,\n getLabelTextAlign,\n getLabelY,\n} from \"../../utils\";\n\nexport const Label = memo(function Label(props: LabelProps) {\n const {\n color,\n fontManager,\n fontSize,\n fontFamily,\n fontWeight,\n horizontalAlign = LabelDefaultHorizontalAlignment,\n rect,\n rotation = 0,\n text,\n theme,\n tnum,\n maxLines = 1,\n verticalAlign = LabelDefaultVerticalAlignment,\n } = props;\n\n const paragraph = useMemo(() => {\n const fontFeatures: SkTextFontFeatures[] = [];\n\n if (tnum) {\n fontFeatures.push(TabularNumsFeature);\n }\n\n const textStyle: SkTextStyle = {\n color: Skia.Color(color ?? theme.colors.text.secondary),\n fontSize: fontSize ?? theme.fontSize.xs,\n fontFeatures,\n };\n\n if (fontFamily) {\n textStyle.fontFamilies = [fontFamily];\n }\n\n if (fontWeight !== undefined) {\n textStyle.fontStyle = { weight: fontWeight };\n }\n\n const result = createParagraphBuilder({\n paragraphStyle: {\n ellipsis: \"\\u2026\",\n maxLines: Math.max(1, Math.floor(maxLines)),\n textAlign: getLabelTextAlign(horizontalAlign),\n },\n typefaceProvider: fontManager,\n })\n .pushStyle(textStyle)\n .addText(text)\n .pop()\n .build();\n\n result.layout(rect.width);\n\n return result;\n }, [\n color,\n fontManager,\n fontFamily,\n fontSize,\n fontWeight,\n horizontalAlign,\n rect.width,\n text,\n theme.colors.text.secondary,\n theme.fontSize.xs,\n tnum,\n maxLines,\n ]);\n\n const rotationProps = useMemo(\n () => ({\n origin: {\n x: rect.x + rect.width / 2,\n y: rect.y + rect.height / 2,\n },\n transform: [{ rotate: (rotation * Math.PI) / 180 }],\n }),\n [rect.height, rect.width, rect.x, rect.y, rotation],\n );\n\n if (!paragraph) {\n return null;\n }\n\n const y = getLabelY(rect, paragraph.getHeight(), verticalAlign);\n\n return (\n <Group origin={rotationProps.origin} transform={rotationProps.transform}>\n <Paragraph paragraph={paragraph} x={rect.x} y={y} width={rect.width} />\n </Group>\n );\n});\n","import { useMemo } from \"react\";\nimport { DashPathEffect, Path } from \"@shopify/react-native-skia\";\n\nimport { memo } from \"@impulse-ui-native/core\";\n\nimport {\n LineDefaultCap,\n LineDefaultColor,\n LineDefaultCurve,\n LineDefaultJoin,\n LineDefaultOpacity,\n LineDefaultWidth,\n} from \"../../constants\";\nimport { ChartXValue, LineProps } from \"../../types\";\nimport { createLinePath } from \"../../utils\";\n\nexport const Line = memo(function Line<X extends ChartXValue = number>(\n props: LineProps<X>,\n) {\n const {\n cap = LineDefaultCap,\n color = LineDefaultColor,\n coordinates,\n curve = LineDefaultCurve,\n dash,\n join = LineDefaultJoin,\n opacity = LineDefaultOpacity,\n visible = true,\n width = LineDefaultWidth,\n } = props;\n\n const path = useMemo(\n () => createLinePath(coordinates, curve),\n [coordinates, curve],\n );\n\n if (!visible || !path) {\n return null;\n }\n\n return (\n <Path\n path={path}\n color={color}\n opacity={opacity}\n strokeWidth={width}\n style=\"stroke\"\n strokeCap={cap}\n strokeJoin={join}\n >\n {dash?.length ? <DashPathEffect intervals={[...dash]} /> : null}\n </Path>\n );\n});\n","import { Fragment, useMemo } from \"react\";\nimport {\n DashPathEffect,\n Group,\n Line as SkiaLine,\n} from \"@shopify/react-native-skia\";\n\nimport { memo } from \"@impulse-ui-native/core\";\n\nimport {\n AxisDefaultLabelGap,\n AxisDefaultOpacity,\n AxisDefaultTickLength,\n AxisDefaultWidth,\n} from \"../../constants\";\nimport { ChartXValue, XAxisProps } from \"../../types\";\nimport { createXAxisLayout, formatAxisTick } from \"../../utils\";\nimport { Label } from \"./label\";\n\nexport const XAxis = memo(function XAxis<X extends ChartXValue = number>(\n props: XAxisProps<X>,\n) {\n const {\n fontManager,\n lineVisible = true,\n options,\n plot,\n region,\n scale,\n theme,\n ticks,\n tickVisible = true,\n } = props;\n\n const line = options?.line;\n const tick = options?.tick;\n const label = options?.label;\n const tickLength = tick?.length ?? AxisDefaultTickLength;\n const labelGap = label?.gap ?? AxisDefaultLabelGap;\n const fontSize = label?.fontSize ?? theme.fontSize.xs;\n\n const layout = useMemo(\n () =>\n createXAxisLayout({\n values: ticks,\n scale,\n plot,\n region,\n tickLength,\n labelGap,\n }),\n [labelGap, plot, region, scale, tickLength, ticks],\n );\n\n return (\n <Group>\n {lineVisible && line?.visible !== false ? (\n <SkiaLine\n p1={layout.line.start}\n p2={layout.line.end}\n color={line?.color ?? theme.colors.border.default.value}\n opacity={line?.opacity ?? AxisDefaultOpacity}\n strokeWidth={line?.width ?? AxisDefaultWidth}\n >\n {line?.dash?.length ? (\n <DashPathEffect intervals={[...line.dash]} />\n ) : null}\n </SkiaLine>\n ) : null}\n\n {layout.ticks.map((tick, index) => (\n <Fragment key={`${String(tick.value)}-${index}`}>\n {tickVisible && options?.tick?.visible !== false ? (\n <SkiaLine\n p1={tick.start}\n p2={tick.end}\n color={options?.tick?.color ?? theme.colors.border.default.value}\n opacity={options?.tick?.opacity ?? AxisDefaultOpacity}\n strokeWidth={options?.tick?.width ?? AxisDefaultWidth}\n >\n {options?.tick?.dash?.length ? (\n <DashPathEffect intervals={[...options.tick.dash]} />\n ) : null}\n </SkiaLine>\n ) : null}\n {label?.visible !== false ? (\n <Label\n text={formatAxisTick(tick.value, options?.format)}\n rect={tick.labelRect}\n horizontalAlign=\"center\"\n color={label?.color}\n fontSize={fontSize}\n fontFamily={label?.fontFamily}\n fontWeight={label?.fontWeight}\n fontManager={fontManager}\n maxLines={label?.maxLines}\n rotation={label?.rotation}\n theme={theme}\n tnum={typeof tick.value === \"number\"}\n />\n ) : null}\n </Fragment>\n ))}\n </Group>\n );\n});\n","import { Fragment, useMemo } from \"react\";\nimport {\n DashPathEffect,\n Group,\n Line as SkiaLine,\n} from \"@shopify/react-native-skia\";\n\nimport { memo } from \"@impulse-ui-native/core\";\n\nimport {\n AxisDefaultLabelGap,\n AxisDefaultOpacity,\n AxisDefaultTickLength,\n AxisDefaultWidth,\n} from \"../../constants\";\nimport { YAxisProps } from \"../../types\";\nimport { createYAxisLayout, formatAxisTick } from \"../../utils\";\nimport { Label } from \"./label\";\n\nexport const YAxis = memo(function YAxis(props: YAxisProps) {\n const {\n fontManager,\n lineVisible = true,\n options,\n plot,\n region,\n scale,\n theme,\n ticks,\n tickVisible = true,\n } = props;\n\n const line = options?.line;\n const tick = options?.tick;\n const label = options?.label;\n const tickLength = tick?.length ?? AxisDefaultTickLength;\n const labelGap = label?.gap ?? AxisDefaultLabelGap;\n const fontSize = label?.fontSize ?? theme.fontSize.xs;\n\n const layout = useMemo(\n () =>\n createYAxisLayout({\n values: ticks,\n scale,\n plot,\n region,\n tickLength,\n labelGap,\n fontSize,\n }),\n [fontSize, labelGap, plot, region, scale, tickLength, ticks],\n );\n\n return (\n <Group>\n {lineVisible && line?.visible !== false ? (\n <SkiaLine\n p1={layout.line.start}\n p2={layout.line.end}\n color={line?.color ?? theme.colors.border.default.value}\n opacity={line?.opacity ?? AxisDefaultOpacity}\n strokeWidth={line?.width ?? AxisDefaultWidth}\n >\n {line?.dash?.length ? (\n <DashPathEffect intervals={[...line.dash]} />\n ) : null}\n </SkiaLine>\n ) : null}\n\n {layout.ticks.map((tick, index) => (\n <Fragment key={`${tick.value}-${index}`}>\n {tickVisible && options?.tick?.visible !== false ? (\n <SkiaLine\n p1={tick.start}\n p2={tick.end}\n color={options?.tick?.color ?? theme.colors.border.default.value}\n opacity={options?.tick?.opacity ?? AxisDefaultOpacity}\n strokeWidth={options?.tick?.width ?? AxisDefaultWidth}\n >\n {options?.tick?.dash?.length ? (\n <DashPathEffect intervals={[...options.tick.dash]} />\n ) : null}\n </SkiaLine>\n ) : null}\n {label?.visible !== false ? (\n <Label\n text={formatAxisTick(tick.value, options?.format)}\n rect={tick.labelRect}\n horizontalAlign=\"right\"\n verticalAlign=\"center\"\n color={label?.color}\n fontSize={fontSize}\n fontFamily={label?.fontFamily}\n fontWeight={label?.fontWeight}\n fontManager={fontManager}\n maxLines={label?.maxLines}\n rotation={label?.rotation}\n theme={theme}\n tnum\n />\n ) : null}\n </Fragment>\n ))}\n </Group>\n );\n});\n","import { StyleSheet } from \"react-native\";\nimport { Canvas } from \"@shopify/react-native-skia\";\n\nimport { memo } from \"@impulse-ui-native/core\";\nimport { useTheme } from \"@impulse-ui-native/theme\";\n\nimport { useChartCanvas } from \"../hooks\";\nimport { ChartXValue, LineChartProps } from \"../types\";\nimport { LineChartBody } from \"./line-chart-body\";\n\nexport const LineChart = memo(function LineChart<\n X extends ChartXValue = number,\n>(props: LineChartProps<X>) {\n const theme = useTheme();\n\n const { ref, size } = useChartCanvas();\n\n return (\n <Canvas ref={ref} style={styles.container}>\n <LineChartBody {...props} size={size} theme={theme} />\n </Canvas>\n );\n});\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n","import { useCanvasRef, useCanvasSize } from \"@shopify/react-native-skia\";\n\nexport function useChartCanvas() {\n const ref = useCanvasRef();\n const { size } = useCanvasSize(ref);\n\n return { ref, size };\n}\n","import { useMemo } from \"react\";\n\nimport { ChartXValue, UseLineChartProps, UseLineChartResult } from \"../types\";\nimport { createLineChartModel } from \"../utils\";\n\nexport function useLineChart<X extends ChartXValue = number>(\n props: UseLineChartProps<X>,\n): UseLineChartResult<X> {\n const { data, plot, xAxis, xScaleType, yAxis } = props;\n\n return useMemo(\n () => createLineChartModel({ data, plot, xAxis, xScaleType, yAxis }),\n [data, plot, xAxis, xScaleType, yAxis],\n );\n}\n","import { useMemo } from \"react\";\n\nimport {\n ChartXValue,\n UseMultiLineChartProps,\n UseMultiLineChartResult,\n} from \"../types\";\nimport { createLineChartCoordinates } from \"../utils\";\nimport { useLineChart } from \"./use-line-chart.hook\";\n\nexport function useMultiLineChart<X extends ChartXValue = number>(\n props: UseMultiLineChartProps<X>,\n): UseMultiLineChartResult<X> {\n const { plot, series, xAxis, xScaleType, yAxis } = props;\n\n const data = useMemo(\n () => series.flatMap((currentSeries) => currentSeries.data),\n [series],\n );\n\n const { xDomain, xScale, xTicks, yDomain, yScale, yTicks } = useLineChart({\n data,\n plot,\n xAxis,\n xScaleType,\n yAxis,\n });\n\n const seriesModels = useMemo(\n () =>\n series.map((currentSeries) => ({\n ...currentSeries,\n coordinates: createLineChartCoordinates(\n currentSeries.data,\n xScale,\n yScale,\n ),\n })),\n [series, xScale, yScale],\n );\n\n return useMemo(\n () => ({\n series: seriesModels,\n xDomain,\n xScale,\n xTicks,\n yDomain,\n yScale,\n yTicks,\n }),\n [seriesModels, xDomain, xScale, xTicks, yDomain, yScale, yTicks],\n );\n}\n","import { useMemo } from \"react\";\nimport { Group } from \"@shopify/react-native-skia\";\n\nimport { memo } from \"@impulse-ui-native/core\";\nimport { AppTheme } from \"@impulse-ui-native/theme\";\n\nimport { LineDefaultWidth } from \"../constants\";\nimport { useLineChart } from \"../hooks\";\nimport { ChartSize, ChartXValue, LineChartProps } from \"../types\";\nimport {\n createChartLayout,\n createInsetRect,\n fitLineCoordinatesToRect,\n} from \"../utils\";\nimport { Grid, Line, XAxis, YAxis } from \"./primitives\";\n\ninterface LineChartBodyProps<X extends ChartXValue> extends LineChartProps<X> {\n size: ChartSize;\n theme: AppTheme;\n}\n\nexport const LineChartBody = memo(function LineChartBodyComponent<\n X extends ChartXValue = number,\n>(props: LineChartBodyProps<X>) {\n const {\n data,\n fontManager,\n grid,\n insets,\n line,\n size,\n theme,\n xAxis,\n xScaleType,\n yAxis,\n } = props;\n\n const layout = useMemo(() => createChartLayout(size, insets), [insets, size]);\n\n const { coordinates, xScale, xTicks, yScale, yTicks } = useLineChart({\n data,\n plot: layout.plot,\n xAxis,\n xScaleType,\n yAxis,\n });\n\n const linePlot = useMemo(\n () => createInsetRect(layout.plot, (line?.width ?? LineDefaultWidth) / 2),\n [layout.plot, line?.width],\n );\n\n const lineCoordinates = useMemo(\n () => fitLineCoordinatesToRect(coordinates, layout.plot, linePlot),\n [coordinates, layout.plot, linePlot],\n );\n\n const isGridStyle = grid !== undefined;\n\n return (\n <>\n {isGridStyle ? (\n <Grid\n options={grid}\n plot={layout.plot}\n theme={theme}\n xTicks={xTicks}\n xScale={xScale}\n yTicks={yTicks}\n yScale={yScale}\n />\n ) : null}\n\n {xAxis?.visible !== false ? (\n <XAxis\n ticks={xTicks}\n scale={xScale}\n plot={layout.plot}\n region={layout.xAxis}\n theme={theme}\n options={xAxis}\n fontManager={fontManager}\n lineVisible={!isGridStyle}\n tickVisible={!isGridStyle}\n />\n ) : null}\n\n {yAxis?.visible !== false ? (\n <YAxis\n ticks={yTicks}\n scale={yScale}\n plot={layout.plot}\n region={layout.yAxis}\n theme={theme}\n options={yAxis}\n fontManager={fontManager}\n lineVisible={!isGridStyle}\n tickVisible={!isGridStyle}\n />\n ) : null}\n\n <Group clip={layout.plot}>\n <Line coordinates={lineCoordinates} {...line} />\n </Group>\n </>\n );\n});\n","import { StyleSheet } from \"react-native\";\nimport { Canvas } from \"@shopify/react-native-skia\";\n\nimport { memo } from \"@impulse-ui-native/core\";\nimport { useTheme } from \"@impulse-ui-native/theme\";\n\nimport { useChartCanvas } from \"../hooks\";\nimport { ChartXValue, MultiLineChartProps } from \"../types\";\nimport { MultiLineChartBody } from \"./multi-line-chart-body\";\n\nexport const MultiLineChart = memo(function MultiLineChart<\n X extends ChartXValue = number,\n>(props: MultiLineChartProps<X>) {\n const theme = useTheme();\n\n const { ref, size } = useChartCanvas();\n\n return (\n <Canvas ref={ref} style={styles.container}>\n <MultiLineChartBody {...props} size={size} theme={theme} />\n </Canvas>\n );\n});\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n","import { useMemo } from \"react\";\nimport { Group } from \"@shopify/react-native-skia\";\n\nimport { memo } from \"@impulse-ui-native/core\";\n\nimport { useMultiLineChart } from \"../hooks\";\nimport { ChartXValue, MultiLineChartBodyProps } from \"../types\";\nimport {\n createChartLayout,\n createDrawableMultiLineChartSeries,\n} from \"../utils\";\nimport { Grid, Line, XAxis, YAxis } from \"./primitives\";\n\nexport const MultiLineChartBody = memo(function MultiLineChartBodyComponent<\n X extends ChartXValue = number,\n>(props: MultiLineChartBodyProps<X>) {\n const {\n fontManager,\n grid,\n insets,\n series,\n size,\n theme,\n xAxis,\n xScaleType,\n yAxis,\n } = props;\n\n const layout = useMemo(() => createChartLayout(size, insets), [insets, size]);\n\n const {\n series: seriesModels,\n xScale,\n xTicks,\n yScale,\n yTicks,\n } = useMultiLineChart({\n plot: layout.plot,\n series,\n xAxis,\n xScaleType,\n yAxis,\n });\n\n const drawableSeries = useMemo(\n () =>\n seriesModels.map((currentSeries, index) =>\n createDrawableMultiLineChartSeries(currentSeries, index, layout.plot),\n ),\n [layout.plot, seriesModels],\n );\n\n const isGridStyle = grid !== undefined;\n\n return (\n <>\n {isGridStyle ? (\n <Grid\n options={grid}\n plot={layout.plot}\n theme={theme}\n xTicks={xTicks}\n xScale={xScale}\n yTicks={yTicks}\n yScale={yScale}\n />\n ) : null}\n\n {xAxis?.visible !== false ? (\n <XAxis\n ticks={xTicks}\n scale={xScale}\n plot={layout.plot}\n region={layout.xAxis}\n theme={theme}\n options={xAxis}\n fontManager={fontManager}\n lineVisible={!isGridStyle}\n tickVisible={!isGridStyle}\n />\n ) : null}\n\n {yAxis?.visible !== false ? (\n <YAxis\n ticks={yTicks}\n scale={yScale}\n plot={layout.plot}\n region={layout.yAxis}\n theme={theme}\n options={yAxis}\n fontManager={fontManager}\n lineVisible={!isGridStyle}\n tickVisible={!isGridStyle}\n />\n ) : null}\n\n <Group clip={layout.plot}>\n {drawableSeries.map((currentSeries) => (\n <Line\n key={currentSeries.id}\n coordinates={currentSeries.coordinates}\n {...currentSeries.line}\n />\n ))}\n </Group>\n </>\n );\n});\n"],"mappings":"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","names":["Skia","d3Scale","Skia","Grid","useMemo","Group","Skia","memo","jsx","memo","Label","useMemo","Skia","Group","useMemo","DashPathEffect","Path","memo","jsx","memo","Line","useMemo","Path","DashPathEffect","useMemo","DashPathEffect","Group","memo","jsx","jsxs","memo","XAxis","useMemo","Group","DashPathEffect","tick","Fragment","useMemo","DashPathEffect","Group","SkiaLine","memo","jsx","jsxs","memo","YAxis","useMemo","Group","SkiaLine","DashPathEffect","tick","Fragment","memo","useMemo","useMemo","useMemo","useMemo","useMemo","Group","memo","Fragment","jsx","jsxs","memo","useMemo","Group","jsx","memo","LineChart","StyleSheet","Canvas","memo","useTheme","useMemo","Group","memo","Fragment","jsx","jsxs","memo","useMemo","Group","jsx","memo","MultiLineChart","useTheme","Canvas","styles","StyleSheet"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./components\";\nexport * from \"./constants\";\nexport * from \"./hooks\";\nexport * from \"./types\";\nexport * from \"./utils\";\nexport * from \"./contexts\";\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { SkTypefaceFontProvider } from '@shopify/react-native-skia';
|
|
2
|
+
import { ChartRect, ChartScaleType, ChartXAxisOptions, ChartYAxisOptions, ChartInsets } from './types/common.types.mjs';
|
|
3
|
+
import { AppTheme } from '@impulse-ui-native/theme';
|
|
4
|
+
import { ChartStrokeStyle, ChartStrokeCap, ChartStrokeJoin } from './types/style.types.mjs';
|
|
5
|
+
|
|
6
|
+
interface ChartGridLineOptions extends ChartStrokeStyle {
|
|
7
|
+
visible?: boolean;
|
|
8
|
+
}
|
|
9
|
+
interface ChartGridOptions {
|
|
10
|
+
x?: boolean | ChartGridLineOptions;
|
|
11
|
+
y?: boolean | ChartGridLineOptions;
|
|
12
|
+
}
|
|
13
|
+
interface ResolvedGridLineOptions {
|
|
14
|
+
visible: boolean;
|
|
15
|
+
color: string;
|
|
16
|
+
width: number;
|
|
17
|
+
opacity: number;
|
|
18
|
+
dash?: readonly number[];
|
|
19
|
+
}
|
|
20
|
+
interface GridProps<X extends ChartXValue = number> {
|
|
21
|
+
options?: ChartGridOptions;
|
|
22
|
+
plot: ChartRect;
|
|
23
|
+
theme: AppTheme;
|
|
24
|
+
xTicks: readonly X[];
|
|
25
|
+
xScale: LineChartScale<X>;
|
|
26
|
+
yTicks: readonly number[];
|
|
27
|
+
yScale: LineChartScale<number>;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
type ChartXValue = number | string | Date;
|
|
31
|
+
type LineChartCurve = "linear" | "monotone";
|
|
32
|
+
type LineChartScale<Value> = (value: Value) => number | undefined;
|
|
33
|
+
interface LineChartPoint<X extends ChartXValue = number> {
|
|
34
|
+
x: X;
|
|
35
|
+
y: number | null;
|
|
36
|
+
}
|
|
37
|
+
interface LineChartCoordinate<X extends ChartXValue = number> {
|
|
38
|
+
datum: LineChartPoint<X>;
|
|
39
|
+
index: number;
|
|
40
|
+
x: number | null;
|
|
41
|
+
y: number | null;
|
|
42
|
+
}
|
|
43
|
+
interface LineChartLineOptions extends ChartStrokeStyle {
|
|
44
|
+
visible?: boolean;
|
|
45
|
+
curve?: LineChartCurve;
|
|
46
|
+
cap?: ChartStrokeCap;
|
|
47
|
+
join?: ChartStrokeJoin;
|
|
48
|
+
}
|
|
49
|
+
interface LineChartCommonProps<X extends ChartXValue = number> {
|
|
50
|
+
fontManager?: SkTypefaceFontProvider;
|
|
51
|
+
grid?: ChartGridOptions;
|
|
52
|
+
xScaleType?: ChartScaleType;
|
|
53
|
+
xAxis?: ChartXAxisOptions<X>;
|
|
54
|
+
yAxis?: ChartYAxisOptions;
|
|
55
|
+
insets?: Partial<ChartInsets>;
|
|
56
|
+
}
|
|
57
|
+
interface LineChartProps<X extends ChartXValue = number> extends LineChartCommonProps<X> {
|
|
58
|
+
data: readonly LineChartPoint<X>[];
|
|
59
|
+
line?: LineChartLineOptions;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export type { ChartGridLineOptions as C, GridProps as G, LineChartCommonProps as L, ResolvedGridLineOptions as R, ChartGridOptions as a, ChartXValue as b, LineChartCoordinate as c, LineChartCurve as d, LineChartLineOptions as e, LineChartPoint as f, LineChartProps as g, LineChartScale as h };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { SkTypefaceFontProvider } from '@shopify/react-native-skia';
|
|
2
|
+
import { AppTheme } from '@impulse-ui-native/theme';
|
|
3
|
+
import { ChartPoint, ChartRect, ChartAxisOptions } from './common.types.mjs';
|
|
4
|
+
import { h as LineChartScale, b as ChartXValue } from '../line-chart.types-yxru5uWc.mjs';
|
|
5
|
+
import './style.types.mjs';
|
|
6
|
+
|
|
7
|
+
interface AxisTick<Value> {
|
|
8
|
+
value: Value;
|
|
9
|
+
position: number;
|
|
10
|
+
}
|
|
11
|
+
interface AxisLineLayout {
|
|
12
|
+
start: ChartPoint;
|
|
13
|
+
end: ChartPoint;
|
|
14
|
+
}
|
|
15
|
+
interface AxisTickLayout<Value> extends AxisTick<Value>, AxisLineLayout {
|
|
16
|
+
labelRect: ChartRect;
|
|
17
|
+
}
|
|
18
|
+
interface AxisLayout<Value> {
|
|
19
|
+
line: AxisLineLayout;
|
|
20
|
+
ticks: readonly AxisTickLayout<Value>[];
|
|
21
|
+
}
|
|
22
|
+
interface CreateAxisLayoutProps<Value> {
|
|
23
|
+
values: readonly Value[];
|
|
24
|
+
scale: LineChartScale<Value>;
|
|
25
|
+
plot: ChartRect;
|
|
26
|
+
region: ChartRect;
|
|
27
|
+
tickLength: number;
|
|
28
|
+
labelGap: number;
|
|
29
|
+
}
|
|
30
|
+
interface CreateYAxisLayoutProps extends CreateAxisLayoutProps<number> {
|
|
31
|
+
fontSize: number;
|
|
32
|
+
}
|
|
33
|
+
interface AxisProps<Value> {
|
|
34
|
+
ticks: readonly Value[];
|
|
35
|
+
scale: LineChartScale<Value>;
|
|
36
|
+
plot: ChartRect;
|
|
37
|
+
region: ChartRect;
|
|
38
|
+
theme: AppTheme;
|
|
39
|
+
options?: ChartAxisOptions<Value>;
|
|
40
|
+
fontManager?: SkTypefaceFontProvider;
|
|
41
|
+
lineVisible?: boolean;
|
|
42
|
+
tickVisible?: boolean;
|
|
43
|
+
}
|
|
44
|
+
interface XAxisProps<X extends ChartXValue = number> extends AxisProps<X> {
|
|
45
|
+
}
|
|
46
|
+
interface YAxisProps extends AxisProps<number> {
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export type { AxisLayout, AxisLineLayout, AxisProps, AxisTick, AxisTickLayout, CreateAxisLayoutProps, CreateYAxisLayoutProps, XAxisProps, YAxisProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=axis.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ChartStrokeStyle, ChartLabelStyle } from './style.types.mjs';
|
|
2
|
+
import '@shopify/react-native-skia';
|
|
3
|
+
|
|
4
|
+
type ChartScaleType = "linear" | "point" | "time";
|
|
5
|
+
type ChartNumericDomain = readonly [minimum: number, maximum: number];
|
|
6
|
+
interface ChartInsets {
|
|
7
|
+
top: number;
|
|
8
|
+
right: number;
|
|
9
|
+
bottom: number;
|
|
10
|
+
left: number;
|
|
11
|
+
}
|
|
12
|
+
interface ChartSize {
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
}
|
|
16
|
+
interface ChartPoint {
|
|
17
|
+
x: number;
|
|
18
|
+
y: number;
|
|
19
|
+
}
|
|
20
|
+
interface ChartRect extends ChartSize {
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
}
|
|
24
|
+
interface ChartLayout {
|
|
25
|
+
size: ChartSize;
|
|
26
|
+
insets: ChartInsets;
|
|
27
|
+
plot: ChartRect;
|
|
28
|
+
xAxis: ChartRect;
|
|
29
|
+
yAxis: ChartRect;
|
|
30
|
+
}
|
|
31
|
+
interface ChartAxisOptions<Value> {
|
|
32
|
+
visible?: boolean;
|
|
33
|
+
tickCount?: number;
|
|
34
|
+
format?: (value: Value) => string;
|
|
35
|
+
line?: ChartAxisLineOptions;
|
|
36
|
+
tick?: ChartAxisTickOptions;
|
|
37
|
+
label?: ChartAxisLabelOptions;
|
|
38
|
+
}
|
|
39
|
+
interface ChartAxisLineOptions extends ChartStrokeStyle {
|
|
40
|
+
visible?: boolean;
|
|
41
|
+
}
|
|
42
|
+
interface ChartAxisTickOptions extends ChartStrokeStyle {
|
|
43
|
+
visible?: boolean;
|
|
44
|
+
length?: number;
|
|
45
|
+
}
|
|
46
|
+
interface ChartAxisLabelOptions extends ChartLabelStyle {
|
|
47
|
+
visible?: boolean;
|
|
48
|
+
gap?: number;
|
|
49
|
+
rotation?: number;
|
|
50
|
+
}
|
|
51
|
+
interface ChartXAxisOptions<X> extends ChartAxisOptions<X> {
|
|
52
|
+
}
|
|
53
|
+
interface ChartYAxisOptions extends ChartAxisOptions<number> {
|
|
54
|
+
domain?: ChartNumericDomain;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export type { ChartAxisLabelOptions, ChartAxisLineOptions, ChartAxisOptions, ChartAxisTickOptions, ChartInsets, ChartLayout, ChartNumericDomain, ChartPoint, ChartRect, ChartScaleType, ChartSize, ChartXAxisOptions, ChartYAxisOptions };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=common.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import '@impulse-ui-native/theme';
|
|
2
|
+
import './common.types.mjs';
|
|
3
|
+
export { C as ChartGridLineOptions, a as ChartGridOptions, G as GridProps, R as ResolvedGridLineOptions } from '../line-chart.types-yxru5uWc.mjs';
|
|
4
|
+
import './style.types.mjs';
|
|
5
|
+
import '@shopify/react-native-skia';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=grid.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { AxisLayout, AxisLineLayout, AxisProps, AxisTick, AxisTickLayout, CreateAxisLayoutProps, CreateYAxisLayoutProps, XAxisProps, YAxisProps } from './axis.types.mjs';
|
|
2
|
+
export { ChartAxisLabelOptions, ChartAxisLineOptions, ChartAxisOptions, ChartAxisTickOptions, ChartInsets, ChartLayout, ChartNumericDomain, ChartPoint, ChartRect, ChartScaleType, ChartSize, ChartXAxisOptions, ChartYAxisOptions } from './common.types.mjs';
|
|
3
|
+
export { C as ChartGridLineOptions, a as ChartGridOptions, b as ChartXValue, G as GridProps, L as LineChartCommonProps, c as LineChartCoordinate, d as LineChartCurve, e as LineChartLineOptions, f as LineChartPoint, g as LineChartProps, h as LineChartScale, R as ResolvedGridLineOptions } from '../line-chart.types-yxru5uWc.mjs';
|
|
4
|
+
export { LabelHorizontalAlignment, LabelProps, LabelVerticalAlignment } from './label.types.mjs';
|
|
5
|
+
export { LineProps } from './line.types.mjs';
|
|
6
|
+
export { MultiLineChartBodyProps, MultiLineChartProps, MultiLineChartSeries, MultiLineChartSeriesModel } from './multi-line-chart.types.mjs';
|
|
7
|
+
export { ChartLabelStyle, ChartStrokeCap, ChartStrokeJoin, ChartStrokeStyle } from './style.types.mjs';
|
|
8
|
+
export { LineChartXScaleModel, UseLineChartProps, UseLineChartResult } from './use-line-chart.types.mjs';
|
|
9
|
+
export { UseMultiLineChartProps, UseMultiLineChartResult } from './use-multi-line-chart.types.mjs';
|
|
10
|
+
import '@shopify/react-native-skia';
|
|
11
|
+
import '@impulse-ui-native/theme';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./axis.types";
|
|
2
|
+
export * from "./common.types";
|
|
3
|
+
export * from "./grid.types";
|
|
4
|
+
export * from "./label.types";
|
|
5
|
+
export * from "./line.types";
|
|
6
|
+
export * from "./line-chart.types";
|
|
7
|
+
export * from "./multi-line-chart.types";
|
|
8
|
+
export * from "./style.types";
|
|
9
|
+
export * from "./use-line-chart.types";
|
|
10
|
+
export * from "./use-multi-line-chart.types";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["export * from \"./axis.types\";\nexport * from \"./common.types\";\nexport * from \"./grid.types\";\nexport * from \"./label.types\";\nexport * from \"./line.types\";\nexport * from \"./line-chart.types\";\nexport * from \"./multi-line-chart.types\";\nexport * from \"./style.types\";\nexport * from \"./use-line-chart.types\";\nexport * from \"./use-multi-line-chart.types\";\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { FontWeight, SkTypefaceFontProvider } from '@shopify/react-native-skia';
|
|
2
|
+
import { AppTheme } from '@impulse-ui-native/theme';
|
|
3
|
+
import { ChartRect } from './common.types.mjs';
|
|
4
|
+
import './style.types.mjs';
|
|
5
|
+
|
|
6
|
+
type LabelHorizontalAlignment = "left" | "center" | "right";
|
|
7
|
+
type LabelVerticalAlignment = "top" | "center" | "bottom";
|
|
8
|
+
interface LabelProps {
|
|
9
|
+
text: string;
|
|
10
|
+
rect: ChartRect;
|
|
11
|
+
theme: AppTheme;
|
|
12
|
+
horizontalAlign?: LabelHorizontalAlignment;
|
|
13
|
+
verticalAlign?: LabelVerticalAlignment;
|
|
14
|
+
color?: string;
|
|
15
|
+
fontSize?: number;
|
|
16
|
+
fontFamily?: string;
|
|
17
|
+
fontWeight?: FontWeight;
|
|
18
|
+
fontManager?: SkTypefaceFontProvider;
|
|
19
|
+
maxLines?: number;
|
|
20
|
+
rotation?: number;
|
|
21
|
+
tnum?: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export type { LabelHorizontalAlignment, LabelProps, LabelVerticalAlignment };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=label.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import '@shopify/react-native-skia';
|
|
2
|
+
import './common.types.mjs';
|
|
3
|
+
export { b as ChartXValue, L as LineChartCommonProps, c as LineChartCoordinate, d as LineChartCurve, e as LineChartLineOptions, f as LineChartPoint, g as LineChartProps, h as LineChartScale } from '../line-chart.types-yxru5uWc.mjs';
|
|
4
|
+
import './style.types.mjs';
|
|
5
|
+
import '@impulse-ui-native/theme';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=line-chart.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { b as ChartXValue, e as LineChartLineOptions, c as LineChartCoordinate } from '../line-chart.types-yxru5uWc.mjs';
|
|
2
|
+
import '@shopify/react-native-skia';
|
|
3
|
+
import './common.types.mjs';
|
|
4
|
+
import './style.types.mjs';
|
|
5
|
+
import '@impulse-ui-native/theme';
|
|
6
|
+
|
|
7
|
+
interface LineProps<X extends ChartXValue = number> extends LineChartLineOptions {
|
|
8
|
+
coordinates: readonly LineChartCoordinate<X>[];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export type { LineProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=line.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AppTheme } from '@impulse-ui-native/theme';
|
|
2
|
+
import { ChartSize } from './common.types.mjs';
|
|
3
|
+
import { b as ChartXValue, L as LineChartCommonProps, f as LineChartPoint, e as LineChartLineOptions, c as LineChartCoordinate } from '../line-chart.types-yxru5uWc.mjs';
|
|
4
|
+
import './style.types.mjs';
|
|
5
|
+
import '@shopify/react-native-skia';
|
|
6
|
+
|
|
7
|
+
interface MultiLineChartSeries<X extends ChartXValue = number> {
|
|
8
|
+
id: string;
|
|
9
|
+
data: readonly LineChartPoint<X>[];
|
|
10
|
+
line?: LineChartLineOptions;
|
|
11
|
+
}
|
|
12
|
+
interface MultiLineChartSeriesModel<X extends ChartXValue = number> extends MultiLineChartSeries<X> {
|
|
13
|
+
coordinates: readonly LineChartCoordinate<X>[];
|
|
14
|
+
}
|
|
15
|
+
interface MultiLineChartProps<X extends ChartXValue = number> extends LineChartCommonProps<X> {
|
|
16
|
+
series: readonly MultiLineChartSeries<X>[];
|
|
17
|
+
}
|
|
18
|
+
interface MultiLineChartBodyProps<X extends ChartXValue = number> extends MultiLineChartProps<X> {
|
|
19
|
+
size: ChartSize;
|
|
20
|
+
theme: AppTheme;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type { MultiLineChartBodyProps, MultiLineChartProps, MultiLineChartSeries, MultiLineChartSeriesModel };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=multi-line-chart.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FontWeight } from '@shopify/react-native-skia';
|
|
2
|
+
|
|
3
|
+
type ChartStrokeCap = "butt" | "round" | "square";
|
|
4
|
+
type ChartStrokeJoin = "bevel" | "miter" | "round";
|
|
5
|
+
interface ChartStrokeStyle {
|
|
6
|
+
color?: string;
|
|
7
|
+
width?: number;
|
|
8
|
+
opacity?: number;
|
|
9
|
+
dash?: readonly number[];
|
|
10
|
+
}
|
|
11
|
+
interface ChartLabelStyle {
|
|
12
|
+
color?: string;
|
|
13
|
+
fontSize?: number;
|
|
14
|
+
fontFamily?: string;
|
|
15
|
+
fontWeight?: FontWeight;
|
|
16
|
+
maxLines?: number;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type { ChartLabelStyle, ChartStrokeCap, ChartStrokeJoin, ChartStrokeStyle };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=style.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ChartRect, ChartScaleType, ChartXAxisOptions, ChartYAxisOptions, ChartNumericDomain } from './common.types.mjs';
|
|
2
|
+
import { b as ChartXValue, h as LineChartScale, f as LineChartPoint, c as LineChartCoordinate } from '../line-chart.types-yxru5uWc.mjs';
|
|
3
|
+
import './style.types.mjs';
|
|
4
|
+
import '@shopify/react-native-skia';
|
|
5
|
+
import '@impulse-ui-native/theme';
|
|
6
|
+
|
|
7
|
+
interface UseLineChartProps<X extends ChartXValue = number> {
|
|
8
|
+
data: readonly LineChartPoint<X>[];
|
|
9
|
+
plot: ChartRect;
|
|
10
|
+
xScaleType?: ChartScaleType;
|
|
11
|
+
xAxis?: ChartXAxisOptions<X>;
|
|
12
|
+
yAxis?: ChartYAxisOptions;
|
|
13
|
+
}
|
|
14
|
+
interface UseLineChartResult<X extends ChartXValue = number> {
|
|
15
|
+
xDomain: readonly X[];
|
|
16
|
+
yDomain: ChartNumericDomain;
|
|
17
|
+
xTicks: readonly X[];
|
|
18
|
+
yTicks: readonly number[];
|
|
19
|
+
coordinates: readonly LineChartCoordinate<X>[];
|
|
20
|
+
xScale: LineChartScale<X>;
|
|
21
|
+
yScale: LineChartScale<number>;
|
|
22
|
+
}
|
|
23
|
+
interface LineChartXScaleModel<X extends ChartXValue> {
|
|
24
|
+
domain: readonly X[];
|
|
25
|
+
ticks: readonly X[];
|
|
26
|
+
scale: LineChartScale<X>;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type { LineChartXScaleModel, UseLineChartProps, UseLineChartResult };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=use-line-chart.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ChartRect } from './common.types.mjs';
|
|
2
|
+
import { b as ChartXValue } from '../line-chart.types-yxru5uWc.mjs';
|
|
3
|
+
import { MultiLineChartProps, MultiLineChartSeriesModel } from './multi-line-chart.types.mjs';
|
|
4
|
+
import { UseLineChartResult } from './use-line-chart.types.mjs';
|
|
5
|
+
import './style.types.mjs';
|
|
6
|
+
import '@shopify/react-native-skia';
|
|
7
|
+
import '@impulse-ui-native/theme';
|
|
8
|
+
|
|
9
|
+
interface UseMultiLineChartProps<X extends ChartXValue = number> extends Pick<MultiLineChartProps<X>, "series" | "xAxis" | "xScaleType" | "yAxis"> {
|
|
10
|
+
plot: ChartRect;
|
|
11
|
+
}
|
|
12
|
+
interface UseMultiLineChartResult<X extends ChartXValue = number> extends Omit<UseLineChartResult<X>, "coordinates"> {
|
|
13
|
+
series: readonly MultiLineChartSeriesModel<X>[];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export type { UseMultiLineChartProps, UseMultiLineChartResult };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=use-multi-line-chart.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AxisTick, CreateAxisLayoutProps, AxisLayout, CreateYAxisLayoutProps } from '../types/axis.types.mjs';
|
|
2
|
+
import { ChartRect } from '../types/common.types.mjs';
|
|
3
|
+
import { h as LineChartScale } from '../line-chart.types-yxru5uWc.mjs';
|
|
4
|
+
import '@shopify/react-native-skia';
|
|
5
|
+
import '@impulse-ui-native/theme';
|
|
6
|
+
import '../types/style.types.mjs';
|
|
7
|
+
|
|
8
|
+
declare function createAxisTicks<Value>(values: readonly Value[], scale: LineChartScale<Value>): AxisTick<Value>[];
|
|
9
|
+
declare function createXAxisLayout<Value>(props: CreateAxisLayoutProps<Value>): AxisLayout<Value>;
|
|
10
|
+
declare function createYAxisLayout(props: CreateYAxisLayoutProps): AxisLayout<number>;
|
|
11
|
+
declare function createXAxisLabelRect(ticks: readonly AxisTick<unknown>[], index: number, region: ChartRect, offset: number): ChartRect;
|
|
12
|
+
declare function createYAxisLabelRect(position: number, region: ChartRect, width: number, fontSize: number): ChartRect;
|
|
13
|
+
declare function formatAxisTick<Value>(value: Value, format?: (value: Value) => string): string;
|
|
14
|
+
|
|
15
|
+
export { createAxisTicks, createXAxisLabelRect, createXAxisLayout, createYAxisLabelRect, createYAxisLayout, formatAxisTick };
|