@servicetitan/marketing-ui 5.8.1 → 5.10.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/dist/components/ads/ads-stat.js +21 -10
- package/dist/components/ads/ads-stat.js.map +1 -1
- package/dist/components/charts/funnel-chart/components/funnel-chart.js +118 -6
- package/dist/components/charts/funnel-chart/components/funnel-chart.js.map +1 -1
- package/dist/components/charts/funnel-chart/components/funnel-chart.module.less.d.ts +9 -0
- package/dist/components/charts/funnel-chart/components/funnel-svg.js +62 -12
- package/dist/components/charts/funnel-chart/components/funnel-svg.js.map +1 -1
- package/dist/components/charts/funnel-chart/funnel-chart.stories.d.ts +0 -1
- package/dist/components/charts/funnel-chart/funnel-chart.stories.d.ts.map +1 -1
- package/dist/components/charts/funnel-chart/index.js +1 -0
- package/dist/components/charts/funnel-chart/index.js.map +1 -1
- package/dist/components/charts/funnel-chart/utils/const.js +1 -0
- package/dist/components/charts/funnel-chart/utils/const.js.map +1 -1
- package/dist/components/charts/funnel-chart/utils/interface.js +2 -1
- package/dist/components/charts/funnel-chart/utils/interface.js.map +1 -1
- package/dist/components/charts/line-chart/components/body.js +105 -16
- package/dist/components/charts/line-chart/components/body.js.map +1 -1
- package/dist/components/charts/line-chart/components/body.module.less.d.ts +4 -0
- package/dist/components/charts/line-chart/components/container.js +12 -4
- package/dist/components/charts/line-chart/components/container.js.map +1 -1
- package/dist/components/charts/line-chart/components/hover-popover.js +56 -13
- package/dist/components/charts/line-chart/components/hover-popover.js.map +1 -1
- package/dist/components/charts/line-chart/components/hover-popover.module.less.d.ts +5 -0
- package/dist/components/charts/line-chart/components/sidebar.js +35 -5
- package/dist/components/charts/line-chart/components/sidebar.js.map +1 -1
- package/dist/components/charts/line-chart/components/sidebar.module.less.d.ts +13 -0
- package/dist/components/charts/line-chart/components/stuff.js +73 -32
- package/dist/components/charts/line-chart/components/stuff.js.map +1 -1
- package/dist/components/charts/line-chart/components/stuff.module.less.d.ts +6 -0
- package/dist/components/charts/line-chart/components/svg-bars.d.ts.map +1 -1
- package/dist/components/charts/line-chart/components/svg-bars.js +60 -26
- package/dist/components/charts/line-chart/components/svg-bars.js.map +1 -1
- package/dist/components/charts/line-chart/components/svg-body.js +52 -11
- package/dist/components/charts/line-chart/components/svg-body.js.map +1 -1
- package/dist/components/charts/line-chart/components/svg-lines.js +46 -27
- package/dist/components/charts/line-chart/components/svg-lines.js.map +1 -1
- package/dist/components/charts/line-chart/components/svg.module.less.d.ts +5 -0
- package/dist/components/charts/line-chart/index.js +1 -0
- package/dist/components/charts/line-chart/index.js.map +1 -1
- package/dist/components/charts/line-chart/stores/line-chart.store.d.ts.map +1 -1
- package/dist/components/charts/line-chart/stores/line-chart.store.js +98 -127
- package/dist/components/charts/line-chart/stores/line-chart.store.js.map +1 -1
- package/dist/components/charts/line-chart/stores/svg.store.d.ts.map +1 -1
- package/dist/components/charts/line-chart/stores/svg.store.js +66 -108
- package/dist/components/charts/line-chart/stores/svg.store.js.map +1 -1
- package/dist/components/charts/line-chart/utils/const.js +8 -7
- package/dist/components/charts/line-chart/utils/const.js.map +1 -1
- package/dist/components/charts/line-chart/utils/formatters.d.ts.map +1 -1
- package/dist/components/charts/line-chart/utils/formatters.js +13 -11
- package/dist/components/charts/line-chart/utils/formatters.js.map +1 -1
- package/dist/components/charts/line-chart/utils/interfaces.js +2 -1
- package/dist/components/charts/line-chart/utils/interfaces.js.map +1 -1
- package/dist/components/charts/line-chart/utils/internal-interfaces.js +2 -1
- package/dist/components/charts/line-chart/utils/internal-interfaces.js.map +1 -1
- package/dist/components/charts/line-chart/utils/key.d.ts.map +1 -1
- package/dist/components/charts/line-chart/utils/key.js +2 -1
- package/dist/components/charts/line-chart/utils/key.js.map +1 -1
- package/dist/components/charts/line-chart/utils/labels.d.ts.map +1 -1
- package/dist/components/charts/line-chart/utils/labels.js +50 -46
- package/dist/components/charts/line-chart/utils/labels.js.map +1 -1
- package/dist/components/charts/pie-chart/components/pie-chart.js +60 -6
- package/dist/components/charts/pie-chart/components/pie-chart.js.map +1 -1
- package/dist/components/charts/pie-chart/components/pie-chart.module.less.d.ts +3 -0
- package/dist/components/charts/pie-chart/components/pie.js +176 -39
- package/dist/components/charts/pie-chart/components/pie.js.map +1 -1
- package/dist/components/charts/pie-chart/index.js +2 -0
- package/dist/components/charts/pie-chart/index.js.map +1 -1
- package/dist/components/charts/pie-chart/pie-chart.stories.d.ts +0 -1
- package/dist/components/charts/pie-chart/pie-chart.stories.d.ts.map +1 -1
- package/dist/components/charts/pie-chart/utils/const.d.ts.map +1 -1
- package/dist/components/charts/pie-chart/utils/const.js +55 -39
- package/dist/components/charts/pie-chart/utils/const.js.map +1 -1
- package/dist/components/charts/pie-chart/utils/interface.js +2 -1
- package/dist/components/charts/pie-chart/utils/interface.js.map +1 -1
- package/dist/components/image-cropper/image-cropper.d.ts.map +1 -1
- package/dist/components/image-cropper/image-cropper.js +74 -88
- package/dist/components/image-cropper/image-cropper.js.map +1 -1
- package/dist/components/stat/stat-card.js +68 -22
- package/dist/components/stat/stat-card.js.map +1 -1
- package/dist/components/stat/stat-card.module.less.d.ts +5 -0
- package/dist/components/stat/stat-cards.stories.d.ts +0 -1
- package/dist/components/stat/stat-cards.stories.d.ts.map +1 -1
- package/dist/components/stat/stat-extended-card.js +76 -4
- package/dist/components/stat/stat-extended-card.js.map +1 -1
- package/dist/components/stat/stat-extended-card.stories.d.ts +0 -1
- package/dist/components/stat/stat-extended-card.stories.d.ts.map +1 -1
- package/dist/components/ui/action-button/action-button.js +33 -7
- package/dist/components/ui/action-button/action-button.js.map +1 -1
- package/dist/components/ui/action-button/action-button.module.less.d.ts +9 -0
- package/dist/components/ui/action-button/action-button.stories.d.ts +0 -1
- package/dist/components/ui/action-button/action-button.stories.d.ts.map +1 -1
- package/dist/components/ui/action-button/index.js +1 -0
- package/dist/components/ui/action-button/index.js.map +1 -1
- package/dist/components/ui/centered-spinner/centered-spinner.js +20 -2
- package/dist/components/ui/centered-spinner/centered-spinner.js.map +1 -1
- package/dist/components/ui/centered-spinner/centered-spinner.stories.d.ts +0 -1
- package/dist/components/ui/centered-spinner/centered-spinner.stories.d.ts.map +1 -1
- package/dist/components/ui/date-range-picker/date-range-picker.d.ts.map +1 -1
- package/dist/components/ui/date-range-picker/date-range-picker.js +71 -35
- package/dist/components/ui/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/ui/date-range-picker/date-range-picker.module.less.d.ts +4 -0
- package/dist/components/ui/date-range-picker/date-range-picker.stories.d.ts.map +1 -1
- package/dist/components/ui/disabled-button.js +12 -3
- package/dist/components/ui/disabled-button.js.map +1 -1
- package/dist/components/ui/label-with-hint/label-with-hint.js +23 -1
- package/dist/components/ui/label-with-hint/label-with-hint.js.map +1 -1
- package/dist/components/ui/label-with-hint/label-with-hint.stories.d.ts +0 -1
- package/dist/components/ui/label-with-hint/label-with-hint.stories.d.ts.map +1 -1
- package/dist/components/ui/line-text/index.js +1 -0
- package/dist/components/ui/line-text/index.js.map +1 -1
- package/dist/components/ui/line-text/line-text-body.stories.d.ts +0 -1
- package/dist/components/ui/line-text/line-text-body.stories.d.ts.map +1 -1
- package/dist/components/ui/line-text/line-text-head.stories.d.ts +0 -1
- package/dist/components/ui/line-text/line-text-head.stories.d.ts.map +1 -1
- package/dist/components/ui/line-text/line-text.js +71 -25
- package/dist/components/ui/line-text/line-text.js.map +1 -1
- package/dist/components/ui/line-text/line-text.module.less.d.ts +6 -0
- package/dist/components/ui/title-popover/index.js +1 -0
- package/dist/components/ui/title-popover/index.js.map +1 -1
- package/dist/components/ui/title-popover/title-popover.d.ts.map +1 -1
- package/dist/components/ui/title-popover/title-popover.js +78 -69
- package/dist/components/ui/title-popover/title-popover.js.map +1 -1
- package/dist/components/ui/title-popover/title-popover.module.less.d.ts +3 -0
- package/dist/components/ui/title-popover/title-popover.stories.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/__tests__/format-big-numbers.test.d.ts +2 -0
- package/dist/utils/__tests__/format-big-numbers.test.d.ts.map +1 -0
- package/dist/utils/__tests__/formatters.test.d.ts +2 -0
- package/dist/utils/__tests__/formatters.test.d.ts.map +1 -0
- package/dist/utils/__tests__/helpers.test.d.ts +2 -0
- package/dist/utils/__tests__/helpers.test.d.ts.map +1 -0
- package/dist/utils/__tests__/string-case.test.d.ts +2 -0
- package/dist/utils/__tests__/string-case.test.d.ts.map +1 -0
- package/dist/utils/ads-texts.js +2 -1
- package/dist/utils/ads-texts.js.map +1 -1
- package/dist/utils/date/__tests__/date-range-picker.test.d.ts +2 -0
- package/dist/utils/date/__tests__/date-range-picker.test.d.ts.map +1 -0
- package/dist/utils/date/__tests__/date-tenant.test.d.ts +2 -0
- package/dist/utils/date/__tests__/date-tenant.test.d.ts.map +1 -0
- package/dist/utils/date/date-range-picker-options.d.ts.map +1 -1
- package/dist/utils/date/date-range-picker-options.js +90 -68
- package/dist/utils/date/date-range-picker-options.js.map +1 -1
- package/dist/utils/date/date-range-picker-state.d.ts.map +1 -1
- package/dist/utils/date/date-range-picker-state.js +42 -43
- package/dist/utils/date/date-range-picker-state.js.map +1 -1
- package/dist/utils/date/date-tenant.js +4 -6
- package/dist/utils/date/date-tenant.js.map +1 -1
- package/dist/utils/date/date.d.ts.map +1 -1
- package/dist/utils/date/date.js +5 -9
- package/dist/utils/date/date.js.map +1 -1
- package/dist/utils/date/index.js +1 -0
- package/dist/utils/date/index.js.map +1 -1
- package/dist/utils/format-big-numbers.d.ts.map +1 -1
- package/dist/utils/format-big-numbers.js +11 -6
- package/dist/utils/format-big-numbers.js.map +1 -1
- package/dist/utils/formatters.d.ts.map +1 -1
- package/dist/utils/formatters.js +8 -7
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +9 -12
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/marketing-parner-handlers.js +9 -12
- package/dist/utils/marketing-parner-handlers.js.map +1 -1
- package/dist/utils/string-case.js +1 -0
- package/dist/utils/string-case.js.map +1 -1
- package/dist/utils/use-client-rect.d.ts +1 -5
- package/dist/utils/use-client-rect.d.ts.map +1 -1
- package/dist/utils/use-client-rect.js +19 -19
- package/dist/utils/use-client-rect.js.map +1 -1
- package/dist/utils/use-target-range-store.js +7 -6
- package/dist/utils/use-target-range-store.js.map +1 -1
- package/package.json +11 -11
- package/src/components/charts/funnel-chart/funnel-chart.stories.tsx +3 -2
- package/src/components/charts/line-chart/components/svg-bars.tsx +2 -0
- package/src/components/ui/action-button/action-button.stories.tsx +3 -2
- package/src/components/ui/centered-spinner/centered-spinner.stories.tsx +3 -2
- package/src/components/ui/date-range-picker/date-range-picker.stories.tsx +5 -6
- package/src/components/ui/date-range-picker/date-range-picker.tsx +2 -2
- package/src/components/ui/line-text/line-text-body.stories.tsx +3 -2
- package/src/components/ui/line-text/line-text-head.stories.tsx +3 -2
- package/src/components/ui/line-text/line-text.tsx +1 -1
- package/src/components/ui/title-popover/title-popover.stories.tsx +3 -2
- package/src/utils/date/__tests__/date-range-picker.test.ts +1 -1
- package/src/utils/use-client-rect.ts +1 -1
- package/dist/components/charts/funnel-chart/funnel-chart.stories.js +0 -76
- package/dist/components/charts/funnel-chart/funnel-chart.stories.js.map +0 -1
- package/dist/components/charts/line-chart/line-chart.stories.js +0 -225
- package/dist/components/charts/line-chart/line-chart.stories.js.map +0 -1
- package/dist/components/charts/pie-chart/pie-chart.stories.js +0 -22
- package/dist/components/charts/pie-chart/pie-chart.stories.js.map +0 -1
- package/dist/components/image-cropper/image-cropper.stories.js +0 -48
- package/dist/components/image-cropper/image-cropper.stories.js.map +0 -1
- package/dist/components/stat/stat-cards.stories.js +0 -16
- package/dist/components/stat/stat-cards.stories.js.map +0 -1
- package/dist/components/stat/stat-extended-card.stories.js +0 -12
- package/dist/components/stat/stat-extended-card.stories.js.map +0 -1
- package/dist/components/ui/action-button/action-button.stories.js +0 -11
- package/dist/components/ui/action-button/action-button.stories.js.map +0 -1
- package/dist/components/ui/centered-spinner/centered-spinner.stories.js +0 -12
- package/dist/components/ui/centered-spinner/centered-spinner.stories.js.map +0 -1
- package/dist/components/ui/date-range-picker/date-range-picker.stories.js +0 -18
- package/dist/components/ui/date-range-picker/date-range-picker.stories.js.map +0 -1
- package/dist/components/ui/label-with-hint/label-with-hint.stories.js +0 -12
- package/dist/components/ui/label-with-hint/label-with-hint.stories.js.map +0 -1
- package/dist/components/ui/line-text/line-text-body.stories.js +0 -11
- package/dist/components/ui/line-text/line-text-body.stories.js.map +0 -1
- package/dist/components/ui/line-text/line-text-head.stories.js +0 -11
- package/dist/components/ui/line-text/line-text-head.stories.js.map +0 -1
- package/dist/components/ui/title-popover/title-popover.stories.js +0 -17
- package/dist/components/ui/title-popover/title-popover.stories.js.map +0 -1
- package/dist/utils/date/__mocks__/date-mock.js +0 -19
- package/dist/utils/date/__mocks__/date-mock.js.map +0 -1
|
@@ -3,54 +3,88 @@ import { observer } from 'mobx-react';
|
|
|
3
3
|
import { useDependencies } from '@servicetitan/react-ioc';
|
|
4
4
|
import { keyVal } from '../utils/key';
|
|
5
5
|
import { SvgStore } from '../stores/svg.store';
|
|
6
|
-
export const SvgBars = observer(({ metrics, isStackedBarChart, isGroupedBarChart })
|
|
6
|
+
export const SvgBars = observer(({ metrics, isStackedBarChart, isGroupedBarChart })=>{
|
|
7
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
7
8
|
const [store] = useDependencies(SvgStore);
|
|
8
9
|
const { fpx, fpy, barWidth, length } = store;
|
|
9
10
|
const barWidthHalf = barWidth / 2;
|
|
10
11
|
const paths = [];
|
|
11
|
-
for
|
|
12
|
+
for(let i = 0; i < length; i++){
|
|
12
13
|
const x = store.periodX(i);
|
|
13
|
-
const values = metrics.map(m
|
|
14
|
-
var
|
|
15
|
-
|
|
14
|
+
const values = metrics.map((m)=>{
|
|
15
|
+
var _m_valuesOpts_i, _m_valuesOpts;
|
|
16
|
+
var _m_valuesOpts_i_color;
|
|
17
|
+
return {
|
|
16
18
|
id: m.id,
|
|
17
|
-
color: (
|
|
19
|
+
color: (_m_valuesOpts_i_color = (_m_valuesOpts = m.valuesOpts) === null || _m_valuesOpts === void 0 ? void 0 : (_m_valuesOpts_i = _m_valuesOpts[i]) === null || _m_valuesOpts_i === void 0 ? void 0 : _m_valuesOpts_i.color) !== null && _m_valuesOpts_i_color !== void 0 ? _m_valuesOpts_i_color : m.color,
|
|
18
20
|
opacity: m.opacity,
|
|
19
|
-
val: store.periodY(m, i)
|
|
20
|
-
}
|
|
21
|
+
val: store.periodY(m, i)
|
|
22
|
+
};
|
|
21
23
|
});
|
|
22
24
|
if (isStackedBarChart) {
|
|
23
|
-
let stackedBarHeight = values.reduce((sum, curr)
|
|
24
|
-
for (const value of values)
|
|
25
|
-
paths.push(_jsx("rect", {
|
|
25
|
+
let stackedBarHeight = values.reduce((sum, curr)=>sum + curr.val, 0);
|
|
26
|
+
for (const value of values){
|
|
27
|
+
paths.push(/*#__PURE__*/ _jsx("rect", {
|
|
28
|
+
x: fpx(x - barWidthHalf),
|
|
29
|
+
y: fpy(stackedBarHeight),
|
|
30
|
+
width: fpx(barWidth),
|
|
31
|
+
height: fpx(value.val),
|
|
32
|
+
fill: value.color
|
|
33
|
+
}, keyVal(value.id, i)));
|
|
26
34
|
stackedBarHeight -= value.val;
|
|
27
35
|
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const groupedBarX = (j * barWidth) / values.length;
|
|
36
|
+
} else if (isGroupedBarChart) {
|
|
37
|
+
for(let j = 0; j < values.length; j++){
|
|
38
|
+
const groupedBarX = j * barWidth / values.length;
|
|
32
39
|
const value = values[j];
|
|
33
|
-
paths.push(_jsx("rect", {
|
|
40
|
+
paths.push(/*#__PURE__*/ _jsx("rect", {
|
|
41
|
+
x: x + groupedBarX - barWidthHalf,
|
|
42
|
+
y: fpy(value.val),
|
|
43
|
+
width: barWidth / values.length - 0.1,
|
|
44
|
+
height: fpx(value.val),
|
|
45
|
+
fill: value.color,
|
|
46
|
+
opacity: value.opacity
|
|
47
|
+
}, keyVal(value.id, i)));
|
|
34
48
|
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
49
|
+
} else {
|
|
50
|
+
values.sort((a, b)=>b.val - a.val);
|
|
51
|
+
for (const value of values){
|
|
52
|
+
paths.push(/*#__PURE__*/ _jsx("rect", {
|
|
53
|
+
x: fpx(x - barWidthHalf),
|
|
54
|
+
y: fpy(value.val),
|
|
55
|
+
width: fpx(barWidth),
|
|
56
|
+
height: fpx(value.val),
|
|
57
|
+
fill: value.color
|
|
58
|
+
}, keyVal(value.id, i)));
|
|
40
59
|
}
|
|
41
60
|
}
|
|
42
61
|
}
|
|
43
|
-
return _jsx("g", {
|
|
62
|
+
return /*#__PURE__*/ _jsx("g", {
|
|
63
|
+
children: paths
|
|
64
|
+
});
|
|
44
65
|
});
|
|
45
|
-
export const SvgBarsHover = observer(({ onHover, onLeave })
|
|
66
|
+
export const SvgBarsHover = observer(({ onHover, onLeave })=>{
|
|
67
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
46
68
|
const [store] = useDependencies(SvgStore);
|
|
47
69
|
const { fpx, fpy, barWidth, length } = store;
|
|
48
70
|
const barWidthHalf = barWidth / 2;
|
|
49
71
|
const paths = [];
|
|
50
|
-
for
|
|
72
|
+
for(let i = 0; i < length; i++){
|
|
51
73
|
const x = store.periodX(i);
|
|
52
|
-
paths.push(_jsx("rect", {
|
|
74
|
+
paths.push(/*#__PURE__*/ _jsx("rect", {
|
|
75
|
+
onMouseEnter: ()=>onHover(i),
|
|
76
|
+
onMouseLeave: ()=>onLeave(i),
|
|
77
|
+
x: fpx(x - barWidthHalf),
|
|
78
|
+
y: fpy(100),
|
|
79
|
+
width: fpx(barWidth),
|
|
80
|
+
height: "100%",
|
|
81
|
+
fill: "white",
|
|
82
|
+
fillOpacity: "0"
|
|
83
|
+
}, keyVal('_', i)));
|
|
53
84
|
}
|
|
54
|
-
return _jsx("g", {
|
|
85
|
+
return /*#__PURE__*/ _jsx("g", {
|
|
86
|
+
children: paths
|
|
87
|
+
});
|
|
55
88
|
});
|
|
89
|
+
|
|
56
90
|
//# sourceMappingURL=svg-bars.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/charts/line-chart/components/svg-bars.tsx"],"sourcesContent":["import { FC } from 'react';\nimport { observer } from 'mobx-react';\nimport { useDependencies } from '@servicetitan/react-ioc';\nimport { ChartMetric } from '../utils/internal-interfaces';\nimport { keyVal } from '../utils/key';\nimport { SvgStore } from '../stores/svg.store';\n\ninterface SvgBarsProps {\n metrics: ChartMetric[];\n isStackedBarChart?: boolean;\n isGroupedBarChart?: boolean;\n}\n\nexport const SvgBars: FC<SvgBarsProps> = observer(\n ({ metrics, isStackedBarChart, isGroupedBarChart }) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [store] = useDependencies(SvgStore);\n const { fpx, fpy, barWidth, length } = store;\n const barWidthHalf = barWidth / 2;\n const paths = [];\n\n for (let i = 0; i < length; i++) {\n const x = store.periodX(i);\n const values = metrics.map(m => ({\n id: m.id,\n color: m.valuesOpts?.[i]?.color ?? m.color,\n opacity: m.opacity,\n val: store.periodY(m, i),\n }));\n\n if (isStackedBarChart) {\n let stackedBarHeight = values.reduce((sum, curr) => sum + curr.val, 0);\n\n for (const value of values) {\n paths.push(\n <rect\n key={keyVal(value.id, i)}\n x={fpx(x - barWidthHalf)}\n y={fpy(stackedBarHeight)}\n width={fpx(barWidth)}\n height={fpx(value.val)}\n fill={value.color}\n />\n );\n stackedBarHeight -= value.val;\n }\n } else if (isGroupedBarChart) {\n for (let j = 0; j < values.length; j++) {\n const groupedBarX = (j * barWidth) / values.length;\n const value = values[j];\n\n paths.push(\n <rect\n key={keyVal(value.id, i)}\n x={x + groupedBarX - barWidthHalf}\n y={fpy(value.val)}\n width={barWidth / values.length - 0.1}\n height={fpx(value.val)}\n fill={value.color}\n opacity={value.opacity}\n />\n );\n }\n } else {\n values.sort((a, b) => b.val - a.val);\n for (const value of values) {\n paths.push(\n <rect\n key={keyVal(value.id, i)}\n x={fpx(x - barWidthHalf)}\n y={fpy(value.val)}\n width={fpx(barWidth)}\n height={fpx(value.val)}\n fill={value.color}\n />\n );\n }\n }\n }\n\n return <g>{paths}</g>;\n }\n);\n\ninterface SvgBarsHoverProps {\n onHover(ind: number): void;\n onLeave(ind: number): void;\n}\n\nexport const SvgBarsHover: FC<SvgBarsHoverProps> = observer(({ onHover, onLeave }) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [store] = useDependencies(SvgStore);\n const { fpx, fpy, barWidth, length } = store;\n const barWidthHalf = barWidth / 2;\n const paths = [];\n\n for (let i = 0; i < length; i++) {\n const x = store.periodX(i);\n\n paths.push(\n <rect\n key={keyVal('_', i)}\n onMouseEnter={() => onHover(i)}\n onMouseLeave={() => onLeave(i)}\n x={fpx(x - barWidthHalf)}\n y={fpy(100)}\n width={fpx(barWidth)}\n height=\"100%\"\n fill=\"white\"\n fillOpacity=\"0\"\n />\n );\n }\n\n return <g>{paths}</g>;\n});\n"],"names":["observer","useDependencies","keyVal","SvgStore","SvgBars","metrics","isStackedBarChart","isGroupedBarChart","store","fpx","fpy","barWidth","length","barWidthHalf","paths","i","x","periodX","values","map","m","id","color","valuesOpts","opacity","val","periodY","stackedBarHeight","reduce","sum","curr","value","push","rect","y","width","height","fill","j","groupedBarX","sort","a","b","g","SvgBarsHover","onHover","onLeave","onMouseEnter","onMouseLeave","fillOpacity"],"mappings":"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"}
|
|
@@ -7,21 +7,62 @@ import { keyVal } from '../utils/key';
|
|
|
7
7
|
import { SvgBars, SvgBarsHover } from './svg-bars';
|
|
8
8
|
import { SvgLines } from './svg-lines';
|
|
9
9
|
import * as Styles from './svg.module.less';
|
|
10
|
-
const SvgGrid = ()
|
|
10
|
+
const SvgGrid = ()=>{
|
|
11
11
|
const lines = [];
|
|
12
|
-
for
|
|
12
|
+
for(let i = 1; i <= 10; i += 1){
|
|
13
13
|
const y = `${9.09 * i}%`;
|
|
14
|
-
lines.push(_jsx("line", {
|
|
14
|
+
lines.push(/*#__PURE__*/ _jsx("line", {
|
|
15
|
+
className: Styles.line,
|
|
16
|
+
x1: "0",
|
|
17
|
+
y1: y,
|
|
18
|
+
x2: "100%",
|
|
19
|
+
y2: y,
|
|
20
|
+
stroke: tokens.colorNeutral60,
|
|
21
|
+
strokeWidth: "1"
|
|
22
|
+
}, y));
|
|
15
23
|
}
|
|
16
|
-
return _jsx("g", {
|
|
24
|
+
return /*#__PURE__*/ _jsx("g", {
|
|
25
|
+
children: lines
|
|
26
|
+
});
|
|
17
27
|
};
|
|
18
|
-
export const SvgBody = observer(({ horizontalGrid, metrics })
|
|
28
|
+
export const SvgBody = observer(({ horizontalGrid, metrics })=>{
|
|
19
29
|
const [{ key }] = useDependencies(SvgStore);
|
|
20
|
-
const barMetrics = metrics.filter(m
|
|
21
|
-
const stackedBarMetrics = metrics.filter(m
|
|
22
|
-
const groupedBarMetrics = metrics.filter(m
|
|
23
|
-
const lineMetrics = metrics.filter(m
|
|
24
|
-
return
|
|
30
|
+
const barMetrics = metrics.filter((m)=>m.type === 'bar');
|
|
31
|
+
const stackedBarMetrics = metrics.filter((m)=>m.type === 'stacked-bar');
|
|
32
|
+
const groupedBarMetrics = metrics.filter((m)=>m.type === 'grouped-bar');
|
|
33
|
+
const lineMetrics = metrics.filter((m)=>m.type === 'line');
|
|
34
|
+
return /*#__PURE__*/ _jsxs("svg", {
|
|
35
|
+
className: Styles.svgBody,
|
|
36
|
+
viewBox: "0 0 100 100",
|
|
37
|
+
preserveAspectRatio: "none",
|
|
38
|
+
vectorEffect: "non-scaling-stroke",
|
|
39
|
+
children: [
|
|
40
|
+
horizontalGrid && /*#__PURE__*/ _jsx(SvgGrid, {}),
|
|
41
|
+
!!barMetrics.length && /*#__PURE__*/ _jsx(SvgBars, {
|
|
42
|
+
metrics: barMetrics
|
|
43
|
+
}, keyVal('bars', key)),
|
|
44
|
+
!!stackedBarMetrics.length && /*#__PURE__*/ _jsx(SvgBars, {
|
|
45
|
+
metrics: stackedBarMetrics,
|
|
46
|
+
isStackedBarChart: true
|
|
47
|
+
}, keyVal('stacked-bars', key)),
|
|
48
|
+
!!groupedBarMetrics.length && /*#__PURE__*/ _jsx(SvgBars, {
|
|
49
|
+
metrics: groupedBarMetrics,
|
|
50
|
+
isGroupedBarChart: true
|
|
51
|
+
}, keyVal('grouped-bars', key)),
|
|
52
|
+
!!lineMetrics.length && /*#__PURE__*/ _jsx(SvgLines, {
|
|
53
|
+
metrics: lineMetrics
|
|
54
|
+
}, keyVal('lines', key))
|
|
55
|
+
]
|
|
56
|
+
});
|
|
25
57
|
});
|
|
26
|
-
export const SvgBodyHover = ({ onValueHover, onValueLeave })
|
|
58
|
+
export const SvgBodyHover = ({ onValueHover, onValueLeave })=>/*#__PURE__*/ _jsx("svg", {
|
|
59
|
+
className: Styles.svgHover,
|
|
60
|
+
viewBox: "0 0 100 100",
|
|
61
|
+
preserveAspectRatio: "none",
|
|
62
|
+
children: /*#__PURE__*/ _jsx(SvgBarsHover, {
|
|
63
|
+
onHover: onValueHover,
|
|
64
|
+
onLeave: onValueLeave
|
|
65
|
+
})
|
|
66
|
+
});
|
|
67
|
+
|
|
27
68
|
//# sourceMappingURL=svg-body.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/charts/line-chart/components/svg-body.tsx"],"sourcesContent":["import { FC } from 'react';\nimport { observer } from 'mobx-react';\nimport { tokens } from '@servicetitan/tokens/core';\nimport { useDependencies } from '@servicetitan/react-ioc';\n\nimport { SvgStore } from '../stores/svg.store';\nimport { ChartMetric } from '../utils/internal-interfaces';\nimport { keyVal } from '../utils/key';\n\nimport { SvgBars, SvgBarsHover } from './svg-bars';\nimport { SvgLines } from './svg-lines';\nimport * as Styles from './svg.module.less';\n\nconst SvgGrid: FC = () => {\n const lines = [];\n\n for (let i = 1; i <= 10; i += 1) {\n const y = `${9.09 * i}%`;\n\n lines.push(\n <line\n className={Styles.line}\n key={y}\n x1=\"0\"\n y1={y}\n x2=\"100%\"\n y2={y}\n stroke={tokens.colorNeutral60}\n strokeWidth=\"1\"\n />\n );\n }\n\n return <g>{lines}</g>;\n};\n\ninterface SvgBodyProps {\n horizontalGrid: boolean;\n metrics: ChartMetric[];\n}\n\nexport const SvgBody: FC<SvgBodyProps> = observer(({ horizontalGrid, metrics }) => {\n const [{ key }] = useDependencies(SvgStore);\n const barMetrics = metrics.filter(m => m.type === 'bar');\n const stackedBarMetrics = metrics.filter(m => m.type === 'stacked-bar');\n const groupedBarMetrics = metrics.filter(m => m.type === 'grouped-bar');\n const lineMetrics = metrics.filter(m => m.type === 'line');\n\n return (\n <svg\n className={Styles.svgBody}\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"none\"\n vectorEffect=\"non-scaling-stroke\"\n >\n {horizontalGrid && <SvgGrid />}\n {!!barMetrics.length && <SvgBars key={keyVal('bars', key)} metrics={barMetrics} />}\n {!!stackedBarMetrics.length && (\n <SvgBars\n key={keyVal('stacked-bars', key)}\n metrics={stackedBarMetrics}\n isStackedBarChart\n />\n )}\n {!!groupedBarMetrics.length && (\n <SvgBars\n key={keyVal('grouped-bars', key)}\n metrics={groupedBarMetrics}\n isGroupedBarChart\n />\n )}\n {!!lineMetrics.length && <SvgLines key={keyVal('lines', key)} metrics={lineMetrics} />}\n </svg>\n );\n});\n\ninterface SvgBodyHoverProps {\n onValueHover(ind: number): void;\n onValueLeave(ind: number): void;\n}\n\nexport const SvgBodyHover: FC<SvgBodyHoverProps> = ({ onValueHover, onValueLeave }) => (\n <svg className={Styles.svgHover} viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\">\n <SvgBarsHover onHover={onValueHover} onLeave={onValueLeave} />\n </svg>\n);\n"],"names":["observer","tokens","useDependencies","SvgStore","keyVal","SvgBars","SvgBarsHover","SvgLines","Styles","SvgGrid","lines","i","y","push","line","className","x1","y1","x2","y2","stroke","colorNeutral60","strokeWidth","g","SvgBody","horizontalGrid","metrics","key","barMetrics","filter","m","type","stackedBarMetrics","groupedBarMetrics","lineMetrics","svg","svgBody","viewBox","preserveAspectRatio","vectorEffect","length","isStackedBarChart","isGroupedBarChart","SvgBodyHover","onValueHover","onValueLeave","svgHover","onHover","onLeave"],"mappings":";AACA,SAASA,QAAQ,QAAQ,aAAa;AACtC,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,eAAe,QAAQ,0BAA0B;AAE1D,SAASC,QAAQ,QAAQ,sBAAsB;AAE/C,SAASC,MAAM,QAAQ,eAAe;AAEtC,SAASC,OAAO,EAAEC,YAAY,QAAQ,aAAa;AACnD,SAASC,QAAQ,QAAQ,cAAc;AACvC,YAAYC,YAAY,oBAAoB;AAE5C,MAAMC,UAAc;IAChB,MAAMC,QAAQ,EAAE;IAEhB,IAAK,IAAIC,IAAI,GAAGA,KAAK,IAAIA,KAAK,EAAG;QAC7B,MAAMC,IAAI,GAAG,OAAOD,EAAE,CAAC,CAAC;QAExBD,MAAMG,IAAI,eACN,KAACC;YACGC,WAAWP,OAAOM,IAAI;YAEtBE,IAAG;YACHC,IAAIL;YACJM,IAAG;YACHC,IAAIP;YACJQ,QAAQnB,OAAOoB,cAAc;YAC7BC,aAAY;WANPV;IASjB;IAEA,qBAAO,KAACW;kBAAGb;;AACf;AAOA,OAAO,MAAMc,UAA4BxB,SAAS,CAAC,EAAEyB,cAAc,EAAEC,OAAO,EAAE;IAC1E,MAAM,CAAC,EAAEC,GAAG,EAAE,CAAC,GAAGzB,gBAAgBC;IAClC,MAAMyB,aAAaF,QAAQG,MAAM,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK;IAClD,MAAMC,oBAAoBN,QAAQG,MAAM,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK;IACzD,MAAME,oBAAoBP,QAAQG,MAAM,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK;IACzD,MAAMG,cAAcR,QAAQG,MAAM,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK;IAEnD,qBACI,MAACI;QACGpB,WAAWP,OAAO4B,OAAO;QACzBC,SAAQ;QACRC,qBAAoB;QACpBC,cAAa;;YAEZd,gCAAkB,KAAChB;YACnB,CAAC,CAACmB,WAAWY,MAAM,kBAAI,KAACnC;gBAAkCqB,SAASE;eAA9BxB,OAAO,QAAQuB;YACpD,CAAC,CAACK,kBAAkBQ,MAAM,kBACvB,KAACnC;gBAEGqB,SAASM;gBACTS,iBAAiB;eAFZrC,OAAO,gBAAgBuB;YAKnC,CAAC,CAACM,kBAAkBO,MAAM,kBACvB,KAACnC;gBAEGqB,SAASO;gBACTS,iBAAiB;eAFZtC,OAAO,gBAAgBuB;YAKnC,CAAC,CAACO,YAAYM,MAAM,kBAAI,KAACjC;gBAAoCmB,SAASQ;eAA/B9B,OAAO,SAASuB;;;AAGpE,GAAG;AAOH,OAAO,MAAMgB,eAAsC,CAAC,EAAEC,YAAY,EAAEC,YAAY,EAAE,iBAC9E,KAACV;QAAIpB,WAAWP,OAAOsC,QAAQ;QAAET,SAAQ;QAAcC,qBAAoB;kBACvE,cAAA,KAAChC;YAAayC,SAASH;YAAcI,SAASH;;OAEpD"}
|
|
@@ -4,33 +4,52 @@ import { observer } from 'mobx-react';
|
|
|
4
4
|
import { useDependencies } from '@servicetitan/react-ioc';
|
|
5
5
|
import { SvgStore } from '../stores/svg.store';
|
|
6
6
|
import * as Styles from './svg.module.less';
|
|
7
|
-
const SvgLine = ({ color, points, dashed })
|
|
8
|
-
|
|
7
|
+
const SvgLine = ({ color, points, dashed })=>/*#__PURE__*/ _jsx("path", {
|
|
8
|
+
className: Styles.line,
|
|
9
|
+
d: points.map(([px, py], ind)=>(ind === 0 ? 'M' : 'L') + `${px} ${py}`).join(' '),
|
|
10
|
+
fill: "transparent",
|
|
11
|
+
stroke: color,
|
|
12
|
+
strokeWidth: "3",
|
|
13
|
+
strokeDasharray: dashed ? '5,5' : undefined
|
|
14
|
+
});
|
|
15
|
+
export const SvgLines = observer(({ metrics })=>{
|
|
9
16
|
const [store] = useDependencies(SvgStore);
|
|
10
|
-
const lines = useMemo(()
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
17
|
+
const lines = useMemo(()=>metrics.map((m)=>{
|
|
18
|
+
var _m_opts;
|
|
19
|
+
const points = m.values.map((val, ind)=>[
|
|
20
|
+
store.periodX(ind),
|
|
21
|
+
store.periodY(m, ind)
|
|
22
|
+
]);
|
|
23
|
+
if (store.xOffset && points.length > 1) {
|
|
24
|
+
points[0][1] = (points[1][0] * points[0][1] - points[0][0] * points[1][1]) / (points[1][0] - points[0][0]);
|
|
25
|
+
points[0][0] = 0;
|
|
26
|
+
const l = points.length - 1;
|
|
27
|
+
const x1 = 100 - points[l - 1][0];
|
|
28
|
+
const x2 = 100 - points[l][0];
|
|
29
|
+
points[l][1] = (x1 * points[l][1] - x2 * points[l - 1][1]) / (x1 - x2);
|
|
30
|
+
points[l][0] = 100;
|
|
31
|
+
}
|
|
32
|
+
var _m_opts_dashed;
|
|
33
|
+
return {
|
|
34
|
+
id: m.id,
|
|
35
|
+
color: m.color,
|
|
36
|
+
points: points.map(([x, y])=>[
|
|
37
|
+
store.fpx(x),
|
|
38
|
+
store.fpy(y)
|
|
39
|
+
]),
|
|
40
|
+
dashed: (_m_opts_dashed = (_m_opts = m.opts) === null || _m_opts === void 0 ? void 0 : _m_opts.dashed) !== null && _m_opts_dashed !== void 0 ? _m_opts_dashed : false
|
|
41
|
+
};
|
|
42
|
+
}), [
|
|
43
|
+
store,
|
|
44
|
+
metrics
|
|
45
|
+
]);
|
|
46
|
+
return /*#__PURE__*/ _jsx("g", {
|
|
47
|
+
children: lines.map(({ id, color, points, dashed })=>/*#__PURE__*/ _jsx(SvgLine, {
|
|
48
|
+
color: color,
|
|
49
|
+
points: points,
|
|
50
|
+
dashed: dashed
|
|
51
|
+
}, id))
|
|
52
|
+
});
|
|
35
53
|
});
|
|
54
|
+
|
|
36
55
|
//# sourceMappingURL=svg-lines.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/charts/line-chart/components/svg-lines.tsx"],"sourcesContent":["import { useMemo, FC } from 'react';\nimport { observer } from 'mobx-react';\nimport { useDependencies } from '@servicetitan/react-ioc';\nimport { ChartMetric } from '../utils/internal-interfaces';\nimport { SvgStore } from '../stores/svg.store';\nimport * as Styles from './svg.module.less';\n\ninterface SvgLineProps {\n color: string;\n points: string[][];\n dashed: boolean;\n}\n\nconst SvgLine: FC<SvgLineProps> = ({ color, points, dashed }) => (\n <path\n className={Styles.line}\n d={points.map(([px, py], ind) => (ind === 0 ? 'M' : 'L') + `${px} ${py}`).join(' ')}\n fill=\"transparent\"\n stroke={color}\n strokeWidth=\"3\"\n strokeDasharray={dashed ? '5,5' : undefined}\n />\n);\n\ninterface SvgLinesProps {\n metrics: ChartMetric[];\n}\n\nexport const SvgLines: FC<SvgLinesProps> = observer(({ metrics }) => {\n const [store] = useDependencies(SvgStore);\n\n const lines = useMemo(\n () =>\n metrics.map(m => {\n const points = m.values.map((val, ind) => [\n store.periodX(ind),\n store.periodY(m, ind),\n ]);\n\n if (store.xOffset && points.length > 1) {\n points[0][1] =\n (points[1][0] * points[0][1] - points[0][0] * points[1][1]) /\n (points[1][0] - points[0][0]);\n points[0][0] = 0;\n\n const l = points.length - 1;\n const x1 = 100 - points[l - 1][0];\n const x2 = 100 - points[l][0];\n\n points[l][1] = (x1 * points[l][1] - x2 * points[l - 1][1]) / (x1 - x2);\n points[l][0] = 100;\n }\n\n return {\n id: m.id,\n color: m.color,\n points: points.map(([x, y]) => [store.fpx(x), store.fpy(y)]),\n dashed: m.opts?.dashed ?? false,\n };\n }),\n [store, metrics]\n );\n\n return (\n <g>\n {lines.map(({ id, color, points, dashed }) => (\n <SvgLine key={id} color={color} points={points} dashed={dashed} />\n ))}\n </g>\n );\n});\n"],"names":["useMemo","observer","useDependencies","SvgStore","Styles","SvgLine","color","points","dashed","path","className","line","d","map","px","py","ind","join","fill","stroke","strokeWidth","strokeDasharray","undefined","SvgLines","metrics","store","lines","m","values","val","periodX","periodY","xOffset","length","l","x1","x2","id","x","y","fpx","fpy","opts","g"],"mappings":";AAAA,SAASA,OAAO,QAAY,QAAQ;AACpC,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,eAAe,QAAQ,0BAA0B;AAE1D,SAASC,QAAQ,QAAQ,sBAAsB;AAC/C,YAAYC,YAAY,oBAAoB;AAQ5C,MAAMC,UAA4B,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAEC,MAAM,EAAE,iBACxD,KAACC;QACGC,WAAWN,OAAOO,IAAI;QACtBC,GAAGL,OAAOM,GAAG,CAAC,CAAC,CAACC,IAAIC,GAAG,EAAEC,MAAQ,AAACA,CAAAA,QAAQ,IAAI,MAAM,GAAE,IAAK,GAAGF,GAAG,CAAC,EAAEC,IAAI,EAAEE,IAAI,CAAC;QAC/EC,MAAK;QACLC,QAAQb;QACRc,aAAY;QACZC,iBAAiBb,SAAS,QAAQc;;AAQ1C,OAAO,MAAMC,WAA8BtB,SAAS,CAAC,EAAEuB,OAAO,EAAE;IAC5D,MAAM,CAACC,MAAM,GAAGvB,gBAAgBC;IAEhC,MAAMuB,QAAQ1B,QACV,IACIwB,QAAQX,GAAG,CAACc,CAAAA;gBAwBIA;YAvBZ,MAAMpB,SAASoB,EAAEC,MAAM,CAACf,GAAG,CAAC,CAACgB,KAAKb,MAAQ;oBACtCS,MAAMK,OAAO,CAACd;oBACdS,MAAMM,OAAO,CAACJ,GAAGX;iBACpB;YAED,IAAIS,MAAMO,OAAO,IAAIzB,OAAO0B,MAAM,GAAG,GAAG;gBACpC1B,MAAM,CAAC,EAAE,CAAC,EAAE,GACR,AAACA,CAAAA,MAAM,CAAC,EAAE,CAAC,EAAE,GAAGA,MAAM,CAAC,EAAE,CAAC,EAAE,GAAGA,MAAM,CAAC,EAAE,CAAC,EAAE,GAAGA,MAAM,CAAC,EAAE,CAAC,EAAE,AAAD,IACxDA,CAAAA,MAAM,CAAC,EAAE,CAAC,EAAE,GAAGA,MAAM,CAAC,EAAE,CAAC,EAAE,AAAD;gBAC/BA,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG;gBAEf,MAAM2B,IAAI3B,OAAO0B,MAAM,GAAG;gBAC1B,MAAME,KAAK,MAAM5B,MAAM,CAAC2B,IAAI,EAAE,CAAC,EAAE;gBACjC,MAAME,KAAK,MAAM7B,MAAM,CAAC2B,EAAE,CAAC,EAAE;gBAE7B3B,MAAM,CAAC2B,EAAE,CAAC,EAAE,GAAG,AAACC,CAAAA,KAAK5B,MAAM,CAAC2B,EAAE,CAAC,EAAE,GAAGE,KAAK7B,MAAM,CAAC2B,IAAI,EAAE,CAAC,EAAE,AAAD,IAAMC,CAAAA,KAAKC,EAAC;gBACpE7B,MAAM,CAAC2B,EAAE,CAAC,EAAE,GAAG;YACnB;gBAMYP;YAJZ,OAAO;gBACHU,IAAIV,EAAEU,EAAE;gBACR/B,OAAOqB,EAAErB,KAAK;gBACdC,QAAQA,OAAOM,GAAG,CAAC,CAAC,CAACyB,GAAGC,EAAE,GAAK;wBAACd,MAAMe,GAAG,CAACF;wBAAIb,MAAMgB,GAAG,CAACF;qBAAG;gBAC3D/B,QAAQmB,CAAAA,kBAAAA,UAAAA,EAAEe,IAAI,cAANf,8BAAAA,QAAQnB,MAAM,cAAdmB,4BAAAA,iBAAkB;YAC9B;QACJ,IACJ;QAACF;QAAOD;KAAQ;IAGpB,qBACI,KAACmB;kBACIjB,MAAMb,GAAG,CAAC,CAAC,EAAEwB,EAAE,EAAE/B,KAAK,EAAEC,MAAM,EAAEC,MAAM,EAAE,iBACrC,KAACH;gBAAiBC,OAAOA;gBAAOC,QAAQA;gBAAQC,QAAQA;eAA1C6B;;AAI9B,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/charts/line-chart/index.ts"],"sourcesContent":["export * from './utils/interfaces';\nexport * from './components/container';\n"],"names":[],"mappings":"AAAA,cAAc,qBAAqB;AACnC,cAAc,yBAAyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line-chart.store.d.ts","sourceRoot":"","sources":["../../../../../src/components/charts/line-chart/stores/line-chart.store.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,gBAAgB,EAGhB,eAAe,EACf,cAAc,EACd,mBAAmB,EACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAsEhF,qBACa,cAAc;IACX,MAAM,UAAS;IACf,OAAO,EAAE,gBAAgB,CAAoB;IAC7C,OAAO,EAAE,WAAW,EAAE,CAAM;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAM;IAChC,UAAU,EAAE,mBAAmB,CAAS;IAExC,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAE5B,YAAY,SAAM;;IAMtB,IAAI,
|
|
1
|
+
{"version":3,"file":"line-chart.store.d.ts","sourceRoot":"","sources":["../../../../../src/components/charts/line-chart/stores/line-chart.store.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,gBAAgB,EAGhB,eAAe,EACf,cAAc,EACd,mBAAmB,EACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAsEhF,qBACa,cAAc;IACX,MAAM,UAAS;IACf,OAAO,EAAE,gBAAgB,CAAoB;IAC7C,OAAO,EAAE,WAAW,EAAE,CAAM;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAM;IAChC,UAAU,EAAE,mBAAmB,CAAS;IAExC,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAE5B,YAAY,SAAM;;IAMtB,IAAI,GAAI,OAAO,cAAc,UAsCnC;IAEM,eAAe,GAAI,OAAO,MAAM,EAAE,WAAW,OAAO,UAM1D;CACL"}
|