@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.
Files changed (186) hide show
  1. package/README.md +50 -6
  2. package/dist/components/bar-chart-body.d.mts +15 -0
  3. package/dist/components/bar-chart-body.js +50 -0
  4. package/dist/components/bar-chart-body.js.map +1 -0
  5. package/dist/components/bar-chart.d.mts +11 -0
  6. package/dist/components/bar-chart.js +21 -0
  7. package/dist/components/bar-chart.js.map +1 -0
  8. package/dist/components/chart-axes.d.mts +22 -0
  9. package/dist/components/chart-axes.js +64 -0
  10. package/dist/components/chart-axes.js.map +1 -0
  11. package/dist/components/index.d.mts +23 -0
  12. package/dist/components/index.js +12 -0
  13. package/dist/components/index.js.map +1 -0
  14. package/dist/components/line-chart-body.d.mts +14 -0
  15. package/dist/components/line-chart-body.js +86 -0
  16. package/dist/components/line-chart-body.js.map +1 -0
  17. package/dist/components/line-chart.d.mts +10 -0
  18. package/dist/components/line-chart.js +21 -0
  19. package/dist/components/line-chart.js.map +1 -0
  20. package/dist/components/multi-bar-chart-body.d.mts +16 -0
  21. package/dist/components/multi-bar-chart-body.js +72 -0
  22. package/dist/components/multi-bar-chart-body.js.map +1 -0
  23. package/dist/components/multi-bar-chart.d.mts +12 -0
  24. package/dist/components/multi-bar-chart.js +21 -0
  25. package/dist/components/multi-bar-chart.js.map +1 -0
  26. package/dist/components/multi-line-chart-body.d.mts +11 -0
  27. package/dist/components/multi-line-chart-body.js +95 -0
  28. package/dist/components/multi-line-chart-body.js.map +1 -0
  29. package/dist/components/multi-line-chart.d.mts +11 -0
  30. package/dist/components/multi-line-chart.js +21 -0
  31. package/dist/components/multi-line-chart.js.map +1 -0
  32. package/dist/components/primitives/bar.d.mts +12 -0
  33. package/dist/components/primitives/bar.js +44 -0
  34. package/dist/components/primitives/bar.js.map +1 -0
  35. package/dist/components/primitives/grid.d.mts +10 -0
  36. package/dist/components/primitives/grid.js +65 -0
  37. package/dist/components/primitives/grid.js.map +1 -0
  38. package/dist/components/primitives/index.d.mts +17 -0
  39. package/dist/components/primitives/index.js +15 -0
  40. package/dist/components/primitives/index.js.map +1 -0
  41. package/dist/components/primitives/label.d.mts +10 -0
  42. package/dist/components/primitives/label.js +94 -0
  43. package/dist/components/primitives/label.js.map +1 -0
  44. package/dist/components/primitives/line.d.mts +11 -0
  45. package/dist/components/primitives/line.js +50 -0
  46. package/dist/components/primitives/line.js.map +1 -0
  47. package/dist/components/primitives/x-axis.d.mts +11 -0
  48. package/dist/components/primitives/x-axis.js +93 -0
  49. package/dist/components/primitives/x-axis.js.map +1 -0
  50. package/dist/components/primitives/y-axis.d.mts +11 -0
  51. package/dist/components/primitives/y-axis.js +95 -0
  52. package/dist/components/primitives/y-axis.js.map +1 -0
  53. package/dist/constants/axis.constants.d.mts +6 -0
  54. package/dist/constants/axis.constants.js +11 -0
  55. package/dist/constants/axis.constants.js.map +1 -0
  56. package/dist/constants/bar-chart.constants.d.mts +4 -0
  57. package/dist/constants/bar-chart.constants.js +7 -0
  58. package/dist/constants/bar-chart.constants.js.map +1 -0
  59. package/dist/constants/bar.constants.d.mts +8 -0
  60. package/dist/constants/bar.constants.js +12 -0
  61. package/dist/constants/bar.constants.js.map +1 -0
  62. package/dist/constants/grid.constants.d.mts +6 -0
  63. package/dist/constants/grid.constants.js +11 -0
  64. package/dist/constants/grid.constants.js.map +1 -0
  65. package/dist/constants/index.d.mts +13 -0
  66. package/dist/constants/index.js +8 -0
  67. package/dist/constants/index.js.map +1 -0
  68. package/dist/constants/label.constants.d.mts +11 -0
  69. package/dist/constants/label.constants.js +12 -0
  70. package/dist/constants/label.constants.js.map +1 -0
  71. package/dist/constants/line-chart.constants.d.mts +8 -0
  72. package/dist/constants/line-chart.constants.js +7 -0
  73. package/dist/constants/line-chart.constants.js.map +1 -0
  74. package/dist/constants/line.constants.d.mts +15 -0
  75. package/dist/constants/line.constants.js +18 -0
  76. package/dist/constants/line.constants.js.map +1 -0
  77. package/dist/contexts/index.d.mts +2 -0
  78. package/dist/contexts/index.js +1 -0
  79. package/dist/contexts/index.js.map +1 -0
  80. package/dist/hooks/index.d.mts +19 -0
  81. package/dist/hooks/index.js +15 -0
  82. package/dist/hooks/index.js.map +1 -0
  83. package/dist/hooks/use-bar-chart.hook.d.mts +11 -0
  84. package/dist/hooks/use-bar-chart.hook.js +13 -0
  85. package/dist/hooks/use-bar-chart.hook.js.map +1 -0
  86. package/dist/hooks/use-chart-canvas.hook.d.mts +9 -0
  87. package/dist/hooks/use-chart-canvas.hook.js +10 -0
  88. package/dist/hooks/use-chart-canvas.hook.js.map +1 -0
  89. package/dist/hooks/use-chart-layout.hook.d.mts +7 -0
  90. package/dist/hooks/use-chart-layout.hook.js +9 -0
  91. package/dist/hooks/use-chart-layout.hook.js.map +1 -0
  92. package/dist/hooks/use-line-chart.hook.d.mts +10 -0
  93. package/dist/hooks/use-line-chart.hook.js +13 -0
  94. package/dist/hooks/use-line-chart.hook.js.map +1 -0
  95. package/dist/hooks/use-multi-bar-chart.hook.d.mts +13 -0
  96. package/dist/hooks/use-multi-bar-chart.hook.js +20 -0
  97. package/dist/hooks/use-multi-bar-chart.hook.js.map +1 -0
  98. package/dist/hooks/use-multi-line-chart.hook.d.mts +12 -0
  99. package/dist/hooks/use-multi-line-chart.hook.js +44 -0
  100. package/dist/hooks/use-multi-line-chart.hook.js.map +1 -0
  101. package/dist/index.d.mts +51 -321
  102. package/dist/index.js +6 -1083
  103. package/dist/index.js.map +1 -1
  104. package/dist/line-chart.types-yxru5uWc.d.mts +62 -0
  105. package/dist/types/axis.types.d.mts +49 -0
  106. package/dist/types/axis.types.js +1 -0
  107. package/dist/types/axis.types.js.map +1 -0
  108. package/dist/types/bar-chart.types.d.mts +38 -0
  109. package/dist/types/bar-chart.types.js +1 -0
  110. package/dist/types/bar-chart.types.js.map +1 -0
  111. package/dist/types/bar.types.d.mts +12 -0
  112. package/dist/types/bar.types.js +1 -0
  113. package/dist/types/bar.types.js.map +1 -0
  114. package/dist/types/common.types.d.mts +57 -0
  115. package/dist/types/common.types.js +1 -0
  116. package/dist/types/common.types.js.map +1 -0
  117. package/dist/types/grid.types.d.mts +5 -0
  118. package/dist/types/grid.types.js +1 -0
  119. package/dist/types/grid.types.js.map +1 -0
  120. package/dist/types/index.d.mts +16 -0
  121. package/dist/types/index.js +16 -0
  122. package/dist/types/index.js.map +1 -0
  123. package/dist/types/label.types.d.mts +24 -0
  124. package/dist/types/label.types.js +1 -0
  125. package/dist/types/label.types.js.map +1 -0
  126. package/dist/types/line-chart.types.d.mts +5 -0
  127. package/dist/types/line-chart.types.js +1 -0
  128. package/dist/types/line-chart.types.js.map +1 -0
  129. package/dist/types/line.types.d.mts +11 -0
  130. package/dist/types/line.types.js +1 -0
  131. package/dist/types/line.types.js.map +1 -0
  132. package/dist/types/multi-bar-chart.types.d.mts +21 -0
  133. package/dist/types/multi-bar-chart.types.js +1 -0
  134. package/dist/types/multi-bar-chart.types.js.map +1 -0
  135. package/dist/types/multi-line-chart.types.d.mts +23 -0
  136. package/dist/types/multi-line-chart.types.js +1 -0
  137. package/dist/types/multi-line-chart.types.js.map +1 -0
  138. package/dist/types/style.types.d.mts +19 -0
  139. package/dist/types/style.types.js +1 -0
  140. package/dist/types/style.types.js.map +1 -0
  141. package/dist/types/use-bar-chart.types.d.mts +26 -0
  142. package/dist/types/use-bar-chart.types.js +1 -0
  143. package/dist/types/use-bar-chart.types.js.map +1 -0
  144. package/dist/types/use-line-chart.types.d.mts +29 -0
  145. package/dist/types/use-line-chart.types.js +1 -0
  146. package/dist/types/use-line-chart.types.js.map +1 -0
  147. package/dist/types/use-multi-bar-chart.types.d.mts +17 -0
  148. package/dist/types/use-multi-bar-chart.types.js +1 -0
  149. package/dist/types/use-multi-bar-chart.types.js.map +1 -0
  150. package/dist/types/use-multi-line-chart.types.d.mts +16 -0
  151. package/dist/types/use-multi-line-chart.types.js +1 -0
  152. package/dist/types/use-multi-line-chart.types.js.map +1 -0
  153. package/dist/utils/axis.util.d.mts +15 -0
  154. package/dist/utils/axis.util.js +82 -0
  155. package/dist/utils/axis.util.js.map +1 -0
  156. package/dist/utils/bar-chart.util.d.mts +25 -0
  157. package/dist/utils/bar-chart.util.js +145 -0
  158. package/dist/utils/bar-chart.util.js.map +1 -0
  159. package/dist/utils/chart-layout.util.d.mts +8 -0
  160. package/dist/utils/chart-layout.util.js +55 -0
  161. package/dist/utils/chart-layout.util.js.map +1 -0
  162. package/dist/utils/grid.util.d.mts +11 -0
  163. package/dist/utils/grid.util.js +56 -0
  164. package/dist/utils/grid.util.js.map +1 -0
  165. package/dist/utils/index.d.mts +23 -0
  166. package/dist/utils/index.js +56 -0
  167. package/dist/utils/index.js.map +1 -0
  168. package/dist/utils/label.util.d.mts +10 -0
  169. package/dist/utils/label.util.js +24 -0
  170. package/dist/utils/label.util.js.map +1 -0
  171. package/dist/utils/line-chart.util.d.mts +11 -0
  172. package/dist/utils/line-chart.util.js +133 -0
  173. package/dist/utils/line-chart.util.js.map +1 -0
  174. package/dist/utils/line.util.d.mts +10 -0
  175. package/dist/utils/line.util.js +36 -0
  176. package/dist/utils/line.util.js.map +1 -0
  177. package/dist/utils/multi-bar-chart.util.d.mts +14 -0
  178. package/dist/utils/multi-bar-chart.util.js +62 -0
  179. package/dist/utils/multi-bar-chart.util.js.map +1 -0
  180. package/dist/utils/multi-line-chart.util.d.mts +10 -0
  181. package/dist/utils/multi-line-chart.util.js +23 -0
  182. package/dist/utils/multi-line-chart.util.js.map +1 -0
  183. package/dist/utils/paragraph-builder.util.d.mts +10 -0
  184. package/dist/utils/paragraph-builder.util.js +16 -0
  185. package/dist/utils/paragraph-builder.util.js.map +1 -0
  186. package/package.json +6 -5
package/README.md CHANGED
@@ -1,14 +1,58 @@
1
1
  # @impulse-ui-native/charts
2
2
 
3
- The workspace package reserved for Impulse UI Native chart components and chart primitives.
3
+ Skia-rendered chart components and primitives for Impulse UI Native.
4
4
 
5
- ## Status
5
+ ## Components
6
6
 
7
- This package is currently under development. It declares D3 scale, shape, interpolation, array, and time utilities plus React Native Skia as its rendering peer, but it does not currently expose a public component or type from the package root.
7
+ The package provides Skia-rendered `LineChart`, `MultiLineChart`, `BarChart`, and `MultiBarChart` components. Charts fill their parent, so give the surrounding view an explicit height.
8
8
 
9
- Do not depend on `@impulse-ui-native/charts` for application code until its first public exports are added and documented here.
9
+ ```tsx
10
+ import { BarChart } from "@impulse-ui-native/charts";
10
11
 
11
- ## Planned scope
12
+ <BarChart
13
+ data={[
14
+ { x: "Jan", y: 18 },
15
+ { x: "Feb", y: 24 },
16
+ { x: "Mar", y: 16 },
17
+ ]}
18
+ insets={{ left: 40, bottom: 28 }}
19
+ bar={{ color: "#6366f1", radius: 4 }}
20
+ />;
21
+ ```
22
+
23
+ Use `MultiBarChart` for grouped series. Categories are shared across the series, and each series can supply its own bar style.
24
+
25
+ ```tsx
26
+ import { MultiBarChart } from "@impulse-ui-native/charts";
27
+
28
+ <MultiBarChart
29
+ series={[
30
+ {
31
+ id: "revenue",
32
+ data: [
33
+ { x: "Jan", y: 18 },
34
+ { x: "Feb", y: 24 },
35
+ ],
36
+ },
37
+ {
38
+ id: "cost",
39
+ data: [
40
+ { x: "Jan", y: 12 },
41
+ { x: "Feb", y: 15 },
42
+ ],
43
+ },
44
+ ]}
45
+ categoryPadding={0.2}
46
+ seriesPadding={0.1}
47
+ insets={{ left: 40, bottom: 28 }}
48
+ />;
49
+ ```
50
+
51
+ Bar charts support string, number, and `Date` categories, nullable values, positive and negative values, custom Y domains, axes, and grid styling. Inferred Y domains include zero.
52
+
53
+ `categoryPadding` and `seriesPadding` are ratios clamped between `0` and `1`. Multi-series bars use the theme's chart palette unless a series supplies `bar.color`.
54
+
55
+ ## Scope
12
56
 
13
57
  - Token-aware chart primitives for React Native.
14
58
  - Skia-based rendering.
@@ -17,4 +61,4 @@ Do not depend on `@impulse-ui-native/charts` for application code until its firs
17
61
 
18
62
  ## Native prerequisite
19
63
 
20
- Future chart APIs will require `@shopify/react-native-skia` version 2 or newer. Follow Skia's platform setup instructions before using those APIs once they are available.
64
+ Chart APIs require `@shopify/react-native-skia` version 2 or newer. Follow Skia's platform setup instructions before using them.
@@ -0,0 +1,15 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { AppTheme } from '@impulse-ui-native/theme';
3
+ import { ChartSize } from '../types/common.types.mjs';
4
+ import { b as ChartXValue } from '../line-chart.types-yxru5uWc.mjs';
5
+ import { BarChartProps } from '../types/bar-chart.types.mjs';
6
+ import '../types/style.types.mjs';
7
+ import '@shopify/react-native-skia';
8
+
9
+ interface BarChartBodyProps<X extends ChartXValue> extends BarChartProps<X> {
10
+ size: ChartSize;
11
+ theme: AppTheme;
12
+ }
13
+ declare const BarChartBody: <X extends ChartXValue = string>(props: BarChartBodyProps<X>) => react_jsx_runtime.JSX.Element;
14
+
15
+ export { BarChartBody };
@@ -0,0 +1,50 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { Group } from "@shopify/react-native-skia";
3
+ import { memo } from "@impulse-ui-native/core";
4
+ import { useBarChart, useChartLayout } from "../hooks";
5
+ import { ChartAxes } from "./chart-axes";
6
+ import { Bar } from "./primitives";
7
+ const BarChartBody = memo(function BarChartBodyComponent(props) {
8
+ const {
9
+ bar,
10
+ categoryPadding,
11
+ data,
12
+ fontManager,
13
+ grid,
14
+ insets,
15
+ size,
16
+ theme,
17
+ xAxis,
18
+ yAxis
19
+ } = props;
20
+ const layout = useChartLayout(size, insets);
21
+ const { coordinates, xScale, xTicks, yScale, yTicks } = useBarChart({
22
+ categoryPadding,
23
+ data,
24
+ plot: layout.plot,
25
+ xAxis,
26
+ yAxis
27
+ });
28
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
29
+ /* @__PURE__ */ jsx(
30
+ ChartAxes,
31
+ {
32
+ fontManager,
33
+ grid,
34
+ layout,
35
+ theme,
36
+ xAxis,
37
+ xScale,
38
+ xTicks,
39
+ yAxis,
40
+ yScale,
41
+ yTicks
42
+ }
43
+ ),
44
+ /* @__PURE__ */ jsx(Group, { clip: layout.plot, children: /* @__PURE__ */ jsx(Bar, { coordinates, ...bar }) })
45
+ ] });
46
+ });
47
+ export {
48
+ BarChartBody
49
+ };
50
+ //# sourceMappingURL=bar-chart-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/bar-chart-body.tsx"],"sourcesContent":["import { Group } from \"@shopify/react-native-skia\";\n\nimport { memo } from \"@impulse-ui-native/core\";\nimport { AppTheme } from \"@impulse-ui-native/theme\";\n\nimport { useBarChart, useChartLayout } from \"../hooks\";\nimport { BarChartProps, ChartSize, ChartXValue } from \"../types\";\nimport { ChartAxes } from \"./chart-axes\";\nimport { Bar } from \"./primitives\";\n\ninterface BarChartBodyProps<X extends ChartXValue> extends BarChartProps<X> {\n size: ChartSize;\n theme: AppTheme;\n}\n\nexport const BarChartBody = memo(function BarChartBodyComponent<\n X extends ChartXValue = string,\n>(props: BarChartBodyProps<X>) {\n const {\n bar,\n categoryPadding,\n data,\n fontManager,\n grid,\n insets,\n size,\n theme,\n xAxis,\n yAxis,\n } = props;\n const layout = useChartLayout(size, insets);\n const { coordinates, xScale, xTicks, yScale, yTicks } = useBarChart({\n categoryPadding,\n data,\n plot: layout.plot,\n xAxis,\n yAxis,\n });\n\n return (\n <>\n <ChartAxes\n fontManager={fontManager}\n grid={grid}\n layout={layout}\n theme={theme}\n xAxis={xAxis}\n xScale={xScale}\n xTicks={xTicks}\n yAxis={yAxis}\n yScale={yScale}\n yTicks={yTicks}\n />\n\n <Group clip={layout.plot}>\n <Bar coordinates={coordinates} {...bar} />\n </Group>\n </>\n );\n});\n"],"mappings":"AAwCI,mBACE,KADF;AAxCJ,SAAS,aAAa;AAEtB,SAAS,YAAY;AAGrB,SAAS,aAAa,sBAAsB;AAE5C,SAAS,iBAAiB;AAC1B,SAAS,WAAW;AAOb,MAAM,eAAe,KAAK,SAAS,sBAExC,OAA6B;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,SAAS,eAAe,MAAM,MAAM;AAC1C,QAAM,EAAE,aAAa,QAAQ,QAAQ,QAAQ,OAAO,IAAI,YAAY;AAAA,IAClE;AAAA,IACA;AAAA,IACA,MAAM,OAAO;AAAA,IACb;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,IAEA,oBAAC,SAAM,MAAM,OAAO,MAClB,8BAAC,OAAI,aAA2B,GAAG,KAAK,GAC1C;AAAA,KACF;AAEJ,CAAC;","names":[]}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { b as ChartXValue } from '../line-chart.types-yxru5uWc.mjs';
3
+ import { BarChartProps } from '../types/bar-chart.types.mjs';
4
+ import '@shopify/react-native-skia';
5
+ import '../types/common.types.mjs';
6
+ import '../types/style.types.mjs';
7
+ import '@impulse-ui-native/theme';
8
+
9
+ declare const BarChart: <X extends ChartXValue = string>(props: BarChartProps<X>) => react_jsx_runtime.JSX.Element;
10
+
11
+ export { BarChart };
@@ -0,0 +1,21 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { StyleSheet } from "react-native";
3
+ import { Canvas } from "@shopify/react-native-skia";
4
+ import { memo } from "@impulse-ui-native/core";
5
+ import { useTheme } from "@impulse-ui-native/theme";
6
+ import { useChartCanvas } from "../hooks";
7
+ import { BarChartBody } from "./bar-chart-body";
8
+ const BarChart = memo(function BarChart2(props) {
9
+ const theme = useTheme();
10
+ const { ref, size } = useChartCanvas();
11
+ return /* @__PURE__ */ jsx(Canvas, { ref, style: styles.container, children: /* @__PURE__ */ jsx(BarChartBody, { ...props, size, theme }) });
12
+ });
13
+ const styles = StyleSheet.create({
14
+ container: {
15
+ flex: 1
16
+ }
17
+ });
18
+ export {
19
+ BarChart
20
+ };
21
+ //# sourceMappingURL=bar-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/bar-chart.tsx"],"sourcesContent":["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 { BarChartProps, ChartXValue } from \"../types\";\nimport { BarChartBody } from \"./bar-chart-body\";\n\nexport const BarChart = memo(function BarChart<X extends ChartXValue = string>(\n props: BarChartProps<X>,\n) {\n const theme = useTheme();\n const { ref, size } = useChartCanvas();\n\n return (\n <Canvas ref={ref} style={styles.container}>\n <BarChartBody {...props} size={size} theme={theme} />\n </Canvas>\n );\n});\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n"],"mappings":"AAkBM;AAlBN,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AAEvB,SAAS,YAAY;AACrB,SAAS,gBAAgB;AAEzB,SAAS,sBAAsB;AAE/B,SAAS,oBAAoB;AAEtB,MAAM,WAAW,KAAK,SAASA,UACpC,OACA;AACA,QAAM,QAAQ,SAAS;AACvB,QAAM,EAAE,KAAK,KAAK,IAAI,eAAe;AAErC,SACE,oBAAC,UAAO,KAAU,OAAO,OAAO,WAC9B,8BAAC,gBAAc,GAAG,OAAO,MAAY,OAAc,GACrD;AAEJ,CAAC;AAED,MAAM,SAAS,WAAW,OAAO;AAAA,EAC/B,WAAW;AAAA,IACT,MAAM;AAAA,EACR;AACF,CAAC;","names":["BarChart"]}
@@ -0,0 +1,22 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { SkTypefaceFontProvider } from '@shopify/react-native-skia';
3
+ import { AppTheme } from '@impulse-ui-native/theme';
4
+ import { ChartLayout, ChartXAxisOptions, ChartYAxisOptions } from '../types/common.types.mjs';
5
+ import { b as ChartXValue, a as ChartGridOptions, h as LineChartScale } from '../line-chart.types-yxru5uWc.mjs';
6
+ import '../types/style.types.mjs';
7
+
8
+ interface ChartAxesProps<X extends ChartXValue> {
9
+ fontManager?: SkTypefaceFontProvider;
10
+ grid?: ChartGridOptions;
11
+ layout: ChartLayout;
12
+ theme: AppTheme;
13
+ xAxis?: ChartXAxisOptions<X>;
14
+ xScale: LineChartScale<X>;
15
+ xTicks: readonly X[];
16
+ yAxis?: ChartYAxisOptions;
17
+ yScale: LineChartScale<number>;
18
+ yTicks: readonly number[];
19
+ }
20
+ declare const ChartAxes: <X extends ChartXValue = number>(props: ChartAxesProps<X>) => react_jsx_runtime.JSX.Element;
21
+
22
+ export { ChartAxes };
@@ -0,0 +1,64 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { memo } from "@impulse-ui-native/core";
3
+ import { Grid, XAxis, YAxis } from "./primitives";
4
+ const ChartAxes = memo(function ChartAxes2(props) {
5
+ const {
6
+ fontManager,
7
+ grid,
8
+ layout,
9
+ theme,
10
+ xAxis,
11
+ xScale,
12
+ xTicks,
13
+ yAxis,
14
+ yScale,
15
+ yTicks
16
+ } = props;
17
+ const isGridStyle = grid !== void 0;
18
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
19
+ isGridStyle ? /* @__PURE__ */ jsx(
20
+ Grid,
21
+ {
22
+ options: grid,
23
+ plot: layout.plot,
24
+ theme,
25
+ xTicks,
26
+ xScale,
27
+ yTicks,
28
+ yScale
29
+ }
30
+ ) : null,
31
+ xAxis?.visible !== false ? /* @__PURE__ */ jsx(
32
+ XAxis,
33
+ {
34
+ ticks: xTicks,
35
+ scale: xScale,
36
+ plot: layout.plot,
37
+ region: layout.xAxis,
38
+ theme,
39
+ options: xAxis,
40
+ fontManager,
41
+ lineVisible: !isGridStyle,
42
+ tickVisible: !isGridStyle
43
+ }
44
+ ) : null,
45
+ yAxis?.visible !== false ? /* @__PURE__ */ jsx(
46
+ YAxis,
47
+ {
48
+ ticks: yTicks,
49
+ scale: yScale,
50
+ plot: layout.plot,
51
+ region: layout.yAxis,
52
+ theme,
53
+ options: yAxis,
54
+ fontManager,
55
+ lineVisible: !isGridStyle,
56
+ tickVisible: !isGridStyle
57
+ }
58
+ ) : null
59
+ ] });
60
+ });
61
+ export {
62
+ ChartAxes
63
+ };
64
+ //# sourceMappingURL=chart-axes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/chart-axes.tsx"],"sourcesContent":["import { SkTypefaceFontProvider } from \"@shopify/react-native-skia\";\n\nimport { memo } from \"@impulse-ui-native/core\";\nimport { AppTheme } from \"@impulse-ui-native/theme\";\n\nimport {\n ChartGridOptions,\n ChartLayout,\n ChartXAxisOptions,\n ChartXValue,\n ChartYAxisOptions,\n LineChartScale,\n} from \"../types\";\nimport { Grid, XAxis, YAxis } from \"./primitives\";\n\ninterface ChartAxesProps<X extends ChartXValue> {\n fontManager?: SkTypefaceFontProvider;\n grid?: ChartGridOptions;\n layout: ChartLayout;\n theme: AppTheme;\n xAxis?: ChartXAxisOptions<X>;\n xScale: LineChartScale<X>;\n xTicks: readonly X[];\n yAxis?: ChartYAxisOptions;\n yScale: LineChartScale<number>;\n yTicks: readonly number[];\n}\n\nexport const ChartAxes = memo(function ChartAxes<\n X extends ChartXValue = number,\n>(props: ChartAxesProps<X>) {\n const {\n fontManager,\n grid,\n layout,\n theme,\n xAxis,\n xScale,\n xTicks,\n yAxis,\n yScale,\n yTicks,\n } = props;\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 );\n});\n"],"mappings":"AA8CI,mBAEI,KAFJ;AA5CJ,SAAS,YAAY;AAWrB,SAAS,MAAM,OAAO,aAAa;AAe5B,MAAM,YAAY,KAAK,SAASA,WAErC,OAA0B;AAC1B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,cAAc,SAAS;AAE7B,SACE,iCACG;AAAA,kBACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,MAAM,OAAO;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF,IACE;AAAA,IAEH,OAAO,YAAY,QAClB;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM,OAAO;AAAA,QACb,QAAQ,OAAO;AAAA,QACf;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,aAAa,CAAC;AAAA,QACd,aAAa,CAAC;AAAA;AAAA,IAChB,IACE;AAAA,IAEH,OAAO,YAAY,QAClB;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM,OAAO;AAAA,QACb,QAAQ,OAAO;AAAA,QACf;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,aAAa,CAAC;AAAA,QACd,aAAa,CAAC;AAAA;AAAA,IAChB,IACE;AAAA,KACN;AAEJ,CAAC;","names":["ChartAxes"]}
@@ -0,0 +1,23 @@
1
+ export { Bar } from './primitives/bar.mjs';
2
+ export { Grid } from './primitives/grid.mjs';
3
+ export { Label } from './primitives/label.mjs';
4
+ export { Line } from './primitives/line.mjs';
5
+ export { XAxis } from './primitives/x-axis.mjs';
6
+ export { YAxis } from './primitives/y-axis.mjs';
7
+ export { BarChart } from './bar-chart.mjs';
8
+ export { LineChart } from './line-chart.mjs';
9
+ export { MultiBarChart } from './multi-bar-chart.mjs';
10
+ export { MultiLineChart } from './multi-line-chart.mjs';
11
+ import 'react/jsx-runtime';
12
+ import '../line-chart.types-yxru5uWc.mjs';
13
+ import '@shopify/react-native-skia';
14
+ import '../types/common.types.mjs';
15
+ import '../types/style.types.mjs';
16
+ import '@impulse-ui-native/theme';
17
+ import '../types/bar.types.mjs';
18
+ import '../types/bar-chart.types.mjs';
19
+ import '../types/label.types.mjs';
20
+ import '../types/line.types.mjs';
21
+ import '../types/axis.types.mjs';
22
+ import '../types/multi-bar-chart.types.mjs';
23
+ import '../types/multi-line-chart.types.mjs';
@@ -0,0 +1,12 @@
1
+ export * from "./primitives";
2
+ import { BarChart } from "./bar-chart";
3
+ import { LineChart } from "./line-chart";
4
+ import { MultiBarChart } from "./multi-bar-chart";
5
+ import { MultiLineChart } from "./multi-line-chart";
6
+ export {
7
+ BarChart,
8
+ LineChart,
9
+ MultiBarChart,
10
+ MultiLineChart
11
+ };
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/index.ts"],"sourcesContent":["export * from \"./primitives\";\nexport { BarChart } from \"./bar-chart\";\nexport { LineChart } from \"./line-chart\";\nexport { MultiBarChart } from \"./multi-bar-chart\";\nexport { MultiLineChart } from \"./multi-line-chart\";\n"],"mappings":"AAAA,cAAc;AACd,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAC1B,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;","names":[]}
@@ -0,0 +1,14 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { AppTheme } from '@impulse-ui-native/theme';
3
+ import { ChartSize } from '../types/common.types.mjs';
4
+ import { b as ChartXValue, g as LineChartProps } from '../line-chart.types-yxru5uWc.mjs';
5
+ import '../types/style.types.mjs';
6
+ import '@shopify/react-native-skia';
7
+
8
+ interface LineChartBodyProps<X extends ChartXValue> extends LineChartProps<X> {
9
+ size: ChartSize;
10
+ theme: AppTheme;
11
+ }
12
+ declare const LineChartBody: <X extends ChartXValue = number>(props: LineChartBodyProps<X>) => react_jsx_runtime.JSX.Element;
13
+
14
+ export { LineChartBody };
@@ -0,0 +1,86 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { Group } from "@shopify/react-native-skia";
4
+ import { memo } from "@impulse-ui-native/core";
5
+ import { LineDefaultWidth } from "../constants";
6
+ import { useChartLayout, useLineChart } from "../hooks";
7
+ import { createInsetRect, fitLineCoordinatesToRect } from "../utils";
8
+ import { Grid, Line, XAxis, YAxis } from "./primitives";
9
+ const LineChartBody = memo(function LineChartBodyComponent(props) {
10
+ const {
11
+ data,
12
+ fontManager,
13
+ grid,
14
+ insets,
15
+ line,
16
+ size,
17
+ theme,
18
+ xAxis,
19
+ xScaleType,
20
+ yAxis
21
+ } = props;
22
+ const layout = useChartLayout(size, insets);
23
+ const { coordinates, xScale, xTicks, yScale, yTicks } = useLineChart({
24
+ data,
25
+ plot: layout.plot,
26
+ xAxis,
27
+ xScaleType,
28
+ yAxis
29
+ });
30
+ const linePlot = useMemo(
31
+ () => createInsetRect(layout.plot, (line?.width ?? LineDefaultWidth) / 2),
32
+ [layout.plot, line?.width]
33
+ );
34
+ const lineCoordinates = useMemo(
35
+ () => fitLineCoordinatesToRect(coordinates, layout.plot, linePlot),
36
+ [coordinates, layout.plot, linePlot]
37
+ );
38
+ const isGridStyle = grid !== void 0;
39
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
40
+ isGridStyle ? /* @__PURE__ */ jsx(
41
+ Grid,
42
+ {
43
+ options: grid,
44
+ plot: layout.plot,
45
+ theme,
46
+ xTicks,
47
+ xScale,
48
+ yTicks,
49
+ yScale
50
+ }
51
+ ) : null,
52
+ xAxis?.visible !== false ? /* @__PURE__ */ jsx(
53
+ XAxis,
54
+ {
55
+ ticks: xTicks,
56
+ scale: xScale,
57
+ plot: layout.plot,
58
+ region: layout.xAxis,
59
+ theme,
60
+ options: xAxis,
61
+ fontManager,
62
+ lineVisible: !isGridStyle,
63
+ tickVisible: !isGridStyle
64
+ }
65
+ ) : null,
66
+ yAxis?.visible !== false ? /* @__PURE__ */ jsx(
67
+ YAxis,
68
+ {
69
+ ticks: yTicks,
70
+ scale: yScale,
71
+ plot: layout.plot,
72
+ region: layout.yAxis,
73
+ theme,
74
+ options: yAxis,
75
+ fontManager,
76
+ lineVisible: !isGridStyle,
77
+ tickVisible: !isGridStyle
78
+ }
79
+ ) : null,
80
+ /* @__PURE__ */ jsx(Group, { clip: layout.plot, children: /* @__PURE__ */ jsx(Line, { coordinates: lineCoordinates, ...line }) })
81
+ ] });
82
+ });
83
+ export {
84
+ LineChartBody
85
+ };
86
+ //# sourceMappingURL=line-chart-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/line-chart-body.tsx"],"sourcesContent":["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 { useChartLayout, useLineChart } from \"../hooks\";\nimport { ChartSize, ChartXValue, LineChartProps } from \"../types\";\nimport { createInsetRect, fitLineCoordinatesToRect } 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 = useChartLayout(size, insets);\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"],"mappings":"AAwDI,mBAEI,KAFJ;AAxDJ,SAAS,eAAe;AACxB,SAAS,aAAa;AAEtB,SAAS,YAAY;AAGrB,SAAS,wBAAwB;AACjC,SAAS,gBAAgB,oBAAoB;AAE7C,SAAS,iBAAiB,gCAAgC;AAC1D,SAAS,MAAM,MAAM,OAAO,aAAa;AAOlC,MAAM,gBAAgB,KAAK,SAAS,uBAEzC,OAA8B;AAC9B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,SAAS,eAAe,MAAM,MAAM;AAE1C,QAAM,EAAE,aAAa,QAAQ,QAAQ,QAAQ,OAAO,IAAI,aAAa;AAAA,IACnE;AAAA,IACA,MAAM,OAAO;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,WAAW;AAAA,IACf,MAAM,gBAAgB,OAAO,OAAO,MAAM,SAAS,oBAAoB,CAAC;AAAA,IACxE,CAAC,OAAO,MAAM,MAAM,KAAK;AAAA,EAC3B;AAEA,QAAM,kBAAkB;AAAA,IACtB,MAAM,yBAAyB,aAAa,OAAO,MAAM,QAAQ;AAAA,IACjE,CAAC,aAAa,OAAO,MAAM,QAAQ;AAAA,EACrC;AAEA,QAAM,cAAc,SAAS;AAE7B,SACE,iCACG;AAAA,kBACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,MAAM,OAAO;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF,IACE;AAAA,IAEH,OAAO,YAAY,QAClB;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM,OAAO;AAAA,QACb,QAAQ,OAAO;AAAA,QACf;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,aAAa,CAAC;AAAA,QACd,aAAa,CAAC;AAAA;AAAA,IAChB,IACE;AAAA,IAEH,OAAO,YAAY,QAClB;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM,OAAO;AAAA,QACb,QAAQ,OAAO;AAAA,QACf;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,aAAa,CAAC;AAAA,QACd,aAAa,CAAC;AAAA;AAAA,IAChB,IACE;AAAA,IAEJ,oBAAC,SAAM,MAAM,OAAO,MAClB,8BAAC,QAAK,aAAa,iBAAkB,GAAG,MAAM,GAChD;AAAA,KACF;AAEJ,CAAC;","names":[]}
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { b as ChartXValue, g as LineChartProps } from '../line-chart.types-yxru5uWc.mjs';
3
+ import '@shopify/react-native-skia';
4
+ import '../types/common.types.mjs';
5
+ import '../types/style.types.mjs';
6
+ import '@impulse-ui-native/theme';
7
+
8
+ declare const LineChart: <X extends ChartXValue = number>(props: LineChartProps<X>) => react_jsx_runtime.JSX.Element;
9
+
10
+ export { LineChart };
@@ -0,0 +1,21 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { StyleSheet } from "react-native";
3
+ import { Canvas } from "@shopify/react-native-skia";
4
+ import { memo } from "@impulse-ui-native/core";
5
+ import { useTheme } from "@impulse-ui-native/theme";
6
+ import { useChartCanvas } from "../hooks";
7
+ import { LineChartBody } from "./line-chart-body";
8
+ const LineChart = memo(function LineChart2(props) {
9
+ const theme = useTheme();
10
+ const { ref, size } = useChartCanvas();
11
+ return /* @__PURE__ */ jsx(Canvas, { ref, style: styles.container, children: /* @__PURE__ */ jsx(LineChartBody, { ...props, size, theme }) });
12
+ });
13
+ const styles = StyleSheet.create({
14
+ container: {
15
+ flex: 1
16
+ }
17
+ });
18
+ export {
19
+ LineChart
20
+ };
21
+ //# sourceMappingURL=line-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/line-chart.tsx"],"sourcesContent":["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"],"mappings":"AAmBM;AAnBN,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AAEvB,SAAS,YAAY;AACrB,SAAS,gBAAgB;AAEzB,SAAS,sBAAsB;AAE/B,SAAS,qBAAqB;AAEvB,MAAM,YAAY,KAAK,SAASA,WAErC,OAA0B;AAC1B,QAAM,QAAQ,SAAS;AAEvB,QAAM,EAAE,KAAK,KAAK,IAAI,eAAe;AAErC,SACE,oBAAC,UAAO,KAAU,OAAO,OAAO,WAC9B,8BAAC,iBAAe,GAAG,OAAO,MAAY,OAAc,GACtD;AAEJ,CAAC;AAED,MAAM,SAAS,WAAW,OAAO;AAAA,EAC/B,WAAW;AAAA,IACT,MAAM;AAAA,EACR;AACF,CAAC;","names":["LineChart"]}
@@ -0,0 +1,16 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { AppTheme } from '@impulse-ui-native/theme';
3
+ import { ChartSize } from '../types/common.types.mjs';
4
+ import { b as ChartXValue } from '../line-chart.types-yxru5uWc.mjs';
5
+ import { MultiBarChartProps } from '../types/multi-bar-chart.types.mjs';
6
+ import '../types/style.types.mjs';
7
+ import '@shopify/react-native-skia';
8
+ import '../types/bar-chart.types.mjs';
9
+
10
+ interface MultiBarChartBodyProps<X extends ChartXValue> extends MultiBarChartProps<X> {
11
+ size: ChartSize;
12
+ theme: AppTheme;
13
+ }
14
+ declare const MultiBarChartBody: <X extends ChartXValue = string>(props: MultiBarChartBodyProps<X>) => react_jsx_runtime.JSX.Element;
15
+
16
+ export { MultiBarChartBody };
@@ -0,0 +1,72 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { Group } from "@shopify/react-native-skia";
4
+ import { memo } from "@impulse-ui-native/core";
5
+ import { useChartLayout, useMultiBarChart } from "../hooks";
6
+ import { createDrawableMultiBarChartSeries } from "../utils";
7
+ import { ChartAxes } from "./chart-axes";
8
+ import { Bar } from "./primitives";
9
+ const MultiBarChartBody = memo(function MultiBarChartBodyComponent(props) {
10
+ const {
11
+ categoryPadding,
12
+ fontManager,
13
+ grid,
14
+ insets,
15
+ series,
16
+ seriesPadding,
17
+ size,
18
+ theme,
19
+ xAxis,
20
+ yAxis
21
+ } = props;
22
+ const layout = useChartLayout(size, insets);
23
+ const {
24
+ series: seriesModels,
25
+ xScale,
26
+ xTicks,
27
+ yScale,
28
+ yTicks
29
+ } = useMultiBarChart({
30
+ categoryPadding,
31
+ plot: layout.plot,
32
+ series,
33
+ seriesPadding,
34
+ xAxis,
35
+ yAxis
36
+ });
37
+ const drawableSeries = useMemo(
38
+ () => seriesModels.map(
39
+ (currentSeries, index) => createDrawableMultiBarChartSeries(currentSeries, index)
40
+ ),
41
+ [seriesModels]
42
+ );
43
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
44
+ /* @__PURE__ */ jsx(
45
+ ChartAxes,
46
+ {
47
+ fontManager,
48
+ grid,
49
+ layout,
50
+ theme,
51
+ xAxis,
52
+ xScale,
53
+ xTicks,
54
+ yAxis,
55
+ yScale,
56
+ yTicks
57
+ }
58
+ ),
59
+ /* @__PURE__ */ jsx(Group, { clip: layout.plot, children: drawableSeries.map((currentSeries) => /* @__PURE__ */ jsx(
60
+ Bar,
61
+ {
62
+ coordinates: currentSeries.coordinates,
63
+ ...currentSeries.bar
64
+ },
65
+ currentSeries.id
66
+ )) })
67
+ ] });
68
+ });
69
+ export {
70
+ MultiBarChartBody
71
+ };
72
+ //# sourceMappingURL=multi-bar-chart-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/multi-bar-chart-body.tsx"],"sourcesContent":["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 { useChartLayout, useMultiBarChart } from \"../hooks\";\nimport { ChartSize, ChartXValue, MultiBarChartProps } from \"../types\";\nimport { createDrawableMultiBarChartSeries } from \"../utils\";\nimport { ChartAxes } from \"./chart-axes\";\nimport { Bar } from \"./primitives\";\n\ninterface MultiBarChartBodyProps<\n X extends ChartXValue,\n> extends MultiBarChartProps<X> {\n size: ChartSize;\n theme: AppTheme;\n}\n\nexport const MultiBarChartBody = memo(function MultiBarChartBodyComponent<\n X extends ChartXValue = string,\n>(props: MultiBarChartBodyProps<X>) {\n const {\n categoryPadding,\n fontManager,\n grid,\n insets,\n series,\n seriesPadding,\n size,\n theme,\n xAxis,\n yAxis,\n } = props;\n const layout = useChartLayout(size, insets);\n const {\n series: seriesModels,\n xScale,\n xTicks,\n yScale,\n yTicks,\n } = useMultiBarChart({\n categoryPadding,\n plot: layout.plot,\n series,\n seriesPadding,\n xAxis,\n yAxis,\n });\n const drawableSeries = useMemo(\n () =>\n seriesModels.map((currentSeries, index) =>\n createDrawableMultiBarChartSeries(currentSeries, index),\n ),\n [seriesModels],\n );\n\n return (\n <>\n <ChartAxes\n fontManager={fontManager}\n grid={grid}\n layout={layout}\n theme={theme}\n xAxis={xAxis}\n xScale={xScale}\n xTicks={xTicks}\n yAxis={yAxis}\n yScale={yScale}\n yTicks={yTicks}\n />\n\n <Group clip={layout.plot}>\n {drawableSeries.map((currentSeries) => (\n <Bar\n key={currentSeries.id}\n coordinates={currentSeries.coordinates}\n {...currentSeries.bar}\n />\n ))}\n </Group>\n </>\n );\n});\n"],"mappings":"AA0DI,mBACE,KADF;AA1DJ,SAAS,eAAe;AACxB,SAAS,aAAa;AAEtB,SAAS,YAAY;AAGrB,SAAS,gBAAgB,wBAAwB;AAEjD,SAAS,yCAAyC;AAClD,SAAS,iBAAiB;AAC1B,SAAS,WAAW;AASb,MAAM,oBAAoB,KAAK,SAAS,2BAE7C,OAAkC;AAClC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,SAAS,eAAe,MAAM,MAAM;AAC1C,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,iBAAiB;AAAA,IACnB;AAAA,IACA,MAAM,OAAO;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,iBAAiB;AAAA,IACrB,MACE,aAAa;AAAA,MAAI,CAAC,eAAe,UAC/B,kCAAkC,eAAe,KAAK;AAAA,IACxD;AAAA,IACF,CAAC,YAAY;AAAA,EACf;AAEA,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,IAEA,oBAAC,SAAM,MAAM,OAAO,MACjB,yBAAe,IAAI,CAAC,kBACnB;AAAA,MAAC;AAAA;AAAA,QAEC,aAAa,cAAc;AAAA,QAC1B,GAAG,cAAc;AAAA;AAAA,MAFb,cAAc;AAAA,IAGrB,CACD,GACH;AAAA,KACF;AAEJ,CAAC;","names":[]}
@@ -0,0 +1,12 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { b as ChartXValue } from '../line-chart.types-yxru5uWc.mjs';
3
+ import { MultiBarChartProps } from '../types/multi-bar-chart.types.mjs';
4
+ import '@shopify/react-native-skia';
5
+ import '../types/common.types.mjs';
6
+ import '../types/style.types.mjs';
7
+ import '@impulse-ui-native/theme';
8
+ import '../types/bar-chart.types.mjs';
9
+
10
+ declare const MultiBarChart: <X extends ChartXValue = string>(props: MultiBarChartProps<X>) => react_jsx_runtime.JSX.Element;
11
+
12
+ export { MultiBarChart };
@@ -0,0 +1,21 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { StyleSheet } from "react-native";
3
+ import { Canvas } from "@shopify/react-native-skia";
4
+ import { memo } from "@impulse-ui-native/core";
5
+ import { useTheme } from "@impulse-ui-native/theme";
6
+ import { useChartCanvas } from "../hooks";
7
+ import { MultiBarChartBody } from "./multi-bar-chart-body";
8
+ const MultiBarChart = memo(function MultiBarChart2(props) {
9
+ const theme = useTheme();
10
+ const { ref, size } = useChartCanvas();
11
+ return /* @__PURE__ */ jsx(Canvas, { ref, style: styles.container, children: /* @__PURE__ */ jsx(MultiBarChartBody, { ...props, size, theme }) });
12
+ });
13
+ const styles = StyleSheet.create({
14
+ container: {
15
+ flex: 1
16
+ }
17
+ });
18
+ export {
19
+ MultiBarChart
20
+ };
21
+ //# sourceMappingURL=multi-bar-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/multi-bar-chart.tsx"],"sourcesContent":["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, MultiBarChartProps } from \"../types\";\nimport { MultiBarChartBody } from \"./multi-bar-chart-body\";\n\nexport const MultiBarChart = memo(function MultiBarChart<\n X extends ChartXValue = string,\n>(props: MultiBarChartProps<X>) {\n const theme = useTheme();\n const { ref, size } = useChartCanvas();\n\n return (\n <Canvas ref={ref} style={styles.container}>\n <MultiBarChartBody {...props} size={size} theme={theme} />\n </Canvas>\n );\n});\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n"],"mappings":"AAkBM;AAlBN,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AAEvB,SAAS,YAAY;AACrB,SAAS,gBAAgB;AAEzB,SAAS,sBAAsB;AAE/B,SAAS,yBAAyB;AAE3B,MAAM,gBAAgB,KAAK,SAASA,eAEzC,OAA8B;AAC9B,QAAM,QAAQ,SAAS;AACvB,QAAM,EAAE,KAAK,KAAK,IAAI,eAAe;AAErC,SACE,oBAAC,UAAO,KAAU,OAAO,OAAO,WAC9B,8BAAC,qBAAmB,GAAG,OAAO,MAAY,OAAc,GAC1D;AAEJ,CAAC;AAED,MAAM,SAAS,WAAW,OAAO;AAAA,EAC/B,WAAW;AAAA,IACT,MAAM;AAAA,EACR;AACF,CAAC;","names":["MultiBarChart"]}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { b as ChartXValue } from '../line-chart.types-yxru5uWc.mjs';
3
+ import { MultiLineChartBodyProps } from '../types/multi-line-chart.types.mjs';
4
+ import '@shopify/react-native-skia';
5
+ import '../types/common.types.mjs';
6
+ import '../types/style.types.mjs';
7
+ import '@impulse-ui-native/theme';
8
+
9
+ declare const MultiLineChartBody: <X extends ChartXValue = number>(props: MultiLineChartBodyProps<X>) => react_jsx_runtime.JSX.Element;
10
+
11
+ export { MultiLineChartBody };