@tsingroc/tsingroc-components 4.8.1 → 5.0.0-alpha.11

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 (130) hide show
  1. package/package.json +28 -27
  2. package/src/components/Auth.tsx +6 -1
  3. package/src/components/AutoResizedECharts.tsx +70 -0
  4. package/src/components/ConnectedECharts.tsx +62 -0
  5. package/src/components/ECharts.tsx +206 -0
  6. package/src/components/LeftAlignedECharts.tsx +190 -0
  7. package/src/deckgl/TiandituLayer.ts +1 -1
  8. package/src/index.ts +25 -0
  9. package/src/types.d.ts +5 -0
  10. package/src/utils/debug.ts +39 -0
  11. package/src/utils/math.ts +16 -0
  12. package/src/utils/mock.ts +69 -0
  13. package/src/utils/startOfQuarter.ts +6 -0
  14. package/dist/components/Auth.d.ts +0 -310
  15. package/dist/components/Auth.js +0 -268
  16. package/dist/components/Auth.js.map +0 -1
  17. package/dist/components/Calendar.d.ts +0 -50
  18. package/dist/components/Calendar.js +0 -91
  19. package/dist/components/Calendar.js.map +0 -1
  20. package/dist/components/CircularProgress.d.ts +0 -21
  21. package/dist/components/CircularProgress.js +0 -15
  22. package/dist/components/CircularProgress.js.map +0 -1
  23. package/dist/components/Header.d.ts +0 -67
  24. package/dist/components/Header.js +0 -45
  25. package/dist/components/Header.js.map +0 -1
  26. package/dist/components/ImageBackground.d.ts +0 -32
  27. package/dist/components/ImageBackground.js +0 -18
  28. package/dist/components/ImageBackground.js.map +0 -1
  29. package/dist/components/IndicatorLight.d.ts +0 -44
  30. package/dist/components/IndicatorLight.js +0 -59
  31. package/dist/components/IndicatorLight.js.map +0 -1
  32. package/dist/components/LineChartEditor.d.ts +0 -74
  33. package/dist/components/LineChartEditor.js +0 -338
  34. package/dist/components/LineChartEditor.js.map +0 -1
  35. package/dist/components/LineChartTable.d.ts +0 -38
  36. package/dist/components/LineChartTable.js +0 -197
  37. package/dist/components/LineChartTable.js.map +0 -1
  38. package/dist/components/LinkedECharts.d.ts +0 -17
  39. package/dist/components/LinkedECharts.js +0 -34
  40. package/dist/components/LinkedECharts.js.map +0 -1
  41. package/dist/components/LinkedLineChart.d.ts +0 -45
  42. package/dist/components/LinkedLineChart.js +0 -71
  43. package/dist/components/LinkedLineChart.js.map +0 -1
  44. package/dist/components/QuickDateRangePicker.d.ts +0 -30
  45. package/dist/components/QuickDateRangePicker.js +0 -36
  46. package/dist/components/QuickDateRangePicker.js.map +0 -1
  47. package/dist/components/SegmentedButtons.d.ts +0 -22
  48. package/dist/components/SegmentedButtons.js +0 -31
  49. package/dist/components/SegmentedButtons.js.map +0 -1
  50. package/dist/components/Sidebar.d.ts +0 -79
  51. package/dist/components/Sidebar.js +0 -125
  52. package/dist/components/Sidebar.js.map +0 -1
  53. package/dist/components/StrictECharts.d.ts +0 -47
  54. package/dist/components/StrictECharts.js +0 -2
  55. package/dist/components/StrictECharts.js.map +0 -1
  56. package/dist/components/TsingrocDatePicker.d.ts +0 -38
  57. package/dist/components/TsingrocDatePicker.js +0 -36
  58. package/dist/components/TsingrocDatePicker.js.map +0 -1
  59. package/dist/components/TsingrocTheme.d.ts +0 -14
  60. package/dist/components/TsingrocTheme.js +0 -32
  61. package/dist/components/TsingrocTheme.js.map +0 -1
  62. package/dist/components/UserButton.d.ts +0 -42
  63. package/dist/components/UserButton.js +0 -77
  64. package/dist/components/UserButton.js.map +0 -1
  65. package/dist/components/VerticalColorLegend.d.ts +0 -7
  66. package/dist/components/VerticalColorLegend.js +0 -38
  67. package/dist/components/VerticalColorLegend.js.map +0 -1
  68. package/dist/components/WeatherMap.d.ts +0 -18
  69. package/dist/components/WeatherMap.js +0 -368
  70. package/dist/components/WeatherMap.js.map +0 -1
  71. package/dist/deckgl/TiandituLayer.d.ts +0 -13
  72. package/dist/deckgl/TiandituLayer.js +0 -40
  73. package/dist/deckgl/TiandituLayer.js.map +0 -1
  74. package/dist/deckgl/WeatherData.d.ts +0 -53
  75. package/dist/deckgl/WeatherData.js +0 -108
  76. package/dist/deckgl/WeatherData.js.map +0 -1
  77. package/dist/deckgl/index.d.ts +0 -1
  78. package/dist/deckgl/index.js +0 -2
  79. package/dist/deckgl/index.js.map +0 -1
  80. package/dist/echarts/coordinateSystems/grid.d.ts +0 -43
  81. package/dist/echarts/coordinateSystems/grid.js +0 -88
  82. package/dist/echarts/coordinateSystems/grid.js.map +0 -1
  83. package/dist/echarts/coordinateSystems/index.d.ts +0 -2
  84. package/dist/echarts/coordinateSystems/index.js +0 -3
  85. package/dist/echarts/coordinateSystems/index.js.map +0 -1
  86. package/dist/echarts/coordinateSystems/polar.d.ts +0 -45
  87. package/dist/echarts/coordinateSystems/polar.js +0 -100
  88. package/dist/echarts/coordinateSystems/polar.js.map +0 -1
  89. package/dist/echarts/gl.d.ts +0 -116
  90. package/dist/echarts/gl.js +0 -42
  91. package/dist/echarts/gl.js.map +0 -1
  92. package/dist/echarts/index.d.ts +0 -53
  93. package/dist/echarts/index.js +0 -62
  94. package/dist/echarts/index.js.map +0 -1
  95. package/dist/echarts/legend.d.ts +0 -17
  96. package/dist/echarts/legend.js +0 -15
  97. package/dist/echarts/legend.js.map +0 -1
  98. package/dist/echarts/radar.d.ts +0 -24
  99. package/dist/echarts/radar.js +0 -22
  100. package/dist/echarts/radar.js.map +0 -1
  101. package/dist/echarts/series/barSeries.d.ts +0 -23
  102. package/dist/echarts/series/barSeries.js +0 -14
  103. package/dist/echarts/series/barSeries.js.map +0 -1
  104. package/dist/echarts/series/boxplotSeries.d.ts +0 -21
  105. package/dist/echarts/series/boxplotSeries.js +0 -36
  106. package/dist/echarts/series/boxplotSeries.js.map +0 -1
  107. package/dist/echarts/series/index.d.ts +0 -7
  108. package/dist/echarts/series/index.js +0 -8
  109. package/dist/echarts/series/index.js.map +0 -1
  110. package/dist/echarts/series/intervalSeries.d.ts +0 -32
  111. package/dist/echarts/series/intervalSeries.js +0 -38
  112. package/dist/echarts/series/intervalSeries.js.map +0 -1
  113. package/dist/echarts/series/lineSeries.d.ts +0 -36
  114. package/dist/echarts/series/lineSeries.js +0 -43
  115. package/dist/echarts/series/lineSeries.js.map +0 -1
  116. package/dist/echarts/series/maxBarSeries.d.ts +0 -18
  117. package/dist/echarts/series/maxBarSeries.js +0 -32
  118. package/dist/echarts/series/maxBarSeries.js.map +0 -1
  119. package/dist/echarts/series/pieSeries.d.ts +0 -31
  120. package/dist/echarts/series/pieSeries.js +0 -39
  121. package/dist/echarts/series/pieSeries.js.map +0 -1
  122. package/dist/echarts/series/windLineSeries.d.ts +0 -47
  123. package/dist/echarts/series/windLineSeries.js +0 -59
  124. package/dist/echarts/series/windLineSeries.js.map +0 -1
  125. package/dist/echarts/tooltip.d.ts +0 -13
  126. package/dist/echarts/tooltip.js +0 -14
  127. package/dist/echarts/tooltip.js.map +0 -1
  128. package/dist/index.d.ts +0 -18
  129. package/dist/index.js +0 -19
  130. package/dist/index.js.map +0 -1
@@ -1,197 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ConfigProvider, Flex, Table, theme } from "antd";
3
- import { createStyles } from "antd-style";
4
- import { useContext, useEffect, useMemo, useRef, useState, } from "react";
5
- import * as echarts from "../echarts";
6
- import StrictECharts from "./StrictECharts";
7
- const EMPTY = [];
8
- /**
9
- * 折线图与表格的组合,用鼠标指向表格中的数据时会高亮折线图中的对应数据,反之亦然。
10
- *
11
- * 除了文档列出的属性外,多余的属性会被传递给最外层的 [Flex][1] 组件。
12
- *
13
- * [1]: https://ant-design.antgroup.com/components/flex-cn#api
14
- */
15
- function LineChartTable(props) {
16
- const { xData, xName = "时间", yName = "数值", yUnit, series = [], chartHeight = 175, ...rest } = props;
17
- // TODO i18n
18
- const unitString = yUnit !== undefined ? `(${yUnit})` : "";
19
- const { cx, styles, theme: token } = useStyles();
20
- const isDark = useContext(ConfigProvider.ConfigContext).theme?.algorithm ===
21
- theme.darkAlgorithm;
22
- const echartsRef = useRef(null);
23
- const tableRef = useRef(null);
24
- const [[hoverSource, hoverXIndex, hoverY], setHover] = useState(EMPTY);
25
- let closestYIndex;
26
- let closestY;
27
- if (hoverXIndex !== undefined && hoverY !== undefined) {
28
- let minDist = Infinity;
29
- series.forEach((series, index) => {
30
- const y = series.data[hoverXIndex];
31
- const dist = Math.abs(y - hoverY);
32
- if (dist < minDist) {
33
- closestYIndex = index;
34
- closestY = y;
35
- minDist = dist;
36
- }
37
- });
38
- }
39
- const option = echarts.buildEChartsOption({
40
- backgroundColor: "transparent",
41
- }, echarts.useGrid({
42
- option: {
43
- id: "grid",
44
- left: 12,
45
- right: 42,
46
- bottom: 40,
47
- },
48
- xAxis: {
49
- name: xName,
50
- data: xData,
51
- axisPointer: {
52
- value: xData[hoverXIndex ?? 0],
53
- status: hoverXIndex !== undefined ? "show" : "hide",
54
- },
55
- },
56
- yAxis: {
57
- name: yName + unitString,
58
- axisPointer: {
59
- value: closestY,
60
- status: closestY !== undefined ? "show" : "hide",
61
- },
62
- },
63
- series: series.map((series) => echarts.lineSeries(series)),
64
- }), echarts.legend({
65
- data: series.map((series) => series.name),
66
- option: { right: 42 },
67
- }), {
68
- axisPointer: [{ show: true, triggerOn: "none" }],
69
- dataZoom: [{ orient: "horizontal", bottom: 8, filterMode: "empty" }],
70
- });
71
- useEffect(() => {
72
- const inst = echartsRef.current?.getEchartsInstance().getZr();
73
- if (!inst)
74
- return () => { };
75
- const onMousemove = (event) => {
76
- const inst = echartsRef.current?.getEchartsInstance();
77
- if (!inst)
78
- return;
79
- const coord = [event.offsetX, event.offsetY];
80
- if (inst.containPixel("grid", coord)) {
81
- const [x, y] = inst.convertFromPixel("grid", coord);
82
- setHover(["chart", x, y]);
83
- }
84
- else {
85
- setHover(EMPTY);
86
- }
87
- };
88
- const onGlobalout = () => setHover(EMPTY);
89
- inst.on("mousemove", onMousemove);
90
- inst.on("globalout", onGlobalout);
91
- return () => {
92
- inst.off("mousemove", onMousemove);
93
- inst.off("globalout", onGlobalout);
94
- };
95
- }, []);
96
- useEffect(() => {
97
- const inst = echartsRef.current?.getEchartsInstance();
98
- if (!inst)
99
- return;
100
- if (hoverXIndex !== undefined) {
101
- inst.dispatchAction({
102
- type: "highlight",
103
- seriesIndex: closestYIndex,
104
- dataIndex: hoverXIndex,
105
- });
106
- if (hoverSource === "chart") {
107
- tableScrollTo(hoverXIndex);
108
- }
109
- }
110
- else {
111
- inst.dispatchAction({
112
- type: "downplay",
113
- });
114
- }
115
- }, [hoverSource, hoverXIndex, closestYIndex]);
116
- const tableDataWithoutHover = useMemo(() => {
117
- const data = xData.map((x, i) => ({ key: i, x }));
118
- series.forEach((series) => series.data.forEach((y, i) => (data[i][`y${series.name}`] = y)));
119
- return data;
120
- }, [xData, series]);
121
- const tableData = useMemo(() => {
122
- if (hoverSource === "chart" && hoverXIndex !== undefined) {
123
- const data = [...tableDataWithoutHover];
124
- data[hoverXIndex] = {
125
- ...data[hoverXIndex],
126
- hover: closestYIndex ?? true,
127
- };
128
- return data;
129
- }
130
- else {
131
- return tableDataWithoutHover;
132
- }
133
- }, [tableDataWithoutHover, hoverSource, hoverXIndex, closestYIndex]);
134
- const tableColumns = useMemo(() => {
135
- const columnWidth = `${100 / series.length}%`;
136
- return [
137
- {
138
- key: "x",
139
- dataIndex: "x",
140
- title: xName,
141
- onCell: (data, index) => ({
142
- className: cx({
143
- [styles.rowHovered]: data.hover !== undefined,
144
- }),
145
- onMouseEnter: () => setHover(["table", index]),
146
- onMouseLeave: () => setHover(EMPTY),
147
- }),
148
- },
149
- ...series.map((series, yIndex) => ({
150
- key: `y${series.name}`,
151
- dataIndex: `y${series.name}`,
152
- title: series.name + unitString,
153
- width: columnWidth,
154
- onCell: (data, xIndex) => ({
155
- className: cx(styles.cell, {
156
- [styles.rowHovered]: data.hover !== undefined,
157
- [styles.cellHovered]: data.hover === yIndex,
158
- }),
159
- onMouseEnter: () => setHover(["table", xIndex, data[`y${series.name}`]]),
160
- onMouseLeave: () => setHover(EMPTY),
161
- }),
162
- })),
163
- ];
164
- }, [cx, styles, xName, series, unitString]);
165
- const tableScrollTo = (index) => {
166
- const table = tableRef.current?.nativeElement;
167
- if (table) {
168
- const header = table.getElementsByTagName("thead")[0];
169
- const row = table.getElementsByTagName("tr")[index];
170
- table.scrollTo({
171
- top: row.offsetTop +
172
- row.offsetHeight / 2 -
173
- (table.offsetHeight - header.offsetHeight) / 2,
174
- behavior: "smooth",
175
- });
176
- }
177
- };
178
- return (_jsxs(Flex, { vertical: true, gap: token.marginXS, ...rest, children: [_jsx(StrictECharts, { ref: echartsRef, option: option, theme: isDark ? "dark" : undefined, style: { height: chartHeight, flexShrink: 0 } }), useMemo(() => (_jsx(Table, { ref: tableRef, dataSource: tableData, columns: tableColumns, size: "small", pagination: false, style: { flexBasis: "100%", overflowY: "auto" }, onHeaderRow: () => ({
179
- style: { position: "sticky", top: 0, zIndex: 1 },
180
- }) })), [tableData, tableColumns])] }));
181
- }
182
- export default LineChartTable;
183
- const useStyles = createStyles(({ css, token }) => {
184
- const rowHovered = css `
185
- background: ${token.colorFillQuaternary};
186
- `;
187
- const cell = css `
188
- [class] > &:hover:hover {
189
- background: ${token.colorFillSecondary};
190
- }
191
- `;
192
- const cellHovered = css `
193
- background: ${token.colorFillSecondary};
194
- `;
195
- return { rowHovered, cell, cellHovered };
196
- });
197
- //# sourceMappingURL=LineChartTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LineChartTable.js","sourceRoot":"","sources":["../../src/components/LineChartTable.tsx"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { type ComponentType, type ReactNode } from "react";
2
- import StrictECharts, { type StrictEChartsProps } from "./StrictECharts";
3
- /**
4
- * 联动上下文的 Provider,用于包裹需要联动的图表。
5
- */
6
- export declare function EChartsLinkProvider(props: {
7
- children: ReactNode;
8
- }): import("react/jsx-runtime").JSX.Element;
9
- /**
10
- * 高阶组件,用于为任何签名与 `StrictECharts` 相同的图表组件添加联动功能。
11
- */
12
- export declare function withEChartsLink(ECharts: ComponentType<StrictEChartsProps>): import("react").ForwardRefExoticComponent<StrictEChartsProps & import("react").RefAttributes<StrictECharts>>;
13
- /**
14
- * 具有联动功能的 `StrictECharts` 组件,签名与 `StrictECharts` 完全一致。
15
- */
16
- declare const LinkedECharts: import("react").ForwardRefExoticComponent<StrictEChartsProps & import("react").RefAttributes<StrictECharts>>;
17
- export default LinkedECharts;
@@ -1,34 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import * as echarts from "echarts";
3
- import { createContext, forwardRef, useContext, useId, } from "react";
4
- import StrictECharts, {} from "./StrictECharts";
5
- const LinkContext = createContext("global");
6
- /**
7
- * 联动上下文的 Provider,用于包裹需要联动的图表。
8
- */
9
- export function EChartsLinkProvider(props) {
10
- return (_jsx(LinkContext.Provider, { value: useId(), children: props.children }));
11
- }
12
- /**
13
- * 高阶组件,用于为任何签名与 `StrictECharts` 相同的图表组件添加联动功能。
14
- */
15
- export function withEChartsLink(ECharts) {
16
- return forwardRef((props, ref) => {
17
- const group = useContext(LinkContext);
18
- return (_jsx(ECharts
19
- // @ts-expect-error unfixable error
20
- , {
21
- // @ts-expect-error unfixable error
22
- ref: ref, ...props, onChartReady: (instance) => {
23
- instance.group = group;
24
- echarts.connect(group);
25
- props.onChartReady?.(instance);
26
- } }));
27
- });
28
- }
29
- /**
30
- * 具有联动功能的 `StrictECharts` 组件,签名与 `StrictECharts` 完全一致。
31
- */
32
- const LinkedECharts = withEChartsLink(StrictECharts);
33
- export default LinkedECharts;
34
- //# sourceMappingURL=LinkedECharts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkedECharts.js","sourceRoot":"","sources":["../../src/components/LinkedECharts.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,KAAK,GAGN,MAAM,OAAO,CAAC;AAEf,OAAO,aAAa,EAAE,EAA2B,MAAM,iBAAiB,CAAC;AAEzE,MAAM,WAAW,GAAG,aAAa,CAAS,QAAQ,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA8B;IAChE,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,YAAG,KAAK,CAAC,QAAQ,GAAwB,CAC9E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAA0C;IACxE,OAAO,UAAU,CACf,CAAC,KAAK,EAAE,GAAG,EAAa,EAAE;QACxB,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QACtC,OAAO,CACL,KAAC,OAAO;QACN,mCAAmC;;YAAnC,mCAAmC;YACnC,GAAG,EAAE,GAAG,KACJ,KAAK,EACT,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACzB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;gBACvB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACvB,KAAK,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC,GACD,CACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;AACrD,eAAe,aAAa,CAAC"}
@@ -1,45 +0,0 @@
1
- import type { LineSeriesOption } from "echarts";
2
- import { type ReactNode } from "react";
3
- import type { StrictEChartsProps } from "./StrictECharts";
4
- export interface LineChartLinkProviderProps {
5
- /** X 轴的数据。*/
6
- xData: (string | number)[];
7
- /**
8
- * X 轴的名称。
9
- * @default "时间"
10
- */
11
- xName?: string;
12
- /** 包裹的内容,其中包含需要联动的 {@linkcode LinkedLineChart} 组件。*/
13
- children: ReactNode;
14
- }
15
- /**
16
- * {@linkcode LinkedLineChart} 联动上下文的 Provider。
17
- *
18
- * 用于包裹需要联动的 {@linkcode LinkedLineChart} 组件。
19
- */
20
- export declare function LineChartLinkProvider(props: LineChartLinkProviderProps): import("react/jsx-runtime").JSX.Element;
21
- export interface LinkedLineChartProps extends Omit<StrictEChartsProps, "option"> {
22
- /**
23
- * Y 轴的名称。
24
- * @default "数值"
25
- */
26
- yName?: string;
27
- /** Y 轴的单位,默认不显示。*/
28
- yUnit?: string;
29
- /** 各个曲线的名称、数据和其它选项(颜色、插值模式等)。*/
30
- series?: {
31
- name: string;
32
- data: number[];
33
- option?: LineSeriesOption;
34
- }[];
35
- /**
36
- * 是否启用横轴下方的缩放条(`dataZoom`)
37
- * @default true
38
- */
39
- dataZoom?: boolean;
40
- }
41
- /**
42
- * 折线图组件,支持多条数据曲线和横轴联动。鼠标悬停在图表上时会触发联动高亮。
43
- */
44
- declare function LinkedLineChart(props: LinkedLineChartProps): import("react/jsx-runtime").JSX.Element;
45
- export default LinkedLineChart;
@@ -1,71 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { ConfigProvider, theme } from "antd";
3
- import { createContext, useContext } from "react";
4
- import * as echarts from "../echarts";
5
- import LinkedECharts, { EChartsLinkProvider } from "./LinkedECharts";
6
- const LineChartLinkContext = createContext({
7
- xData: [],
8
- xName: "时间",
9
- });
10
- /**
11
- * {@linkcode LinkedLineChart} 联动上下文的 Provider。
12
- *
13
- * 用于包裹需要联动的 {@linkcode LinkedLineChart} 组件。
14
- */
15
- export function LineChartLinkProvider(props) {
16
- return (_jsx(EChartsLinkProvider, { children: _jsx(LineChartLinkContext.Provider, { value: {
17
- xData: props.xData,
18
- xName: props.xName ?? "时间",
19
- }, children: props.children }) }));
20
- }
21
- /**
22
- * 折线图组件,支持多条数据曲线和横轴联动。鼠标悬停在图表上时会触发联动高亮。
23
- */
24
- function LinkedLineChart(props) {
25
- const { yName = "数值", yUnit, series = [], dataZoom = true, ...rest } = props;
26
- const unitString = yUnit !== undefined ? `(${yUnit})` : "";
27
- const isDark = useContext(ConfigProvider.ConfigContext).theme?.algorithm ===
28
- theme.darkAlgorithm;
29
- const { xData, xName } = useContext(LineChartLinkContext);
30
- const option = echarts.buildEChartsOption({
31
- backgroundColor: "transparent",
32
- }, echarts.useGrid({
33
- option: {
34
- id: "grid",
35
- left: 12,
36
- right: 42,
37
- bottom: dataZoom ? 40 : 0,
38
- },
39
- xAxis: {
40
- name: xName,
41
- data: xData,
42
- axisPointer: { show: true },
43
- },
44
- yAxis: {
45
- name: yName + unitString,
46
- axisPointer: { show: false },
47
- },
48
- series: series.map((series) => echarts.lineSeries(series)),
49
- }), echarts.legend({
50
- data: series.map((series) => series.name),
51
- option: { right: 42 },
52
- }), echarts.tooltip({
53
- trigger: "axis",
54
- position: ([x], params, dom, rect, { contentSize: [popupWidth], viewSize: [chartWidth] }) => [
55
- x + 10 + popupWidth <= chartWidth ? x + 10 : x - 10 - popupWidth,
56
- 20,
57
- ],
58
- }), {
59
- dataZoom: [
60
- {
61
- show: dataZoom,
62
- orient: "horizontal",
63
- bottom: 8,
64
- filterMode: "empty",
65
- },
66
- ],
67
- });
68
- return (_jsx(LinkedECharts, { option: option, theme: isDark ? "dark" : undefined, ...rest }));
69
- }
70
- export default LinkedLineChart;
71
- //# sourceMappingURL=LinkedLineChart.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkedLineChart.js","sourceRoot":"","sources":["../../src/components/LinkedLineChart.tsx"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import { type ButtonProps, type SpaceProps } from "antd";
2
- import type { RangePickerProps } from "antd/es/date-picker";
3
- import { type Dayjs } from "dayjs";
4
- import type { NoUndefinedRangeValueType } from "rc-picker/lib/PickerInput/RangePicker";
5
- export interface QuickDateRangePickerProps extends Omit<SpaceProps, "onChange"> {
6
- /** 一个二元组 `[start, end]`,表示时间段的开始和结束。*/
7
- value?: NoUndefinedRangeValueType<Dayjs>;
8
- onChange?: (range: NoUndefinedRangeValueType<Dayjs>) => void;
9
- /**
10
- * 内部按钮的属性,参见 [Ant Design 的 `Button` API][1]。
11
- *
12
- * [1]: https://ant-design.antgroup.com/components/button-cn#api
13
- */
14
- buttonProps?: ButtonProps;
15
- /**
16
- * 内部日期范围选择器的属性,参见 [Ant Design 的 `DatePicker.RangePicker` API][1]。
17
- *
18
- * [1]: https://ant-design.antgroup.com/components/date-picker-cn#rangepicker
19
- */
20
- pickerProps?: RangePickerProps;
21
- }
22
- /**
23
- * 带有快速选择最近 3/5/7 天功能的日期范围选择器。
24
- *
25
- * 除了文档中列出的属性外,该组件会将其它属性传递给 [Ant Design 的 `Space` 组件][1]。
26
- *
27
- * [1]: https://ant-design.antgroup.com/components/space-cn#api
28
- */
29
- declare function QuickDateRangePicker(props: QuickDateRangePickerProps): import("react/jsx-runtime").JSX.Element;
30
- export default QuickDateRangePicker;
@@ -1,36 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Button, DatePicker, Space, } from "antd";
3
- import dayjs, {} from "dayjs";
4
- import { useState } from "react";
5
- const QUICK_PICK_RANGES = [
6
- { value: 3, label: "最近 3 天" },
7
- { value: 5, label: "最近 5 天" },
8
- { value: 7, label: "最近 7 天" },
9
- ];
10
- /**
11
- * 带有快速选择最近 3/5/7 天功能的日期范围选择器。
12
- *
13
- * 除了文档中列出的属性外,该组件会将其它属性传递给 [Ant Design 的 `Space` 组件][1]。
14
- *
15
- * [1]: https://ant-design.antgroup.com/components/space-cn#api
16
- */
17
- function QuickDateRangePicker(props) {
18
- const { value, onChange, buttonProps, pickerProps, ...rest } = props;
19
- const [range, setRange] = value === undefined
20
- ? // eslint-disable-next-line react-hooks/rules-of-hooks
21
- useState(undefined)
22
- : [value, () => { }];
23
- function quickPick(value) {
24
- const end = dayjs();
25
- const start = end.subtract(value - 1, "day");
26
- const newRange = [start, end];
27
- setRange(newRange);
28
- onChange?.(newRange);
29
- }
30
- return (_jsxs(Space, { ...rest, children: [QUICK_PICK_RANGES.map((item, index) => (_jsx(Button, { onClick: () => quickPick(item.value), ...buttonProps, children: item.label }, index))), _jsx(DatePicker.RangePicker, { value: range, allowClear: false, onChange: (range) => {
31
- setRange(range);
32
- onChange?.(range); // 由于 allowClear=false,这里 range 不可能为 null
33
- }, ...pickerProps })] }));
34
- }
35
- export default QuickDateRangePicker;
36
- //# sourceMappingURL=QuickDateRangePicker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QuickDateRangePicker.js","sourceRoot":"","sources":["../../src/components/QuickDateRangePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EACN,UAAU,EACV,KAAK,GAGN,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,EAAc,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAqBjC,MAAM,iBAAiB,GAAG;IACxB,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC7B,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC7B,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;CAC9B,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,KAAgC;IAC5D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACrE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GACrB,KAAK,KAAK,SAAS;QACjB,CAAC,CAAC,sDAAsD;YACtD,QAAQ,CAA+C,SAAS,CAAC;QACnE,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxB,SAAS,SAAS,CAAC,KAAa;QAC9B,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAqC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CACL,MAAC,KAAK,OAAK,IAAI,aAEZ,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CACtC,KAAC,MAAM,IAEL,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAChC,WAAW,YAEd,IAAI,CAAC,KAAK,IAJN,KAAK,CAKH,CACV,CAAC,EACF,KAAC,UAAU,CAAC,WAAW,IACrB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,KAAK,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,QAAQ,CAAC,KAAyC,CAAC,CAAC;oBACpD,QAAQ,EAAE,CAAC,KAAyC,CAAC,CAAC,CAAC,yCAAyC;gBAClG,CAAC,KACG,WAAW,GACf,IACI,CACT,CAAC;AACJ,CAAC;AAED,eAAe,oBAAoB,CAAC"}
@@ -1,22 +0,0 @@
1
- import { type RadioGroupProps } from "antd";
2
- /**
3
- * 分段单选按钮。
4
- *
5
- * 该组件是 [Ant Design 的 `Radio.Group optionType="button"`][1] 的别名。
6
- *
7
- * [1]: https://ant-design.antgroup.com/components/radio-cn#radiogroup
8
- */
9
- declare function SegmentedButtons(props: RadioGroupProps): import("react/jsx-runtime").JSX.Element;
10
- export interface TimeUnitSwitcherProps extends Omit<RadioGroupProps, "onChange"> {
11
- value?: "day" | "week" | "month";
12
- onChange?: (value: "day" | "week" | "month") => void;
13
- }
14
- /**
15
- * 时间单位(日/周/月)切换按钮。
16
- *
17
- * 该组件是 {@linkcode SegmentedButtons} 的特化版本。更多属性参见 [`Radio.Group`][1]。
18
- *
19
- * [1]: https://ant-design.antgroup.com/components/radio-cn#radiogroup
20
- */
21
- export declare function TimeUnitSwitcher(props: TimeUnitSwitcherProps): import("react/jsx-runtime").JSX.Element;
22
- export default SegmentedButtons;
@@ -1,31 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Radio } from "antd";
3
- /**
4
- * 分段单选按钮。
5
- *
6
- * 该组件是 [Ant Design 的 `Radio.Group optionType="button"`][1] 的别名。
7
- *
8
- * [1]: https://ant-design.antgroup.com/components/radio-cn#radiogroup
9
- */
10
- function SegmentedButtons(props) {
11
- return _jsx(Radio.Group, { optionType: "button", ...props });
12
- }
13
- // TODO i18n
14
- const TIME_UNIT_OPTIONS = [
15
- { label: "日", value: "day" },
16
- { label: "周", value: "week" },
17
- { label: "月", value: "month" },
18
- ];
19
- /**
20
- * 时间单位(日/周/月)切换按钮。
21
- *
22
- * 该组件是 {@linkcode SegmentedButtons} 的特化版本。更多属性参见 [`Radio.Group`][1]。
23
- *
24
- * [1]: https://ant-design.antgroup.com/components/radio-cn#radiogroup
25
- */
26
- export function TimeUnitSwitcher(props) {
27
- const { onChange, ...rest } = props;
28
- return (_jsx(Radio.Group, { optionType: "button", options: TIME_UNIT_OPTIONS, onChange: (e) => onChange?.(e.target.value), ...rest }));
29
- }
30
- export default SegmentedButtons;
31
- //# sourceMappingURL=SegmentedButtons.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SegmentedButtons.js","sourceRoot":"","sources":["../../src/components/SegmentedButtons.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAwB,MAAM,MAAM,CAAC;AAEnD;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAsB;IAC9C,OAAO,KAAC,KAAK,CAAC,KAAK,IAAC,UAAU,EAAC,QAAQ,KAAK,KAAK,GAAI,CAAC;AACxD,CAAC;AAED,YAAY;AACZ,MAAM,iBAAiB,GAAG;IACxB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;IAC5B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;IAC7B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;CAC/B,CAAC;AAQF;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACpC,OAAO,CACL,KAAC,KAAK,CAAC,KAAK,IACV,UAAU,EAAC,QAAQ,EACnB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAiC,CAAC,KACnE,IAAI,GACR,CACH,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
@@ -1,79 +0,0 @@
1
- import { type MenuProps } from "antd";
2
- import { type CSSProperties, type ReactNode } from "react";
3
- export type MenuItem = Required<MenuProps>["items"][number];
4
- export interface SidebarProps extends MenuProps {
5
- /**
6
- * 侧边栏的宽度。
7
- * @default 260
8
- */
9
- width?: number | string;
10
- /**
11
- * 是否启用伸缩功能。
12
- * @default false
13
- */
14
- collapsible?: boolean;
15
- /**
16
- * 网站 logo 的 URL。
17
- *
18
- * 建议导入图片,然后填入导入得到的地址,而不要硬编码地址。
19
- */
20
- logo?: string;
21
- /** 侧边栏的标题。*/
22
- title?: string;
23
- /**
24
- * 侧边栏头部(logo 和标题部分)的高度。
25
- * @default 116
26
- */
27
- headerHeight?: number | string;
28
- /**
29
- * 侧边栏的头部(logo 和标题部分)。设置了该属性时,
30
- * {@linkcode SidebarProps.logo | logo}、
31
- * {@linkcode SidebarProps.title | title} 和
32
- * {@linkcode SidebarProps.headerHeight | headerHeight} 将失去作用。
33
- * 参数 `collapsed` 表示侧边栏是否收起。
34
- * 填 `null` 可以隐藏掉默认值(与 `undefined` 不同!)。
35
- */
36
- header?: ((collapsed: boolean) => ReactNode) | null;
37
- /**
38
- * 菜单项配置,默认与 TMS 系统的菜单相同。
39
- *
40
- * 该属性以及其余属性的用法可参考 [`Menu` 组件的文档][1]。
41
- *
42
- * [1]: https://ant-design.antgroup.com/components/menu-cn
43
- */
44
- items?: MenuItem[];
45
- /** 当前选中的菜单项 key 数组。 */
46
- selectedKeys?: string[];
47
- /** 当前展开的子菜单 key 数组。 */
48
- openKeys?: string[];
49
- /** 菜单项被选中时的回调函数。 */
50
- onSelect?: MenuProps["onSelect"];
51
- /** 子菜单展开/收起时的回调函数。 */
52
- onOpenChange?: MenuProps["onOpenChange"];
53
- /**
54
- * 侧边栏底部的额外内容。参数 `collapsed` 表示侧边栏是否收起。
55
- * 默认情况下使用 {@linkcode UserButton} 组件。
56
- * 填 `null` 可以隐藏掉默认值(与 `undefined` 不同!)。
57
- * @default (collapsed) => <UserButton compact={collapsed} />
58
- */
59
- footer?: ((collapsed: boolean) => ReactNode) | null;
60
- /** 额外的 `className`。*/
61
- className?: string;
62
- /** 额外的 CSS 样式。*/
63
- style?: CSSProperties;
64
- }
65
- /**
66
- * 出自 TMS 系统的侧边栏组件。该组件需要放置在 [Ant Design 的 `Layout` 组件][1]内部才能正常工作。
67
- * 如果没有指定 {@linkcode SidebarProps.footer | footer} 属性,
68
- * 那么还需要包裹在 {@linkcode AuthProvider} 内,并且经过 {@linkcode AuthCheck} 验证后
69
- * 才能正常显示边栏底部的用户信息按钮。
70
- *
71
- * 一般来说,使用该组件时至少需要提供 `logo`、`items` 和 `onSelect` 三个属性,具体用法请参照范例。
72
- *
73
- * 除了文档中列出的属性之外,该组件会把额外的属性全部传递给内部的菜单 [`Menu` 组件][2]。
74
- *
75
- * [1]: https://ant-design.antgroup.com/components/layout-cn
76
- * [2]: https://ant-design.antgroup.com/components/menu-cn
77
- */
78
- declare function Sidebar(props: SidebarProps): import("react/jsx-runtime").JSX.Element;
79
- export default Sidebar;