@impulse-ui-native/charts 2.1.0 → 2.2.0
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/README.md +50 -6
- package/dist/components/bar-chart-body.d.mts +15 -0
- package/dist/components/bar-chart-body.js +50 -0
- package/dist/components/bar-chart-body.js.map +1 -0
- package/dist/components/bar-chart.d.mts +11 -0
- package/dist/components/bar-chart.js +21 -0
- package/dist/components/bar-chart.js.map +1 -0
- package/dist/components/chart-axes.d.mts +22 -0
- package/dist/components/chart-axes.js +64 -0
- package/dist/components/chart-axes.js.map +1 -0
- package/dist/components/index.d.mts +23 -0
- package/dist/components/index.js +12 -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 +86 -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-bar-chart-body.d.mts +16 -0
- package/dist/components/multi-bar-chart-body.js +72 -0
- package/dist/components/multi-bar-chart-body.js.map +1 -0
- package/dist/components/multi-bar-chart.d.mts +12 -0
- package/dist/components/multi-bar-chart.js +21 -0
- package/dist/components/multi-bar-chart.js.map +1 -0
- package/dist/components/multi-line-chart-body.d.mts +11 -0
- package/dist/components/multi-line-chart-body.js +95 -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/bar.d.mts +12 -0
- package/dist/components/primitives/bar.js +44 -0
- package/dist/components/primitives/bar.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 +17 -0
- package/dist/components/primitives/index.js +15 -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/bar-chart.constants.d.mts +4 -0
- package/dist/constants/bar-chart.constants.js +7 -0
- package/dist/constants/bar-chart.constants.js.map +1 -0
- package/dist/constants/bar.constants.d.mts +8 -0
- package/dist/constants/bar.constants.js +12 -0
- package/dist/constants/bar.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 +13 -0
- package/dist/constants/index.js +8 -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 +19 -0
- package/dist/hooks/index.js +15 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/use-bar-chart.hook.d.mts +11 -0
- package/dist/hooks/use-bar-chart.hook.js +13 -0
- package/dist/hooks/use-bar-chart.hook.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-chart-layout.hook.d.mts +7 -0
- package/dist/hooks/use-chart-layout.hook.js +9 -0
- package/dist/hooks/use-chart-layout.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-bar-chart.hook.d.mts +13 -0
- package/dist/hooks/use-multi-bar-chart.hook.js +20 -0
- package/dist/hooks/use-multi-bar-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 +51 -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/bar-chart.types.d.mts +38 -0
- package/dist/types/bar-chart.types.js +1 -0
- package/dist/types/bar-chart.types.js.map +1 -0
- package/dist/types/bar.types.d.mts +12 -0
- package/dist/types/bar.types.js +1 -0
- package/dist/types/bar.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 +16 -0
- package/dist/types/index.js +16 -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-bar-chart.types.d.mts +21 -0
- package/dist/types/multi-bar-chart.types.js +1 -0
- package/dist/types/multi-bar-chart.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-bar-chart.types.d.mts +26 -0
- package/dist/types/use-bar-chart.types.js +1 -0
- package/dist/types/use-bar-chart.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-bar-chart.types.d.mts +17 -0
- package/dist/types/use-multi-bar-chart.types.js +1 -0
- package/dist/types/use-multi-bar-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/bar-chart.util.d.mts +25 -0
- package/dist/utils/bar-chart.util.js +145 -0
- package/dist/utils/bar-chart.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 +23 -0
- package/dist/utils/index.js +56 -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-bar-chart.util.d.mts +14 -0
- package/dist/utils/multi-bar-chart.util.js +62 -0
- package/dist/utils/multi-bar-chart.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 +6 -5
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BarChartPoint, BarChartCoordinate } from './bar-chart.types.mjs';
|
|
2
|
+
import { ChartRect, ChartXAxisOptions, ChartYAxisOptions, ChartNumericDomain } from './common.types.mjs';
|
|
3
|
+
import { b as ChartXValue, h as LineChartScale } from '../line-chart.types-yxru5uWc.mjs';
|
|
4
|
+
import '@shopify/react-native-skia';
|
|
5
|
+
import './style.types.mjs';
|
|
6
|
+
import '@impulse-ui-native/theme';
|
|
7
|
+
|
|
8
|
+
interface UseBarChartProps<X extends ChartXValue = string> {
|
|
9
|
+
data: readonly BarChartPoint<X>[];
|
|
10
|
+
plot: ChartRect;
|
|
11
|
+
xAxis?: ChartXAxisOptions<X>;
|
|
12
|
+
yAxis?: ChartYAxisOptions;
|
|
13
|
+
categoryPadding?: number;
|
|
14
|
+
}
|
|
15
|
+
interface UseBarChartResult<X extends ChartXValue = string> {
|
|
16
|
+
xDomain: readonly X[];
|
|
17
|
+
yDomain: ChartNumericDomain;
|
|
18
|
+
xTicks: readonly X[];
|
|
19
|
+
yTicks: readonly number[];
|
|
20
|
+
coordinates: readonly BarChartCoordinate<X>[];
|
|
21
|
+
xScale: LineChartScale<X>;
|
|
22
|
+
yScale: LineChartScale<number>;
|
|
23
|
+
bandwidth: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export type { UseBarChartProps, UseBarChartResult };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=use-bar-chart.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,17 @@
|
|
|
1
|
+
import { ChartRect } from './common.types.mjs';
|
|
2
|
+
import { b as ChartXValue } from '../line-chart.types-yxru5uWc.mjs';
|
|
3
|
+
import { MultiBarChartProps, MultiBarChartSeriesModel } from './multi-bar-chart.types.mjs';
|
|
4
|
+
import { UseBarChartResult } from './use-bar-chart.types.mjs';
|
|
5
|
+
import './style.types.mjs';
|
|
6
|
+
import '@shopify/react-native-skia';
|
|
7
|
+
import '@impulse-ui-native/theme';
|
|
8
|
+
import './bar-chart.types.mjs';
|
|
9
|
+
|
|
10
|
+
interface UseMultiBarChartProps<X extends ChartXValue = string> extends Pick<MultiBarChartProps<X>, "categoryPadding" | "series" | "seriesPadding" | "xAxis" | "yAxis"> {
|
|
11
|
+
plot: ChartRect;
|
|
12
|
+
}
|
|
13
|
+
interface UseMultiBarChartResult<X extends ChartXValue = string> extends Omit<UseBarChartResult<X>, "coordinates"> {
|
|
14
|
+
series: readonly MultiBarChartSeriesModel<X>[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type { UseMultiBarChartProps, UseMultiBarChartResult };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=use-multi-bar-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 };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
function createAxisTicks(values, scale) {
|
|
2
|
+
return values.reduce((ticks, value) => {
|
|
3
|
+
const position = scale(value);
|
|
4
|
+
if (position !== void 0 && Number.isFinite(position)) {
|
|
5
|
+
ticks.push({ value, position });
|
|
6
|
+
}
|
|
7
|
+
return ticks;
|
|
8
|
+
}, []);
|
|
9
|
+
}
|
|
10
|
+
function createXAxisLayout(props) {
|
|
11
|
+
const ticks = createAxisTicks(props.values, props.scale);
|
|
12
|
+
const axisY = props.plot.y + props.plot.height;
|
|
13
|
+
const labelOffset = props.tickLength + props.labelGap;
|
|
14
|
+
return {
|
|
15
|
+
line: {
|
|
16
|
+
start: { x: props.plot.x, y: axisY },
|
|
17
|
+
end: { x: props.plot.x + props.plot.width, y: axisY }
|
|
18
|
+
},
|
|
19
|
+
ticks: ticks.map((tick, index) => ({
|
|
20
|
+
...tick,
|
|
21
|
+
start: { x: tick.position, y: axisY },
|
|
22
|
+
end: { x: tick.position, y: axisY + props.tickLength },
|
|
23
|
+
labelRect: createXAxisLabelRect(ticks, index, props.region, labelOffset)
|
|
24
|
+
}))
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function createYAxisLayout(props) {
|
|
28
|
+
const ticks = createAxisTicks(props.values, props.scale);
|
|
29
|
+
const axisX = props.plot.x;
|
|
30
|
+
const labelWidth = props.region.width - props.tickLength - props.labelGap;
|
|
31
|
+
return {
|
|
32
|
+
line: {
|
|
33
|
+
start: { x: axisX, y: props.plot.y },
|
|
34
|
+
end: { x: axisX, y: props.plot.y + props.plot.height }
|
|
35
|
+
},
|
|
36
|
+
ticks: ticks.map((tick) => ({
|
|
37
|
+
...tick,
|
|
38
|
+
start: { x: axisX - props.tickLength, y: tick.position },
|
|
39
|
+
end: { x: axisX, y: tick.position },
|
|
40
|
+
labelRect: createYAxisLabelRect(
|
|
41
|
+
tick.position,
|
|
42
|
+
props.region,
|
|
43
|
+
labelWidth,
|
|
44
|
+
props.fontSize
|
|
45
|
+
)
|
|
46
|
+
}))
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function createXAxisLabelRect(ticks, index, region, offset) {
|
|
50
|
+
const tick = ticks[index];
|
|
51
|
+
const previous = ticks[index - 1];
|
|
52
|
+
const next = ticks[index + 1];
|
|
53
|
+
const previousSpacing = previous ? Math.abs(tick.position - previous.position) : next ? Math.abs(next.position - tick.position) : region.width;
|
|
54
|
+
const nextSpacing = next ? Math.abs(next.position - tick.position) : previous ? Math.abs(tick.position - previous.position) : region.width;
|
|
55
|
+
const width = Math.max(0, Math.min(previousSpacing, nextSpacing));
|
|
56
|
+
return {
|
|
57
|
+
x: tick.position - width / 2,
|
|
58
|
+
y: region.y + offset,
|
|
59
|
+
width,
|
|
60
|
+
height: Math.max(0, region.height - offset)
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function createYAxisLabelRect(position, region, width, fontSize) {
|
|
64
|
+
return {
|
|
65
|
+
x: region.x,
|
|
66
|
+
y: position - fontSize,
|
|
67
|
+
width: Math.max(0, width),
|
|
68
|
+
height: fontSize * 2
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function formatAxisTick(value, format) {
|
|
72
|
+
return format ? format(value) : String(value);
|
|
73
|
+
}
|
|
74
|
+
export {
|
|
75
|
+
createAxisTicks,
|
|
76
|
+
createXAxisLabelRect,
|
|
77
|
+
createXAxisLayout,
|
|
78
|
+
createYAxisLabelRect,
|
|
79
|
+
createYAxisLayout,
|
|
80
|
+
formatAxisTick
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=axis.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/axis.util.ts"],"sourcesContent":["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"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ChartNumericDomain } from '../types/common.types.mjs';
|
|
2
|
+
import { b as ChartXValue, h as LineChartScale } from '../line-chart.types-yxru5uWc.mjs';
|
|
3
|
+
import { BarChartPoint, BarChartCoordinate } from '../types/bar-chart.types.mjs';
|
|
4
|
+
import { UseBarChartProps, UseBarChartResult } from '../types/use-bar-chart.types.mjs';
|
|
5
|
+
import '../types/style.types.mjs';
|
|
6
|
+
import '@shopify/react-native-skia';
|
|
7
|
+
import '@impulse-ui-native/theme';
|
|
8
|
+
|
|
9
|
+
interface BarChartScaleModel<X extends ChartXValue> {
|
|
10
|
+
xDomain: readonly X[];
|
|
11
|
+
yDomain: ChartNumericDomain;
|
|
12
|
+
xTicks: readonly X[];
|
|
13
|
+
yTicks: readonly number[];
|
|
14
|
+
xScale: LineChartScale<X>;
|
|
15
|
+
xStartScale: LineChartScale<X>;
|
|
16
|
+
yScale: LineChartScale<number>;
|
|
17
|
+
bandwidth: number;
|
|
18
|
+
baseline: number;
|
|
19
|
+
}
|
|
20
|
+
declare function createBarChartModel<X extends ChartXValue>(props: UseBarChartProps<X>): UseBarChartResult<X>;
|
|
21
|
+
declare function createBarChartCoordinates<X extends ChartXValue>(data: readonly BarChartPoint<X>[], xStartScale: LineChartScale<X>, yScale: LineChartScale<number>, baseline: number, width: number, offset?: number): BarChartCoordinate<X>[];
|
|
22
|
+
declare function createBarChartScaleModel<X extends ChartXValue>(props: UseBarChartProps<X>): BarChartScaleModel<X>;
|
|
23
|
+
declare function normalizeBarChartPadding(value: number | undefined, fallback: number): number;
|
|
24
|
+
|
|
25
|
+
export { type BarChartScaleModel, createBarChartCoordinates, createBarChartModel, createBarChartScaleModel, normalizeBarChartPadding };
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { extent } from "d3-array";
|
|
2
|
+
import { scaleBand, scaleLinear } from "d3-scale";
|
|
3
|
+
import { BarChartDefaultCategoryPadding } from "../constants/bar-chart.constants";
|
|
4
|
+
import {
|
|
5
|
+
LineChartDefaultNumericDomain,
|
|
6
|
+
LineChartDefaultTickCount
|
|
7
|
+
} from "../constants/line-chart.constants";
|
|
8
|
+
function createBarChartModel(props) {
|
|
9
|
+
const model = createBarChartScaleModel(props);
|
|
10
|
+
return {
|
|
11
|
+
xDomain: model.xDomain,
|
|
12
|
+
yDomain: model.yDomain,
|
|
13
|
+
xTicks: model.xTicks,
|
|
14
|
+
yTicks: model.yTicks,
|
|
15
|
+
xScale: model.xScale,
|
|
16
|
+
yScale: model.yScale,
|
|
17
|
+
bandwidth: model.bandwidth,
|
|
18
|
+
coordinates: createBarChartCoordinates(
|
|
19
|
+
props.data,
|
|
20
|
+
model.xStartScale,
|
|
21
|
+
model.yScale,
|
|
22
|
+
model.baseline,
|
|
23
|
+
model.bandwidth
|
|
24
|
+
)
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function createBarChartCoordinates(data, xStartScale, yScale, baseline, width, offset = 0) {
|
|
28
|
+
const baselineY = yScale(baseline);
|
|
29
|
+
if (!isFiniteCoordinate(baselineY) || width <= 0) {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
return data.reduce((coordinates, datum, index) => {
|
|
33
|
+
const x = xStartScale(datum.x);
|
|
34
|
+
const valueY = datum.y === null ? void 0 : yScale(datum.y);
|
|
35
|
+
if (!isFiniteCoordinate(x) || !isFiniteCoordinate(valueY)) {
|
|
36
|
+
return coordinates;
|
|
37
|
+
}
|
|
38
|
+
coordinates.push({
|
|
39
|
+
datum,
|
|
40
|
+
index,
|
|
41
|
+
x: x + offset,
|
|
42
|
+
y: Math.min(valueY, baselineY),
|
|
43
|
+
width,
|
|
44
|
+
height: Math.abs(baselineY - valueY)
|
|
45
|
+
});
|
|
46
|
+
return coordinates;
|
|
47
|
+
}, []);
|
|
48
|
+
}
|
|
49
|
+
function createBarChartScaleModel(props) {
|
|
50
|
+
const xTickCount = getTickCount(props.xAxis?.tickCount);
|
|
51
|
+
const yTickCount = getTickCount(props.yAxis?.tickCount);
|
|
52
|
+
const categoryPadding = normalizeBarChartPadding(
|
|
53
|
+
props.categoryPadding,
|
|
54
|
+
BarChartDefaultCategoryPadding
|
|
55
|
+
);
|
|
56
|
+
const xBandScale = scaleBand().domain(
|
|
57
|
+
props.data.map((point) => point.x).filter((value) => isValidXValue(value))
|
|
58
|
+
).range([props.plot.x, props.plot.x + props.plot.width]).paddingInner(categoryPadding).paddingOuter(categoryPadding / 2);
|
|
59
|
+
const xDomain = xBandScale.domain();
|
|
60
|
+
const bandwidth = xDomain.length === 0 ? 0 : xBandScale.bandwidth();
|
|
61
|
+
const xStartScale = (value) => xBandScale(value);
|
|
62
|
+
const xScale = (value) => {
|
|
63
|
+
const start = xBandScale(value);
|
|
64
|
+
return start === void 0 ? void 0 : start + bandwidth / 2;
|
|
65
|
+
};
|
|
66
|
+
const values = props.data.reduce((result, point) => {
|
|
67
|
+
if (point.y !== null && Number.isFinite(point.y)) {
|
|
68
|
+
result.push(point.y);
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}, []);
|
|
72
|
+
const yDomain = props.yAxis?.domain ?? getBarNumericDomain(values);
|
|
73
|
+
const d3YScale = scaleLinear().domain(yDomain).range([props.plot.y + props.plot.height, props.plot.y]);
|
|
74
|
+
if (!props.yAxis?.domain && yTickCount > 0) {
|
|
75
|
+
d3YScale.nice(yTickCount);
|
|
76
|
+
}
|
|
77
|
+
const resolvedYDomain = d3YScale.domain();
|
|
78
|
+
const yScale = (value) => d3YScale(value);
|
|
79
|
+
return {
|
|
80
|
+
xDomain,
|
|
81
|
+
yDomain: resolvedYDomain,
|
|
82
|
+
xTicks: selectTicks(xDomain, xTickCount),
|
|
83
|
+
yTicks: d3YScale.ticks(yTickCount),
|
|
84
|
+
xScale,
|
|
85
|
+
xStartScale,
|
|
86
|
+
yScale,
|
|
87
|
+
bandwidth,
|
|
88
|
+
baseline: getBaseline(resolvedYDomain)
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function getBarNumericDomain(values) {
|
|
92
|
+
const [minimum, maximum] = extent(values);
|
|
93
|
+
if (minimum === void 0 || maximum === void 0) {
|
|
94
|
+
return LineChartDefaultNumericDomain;
|
|
95
|
+
}
|
|
96
|
+
const domain = [Math.min(0, minimum), Math.max(0, maximum)];
|
|
97
|
+
return domain[0] === domain[1] ? LineChartDefaultNumericDomain : domain;
|
|
98
|
+
}
|
|
99
|
+
function getBaseline(domain) {
|
|
100
|
+
const minimum = Math.min(...domain);
|
|
101
|
+
const maximum = Math.max(...domain);
|
|
102
|
+
if (minimum > 0) {
|
|
103
|
+
return minimum;
|
|
104
|
+
}
|
|
105
|
+
if (maximum < 0) {
|
|
106
|
+
return maximum;
|
|
107
|
+
}
|
|
108
|
+
return 0;
|
|
109
|
+
}
|
|
110
|
+
function getTickCount(tickCount) {
|
|
111
|
+
return tickCount === void 0 || !Number.isFinite(tickCount) ? LineChartDefaultTickCount : Math.max(0, Math.floor(tickCount));
|
|
112
|
+
}
|
|
113
|
+
function normalizeBarChartPadding(value, fallback) {
|
|
114
|
+
const padding = value === void 0 || !Number.isFinite(value) ? fallback : value;
|
|
115
|
+
return Math.min(1, Math.max(0, padding));
|
|
116
|
+
}
|
|
117
|
+
function selectTicks(values, tickCount) {
|
|
118
|
+
if (tickCount <= 0 || values.length === 0) {
|
|
119
|
+
return [];
|
|
120
|
+
}
|
|
121
|
+
if (values.length <= tickCount) {
|
|
122
|
+
return [...values];
|
|
123
|
+
}
|
|
124
|
+
if (tickCount === 1) {
|
|
125
|
+
return [values[0]];
|
|
126
|
+
}
|
|
127
|
+
const lastIndex = values.length - 1;
|
|
128
|
+
return Array.from(
|
|
129
|
+
{ length: tickCount },
|
|
130
|
+
(_, index) => values[Math.round(index * lastIndex / (tickCount - 1))]
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
function isFiniteCoordinate(value) {
|
|
134
|
+
return value !== void 0 && Number.isFinite(value);
|
|
135
|
+
}
|
|
136
|
+
function isValidXValue(value) {
|
|
137
|
+
return value instanceof Date ? Number.isFinite(value.getTime()) : typeof value === "string" || Number.isFinite(value);
|
|
138
|
+
}
|
|
139
|
+
export {
|
|
140
|
+
createBarChartCoordinates,
|
|
141
|
+
createBarChartModel,
|
|
142
|
+
createBarChartScaleModel,
|
|
143
|
+
normalizeBarChartPadding
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=bar-chart.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/bar-chart.util.ts"],"sourcesContent":["import { extent } from \"d3-array\";\nimport { scaleBand, scaleLinear } from \"d3-scale\";\n\nimport { BarChartDefaultCategoryPadding } from \"../constants/bar-chart.constants\";\nimport {\n LineChartDefaultNumericDomain,\n LineChartDefaultTickCount,\n} from \"../constants/line-chart.constants\";\nimport {\n BarChartCoordinate,\n BarChartPoint,\n ChartNumericDomain,\n ChartXValue,\n LineChartScale,\n UseBarChartProps,\n UseBarChartResult,\n} from \"../types\";\n\nexport interface BarChartScaleModel<X extends ChartXValue> {\n xDomain: readonly X[];\n yDomain: ChartNumericDomain;\n xTicks: readonly X[];\n yTicks: readonly number[];\n xScale: LineChartScale<X>;\n xStartScale: LineChartScale<X>;\n yScale: LineChartScale<number>;\n bandwidth: number;\n baseline: number;\n}\n\nexport function createBarChartModel<X extends ChartXValue>(\n props: UseBarChartProps<X>,\n): UseBarChartResult<X> {\n const model = createBarChartScaleModel(props);\n\n return {\n xDomain: model.xDomain,\n yDomain: model.yDomain,\n xTicks: model.xTicks,\n yTicks: model.yTicks,\n xScale: model.xScale,\n yScale: model.yScale,\n bandwidth: model.bandwidth,\n coordinates: createBarChartCoordinates(\n props.data,\n model.xStartScale,\n model.yScale,\n model.baseline,\n model.bandwidth,\n ),\n };\n}\n\nexport function createBarChartCoordinates<X extends ChartXValue>(\n data: readonly BarChartPoint<X>[],\n xStartScale: LineChartScale<X>,\n yScale: LineChartScale<number>,\n baseline: number,\n width: number,\n offset = 0,\n): BarChartCoordinate<X>[] {\n const baselineY = yScale(baseline);\n\n if (!isFiniteCoordinate(baselineY) || width <= 0) {\n return [];\n }\n\n return data.reduce<BarChartCoordinate<X>[]>((coordinates, datum, index) => {\n const x = xStartScale(datum.x);\n const valueY = datum.y === null ? undefined : yScale(datum.y);\n\n if (!isFiniteCoordinate(x) || !isFiniteCoordinate(valueY)) {\n return coordinates;\n }\n\n coordinates.push({\n datum,\n index,\n x: x + offset,\n y: Math.min(valueY, baselineY),\n width,\n height: Math.abs(baselineY - valueY),\n });\n\n return coordinates;\n }, []);\n}\n\nexport function createBarChartScaleModel<X extends ChartXValue>(\n props: UseBarChartProps<X>,\n): BarChartScaleModel<X> {\n const xTickCount = getTickCount(props.xAxis?.tickCount);\n const yTickCount = getTickCount(props.yAxis?.tickCount);\n const categoryPadding = normalizeBarChartPadding(\n props.categoryPadding,\n BarChartDefaultCategoryPadding,\n );\n const xBandScale = scaleBand<X>()\n .domain(\n props.data\n .map((point) => point.x)\n .filter((value) => isValidXValue(value)),\n )\n .range([props.plot.x, props.plot.x + props.plot.width])\n .paddingInner(categoryPadding)\n .paddingOuter(categoryPadding / 2);\n const xDomain = xBandScale.domain();\n const bandwidth = xDomain.length === 0 ? 0 : xBandScale.bandwidth();\n const xStartScale: LineChartScale<X> = (value) => xBandScale(value);\n const xScale: LineChartScale<X> = (value) => {\n const start = xBandScale(value);\n\n return start === undefined ? undefined : start + bandwidth / 2;\n };\n const values = props.data.reduce<number[]>((result, point) => {\n if (point.y !== null && Number.isFinite(point.y)) {\n result.push(point.y);\n }\n\n return result;\n }, []);\n const yDomain = props.yAxis?.domain ?? getBarNumericDomain(values);\n const d3YScale = scaleLinear()\n .domain(yDomain)\n .range([props.plot.y + props.plot.height, props.plot.y]);\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\n return {\n xDomain,\n yDomain: resolvedYDomain,\n xTicks: selectTicks(xDomain, xTickCount),\n yTicks: d3YScale.ticks(yTickCount),\n xScale,\n xStartScale,\n yScale,\n bandwidth,\n baseline: getBaseline(resolvedYDomain),\n };\n}\n\nfunction getBarNumericDomain(values: readonly number[]): ChartNumericDomain {\n const [minimum, maximum] = extent(values);\n\n if (minimum === undefined || maximum === undefined) {\n return LineChartDefaultNumericDomain;\n }\n\n const domain = [Math.min(0, minimum), Math.max(0, maximum)] as const;\n\n return domain[0] === domain[1] ? LineChartDefaultNumericDomain : domain;\n}\n\nfunction getBaseline(domain: ChartNumericDomain): number {\n const minimum = Math.min(...domain);\n const maximum = Math.max(...domain);\n\n if (minimum > 0) {\n return minimum;\n }\n\n if (maximum < 0) {\n return maximum;\n }\n\n return 0;\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\nexport function normalizeBarChartPadding(\n value: number | undefined,\n fallback: number,\n): number {\n const padding =\n value === undefined || !Number.isFinite(value) ? fallback : value;\n\n return Math.min(1, Math.max(0, padding));\n}\n\nfunction selectTicks<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(\n { length: tickCount },\n (_, index) => values[Math.round((index * lastIndex) / (tickCount - 1))]!,\n );\n}\n\nfunction isFiniteCoordinate(value: number | undefined): value is number {\n return value !== undefined && Number.isFinite(value);\n}\n\nfunction isValidXValue<X extends ChartXValue>(value: X): boolean {\n return value instanceof Date\n ? Number.isFinite(value.getTime())\n : typeof value === \"string\" || Number.isFinite(value);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ChartSize, ChartInsets, ChartLayout, ChartRect } from '../types/common.types.mjs';
|
|
2
|
+
import '../types/style.types.mjs';
|
|
3
|
+
import '@shopify/react-native-skia';
|
|
4
|
+
|
|
5
|
+
declare function createChartLayout(size: ChartSize, insets?: Partial<ChartInsets>): ChartLayout;
|
|
6
|
+
declare function createInsetRect(rect: ChartRect, amount: number): ChartRect;
|
|
7
|
+
|
|
8
|
+
export { createChartLayout, createInsetRect };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
function createChartLayout(size, insets = {}) {
|
|
2
|
+
const resolvedInsets = {
|
|
3
|
+
top: insets.top ?? 0,
|
|
4
|
+
right: insets.right ?? 0,
|
|
5
|
+
bottom: insets.bottom ?? 0,
|
|
6
|
+
left: insets.left ?? 0
|
|
7
|
+
};
|
|
8
|
+
const plotWidth = Math.max(
|
|
9
|
+
0,
|
|
10
|
+
size.width - resolvedInsets.left - resolvedInsets.right
|
|
11
|
+
);
|
|
12
|
+
const plotHeight = Math.max(
|
|
13
|
+
0,
|
|
14
|
+
size.height - resolvedInsets.top - resolvedInsets.bottom
|
|
15
|
+
);
|
|
16
|
+
const plot = {
|
|
17
|
+
x: resolvedInsets.left,
|
|
18
|
+
y: resolvedInsets.top,
|
|
19
|
+
width: plotWidth,
|
|
20
|
+
height: plotHeight
|
|
21
|
+
};
|
|
22
|
+
return {
|
|
23
|
+
size,
|
|
24
|
+
insets: resolvedInsets,
|
|
25
|
+
plot,
|
|
26
|
+
xAxis: {
|
|
27
|
+
x: plot.x,
|
|
28
|
+
y: plot.y + plot.height,
|
|
29
|
+
width: plot.width,
|
|
30
|
+
height: resolvedInsets.bottom
|
|
31
|
+
},
|
|
32
|
+
yAxis: {
|
|
33
|
+
x: 0,
|
|
34
|
+
y: plot.y,
|
|
35
|
+
width: resolvedInsets.left,
|
|
36
|
+
height: plot.height
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function createInsetRect(rect, amount) {
|
|
41
|
+
const inset = Math.max(0, amount);
|
|
42
|
+
const horizontalInset = Math.min(inset, rect.width / 2);
|
|
43
|
+
const verticalInset = Math.min(inset, rect.height / 2);
|
|
44
|
+
return {
|
|
45
|
+
x: rect.x + horizontalInset,
|
|
46
|
+
y: rect.y + verticalInset,
|
|
47
|
+
width: Math.max(0, rect.width - horizontalInset * 2),
|
|
48
|
+
height: Math.max(0, rect.height - verticalInset * 2)
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
createChartLayout,
|
|
53
|
+
createInsetRect
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=chart-layout.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/chart-layout.util.ts"],"sourcesContent":["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"],"mappings":"AAEO,SAAS,kBACd,MACA,SAA+B,CAAC,GACnB;AACb,QAAM,iBAA8B;AAAA,IAClC,KAAK,OAAO,OAAO;AAAA,IACnB,OAAO,OAAO,SAAS;AAAA,IACvB,QAAQ,OAAO,UAAU;AAAA,IACzB,MAAM,OAAO,QAAQ;AAAA,EACvB;AAEA,QAAM,YAAY,KAAK;AAAA,IACrB;AAAA,IACA,KAAK,QAAQ,eAAe,OAAO,eAAe;AAAA,EACpD;AACA,QAAM,aAAa,KAAK;AAAA,IACtB;AAAA,IACA,KAAK,SAAS,eAAe,MAAM,eAAe;AAAA,EACpD;AAEA,QAAM,OAAO;AAAA,IACX,GAAG,eAAe;AAAA,IAClB,GAAG,eAAe;AAAA,IAClB,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAEA,SAAO;AAAA,IACL;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,OAAO;AAAA,MACL,GAAG,KAAK;AAAA,MACR,GAAG,KAAK,IAAI,KAAK;AAAA,MACjB,OAAO,KAAK;AAAA,MACZ,QAAQ,eAAe;AAAA,IACzB;AAAA,IACA,OAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG,KAAK;AAAA,MACR,OAAO,eAAe;AAAA,MACtB,QAAQ,KAAK;AAAA,IACf;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,MAAiB,QAA2B;AAC1E,QAAM,QAAQ,KAAK,IAAI,GAAG,MAAM;AAChC,QAAM,kBAAkB,KAAK,IAAI,OAAO,KAAK,QAAQ,CAAC;AACtD,QAAM,gBAAgB,KAAK,IAAI,OAAO,KAAK,SAAS,CAAC;AAErD,SAAO;AAAA,IACL,GAAG,KAAK,IAAI;AAAA,IACZ,GAAG,KAAK,IAAI;AAAA,IACZ,OAAO,KAAK,IAAI,GAAG,KAAK,QAAQ,kBAAkB,CAAC;AAAA,IACnD,QAAQ,KAAK,IAAI,GAAG,KAAK,SAAS,gBAAgB,CAAC;AAAA,EACrD;AACF;","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SkPath } from '@shopify/react-native-skia';
|
|
2
|
+
import { ChartRect } from '../types/common.types.mjs';
|
|
3
|
+
import { h as LineChartScale, C as ChartGridLineOptions, R as ResolvedGridLineOptions } from '../line-chart.types-yxru5uWc.mjs';
|
|
4
|
+
import '../types/style.types.mjs';
|
|
5
|
+
import '@impulse-ui-native/theme';
|
|
6
|
+
|
|
7
|
+
declare function createVerticalGridPath<Value>(values: readonly Value[], scale: LineChartScale<Value>, plot: ChartRect): SkPath | null;
|
|
8
|
+
declare function createHorizontalGridPath<Value>(values: readonly Value[], scale: LineChartScale<Value>, plot: ChartRect): SkPath | null;
|
|
9
|
+
declare function resolveGridLineOptions(options: boolean | ChartGridLineOptions | undefined, defaultVisible: boolean, defaultColor: string): ResolvedGridLineOptions;
|
|
10
|
+
|
|
11
|
+
export { createHorizontalGridPath, createVerticalGridPath, resolveGridLineOptions };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Skia } from "@shopify/react-native-skia";
|
|
2
|
+
import { GridDefaultOpacity, GridDefaultWidth } from "../constants";
|
|
3
|
+
import { createAxisTicks } from "./axis.util";
|
|
4
|
+
function createVerticalGridPath(values, scale, plot) {
|
|
5
|
+
const ticks = createAxisTicks(values, scale);
|
|
6
|
+
if (ticks.length === 0) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const path = Skia.PathBuilder.Make();
|
|
10
|
+
ticks.forEach(({ position }) => {
|
|
11
|
+
path.moveTo(position, plot.y);
|
|
12
|
+
path.lineTo(position, plot.y + plot.height);
|
|
13
|
+
});
|
|
14
|
+
return path.detach();
|
|
15
|
+
}
|
|
16
|
+
function createHorizontalGridPath(values, scale, plot) {
|
|
17
|
+
const ticks = createAxisTicks(values, scale);
|
|
18
|
+
if (ticks.length === 0) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const path = Skia.PathBuilder.Make();
|
|
22
|
+
ticks.forEach(({ position }) => {
|
|
23
|
+
path.moveTo(plot.x, position);
|
|
24
|
+
path.lineTo(plot.x + plot.width, position);
|
|
25
|
+
});
|
|
26
|
+
return path.detach();
|
|
27
|
+
}
|
|
28
|
+
function resolveGridLineOptions(options, defaultVisible, defaultColor) {
|
|
29
|
+
if (typeof options === "boolean") {
|
|
30
|
+
return {
|
|
31
|
+
visible: options,
|
|
32
|
+
color: defaultColor,
|
|
33
|
+
width: GridDefaultWidth,
|
|
34
|
+
opacity: GridDefaultOpacity
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
visible: isGridLineVisible(options, defaultVisible),
|
|
39
|
+
color: options?.color ?? defaultColor,
|
|
40
|
+
width: options?.width ?? GridDefaultWidth,
|
|
41
|
+
opacity: options?.opacity ?? GridDefaultOpacity,
|
|
42
|
+
dash: options?.dash
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function isGridLineVisible(options, defaultVisible) {
|
|
46
|
+
if (typeof options === "boolean") {
|
|
47
|
+
return options;
|
|
48
|
+
}
|
|
49
|
+
return options?.visible ?? defaultVisible;
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
createHorizontalGridPath,
|
|
53
|
+
createVerticalGridPath,
|
|
54
|
+
resolveGridLineOptions
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=grid.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/grid.util.ts"],"sourcesContent":["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.PathBuilder.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.detach();\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.PathBuilder.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.detach();\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"],"mappings":"AAAA,SAAS,YAAoB;AAE7B,SAAS,oBAAoB,wBAAwB;AAOrD,SAAS,uBAAuB;AAEzB,SAAS,uBACd,QACA,OACA,MACe;AACf,QAAM,QAAQ,gBAAgB,QAAQ,KAAK;AAE3C,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,KAAK,YAAY,KAAK;AAEnC,QAAM,QAAQ,CAAC,EAAE,SAAS,MAAM;AAC9B,SAAK,OAAO,UAAU,KAAK,CAAC;AAC5B,SAAK,OAAO,UAAU,KAAK,IAAI,KAAK,MAAM;AAAA,EAC5C,CAAC;AAED,SAAO,KAAK,OAAO;AACrB;AAEO,SAAS,yBACd,QACA,OACA,MACe;AACf,QAAM,QAAQ,gBAAgB,QAAQ,KAAK;AAE3C,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,KAAK,YAAY,KAAK;AAEnC,QAAM,QAAQ,CAAC,EAAE,SAAS,MAAM;AAC9B,SAAK,OAAO,KAAK,GAAG,QAAQ;AAC5B,SAAK,OAAO,KAAK,IAAI,KAAK,OAAO,QAAQ;AAAA,EAC3C,CAAC;AAED,SAAO,KAAK,OAAO;AACrB;AAEO,SAAS,uBACd,SACA,gBACA,cACyB;AACzB,MAAI,OAAO,YAAY,WAAW;AAChC,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,IACX;AAAA,EACF;AAEA,SAAO;AAAA,IACL,SAAS,kBAAkB,SAAS,cAAc;AAAA,IAClD,OAAO,SAAS,SAAS;AAAA,IACzB,OAAO,SAAS,SAAS;AAAA,IACzB,SAAS,SAAS,WAAW;AAAA,IAC7B,MAAM,SAAS;AAAA,EACjB;AACF;AAEA,SAAS,kBACP,SACA,gBACS;AACT,MAAI,OAAO,YAAY,WAAW;AAChC,WAAO;AAAA,EACT;AAEA,SAAO,SAAS,WAAW;AAC7B;","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export { createAxisTicks, createXAxisLabelRect, createXAxisLayout, createYAxisLabelRect, createYAxisLayout, formatAxisTick } from './axis.util.mjs';
|
|
2
|
+
export { createBarChartCoordinates, createBarChartModel } from './bar-chart.util.mjs';
|
|
3
|
+
export { createChartLayout, createInsetRect } from './chart-layout.util.mjs';
|
|
4
|
+
export { createHorizontalGridPath, createVerticalGridPath, resolveGridLineOptions } from './grid.util.mjs';
|
|
5
|
+
export { getLabelTextAlign, getLabelY } from './label.util.mjs';
|
|
6
|
+
export { createLinePath, fitLineCoordinatesToRect } from './line.util.mjs';
|
|
7
|
+
export { createLineChartCoordinates, createLineChartModel } from './line-chart.util.mjs';
|
|
8
|
+
export { createDrawableMultiLineChartSeries } from './multi-line-chart.util.mjs';
|
|
9
|
+
export { createDrawableMultiBarChartSeries, createMultiBarChartModel } from './multi-bar-chart.util.mjs';
|
|
10
|
+
export { createParagraphBuilder } from './paragraph-builder.util.mjs';
|
|
11
|
+
import '../types/axis.types.mjs';
|
|
12
|
+
import '@shopify/react-native-skia';
|
|
13
|
+
import '@impulse-ui-native/theme';
|
|
14
|
+
import '../types/common.types.mjs';
|
|
15
|
+
import '../types/style.types.mjs';
|
|
16
|
+
import '../line-chart.types-yxru5uWc.mjs';
|
|
17
|
+
import '../types/bar-chart.types.mjs';
|
|
18
|
+
import '../types/use-bar-chart.types.mjs';
|
|
19
|
+
import '../types/label.types.mjs';
|
|
20
|
+
import '../types/use-line-chart.types.mjs';
|
|
21
|
+
import '../types/multi-line-chart.types.mjs';
|
|
22
|
+
import '../types/multi-bar-chart.types.mjs';
|
|
23
|
+
import '../types/use-multi-bar-chart.types.mjs';
|