@tsingroc/tsingroc-components 2.1.0 → 2.3.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/Auth.d.ts +162 -0
- package/dist/components/Auth.js +83 -0
- package/dist/components/Auth.js.map +1 -0
- package/dist/components/SegmentedButtons.d.ts +1 -1
- package/dist/components/SegmentedButtons.js +1 -1
- package/dist/components/{TmsSidebar.d.ts → Sidebar.d.ts} +6 -7
- package/dist/components/{TmsSidebar.js → Sidebar.js} +6 -4
- package/dist/components/Sidebar.js.map +1 -0
- package/dist/echarts/coordinateSystem.d.ts +1 -1
- package/dist/echarts/gl.d.ts +1 -1
- package/dist/echarts/series.d.ts +2 -2
- package/dist/index.d.ts +8 -5
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/package.json +11 -10
- package/dist/components/TmsSidebar.js.map +0 -1
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type JwtPayload } from "jwt-decode";
|
|
3
|
+
import Sdk from "casdoor-js-sdk";
|
|
4
|
+
import type { SdkConfig } from "casdoor-js-sdk/lib/esm/sdk";
|
|
5
|
+
/** 获取全局的 Casdoor SDK,如果还没有初始化,就用 `config` 新建一个。*/
|
|
6
|
+
export declare function getCasdoorSdk(config: SdkConfig): Sdk;
|
|
7
|
+
/** 获取全局的 access token。未登录时返回 `null`。*/
|
|
8
|
+
export declare function getAccessToken(): string | null;
|
|
9
|
+
export interface AccessTokenPayload extends JwtPayload {
|
|
10
|
+
/**
|
|
11
|
+
* Token 的发布者。见 [JWT 标准][1]。
|
|
12
|
+
*
|
|
13
|
+
* [1]: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1
|
|
14
|
+
*/
|
|
15
|
+
iss: string;
|
|
16
|
+
/**
|
|
17
|
+
* Token 的主题。见 [JWT 标准][1]。
|
|
18
|
+
*
|
|
19
|
+
* [1]: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1
|
|
20
|
+
*/
|
|
21
|
+
sub: string;
|
|
22
|
+
/**
|
|
23
|
+
* Token 的目标应用 ID。见 [JWT 标准][1]。
|
|
24
|
+
*
|
|
25
|
+
* [1]: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1
|
|
26
|
+
*/
|
|
27
|
+
aud: string[];
|
|
28
|
+
/**
|
|
29
|
+
* 使用 Token 的应用 ID。见 [JWT 标准][1]。
|
|
30
|
+
*
|
|
31
|
+
* [1]: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1
|
|
32
|
+
*/
|
|
33
|
+
azp: string;
|
|
34
|
+
/**
|
|
35
|
+
* Token 的唯一标识符。见 [JWT 标准][1]。
|
|
36
|
+
*
|
|
37
|
+
* [1]: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1
|
|
38
|
+
*/
|
|
39
|
+
jti: string;
|
|
40
|
+
/** Token 的过期时间(Unix 时间戳)。*/
|
|
41
|
+
exp: number;
|
|
42
|
+
/** Token 的生效时间(Unix 时间戳)。*/
|
|
43
|
+
nbf: number;
|
|
44
|
+
/** Token 的签发时间(Unix 时间戳)。*/
|
|
45
|
+
iat: number;
|
|
46
|
+
/** 用户的登录名。*/
|
|
47
|
+
name: string;
|
|
48
|
+
/** 用户的 UUID。*/
|
|
49
|
+
id: string;
|
|
50
|
+
/** 用户的显示名。*/
|
|
51
|
+
displayName: string;
|
|
52
|
+
/** 用户的头像 URL。*/
|
|
53
|
+
avatar: string;
|
|
54
|
+
/** 用户的邮件地址。*/
|
|
55
|
+
email: string;
|
|
56
|
+
/** 用户的手机号。*/
|
|
57
|
+
phone: string;
|
|
58
|
+
owner: "tsingroc";
|
|
59
|
+
tokenType: "access-token";
|
|
60
|
+
scope: "profile";
|
|
61
|
+
}
|
|
62
|
+
/** 获取全局的 access token 并解码。解码得到的 payload 中也有一些用户信息,
|
|
63
|
+
* 可以在一定程度上代替通过 API 获取用户信息。未登录时返回 `null`。*/
|
|
64
|
+
export declare function getDecodedAccessToken(): AccessTokenPayload | undefined;
|
|
65
|
+
export interface UserInfo {
|
|
66
|
+
/**
|
|
67
|
+
* Token 的发布者。见 [JWT 标准][1]。
|
|
68
|
+
*
|
|
69
|
+
* [1]: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1
|
|
70
|
+
*/
|
|
71
|
+
iss: string;
|
|
72
|
+
/**
|
|
73
|
+
* Token 的主题。见 [JWT 标准][1]。
|
|
74
|
+
*
|
|
75
|
+
* [1]: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1
|
|
76
|
+
*/
|
|
77
|
+
sub: string;
|
|
78
|
+
/**
|
|
79
|
+
* Token 的目标应用 ID。见 [JWT 标准][1]。
|
|
80
|
+
*
|
|
81
|
+
* [1]: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1
|
|
82
|
+
*/
|
|
83
|
+
aud: string;
|
|
84
|
+
/** 用户的全名(显示名)。*/
|
|
85
|
+
name: string;
|
|
86
|
+
/** 短用户名(登录名)。*/
|
|
87
|
+
prefered_username: string;
|
|
88
|
+
/** 用户的邮件地址。*/
|
|
89
|
+
email?: string;
|
|
90
|
+
/** 用户的邮件地址是否已确认。*/
|
|
91
|
+
email_verified?: boolean;
|
|
92
|
+
/** 用户的手机号。*/
|
|
93
|
+
phone?: string;
|
|
94
|
+
/** 用户的头像 URL。*/
|
|
95
|
+
picture: string;
|
|
96
|
+
/** 用户的地址。*/
|
|
97
|
+
address?: string;
|
|
98
|
+
/** 用户所属的用户组。*/
|
|
99
|
+
groups: string[];
|
|
100
|
+
/** 用户的角色。*/
|
|
101
|
+
roles: string[];
|
|
102
|
+
}
|
|
103
|
+
/** 获取用户信息。必须在开启了 `onlineCheck` 的 {@linkcode AuthProvider} 内部使用,否则返回 `undefined`。*/
|
|
104
|
+
export declare function useUserInfo(): UserInfo | undefined;
|
|
105
|
+
export interface AuthProviderProps {
|
|
106
|
+
/**
|
|
107
|
+
* Casdoor SDK 的配置。
|
|
108
|
+
*
|
|
109
|
+
* **注意**:初始化的 SDK 将保存为全局变量,因此一个项目内不可有多个不同的 SDK 配置。
|
|
110
|
+
* 通过 {@linkcode getCasdoorSdk} 可以获取到全局的 SDK。
|
|
111
|
+
*/
|
|
112
|
+
sdkConfig: SdkConfig;
|
|
113
|
+
/**
|
|
114
|
+
* 是否联网检查用户登录状态有效性。如果检查,那么在内部还可以使用 {@linkcode useUserInfo} 访问到用户信息。
|
|
115
|
+
* @default false
|
|
116
|
+
*/
|
|
117
|
+
onlineCheck?: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* 如果开启了 `onlineCheck`,在检查过程中时向用户显示的加载界面。
|
|
120
|
+
* @default "正在登录……"
|
|
121
|
+
*/
|
|
122
|
+
loading?: ReactNode;
|
|
123
|
+
/** 用户登录后显示的内容。*/
|
|
124
|
+
children: ReactNode;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 确保只有已登录的用户可以访问到内部的内容,未登录的用户将被重定向到登录界面。
|
|
128
|
+
*/
|
|
129
|
+
export declare function AuthProvider(props: AuthProviderProps): ReactNode;
|
|
130
|
+
export interface AuthCallbackProps {
|
|
131
|
+
/**
|
|
132
|
+
* Casdoor SDK 的配置。
|
|
133
|
+
*
|
|
134
|
+
* **注意**:初始化的 SDK 将保存为全局变量,因此一个项目内不可有多个不同的 SDK 配置。
|
|
135
|
+
* 通过 {@linkcode getCasdoorSdk} 可以获取到全局的 SDK。
|
|
136
|
+
*/
|
|
137
|
+
sdkConfig: SdkConfig;
|
|
138
|
+
/** 登录的 API 源点,末尾不带 `/`。*/
|
|
139
|
+
signinOrigin: string;
|
|
140
|
+
/**
|
|
141
|
+
* 登陆的 API 路径。
|
|
142
|
+
* @default "/api/signin"
|
|
143
|
+
*/
|
|
144
|
+
signinPath?: string;
|
|
145
|
+
/**
|
|
146
|
+
* 跳转时的回调。可以使用 React Router 的跳转函数。
|
|
147
|
+
* @default () => { location.href = "/"; }
|
|
148
|
+
*/
|
|
149
|
+
onRedirect?: () => void;
|
|
150
|
+
/**
|
|
151
|
+
* 发生错误时显示的内容。
|
|
152
|
+
* @default (err) => err.toString()
|
|
153
|
+
*/
|
|
154
|
+
error?: (err: unknown) => ReactNode;
|
|
155
|
+
/**
|
|
156
|
+
* 跳转前显示的内容。
|
|
157
|
+
* @default "正在跳转……"
|
|
158
|
+
*/
|
|
159
|
+
children?: ReactNode;
|
|
160
|
+
}
|
|
161
|
+
/** 登录的回调页面。*/
|
|
162
|
+
export declare function AuthCallback(props: AuthCallbackProps): ReactNode;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useEffect, useState, } from "react";
|
|
3
|
+
import { jwtDecode } from "jwt-decode";
|
|
4
|
+
import Sdk from "casdoor-js-sdk";
|
|
5
|
+
let casdoorSdk;
|
|
6
|
+
/** 获取全局的 Casdoor SDK,如果还没有初始化,就用 `config` 新建一个。*/
|
|
7
|
+
export function getCasdoorSdk(config) {
|
|
8
|
+
return (casdoorSdk ?? (casdoorSdk = new Sdk(config)));
|
|
9
|
+
}
|
|
10
|
+
/** 获取全局的 access token。未登录时返回 `null`。*/
|
|
11
|
+
export function getAccessToken() {
|
|
12
|
+
return localStorage.getItem("access_token");
|
|
13
|
+
}
|
|
14
|
+
/** 获取全局的 access token 并解码。解码得到的 payload 中也有一些用户信息,
|
|
15
|
+
* 可以在一定程度上代替通过 API 获取用户信息。未登录时返回 `null`。*/
|
|
16
|
+
export function getDecodedAccessToken() {
|
|
17
|
+
const token = getAccessToken();
|
|
18
|
+
if (token === null)
|
|
19
|
+
return;
|
|
20
|
+
return jwtDecode(token);
|
|
21
|
+
}
|
|
22
|
+
const AuthContext = createContext(undefined);
|
|
23
|
+
/** 获取用户信息。必须在开启了 `onlineCheck` 的 {@linkcode AuthProvider} 内部使用,否则返回 `undefined`。*/
|
|
24
|
+
export function useUserInfo() {
|
|
25
|
+
return useContext(AuthContext);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 确保只有已登录的用户可以访问到内部的内容,未登录的用户将被重定向到登录界面。
|
|
29
|
+
*/
|
|
30
|
+
export function AuthProvider(props) {
|
|
31
|
+
const sdk = getCasdoorSdk(props.sdkConfig);
|
|
32
|
+
const token = getAccessToken();
|
|
33
|
+
const [userInfo, setUserInfo] = useState();
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (token === null) {
|
|
36
|
+
location.href = sdk.getSigninUrl();
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
if (props.onlineCheck) {
|
|
40
|
+
sdk.getUserInfo(token).then((_resp) => {
|
|
41
|
+
// sdk 的类型声明有误
|
|
42
|
+
const resp = _resp;
|
|
43
|
+
if ("status" in resp) {
|
|
44
|
+
location.href = sdk.getSigninUrl();
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
setUserInfo(resp);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}, [token, props.onlineCheck]);
|
|
53
|
+
return token === null ? ("正在跳转到登录页……") : props.onlineCheck && userInfo === undefined ? ((props.loading ?? "正在登录……")) : (_jsx(AuthContext.Provider, { value: userInfo, children: props.children }));
|
|
54
|
+
}
|
|
55
|
+
/** 登录的回调页面。*/
|
|
56
|
+
export function AuthCallback(props) {
|
|
57
|
+
const [error, setError] = useState();
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
getCasdoorSdk(props.sdkConfig)
|
|
60
|
+
.signin(props.signinOrigin, props.signinPath)
|
|
61
|
+
.then((_resp) => {
|
|
62
|
+
// sdk 的类型声明有误
|
|
63
|
+
const resp = _resp;
|
|
64
|
+
if (!resp.token) {
|
|
65
|
+
throw new Error("登录 API 返回了异常的结果:" + JSON.stringify(resp));
|
|
66
|
+
}
|
|
67
|
+
localStorage.setItem("access_token", resp.token);
|
|
68
|
+
if (props.onRedirect) {
|
|
69
|
+
props.onRedirect();
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
location.href = "/";
|
|
73
|
+
}
|
|
74
|
+
})
|
|
75
|
+
.catch((err) => setError(err));
|
|
76
|
+
}, []);
|
|
77
|
+
return error
|
|
78
|
+
? props.error
|
|
79
|
+
? props.error(error)
|
|
80
|
+
: error.toString()
|
|
81
|
+
: (props.children ?? "正在跳转……");
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=Auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../src/components/Auth.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export interface TimeUnitSwitcherProps extends Omit<RadioGroupProps, "onChange">
|
|
|
14
14
|
/**
|
|
15
15
|
* 时间单位(日/周/月)切换按钮。
|
|
16
16
|
*
|
|
17
|
-
* 该组件是 {@
|
|
17
|
+
* 该组件是 {@linkcode SegmentedButtons} 的特化版本。更多属性参见 [`Radio.Group`][1]。
|
|
18
18
|
*
|
|
19
19
|
* [1]: https://ant-design.antgroup.com/components/radio-cn#radiogroup
|
|
20
20
|
*/
|
|
@@ -19,7 +19,7 @@ const TIME_UNIT_OPTIONS = [
|
|
|
19
19
|
/**
|
|
20
20
|
* 时间单位(日/周/月)切换按钮。
|
|
21
21
|
*
|
|
22
|
-
* 该组件是 {@
|
|
22
|
+
* 该组件是 {@linkcode SegmentedButtons} 的特化版本。更多属性参见 [`Radio.Group`][1]。
|
|
23
23
|
*
|
|
24
24
|
* [1]: https://ant-design.antgroup.com/components/radio-cn#radiogroup
|
|
25
25
|
*/
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import type { MenuProps } from "antd";
|
|
2
2
|
export type MenuItem = Required<MenuProps>["items"][number];
|
|
3
|
-
|
|
4
|
-
* TmsSidebar组件的属性接口
|
|
5
|
-
*/
|
|
6
|
-
export interface TmsSidebarProps extends MenuProps {
|
|
3
|
+
export interface SidebarProps extends MenuProps {
|
|
7
4
|
/**
|
|
8
5
|
* 侧边栏宽度。
|
|
9
6
|
* @default 260
|
|
@@ -33,7 +30,9 @@ export interface TmsSidebarProps extends MenuProps {
|
|
|
33
30
|
onOpenChange?: MenuProps["onOpenChange"];
|
|
34
31
|
}
|
|
35
32
|
/**
|
|
36
|
-
* TMS 系统的侧边栏组件。该组件需要放置在 [Ant Design 的 `Layout` 组件][1]内部才能正常工作。
|
|
33
|
+
* 出自 TMS 系统的侧边栏组件。该组件需要放置在 [Ant Design 的 `Layout` 组件][1]内部才能正常工作。
|
|
34
|
+
*
|
|
35
|
+
* 一般来说,使用该组件时至少需要提供 `logo`、`items` 和 `onSelect` 三个属性,具体用法请参照范例。
|
|
37
36
|
*
|
|
38
37
|
* 除了文档中列出的属性之外,该组件会把额外的属性全部传递给内部的菜单 [`Menu` 组件][2]。
|
|
39
38
|
*
|
|
@@ -42,5 +41,5 @@ export interface TmsSidebarProps extends MenuProps {
|
|
|
42
41
|
* [1]: https://ant-design.antgroup.com/components/layout-cn
|
|
43
42
|
* [2]: https://ant-design.antgroup.com/components/menu-cn
|
|
44
43
|
*/
|
|
45
|
-
declare function
|
|
46
|
-
export default
|
|
44
|
+
declare function Sidebar(props: SidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
45
|
+
export default Sidebar;
|
|
@@ -23,7 +23,9 @@ const DEFAULT_MENU_ITEMS = [
|
|
|
23
23
|
]),
|
|
24
24
|
];
|
|
25
25
|
/**
|
|
26
|
-
* TMS 系统的侧边栏组件。该组件需要放置在 [Ant Design 的 `Layout` 组件][1]内部才能正常工作。
|
|
26
|
+
* 出自 TMS 系统的侧边栏组件。该组件需要放置在 [Ant Design 的 `Layout` 组件][1]内部才能正常工作。
|
|
27
|
+
*
|
|
28
|
+
* 一般来说,使用该组件时至少需要提供 `logo`、`items` 和 `onSelect` 三个属性,具体用法请参照范例。
|
|
27
29
|
*
|
|
28
30
|
* 除了文档中列出的属性之外,该组件会把额外的属性全部传递给内部的菜单 [`Menu` 组件][2]。
|
|
29
31
|
*
|
|
@@ -32,7 +34,7 @@ const DEFAULT_MENU_ITEMS = [
|
|
|
32
34
|
* [1]: https://ant-design.antgroup.com/components/layout-cn
|
|
33
35
|
* [2]: https://ant-design.antgroup.com/components/menu-cn
|
|
34
36
|
*/
|
|
35
|
-
function
|
|
37
|
+
function Sidebar(props) {
|
|
36
38
|
const { width = 260, logo, items = DEFAULT_MENU_ITEMS, selectedKeys, openKeys, onSelect, onOpenChange, ...rest } = props;
|
|
37
39
|
return (_jsxs(Sider, { theme: "light", width: width, style: {
|
|
38
40
|
boxShadow: "0 2px 8px rgba(0, 0, 0, 0.15)",
|
|
@@ -59,5 +61,5 @@ function TmsSidebar(props) {
|
|
|
59
61
|
},
|
|
60
62
|
}, children: _jsx(Menu, { mode: "inline", style: { borderRight: 0 }, selectedKeys: selectedKeys, openKeys: openKeys, onSelect: onSelect, onOpenChange: onOpenChange, items: items, ...rest }) })] }));
|
|
61
63
|
}
|
|
62
|
-
export default
|
|
63
|
-
//# sourceMappingURL=
|
|
64
|
+
export default Sidebar;
|
|
65
|
+
//# sourceMappingURL=Sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../src/components/Sidebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAIpD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;AAIzB,MAAM,QAAQ,GAAG,CACf,KAAsB,EACtB,GAAc,EACd,IAAsB,EACtB,QAAqB,EACX,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAEhD,yBAAyB;AACzB,MAAM,kBAAkB,GAAe;IACrC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,KAAC,gBAAgB,KAAG,EAAE;QACnD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;QAC9B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;QACrC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;KAChC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAC,YAAY,KAAG,EAAE;QACrD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;QACnC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;QAC9B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;KACrC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAC,YAAY,KAAG,EAAE;QACxD,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;QACrC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;QACpC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;QACxC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;KACxC,CAAC;CACH,CAAC;AAgCF;;;;;;;;;;;GAWG;AACH,SAAS,OAAO,CAAC,KAAmB;IAClC,MAAM,EACJ,KAAK,GAAG,GAAG,EACX,IAAI,EACJ,KAAK,GAAG,kBAAkB,EAC1B,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IACV,OAAO,CACL,MAAC,KAAK,IACJ,KAAK,EAAC,OAAO,EACb,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE;YACL,SAAS,EAAE,+BAA+B;YAC1C,SAAS,EAAE,MAAM;SAClB,aAED,cACE,KAAK,EAAE;oBACL,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,QAAQ;oBACpB,cAAc,EAAE,QAAQ;oBACxB,UAAU,EAAE,UAAU;iBACvB,YAED,cACE,GAAG,EAAC,MAAM,EACV,GAAG,EAAE,IAAI,EACT,KAAK,EAAE;wBACL,KAAK,EAAE,MAAM;wBACb,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,SAAS;qBACrB,GACD,GACE,EACN,KAAC,cAAc,IACb,KAAK,EAAE;oBACL,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,eAAe,EAAE,CAAC;4BAClB,gBAAgB,EAAE,CAAC;4BACnB,iBAAiB,EAAE,SAAS;4BAC5B,cAAc,EAAE,SAAS;yBAC1B;qBACF;iBACF,YAED,KAAC,IAAI,IACH,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EACzB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,KACR,IAAI,GACR,GACa,IACX,CACT,CAAC;AACJ,CAAC;AAED,eAAe,OAAO,CAAC"}
|
package/dist/echarts/gl.d.ts
CHANGED
|
@@ -80,7 +80,7 @@ export interface FlowGLSeriesOption {
|
|
|
80
80
|
/**
|
|
81
81
|
* 每行数据包含四个值,分别表示位置 x、y,速度 sx、sy。
|
|
82
82
|
*
|
|
83
|
-
* 如果需要使用风场数据,可以直接调用 {@
|
|
83
|
+
* 如果需要使用风场数据,可以直接调用 {@linkcode preprocessWindData} 来将数据处理成此处需要的格式。
|
|
84
84
|
*/
|
|
85
85
|
data: [number, number, number, number][];
|
|
86
86
|
/**
|
package/dist/echarts/series.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export interface LineSeriesOption {
|
|
|
21
21
|
/**
|
|
22
22
|
* 需要应用的配置预设。预设的优先级**高于** `option`。
|
|
23
23
|
*
|
|
24
|
-
* 可用的预设:{@
|
|
24
|
+
* 可用的预设:{@linkcode gradientArea}
|
|
25
25
|
*/
|
|
26
26
|
presets?: LineSeriesPreset[];
|
|
27
27
|
}
|
|
@@ -98,7 +98,7 @@ export interface PieSeriesOption {
|
|
|
98
98
|
/**
|
|
99
99
|
* 需要应用的配置预设。预设的优先级**高于** `option`。
|
|
100
100
|
*
|
|
101
|
-
* 可用的预设:{@
|
|
101
|
+
* 可用的预设:{@linkcode ringPie}
|
|
102
102
|
*/
|
|
103
103
|
presets?: PieSeriesPreset[];
|
|
104
104
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
export { getCasdoorSdk, getAccessToken, getDecodedAccessToken, useUserInfo, AuthProvider, type AuthProviderProps, AuthCallback, type AuthCallbackProps, } from "./components/Auth";
|
|
1
2
|
export { default as Calendar, type CalendarProps } from "./components/Calendar";
|
|
2
3
|
export { default as CircularProgress, type CircularProgressProps, } from "./components/CircularProgress";
|
|
3
|
-
|
|
4
|
-
export { ImageBackground, type ImageBackgroundProps };
|
|
4
|
+
export { default as ImageBackground, type ImageBackgroundProps, } from "./components/ImageBackground";
|
|
5
5
|
export { default as QuickDateRangePicker, type QuickDateRangePickerProps, } from "./components/QuickDateRangePicker";
|
|
6
6
|
export { default as SegmentedButtons, TimeUnitSwitcher, type TimeUnitSwitcherProps, } from "./components/SegmentedButtons";
|
|
7
|
-
export { default as
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
export { default as Sidebar,
|
|
8
|
+
/** @deprecated 该名称已弃用,请改为导入 `Sidebar`。*/
|
|
9
|
+
default as TmsSidebar, type SidebarProps,
|
|
10
|
+
/** @deprecated 该名称已弃用,请改为导入 `SidebarProps`。*/
|
|
11
|
+
type SidebarProps as TmsSidebarProps, } from "./components/Sidebar";
|
|
12
|
+
export { default as TsingrocDatePicker, type DatePickerProps, } from "./components/TsingrocDatePicker";
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
export { getCasdoorSdk, getAccessToken, getDecodedAccessToken, useUserInfo, AuthProvider, AuthCallback, } from "./components/Auth";
|
|
1
2
|
export { default as Calendar } from "./components/Calendar";
|
|
2
3
|
export { default as CircularProgress, } from "./components/CircularProgress";
|
|
3
|
-
|
|
4
|
-
export { ImageBackground };
|
|
4
|
+
export { default as ImageBackground, } from "./components/ImageBackground";
|
|
5
5
|
export { default as QuickDateRangePicker, } from "./components/QuickDateRangePicker";
|
|
6
6
|
export { default as SegmentedButtons, TimeUnitSwitcher, } from "./components/SegmentedButtons";
|
|
7
|
-
export { default as
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
export { default as Sidebar,
|
|
8
|
+
/** @deprecated 该名称已弃用,请改为导入 `Sidebar`。*/
|
|
9
|
+
default as TmsSidebar, } from "./components/Sidebar";
|
|
10
|
+
export { default as TsingrocDatePicker, } from "./components/TsingrocDatePicker";
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAsB,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EACL,OAAO,IAAI,gBAAgB,GAE5B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,YAAY,EAEZ,YAAY,GAEb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAsB,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EACL,OAAO,IAAI,gBAAgB,GAE5B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,OAAO,IAAI,eAAe,GAE3B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,OAAO,IAAI,oBAAoB,GAEhC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,OAAO,IAAI,gBAAgB,EAC3B,gBAAgB,GAEjB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,OAAO,IAAI,OAAO;AAClB,yCAAyC;AACzC,OAAO,IAAI,UAAU,GAItB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,OAAO,IAAI,kBAAkB,GAE9B,MAAM,iCAAiC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsingroc/tsingroc-components",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -26,34 +26,35 @@
|
|
|
26
26
|
"license": "ISC",
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@ant-design/icons": "^5.6.1",
|
|
29
|
-
"antd": "^5.24.
|
|
29
|
+
"antd": "^5.24.7",
|
|
30
30
|
"antd-style": "^3.7.1",
|
|
31
|
+
"casdoor-js-sdk": "^0.16.0",
|
|
31
32
|
"dayjs": "^1.11.13",
|
|
32
33
|
"echarts": "^5.6.0",
|
|
33
34
|
"echarts-gl": "^2.0.9",
|
|
35
|
+
"jwt-decode": "^4.0.0",
|
|
34
36
|
"react": "^18.3.1",
|
|
35
37
|
"react-dom": "^18.3.1"
|
|
36
38
|
},
|
|
37
39
|
"devDependencies": {
|
|
38
40
|
"@eslint/js": "^9.21.0",
|
|
39
|
-
"@rsbuild/core": "^1.3.
|
|
40
|
-
"@rsbuild/plugin-react": "^1.
|
|
41
|
+
"@rsbuild/core": "^1.3.7",
|
|
42
|
+
"@rsbuild/plugin-react": "^1.2.0",
|
|
41
43
|
"@rspress/plugin-preview": "^2.0.0-alpha.0",
|
|
42
|
-
"@types/node": "^22.
|
|
44
|
+
"@types/node": "^22.14.1",
|
|
43
45
|
"@types/react": "^18.3.20",
|
|
44
46
|
"@types/react-dom": "^18.3.6",
|
|
45
47
|
"echarts-for-react": "^3.0.2",
|
|
46
|
-
"eslint": "^9.
|
|
48
|
+
"eslint": "^9.24.0",
|
|
47
49
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
48
|
-
"eslint-plugin-react-refresh": "^0.4.19",
|
|
49
50
|
"globals": "^16.0.0",
|
|
50
51
|
"prettier": "^3.5.3",
|
|
51
52
|
"react-markdown": "^10.1.0",
|
|
52
53
|
"remark-gfm": "^4.0.1",
|
|
53
54
|
"rspress": "^2.0.0-alpha.8",
|
|
54
|
-
"typedoc": "^0.28.
|
|
55
|
-
"typescript": "^5.8.
|
|
56
|
-
"typescript-eslint": "^8.
|
|
55
|
+
"typedoc": "^0.28.2",
|
|
56
|
+
"typescript": "^5.8.3",
|
|
57
|
+
"typescript-eslint": "^8.30.1"
|
|
57
58
|
},
|
|
58
59
|
"directories": {
|
|
59
60
|
"example": "example",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TmsSidebar.js","sourceRoot":"","sources":["../../src/components/TmsSidebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAIpD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;AAIzB,MAAM,QAAQ,GAAG,CACf,KAAsB,EACtB,GAAc,EACd,IAAsB,EACtB,QAAqB,EACX,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAEhD,yBAAyB;AACzB,MAAM,kBAAkB,GAAe;IACrC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,KAAC,gBAAgB,KAAG,EAAE;QACnD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;QAC9B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;QACrC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;KAChC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAC,YAAY,KAAG,EAAE;QACrD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;QACnC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;QAC9B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;KACrC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAC,YAAY,KAAG,EAAE;QACxD,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;QACrC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;QACpC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;QACxC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;KACxC,CAAC;CACH,CAAC;AAmCF;;;;;;;;;GASG;AACH,SAAS,UAAU,CAAC,KAAsB;IACxC,MAAM,EACJ,KAAK,GAAG,GAAG,EACX,IAAI,EACJ,KAAK,GAAG,kBAAkB,EAC1B,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IACV,OAAO,CACL,MAAC,KAAK,IACJ,KAAK,EAAC,OAAO,EACb,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE;YACL,SAAS,EAAE,+BAA+B;YAC1C,SAAS,EAAE,MAAM;SAClB,aAED,cACE,KAAK,EAAE;oBACL,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,QAAQ;oBACpB,cAAc,EAAE,QAAQ;oBACxB,UAAU,EAAE,UAAU;iBACvB,YAED,cACE,GAAG,EAAC,MAAM,EACV,GAAG,EAAE,IAAI,EACT,KAAK,EAAE;wBACL,KAAK,EAAE,MAAM;wBACb,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,SAAS;qBACrB,GACD,GACE,EACN,KAAC,cAAc,IACb,KAAK,EAAE;oBACL,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,eAAe,EAAE,CAAC;4BAClB,gBAAgB,EAAE,CAAC;4BACnB,iBAAiB,EAAE,SAAS;4BAC5B,cAAc,EAAE,SAAS;yBAC1B;qBACF;iBACF,YAED,KAAC,IAAI,IACH,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EACzB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,KACR,IAAI,GACR,GACa,IACX,CACT,CAAC;AACJ,CAAC;AAED,eAAe,UAAU,CAAC"}
|