@impulse-ui-native/charts 2.0.1 → 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.
Files changed (132) hide show
  1. package/LICENSE +21 -0
  2. package/dist/components/index.d.mts +17 -0
  3. package/dist/components/index.js +8 -0
  4. package/dist/components/index.js.map +1 -0
  5. package/dist/components/line-chart-body.d.mts +14 -0
  6. package/dist/components/line-chart-body.js +90 -0
  7. package/dist/components/line-chart-body.js.map +1 -0
  8. package/dist/components/line-chart.d.mts +10 -0
  9. package/dist/components/line-chart.js +21 -0
  10. package/dist/components/line-chart.js.map +1 -0
  11. package/dist/components/multi-line-chart-body.d.mts +11 -0
  12. package/dist/components/multi-line-chart-body.js +98 -0
  13. package/dist/components/multi-line-chart-body.js.map +1 -0
  14. package/dist/components/multi-line-chart.d.mts +11 -0
  15. package/dist/components/multi-line-chart.js +21 -0
  16. package/dist/components/multi-line-chart.js.map +1 -0
  17. package/dist/components/primitives/grid.d.mts +10 -0
  18. package/dist/components/primitives/grid.js +65 -0
  19. package/dist/components/primitives/grid.js.map +1 -0
  20. package/dist/components/primitives/index.d.mts +14 -0
  21. package/dist/components/primitives/index.js +13 -0
  22. package/dist/components/primitives/index.js.map +1 -0
  23. package/dist/components/primitives/label.d.mts +10 -0
  24. package/dist/components/primitives/label.js +94 -0
  25. package/dist/components/primitives/label.js.map +1 -0
  26. package/dist/components/primitives/line.d.mts +11 -0
  27. package/dist/components/primitives/line.js +50 -0
  28. package/dist/components/primitives/line.js.map +1 -0
  29. package/dist/components/primitives/x-axis.d.mts +11 -0
  30. package/dist/components/primitives/x-axis.js +93 -0
  31. package/dist/components/primitives/x-axis.js.map +1 -0
  32. package/dist/components/primitives/y-axis.d.mts +11 -0
  33. package/dist/components/primitives/y-axis.js +95 -0
  34. package/dist/components/primitives/y-axis.js.map +1 -0
  35. package/dist/constants/axis.constants.d.mts +6 -0
  36. package/dist/constants/axis.constants.js +11 -0
  37. package/dist/constants/axis.constants.js.map +1 -0
  38. package/dist/constants/grid.constants.d.mts +6 -0
  39. package/dist/constants/grid.constants.js +11 -0
  40. package/dist/constants/grid.constants.js.map +1 -0
  41. package/dist/constants/index.d.mts +11 -0
  42. package/dist/constants/index.js +6 -0
  43. package/dist/constants/index.js.map +1 -0
  44. package/dist/constants/label.constants.d.mts +11 -0
  45. package/dist/constants/label.constants.js +12 -0
  46. package/dist/constants/label.constants.js.map +1 -0
  47. package/dist/constants/line-chart.constants.d.mts +8 -0
  48. package/dist/constants/line-chart.constants.js +7 -0
  49. package/dist/constants/line-chart.constants.js.map +1 -0
  50. package/dist/constants/line.constants.d.mts +15 -0
  51. package/dist/constants/line.constants.js +18 -0
  52. package/dist/constants/line.constants.js.map +1 -0
  53. package/dist/contexts/index.d.mts +2 -0
  54. package/dist/contexts/index.js +1 -0
  55. package/dist/contexts/index.js.map +1 -0
  56. package/dist/hooks/index.d.mts +12 -0
  57. package/dist/hooks/index.js +9 -0
  58. package/dist/hooks/index.js.map +1 -0
  59. package/dist/hooks/use-chart-canvas.hook.d.mts +9 -0
  60. package/dist/hooks/use-chart-canvas.hook.js +10 -0
  61. package/dist/hooks/use-chart-canvas.hook.js.map +1 -0
  62. package/dist/hooks/use-line-chart.hook.d.mts +10 -0
  63. package/dist/hooks/use-line-chart.hook.js +13 -0
  64. package/dist/hooks/use-line-chart.hook.js.map +1 -0
  65. package/dist/hooks/use-multi-line-chart.hook.d.mts +12 -0
  66. package/dist/hooks/use-multi-line-chart.hook.js +44 -0
  67. package/dist/hooks/use-multi-line-chart.hook.js.map +1 -0
  68. package/dist/index.d.mts +36 -3
  69. package/dist/index.js +6 -5
  70. package/dist/index.js.map +1 -1
  71. package/dist/line-chart.types-yxru5uWc.d.mts +62 -0
  72. package/dist/types/axis.types.d.mts +49 -0
  73. package/dist/types/axis.types.js +1 -0
  74. package/dist/types/axis.types.js.map +1 -0
  75. package/dist/types/common.types.d.mts +57 -0
  76. package/dist/types/common.types.js +1 -0
  77. package/dist/types/common.types.js.map +1 -0
  78. package/dist/types/grid.types.d.mts +5 -0
  79. package/dist/types/grid.types.js +1 -0
  80. package/dist/types/grid.types.js.map +1 -0
  81. package/dist/types/index.d.mts +11 -0
  82. package/dist/types/index.js +11 -0
  83. package/dist/types/index.js.map +1 -0
  84. package/dist/types/label.types.d.mts +24 -0
  85. package/dist/types/label.types.js +1 -0
  86. package/dist/types/label.types.js.map +1 -0
  87. package/dist/types/line-chart.types.d.mts +5 -0
  88. package/dist/types/line-chart.types.js +1 -0
  89. package/dist/types/line-chart.types.js.map +1 -0
  90. package/dist/types/line.types.d.mts +11 -0
  91. package/dist/types/line.types.js +1 -0
  92. package/dist/types/line.types.js.map +1 -0
  93. package/dist/types/multi-line-chart.types.d.mts +23 -0
  94. package/dist/types/multi-line-chart.types.js +1 -0
  95. package/dist/types/multi-line-chart.types.js.map +1 -0
  96. package/dist/types/style.types.d.mts +19 -0
  97. package/dist/types/style.types.js +1 -0
  98. package/dist/types/style.types.js.map +1 -0
  99. package/dist/types/use-line-chart.types.d.mts +29 -0
  100. package/dist/types/use-line-chart.types.js +1 -0
  101. package/dist/types/use-line-chart.types.js.map +1 -0
  102. package/dist/types/use-multi-line-chart.types.d.mts +16 -0
  103. package/dist/types/use-multi-line-chart.types.js +1 -0
  104. package/dist/types/use-multi-line-chart.types.js.map +1 -0
  105. package/dist/utils/axis.util.d.mts +15 -0
  106. package/dist/utils/axis.util.js +82 -0
  107. package/dist/utils/axis.util.js.map +1 -0
  108. package/dist/utils/chart-layout.util.d.mts +8 -0
  109. package/dist/utils/chart-layout.util.js +55 -0
  110. package/dist/utils/chart-layout.util.js.map +1 -0
  111. package/dist/utils/grid.util.d.mts +11 -0
  112. package/dist/utils/grid.util.js +56 -0
  113. package/dist/utils/grid.util.js.map +1 -0
  114. package/dist/utils/index.d.mts +17 -0
  115. package/dist/utils/index.js +44 -0
  116. package/dist/utils/index.js.map +1 -0
  117. package/dist/utils/label.util.d.mts +10 -0
  118. package/dist/utils/label.util.js +24 -0
  119. package/dist/utils/label.util.js.map +1 -0
  120. package/dist/utils/line-chart.util.d.mts +11 -0
  121. package/dist/utils/line-chart.util.js +133 -0
  122. package/dist/utils/line-chart.util.js.map +1 -0
  123. package/dist/utils/line.util.d.mts +10 -0
  124. package/dist/utils/line.util.js +36 -0
  125. package/dist/utils/line.util.js.map +1 -0
  126. package/dist/utils/multi-line-chart.util.d.mts +10 -0
  127. package/dist/utils/multi-line-chart.util.js +23 -0
  128. package/dist/utils/multi-line-chart.util.js.map +1 -0
  129. package/dist/utils/paragraph-builder.util.d.mts +10 -0
  130. package/dist/utils/paragraph-builder.util.js +16 -0
  131. package/dist/utils/paragraph-builder.util.js.map +1 -0
  132. package/package.json +16 -6
package/dist/index.d.mts CHANGED
@@ -1,3 +1,36 @@
1
- declare const packageName = "charts";
2
-
3
- export { packageName };
1
+ export { Grid } from './components/primitives/grid.mjs';
2
+ export { Label } from './components/primitives/label.mjs';
3
+ export { Line } from './components/primitives/line.mjs';
4
+ export { XAxis } from './components/primitives/x-axis.mjs';
5
+ export { YAxis } from './components/primitives/y-axis.mjs';
6
+ export { LineChart } from './components/line-chart.mjs';
7
+ export { MultiLineChart } from './components/multi-line-chart.mjs';
8
+ export { AxisDefaultLabelGap, AxisDefaultOpacity, AxisDefaultTickLength, AxisDefaultWidth } from './constants/axis.constants.mjs';
9
+ export { GridDefaultOpacity, GridDefaultWidth, GridDefaultXVisible, GridDefaultYVisible } from './constants/grid.constants.mjs';
10
+ export { LabelDefaultHorizontalAlignment, LabelDefaultVerticalAlignment, TabularNumsFeature } from './constants/label.constants.mjs';
11
+ export { LineDefaultCap, LineDefaultColor, LineDefaultColors, LineDefaultCurve, LineDefaultJoin, LineDefaultOpacity, LineDefaultWidth } from './constants/line.constants.mjs';
12
+ export { LineChartDefaultNumericDomain, LineChartDefaultTickCount } from './constants/line-chart.constants.mjs';
13
+ export { useChartCanvas } from './hooks/use-chart-canvas.hook.mjs';
14
+ export { useLineChart } from './hooks/use-line-chart.hook.mjs';
15
+ export { useMultiLineChart } from './hooks/use-multi-line-chart.hook.mjs';
16
+ export { AxisLayout, AxisLineLayout, AxisProps, AxisTick, AxisTickLayout, CreateAxisLayoutProps, CreateYAxisLayoutProps, XAxisProps, YAxisProps } from './types/axis.types.mjs';
17
+ export { ChartAxisLabelOptions, ChartAxisLineOptions, ChartAxisOptions, ChartAxisTickOptions, ChartInsets, ChartLayout, ChartNumericDomain, ChartPoint, ChartRect, ChartScaleType, ChartSize, ChartXAxisOptions, ChartYAxisOptions } from './types/common.types.mjs';
18
+ 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';
19
+ export { LabelHorizontalAlignment, LabelProps, LabelVerticalAlignment } from './types/label.types.mjs';
20
+ export { LineProps } from './types/line.types.mjs';
21
+ export { MultiLineChartBodyProps, MultiLineChartProps, MultiLineChartSeries, MultiLineChartSeriesModel } from './types/multi-line-chart.types.mjs';
22
+ export { ChartLabelStyle, ChartStrokeCap, ChartStrokeJoin, ChartStrokeStyle } from './types/style.types.mjs';
23
+ export { LineChartXScaleModel, UseLineChartProps, UseLineChartResult } from './types/use-line-chart.types.mjs';
24
+ export { UseMultiLineChartProps, UseMultiLineChartResult } from './types/use-multi-line-chart.types.mjs';
25
+ export { createAxisTicks, createXAxisLabelRect, createXAxisLayout, createYAxisLabelRect, createYAxisLayout, formatAxisTick } from './utils/axis.util.mjs';
26
+ export { createChartLayout, createInsetRect } from './utils/chart-layout.util.mjs';
27
+ export { createHorizontalGridPath, createVerticalGridPath, resolveGridLineOptions } from './utils/grid.util.mjs';
28
+ export { getLabelTextAlign, getLabelY } from './utils/label.util.mjs';
29
+ export { createLinePath, fitLineCoordinatesToRect } from './utils/line.util.mjs';
30
+ export { createLineChartCoordinates, createLineChartModel } from './utils/line-chart.util.mjs';
31
+ export { createDrawableMultiLineChartSeries } from './utils/multi-line-chart.util.mjs';
32
+ export { createParagraphBuilder } from './utils/paragraph-builder.util.mjs';
33
+ import 'react/jsx-runtime';
34
+ import '@shopify/react-native-skia';
35
+ import '@impulse-ui-native/theme';
36
+ import 'react';
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
- // src/index.ts
2
- var packageName = "charts";
3
- export {
4
- packageName
5
- };
1
+ export * from "./components";
2
+ export * from "./constants";
3
+ export * from "./hooks";
4
+ export * from "./types";
5
+ export * from "./utils";
6
+ export * from "./contexts";
6
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export const packageName = \"charts\";\r\n"],"mappings":";AAAO,IAAM,cAAc;","names":[]}
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 };
@@ -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,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 };