@cloudtower/eagle 0.33.4 → 0.33.6

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 (103) hide show
  1. package/dist/__test__/mockLineChart.d.ts +4 -0
  2. package/dist/cjs/core/Button/index.js +1 -2
  3. package/dist/cjs/core/ConfigProvider/index.js +6 -6
  4. package/dist/cjs/core/Legend/index.js +128 -0
  5. package/dist/cjs/core/LineChart/LineChartActions.js +52 -0
  6. package/dist/cjs/core/LineChart/LineChartLegend.js +101 -0
  7. package/dist/cjs/core/LineChart/LineChartToolBar.js +56 -0
  8. package/dist/cjs/core/LineChart/Pointer.js +45 -0
  9. package/dist/cjs/core/LineChart/RenderChart.js +304 -0
  10. package/dist/cjs/core/LineChart/TooltipFormatter.js +70 -0
  11. package/dist/cjs/core/LineChart/index.js +66 -0
  12. package/dist/cjs/core/LineChart/styled.js +35 -0
  13. package/dist/cjs/core/LineChart/type.js +30 -0
  14. package/dist/cjs/core/LineChart/utils.js +394 -0
  15. package/dist/cjs/core/Loading/index.js +2 -2
  16. package/dist/cjs/core/Progress/progress.widgets.js +1 -1
  17. package/dist/cjs/core/Second/index.js +12 -4
  18. package/dist/cjs/core/Timeline/Timeline.widget.js +4 -4
  19. package/dist/cjs/core/Timeline/index.js +4 -4
  20. package/dist/cjs/core/index.js +9 -9
  21. package/dist/cjs/coreX/CheckPointList/index.js +7 -6
  22. package/dist/cjs/coreX/CircleLoading/index.js +4 -4
  23. package/dist/cjs/coreX/DateRangePicker/Calendar.js +1 -1
  24. package/dist/cjs/coreX/Dialogs/DeleteDialog/DeleteDialog.js +47 -0
  25. package/dist/cjs/coreX/Dialogs/RejectDialog/RejectDialog.js +87 -0
  26. package/dist/cjs/coreX/Dialogs/RejectDialog/RejectDialog.type.js +11 -0
  27. package/dist/cjs/coreX/Dialogs/SmallDialog.js +86 -0
  28. package/dist/cjs/index.js +231 -190
  29. package/dist/cjs/stats1.html +1 -1
  30. package/dist/cjs/utils/constants.js +1 -1
  31. package/dist/cjs/utils/tower.js +81 -0
  32. package/dist/components.css +4910 -4495
  33. package/dist/esm/core/Button/index.js +1 -2
  34. package/dist/esm/core/ConfigProvider/index.js +4 -4
  35. package/dist/esm/core/Legend/index.js +117 -0
  36. package/dist/esm/core/LineChart/LineChartActions.js +46 -0
  37. package/dist/esm/core/LineChart/LineChartLegend.js +91 -0
  38. package/dist/esm/core/LineChart/LineChartToolBar.js +50 -0
  39. package/dist/esm/core/LineChart/Pointer.js +38 -0
  40. package/dist/esm/core/LineChart/RenderChart.js +296 -0
  41. package/dist/esm/core/LineChart/TooltipFormatter.js +63 -0
  42. package/dist/esm/core/LineChart/index.js +57 -0
  43. package/dist/esm/core/LineChart/styled.js +25 -0
  44. package/dist/esm/core/LineChart/type.js +26 -0
  45. package/dist/esm/core/LineChart/utils.js +369 -0
  46. package/dist/esm/core/Loading/index.js +1 -1
  47. package/dist/esm/core/Progress/progress.widgets.js +1 -1
  48. package/dist/esm/core/Second/index.js +11 -3
  49. package/dist/esm/core/Timeline/Timeline.widget.js +3 -3
  50. package/dist/esm/core/Timeline/index.js +3 -3
  51. package/dist/esm/coreX/CheckPointList/index.js +7 -6
  52. package/dist/esm/coreX/CircleLoading/index.js +3 -3
  53. package/dist/esm/coreX/DateRangePicker/Calendar.js +1 -1
  54. package/dist/esm/coreX/Dialogs/DeleteDialog/DeleteDialog.js +41 -0
  55. package/dist/esm/coreX/Dialogs/RejectDialog/RejectDialog.js +81 -0
  56. package/dist/esm/coreX/Dialogs/RejectDialog/RejectDialog.type.js +9 -0
  57. package/dist/esm/coreX/Dialogs/SmallDialog.js +80 -0
  58. package/dist/esm/index.js +11 -2
  59. package/dist/esm/stats1.html +1 -1
  60. package/dist/esm/utils/constants.js +1 -1
  61. package/dist/esm/utils/tower.js +77 -1
  62. package/dist/linaria.merged.scss +7528 -0
  63. package/dist/src/antd.d.ts +1 -1
  64. package/dist/src/core/ConfigProvider/index.d.ts +2 -2
  65. package/dist/src/core/Legend/index.d.ts +1 -1
  66. package/dist/src/core/LineChart/LineChartActions.d.ts +7 -0
  67. package/dist/src/core/LineChart/LineChartLegend.d.ts +18 -0
  68. package/dist/src/core/LineChart/LineChartToolBar.d.ts +20 -0
  69. package/dist/src/core/LineChart/Pointer.d.ts +6 -0
  70. package/dist/src/core/LineChart/RenderChart.d.ts +45 -0
  71. package/dist/src/core/LineChart/TooltipFormatter.d.ts +10 -0
  72. package/dist/src/core/LineChart/__test__/h5_css.test.d.ts +1 -0
  73. package/dist/src/core/LineChart/index.d.ts +8 -0
  74. package/dist/src/core/LineChart/styled.d.ts +12 -0
  75. package/dist/src/core/LineChart/type.d.ts +191 -0
  76. package/dist/src/core/LineChart/utils.d.ts +56 -0
  77. package/dist/src/core/Metric/metric.d.ts +1 -1
  78. package/dist/src/core/Timeline/Timeline.type.d.ts +2 -2
  79. package/dist/src/core/Units/units.type.d.ts +66 -0
  80. package/dist/src/core/index.d.ts +6 -1
  81. package/dist/src/coreX/CheckPointList/checkpointlist.type.d.ts +4 -1
  82. package/dist/src/coreX/CheckPointList/index.d.ts +1 -1
  83. package/dist/src/coreX/Dialogs/DeleteDialog/DeleteDialog.d.ts +3 -0
  84. package/dist/src/coreX/Dialogs/DeleteDialog/DeleteDialog.type.d.ts +19 -0
  85. package/dist/src/coreX/Dialogs/DeleteDialog/index.d.ts +2 -0
  86. package/dist/src/coreX/Dialogs/RejectDialog/RejectDialog.d.ts +3 -0
  87. package/dist/src/coreX/Dialogs/RejectDialog/RejectDialog.type.d.ts +59 -0
  88. package/dist/src/coreX/Dialogs/RejectDialog/index.d.ts +2 -0
  89. package/dist/src/coreX/Dialogs/SmallDialog.d.ts +31 -0
  90. package/dist/src/coreX/Dialogs/index.d.ts +3 -0
  91. package/dist/src/coreX/index.d.ts +2 -1
  92. package/dist/src/utils/tower.d.ts +12 -0
  93. package/dist/stories/docs/core/LineChart.stories.d.ts +16 -0
  94. package/dist/stories/docs/core/Second.stories.d.ts +57 -22
  95. package/dist/stories/docs/core/Table.stories.d.ts +6 -0
  96. package/dist/stories/docs/core/Timeline.stories.d.ts +2 -2
  97. package/dist/stories/docs/coreX/CheckPointList.stories.d.ts +11 -1
  98. package/dist/stories/docs/coreX/Dialogs/DeleteDialog.stories.d.ts +37 -0
  99. package/dist/stories/docs/coreX/Dialogs/RejectDialog.stories.d.ts +89 -0
  100. package/dist/stories/docs/coreX/Show.stories.d.ts +2 -2
  101. package/dist/style.css +4969 -4605
  102. package/dist/variables.scss +2 -0
  103. package/package.json +6 -7
@@ -30,7 +30,6 @@ var __objRest = (source, exclude) => {
30
30
  return target;
31
31
  };
32
32
  const ButtonStyle = "E_b1wx3t3t";
33
- const NoPadding = "E_n7k2c6r";
34
33
  const isAntdButtonTypes = type => {
35
34
  return Boolean(type && ["default", "primary", "ghost", "dashed", "link", "text"].includes(type));
36
35
  };
@@ -55,7 +54,7 @@ const Button = React__default.forwardRef((props, ref) => {
55
54
  const onlyIcon = !children && (prefixIcon || suffixIcon);
56
55
  return /* @__PURE__ */React__default.createElement(Button$2, __spreadValues({
57
56
  ref,
58
- className: cs(className, ButtonStyle, type === "link" && NoPadding, size === "large" && Typo.Label.l1_regular_title, size === "middle" && Typo.Label.l2_regular_title, size === "small" && Typo.Label.l3_regular_title, type && `ant-btn-${type}`, onlyIcon && "ant-btn-icon-only"),
57
+ className: cs(className, ButtonStyle, size === "large" && Typo.Label.l1_regular_title, size === "middle" && Typo.Label.l2_regular_title, size === "small" && Typo.Label.l3_regular_title, type && `ant-btn-${type}`, onlyIcon && "ant-btn-icon-only"),
59
58
  type: isAntdButtonTypes(type) ? type : void 0,
60
59
  onMouseEnter: e => {
61
60
  onMouseEnter == null ? void 0 : onMouseEnter(e);
@@ -1,13 +1,13 @@
1
1
  import useParrotTranslation from '../../hooks/useParrotTranslation.js';
2
2
  import { ConfigProvider as ConfigProvider$2 } from 'antd';
3
- import { ConfigProvider as ConfigProvider$1 } from 'antd5';
4
- import React__default, { useEffect } from 'react';
5
3
  import enUS from 'antd/lib/locale/en_US';
6
4
  import zhCN from 'antd/lib/locale/zh_CN';
5
+ import { ConfigProvider as ConfigProvider$1 } from 'antd5';
7
6
  import antd5enUS from 'antd5/lib/locale/en_US';
8
7
  import antd5zhCN from 'antd5/lib/locale/zh_CN';
9
- import moment from 'moment';
10
8
  import dayjs from 'dayjs';
9
+ import moment from 'moment';
10
+ import React__default, { useEffect } from 'react';
11
11
 
12
12
  var __defProp = Object.defineProperty;
13
13
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -38,7 +38,7 @@ const ConfigProvider = ({
38
38
  };
39
39
  i18n.on("languageChanged", adjustDateLocale);
40
40
  adjustDateLocale(i18n.language);
41
- }, []);
41
+ }, [i18n]);
42
42
  return /* @__PURE__ */ React__default.createElement(
43
43
  ConfigProvider$1,
44
44
  __spreadValues({
@@ -0,0 +1,117 @@
1
+ import { Loading8GradientBlueIcon } from '@cloudtower/icons-react';
2
+ import { styled } from '@linaria/react';
3
+ import Icon from '../Icon/index.js';
4
+ import { Typo } from '../Typo/index.js';
5
+ import OverflowTooltip from '../../coreX/OverflowTooltip/index.js';
6
+ import cs from 'classnames';
7
+ import React__default from 'react';
8
+
9
+ var __defProp = Object.defineProperty;
10
+ var __defProps = Object.defineProperties;
11
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
12
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
15
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value
20
+ }) : obj[key] = value;
21
+ var __spreadValues = (a, b) => {
22
+ for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
23
+ if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) {
24
+ if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
25
+ }
26
+ return a;
27
+ };
28
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
29
+ var __objRest = (source, exclude) => {
30
+ var target = {};
31
+ for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop];
32
+ if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) {
33
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop];
34
+ }
35
+ return target;
36
+ };
37
+ const LegendPresetColors = ["blue", "red", "yellow", "green", "gray", "purple"];
38
+ const LegendStyle = "E_l1ucdodl";
39
+ const StatusCodeCircle = /*#__PURE__*/styled('i')({
40
+ name: "StatusCodeCircle",
41
+ class: "E_s1qj66nc",
42
+ propsAsIs: false
43
+ });
44
+ const StatusCodeSquare = /*#__PURE__*/styled('i')({
45
+ name: "StatusCodeSquare",
46
+ class: "E_s5x1boq",
47
+ propsAsIs: false
48
+ });
49
+ const LegendIcon = ({
50
+ shape
51
+ }) => {
52
+ switch (shape) {
53
+ case "loading":
54
+ return /* @__PURE__ */React__default.createElement(Icon, {
55
+ className: "ui-kit-status-legend-icon ui-kit-status-legend-icon-loading",
56
+ iconWidth: 8,
57
+ iconHeight: 8,
58
+ isRotate: true,
59
+ src: Loading8GradientBlueIcon
60
+ });
61
+ case "square":
62
+ return /* @__PURE__ */React__default.createElement(StatusCodeSquare, {
63
+ className: "ui-kit-status-legend-icon"
64
+ });
65
+ case "circle":
66
+ return /* @__PURE__ */React__default.createElement(StatusCodeCircle, {
67
+ className: "ui-kit-status-legend-icon"
68
+ });
69
+ }
70
+ };
71
+ const ColorMap = {
72
+ success: "green",
73
+ danger: "red",
74
+ warning: "yellow"
75
+ };
76
+ const Legend = _a => {
77
+ var _b = _a,
78
+ {
79
+ label,
80
+ color = "gray",
81
+ className,
82
+ hoverable = false,
83
+ children,
84
+ number,
85
+ shape = "circle",
86
+ onTintMode = false
87
+ } = _b,
88
+ props = __objRest(_b, ["label", "color", "className", "hoverable", "children", "number", "shape", "onTintMode"]);
89
+ const computedColor = ColorMap[color] || color;
90
+ const content = /* @__PURE__ */React__default.createElement(React__default.Fragment, null, label || children, !!number && /* @__PURE__ */React__default.createElement("span", {
91
+ className: cs("E_c1xm185", "ui-kit-status-legend-number", {
92
+ "on-tint": onTintMode
93
+ })
94
+ }, number));
95
+ return /* @__PURE__ */React__default.createElement("div", __spreadProps(__spreadValues({}, props), {
96
+ className: cs(className, LegendStyle, Typo.Label.l4_regular, "ui-kit-status-legend", {
97
+ [`eagle-legend-${computedColor}`]: shape !== "loading" && LegendPresetColors.includes(computedColor),
98
+ "tag-hover": hoverable,
99
+ "on-tint": onTintMode
100
+ }),
101
+ color: computedColor,
102
+ onClick: e => {
103
+ if (props.onClick) {
104
+ props.onClick(e, props.key);
105
+ }
106
+ }
107
+ }), /* @__PURE__ */React__default.createElement(LegendIcon, {
108
+ shape
109
+ }), /* @__PURE__ */React__default.createElement(OverflowTooltip, {
110
+ content,
111
+ tooltip: content,
112
+ className: "E_c1x5l5qc"
113
+ }));
114
+ };
115
+ var Legend$1 = Legend;
116
+
117
+ export { LegendIcon, LegendPresetColors, Legend$1 as default };
@@ -0,0 +1,46 @@
1
+ import { MoreEllipsis316BoldSecondaryIcon } from '@cloudtower/icons-react';
2
+ import Button from '../Button/index.js';
3
+ import React__default from 'react';
4
+ import Icon from '../Icon/index.js';
5
+ import { Antd5Dropdown } from '../Antd5Dropdown/Antd5Dropdown.js';
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value
16
+ }) : obj[key] = value;
17
+ var __spreadValues = (a, b) => {
18
+ for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
19
+ if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
21
+ }
22
+ return a;
23
+ };
24
+ const actionStyle = "E_a9y3flr";
25
+ const actionStyleLabel = "E_a1njc627";
26
+ const LineChartActions = props => {
27
+ const {
28
+ label,
29
+ dropdownProps
30
+ } = props;
31
+ return /* @__PURE__ */React__default.createElement("div", {
32
+ className: "metric-extra"
33
+ }, /* @__PURE__ */React__default.createElement("div", {
34
+ className: actionStyleLabel
35
+ }, label), dropdownProps && /* @__PURE__ */React__default.createElement(Antd5Dropdown, __spreadValues({}, dropdownProps), /* @__PURE__ */React__default.createElement(Button, {
36
+ size: "small",
37
+ type: "tertiary",
38
+ className: actionStyle,
39
+ prefixIcon: /* @__PURE__ */React__default.createElement(Icon, {
40
+ src: MoreEllipsis316BoldSecondaryIcon
41
+ })
42
+ })));
43
+ };
44
+ var LineChartActions$1 = LineChartActions;
45
+
46
+ export { LineChartActions$1 as default };
@@ -0,0 +1,91 @@
1
+ import { ArrowChevronDown16SecondaryIcon, ArrowChevronDown16BlueIcon, ArrowChevronUp16BlueIcon } from '@cloudtower/icons-react';
2
+ import Icon from '../Icon/index.js';
3
+ import { LineChartColorBlockStyle, LegendStyle, ExtraResource, LegendItemsStyleDropdown, LegendItemsStyle } from './styled.js';
4
+ import { ExtraOverflow } from '../Overflow/index.js';
5
+ import Truncate from '../Truncate/index.js';
6
+ import { Menu } from 'antd';
7
+ import cs from 'classnames';
8
+ import React__default from 'react';
9
+ import { Antd5Dropdown } from '../Antd5Dropdown/Antd5Dropdown.js';
10
+
11
+ const LineChartColorBlock = ({ background, borderd = false }) => /* @__PURE__ */ React__default.createElement(
12
+ "div",
13
+ {
14
+ className: cs(
15
+ LineChartColorBlockStyle,
16
+ "color-block",
17
+ borderd && "borderd"
18
+ ),
19
+ style: { background }
20
+ }
21
+ );
22
+ const LineChartLegend = (props) => {
23
+ const { deselected, onClick, legends, onHover, hovering, hovereringSelf } = props;
24
+ const [isDropdownOpen, setIsDropdownOpen] = React__default.useState(false);
25
+ return /* @__PURE__ */ React__default.createElement(
26
+ ExtraOverflow,
27
+ {
28
+ className: LegendStyle,
29
+ extraEl: (end) => /* @__PURE__ */ React__default.createElement(
30
+ Antd5Dropdown,
31
+ {
32
+ overlayClassName: ExtraResource,
33
+ trigger: ["click"],
34
+ onVisibleChange: setIsDropdownOpen,
35
+ overlay: /* @__PURE__ */ React__default.createElement(Menu, null, legends.slice(end).map((legend, idx) => {
36
+ return /* @__PURE__ */ React__default.createElement(
37
+ Menu.Item,
38
+ {
39
+ className: cs(
40
+ LegendItemsStyleDropdown,
41
+ deselected.includes(legend.id) && "deselected",
42
+ hovering.includes(legend.id) && "hovering",
43
+ hovereringSelf.includes(legend.id) && "hoverering-self"
44
+ ),
45
+ key: legend.id,
46
+ onClick: () => onClick(legend.id),
47
+ onMouseEnter: () => onHover("enter", legend.id),
48
+ onMouseLeave: () => onHover("leave", legend.id)
49
+ },
50
+ /* @__PURE__ */ React__default.createElement(LineChartColorBlock, { background: legend.color }),
51
+ /* @__PURE__ */ React__default.createElement("span", null, legend.name)
52
+ );
53
+ }))
54
+ },
55
+ /* @__PURE__ */ React__default.createElement(
56
+ Icon,
57
+ {
58
+ alt: "arrowChevronDownSmall16Secondary",
59
+ className: "dropdown-trigger",
60
+ src: ArrowChevronDown16SecondaryIcon,
61
+ hoverSrc: ArrowChevronDown16BlueIcon,
62
+ activeSrc: ArrowChevronUp16BlueIcon,
63
+ active: isDropdownOpen
64
+ }
65
+ )
66
+ ),
67
+ els: legends.map((legend) => {
68
+ return /* @__PURE__ */ React__default.createElement(
69
+ "div",
70
+ {
71
+ className: cs(
72
+ LegendItemsStyle,
73
+ deselected.includes(legend.id) && "deselected",
74
+ hovering.includes(legend.id) && "hovering",
75
+ hovereringSelf.includes(legend.id) && "hoverering-self"
76
+ ),
77
+ key: legend.id,
78
+ onMouseEnter: () => onHover("enter", legend.id),
79
+ onMouseLeave: () => onHover("leave", legend.id),
80
+ onClick: () => onClick(legend.id)
81
+ },
82
+ /* @__PURE__ */ React__default.createElement(LineChartColorBlock, { background: legend.color }),
83
+ /* @__PURE__ */ React__default.createElement("span", null, /* @__PURE__ */ React__default.createElement(Truncate, { text: legend.name, len: 50, backLen: 20 }))
84
+ );
85
+ })
86
+ }
87
+ );
88
+ };
89
+ var LineChartLegend$1 = LineChartLegend;
90
+
91
+ export { LineChartColorBlock, LineChartLegend$1 as default };
@@ -0,0 +1,50 @@
1
+ import LineChartActions from './LineChartActions.js';
2
+ import LineChartLegend from './LineChartLegend.js';
3
+ import React__default from 'react';
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ const LineChartToolBar = ({
22
+ showLegend,
23
+ streams,
24
+ metricName,
25
+ deselected,
26
+ hovering,
27
+ onLegendClick,
28
+ onLegendHover,
29
+ legends,
30
+ actionsProps,
31
+ dropdownProps,
32
+ hoveringSelf
33
+ }) => {
34
+ return /* @__PURE__ */ React__default.createElement("div", { className: "metric-toolbar" }, showLegend && /* @__PURE__ */ React__default.createElement(
35
+ LineChartLegend,
36
+ {
37
+ streams,
38
+ metricName,
39
+ deselected,
40
+ hovering,
41
+ onClick: onLegendClick,
42
+ legends,
43
+ onHover: onLegendHover,
44
+ hovereringSelf: hoveringSelf
45
+ }
46
+ ), (actionsProps == null ? void 0 : actionsProps.show) && /* @__PURE__ */ React__default.createElement(LineChartActions, __spreadValues({ dropdownProps }, actionsProps)));
47
+ };
48
+ var LineChartToolBar$1 = LineChartToolBar;
49
+
50
+ export { LineChartToolBar$1 as default };
@@ -0,0 +1,38 @@
1
+ import { useKitSelector } from '../KitStoreProvider/index.js';
2
+ import _ from 'lodash';
3
+ import React__default from 'react';
4
+
5
+ const Pointer = ({ uuid = "", metricWidth }) => {
6
+ const pointers = useKitSelector(
7
+ (state) => _.get(state, "chart.pointers")
8
+ );
9
+ if (!(pointers == null ? void 0 : pointers[uuid])) {
10
+ return null;
11
+ }
12
+ const { left = 0, text } = pointers[uuid];
13
+ let dis = -99999999;
14
+ const threshold = 50;
15
+ if (metricWidth) {
16
+ if (left <= threshold) {
17
+ dis = threshold;
18
+ } else if (left >= metricWidth - threshold) {
19
+ dis = metricWidth - threshold;
20
+ } else {
21
+ dis = left;
22
+ }
23
+ }
24
+ return /* @__PURE__ */ React__default.createElement(
25
+ "div",
26
+ {
27
+ style: {
28
+ transform: `translate(${dis}px)`,
29
+ position: "absolute",
30
+ whiteSpace: "nowrap"
31
+ }
32
+ },
33
+ /* @__PURE__ */ React__default.createElement("div", { className: "pointer-wrapper" }, text)
34
+ );
35
+ };
36
+ var Pointer$1 = Pointer;
37
+
38
+ export { Pointer$1 as default };
@@ -0,0 +1,296 @@
1
+ import { useKitDispatch } from '../KitStoreProvider/index.js';
2
+ import LineChartLegend from './LineChartLegend.js';
3
+ import { MetricLegendTabStyle } from './styled.js';
4
+ import TooltipFormatter from './TooltipFormatter.js';
5
+ import { ILineChartGraphType } from './type.js';
6
+ import { convertLineChartDataStruct, getYAxisDomain, getLineChartXAxisDomain, lineChartXaxisCal, lineChartYaxisTickFormatter, lineChartTickFormatter } from './utils.js';
7
+ import useParrotTranslation from '../../hooks/useParrotTranslation.js';
8
+ import { Empty } from 'antd';
9
+ import cs from 'classnames';
10
+ import dayjs from 'dayjs';
11
+ import React__default, { useState, useMemo, useCallback } from 'react';
12
+ import { ResponsiveContainer, AreaChart, XAxis, YAxis, Tooltip, Area } from 'recharts';
13
+ import LineChartToolBar from './LineChartToolBar.js';
14
+ import { ChartActions } from '../../store/chart.js';
15
+
16
+ var __defProp = Object.defineProperty;
17
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
18
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
19
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
20
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
21
+ var __spreadValues = (a, b) => {
22
+ for (var prop in b || (b = {}))
23
+ if (__hasOwnProp.call(b, prop))
24
+ __defNormalProp(a, prop, b[prop]);
25
+ if (__getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(b)) {
27
+ if (__propIsEnum.call(b, prop))
28
+ __defNormalProp(a, prop, b[prop]);
29
+ }
30
+ return a;
31
+ };
32
+ const RenderChart = (props) => {
33
+ const {
34
+ metricName,
35
+ showLegend,
36
+ syncId,
37
+ showXAxis,
38
+ yAxisAlign,
39
+ height,
40
+ type,
41
+ mode = "legend",
42
+ dropdownProps,
43
+ onLabelsChange,
44
+ metric,
45
+ yAxisProps,
46
+ xAxisProps,
47
+ actionsProps,
48
+ tooltipProps,
49
+ width,
50
+ dateRange = [dayjs(), dayjs()],
51
+ emptyText,
52
+ emptyIcon
53
+ } = props;
54
+ const { t } = useParrotTranslation();
55
+ const dispatch = useKitDispatch();
56
+ const [deselected, setDeselected] = useState([]);
57
+ const [hovering, setHovering] = useState([]);
58
+ const [hoveringSelf, setHoveringSelf] = useState([]);
59
+ const [tempDeselected, setTempDeselected] = useState([]);
60
+ const streams = useMemo(() => metric.sample_streams, [metric]);
61
+ const legends = useMemo(() => {
62
+ return metric.sample_streams.map((stream) => stream.legend);
63
+ }, [metric.sample_streams]);
64
+ const areaChartData = useMemo(
65
+ () => convertLineChartDataStruct(streams.map((stream) => stream.points)),
66
+ [streams]
67
+ );
68
+ const yDomain = getYAxisDomain(areaChartData, type, metric.unit);
69
+ const xDomain = getLineChartXAxisDomain(dateRange, dateRange[1].valueOf());
70
+ const xTicks = lineChartXaxisCal(xDomain[1], dateRange, width);
71
+ const onLegendClick = useCallback(
72
+ (id) => {
73
+ setDeselected((prev) => {
74
+ var _a;
75
+ const currentDeselected = tempDeselected.length ? tempDeselected : prev;
76
+ if (currentDeselected.length === 0) {
77
+ return streams.map((stream) => stream.legend.id).filter((legendId) => legendId !== id);
78
+ }
79
+ if (currentDeselected.length === streams.length - 1) {
80
+ const highlightedId = (_a = streams.find(
81
+ (stream) => !currentDeselected.includes(stream.legend.id)
82
+ )) == null ? void 0 : _a.legend.id;
83
+ if (id === highlightedId) {
84
+ return [];
85
+ } else {
86
+ return currentDeselected.filter(
87
+ (deselectedId) => deselectedId !== id
88
+ );
89
+ }
90
+ }
91
+ const isHighlighted = !currentDeselected.includes(id);
92
+ if (isHighlighted) {
93
+ return [...currentDeselected, id];
94
+ } else {
95
+ return currentDeselected.filter(
96
+ (deselectedId) => deselectedId !== id
97
+ );
98
+ }
99
+ });
100
+ if (tempDeselected.length) {
101
+ setTempDeselected([]);
102
+ }
103
+ },
104
+ [streams, tempDeselected]
105
+ );
106
+ const onLegendHover = useCallback(
107
+ (method, id) => {
108
+ if (method === "enter") {
109
+ if (deselected.length) {
110
+ setTempDeselected(deselected);
111
+ if (deselected.includes(id)) {
112
+ setDeselected(
113
+ streams.map((stream) => stream.legend.id).filter(
114
+ (legendId) => legendId !== id && deselected.includes(legendId)
115
+ )
116
+ );
117
+ setHovering(
118
+ streams.map((stream) => stream.legend.id).filter((legendId) => legendId === id)
119
+ );
120
+ setHoveringSelf(
121
+ streams.map((stream) => stream.legend.id).filter((legendId) => legendId === id)
122
+ );
123
+ } else {
124
+ setDeselected([]);
125
+ setHovering(
126
+ streams.map((stream) => stream.legend.id).filter((legendId) => legendId !== id)
127
+ );
128
+ }
129
+ } else {
130
+ setHovering(
131
+ streams.map((stream) => stream.legend.id).filter((legendId) => legendId !== id)
132
+ );
133
+ }
134
+ } else {
135
+ if (tempDeselected.length) {
136
+ setDeselected(tempDeselected);
137
+ setTempDeselected([]);
138
+ }
139
+ setHovering([]);
140
+ setHoveringSelf([]);
141
+ }
142
+ },
143
+ [deselected, streams, tempDeselected]
144
+ );
145
+ const hidePointer = useCallback(() => {
146
+ dispatch({
147
+ type: ChartActions.SET_POINTER,
148
+ payload: { visible: false, uuid: syncId }
149
+ });
150
+ }, [dispatch, syncId]);
151
+ const handleMouseMove = useCallback(
152
+ (e) => {
153
+ var _a;
154
+ if (e.isTooltipActive) {
155
+ const { chartX, activePayload } = e;
156
+ if (!((_a = activePayload == null ? void 0 : activePayload[0]) == null ? void 0 : _a.payload)) {
157
+ return;
158
+ }
159
+ dispatch({
160
+ type: ChartActions.SET_POINTER,
161
+ payload: {
162
+ uuid: syncId,
163
+ visible: true,
164
+ left: chartX,
165
+ text: dayjs(Number(activePayload[0].payload.t)).format(
166
+ "MM/DD HH:mm:ss"
167
+ ),
168
+ value: activePayload[0].payload.v
169
+ }
170
+ });
171
+ }
172
+ },
173
+ [dispatch, syncId]
174
+ );
175
+ if (!(streams == null ? void 0 : streams.length) || streams.every((stream) => {
176
+ var _a;
177
+ return !((_a = stream.points) == null ? void 0 : _a.length);
178
+ })) {
179
+ return /* @__PURE__ */ React__default.createElement("div", { className: MetricLegendTabStyle }, /* @__PURE__ */ React__default.createElement("div", { className: "name-toolbar" }, /* @__PURE__ */ React__default.createElement(
180
+ LineChartLegend,
181
+ {
182
+ streams,
183
+ metricName,
184
+ deselected,
185
+ hovering,
186
+ hovereringSelf: hoveringSelf,
187
+ onClick: onLegendClick,
188
+ onHover: onLegendHover,
189
+ legends
190
+ }
191
+ )), /* @__PURE__ */ React__default.createElement("div", { className: cs("content", mode === "single" && "single-content") }, /* @__PURE__ */ React__default.createElement(
192
+ Empty,
193
+ {
194
+ description: emptyText || t("metric.empty"),
195
+ image: emptyIcon ? emptyIcon : null,
196
+ imageStyle: emptyIcon ? {} : { display: "none" }
197
+ }
198
+ )));
199
+ }
200
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
201
+ LineChartToolBar,
202
+ {
203
+ showLegend,
204
+ streams,
205
+ metricName,
206
+ deselected,
207
+ hovering,
208
+ hoveringSelf,
209
+ onLegendClick,
210
+ legends,
211
+ actionsProps,
212
+ dropdownProps,
213
+ onLegendHover
214
+ }
215
+ ), /* @__PURE__ */ React__default.createElement(ResponsiveContainer, { height }, /* @__PURE__ */ React__default.createElement(
216
+ AreaChart,
217
+ {
218
+ style: { backgroundColor: "white" },
219
+ margin: showLegend ? { top: 10, left: -20, right: 10, bottom: 0 } : { top: 20, left: -20, right: 10, bottom: 5 },
220
+ data: areaChartData,
221
+ syncId,
222
+ onMouseLeave: hidePointer,
223
+ onMouseMove: handleMouseMove
224
+ },
225
+ /* @__PURE__ */ React__default.createElement(
226
+ XAxis,
227
+ __spreadValues({
228
+ hide: !showXAxis,
229
+ dataKey: "t",
230
+ axisLine: false,
231
+ tickLine: false,
232
+ type: "number",
233
+ ticks: xTicks,
234
+ domain: xDomain,
235
+ tickFormatter: (tick) => lineChartTickFormatter(tick, dateRange)
236
+ }, xAxisProps)
237
+ ),
238
+ /* @__PURE__ */ React__default.createElement(
239
+ YAxis,
240
+ __spreadValues({
241
+ width: 200,
242
+ mirror: true,
243
+ axisLine: false,
244
+ tickLine: false,
245
+ allowDecimals: false,
246
+ domain: yDomain,
247
+ orientation: yAxisAlign,
248
+ tick: {
249
+ dx: 20,
250
+ dy: 16
251
+ },
252
+ ticks: [yDomain[1] / 2, yDomain[1]],
253
+ tickFormatter: (tick) => lineChartYaxisTickFormatter(tick, metric.unit)
254
+ }, yAxisProps)
255
+ ),
256
+ /* @__PURE__ */ React__default.createElement(
257
+ Tooltip,
258
+ __spreadValues({
259
+ content: tooltipProps.format && /* @__PURE__ */ React__default.createElement(
260
+ TooltipFormatter,
261
+ {
262
+ deselected,
263
+ legends,
264
+ format: tooltipProps.format
265
+ }
266
+ )
267
+ }, tooltipProps)
268
+ ),
269
+ streams.map((item, index) => {
270
+ if (deselected.includes(item.legend.id)) {
271
+ return null;
272
+ }
273
+ return /* @__PURE__ */ React__default.createElement(
274
+ Area,
275
+ {
276
+ key: index,
277
+ dataKey: `v${index}`,
278
+ stackId: type === ILineChartGraphType.Stack ? "stack" : void 0,
279
+ stroke: item.legend.stroke ? `${item.legend.color}1A` : item.legend.color,
280
+ fill: item.legend.fill,
281
+ isAnimationActive: false,
282
+ activeDot: {
283
+ stroke: item.legend.color,
284
+ r: 4,
285
+ strokeWidth: 2,
286
+ fill: "white"
287
+ },
288
+ opacity: hovering.includes(item.legend.id) ? 0.3 : 1
289
+ }
290
+ );
291
+ })
292
+ )));
293
+ };
294
+ var RenderChart$1 = RenderChart;
295
+
296
+ export { RenderChart$1 as default };