@arcblock/ux 2.10.67 → 2.10.69
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/lib/Address/did-address.d.ts +6 -5
- package/lib/Address/index.d.ts +1 -1
- package/lib/Avatar/index.d.ts +10 -8
- package/lib/Avatar/index.js +6 -4
- package/lib/Blocklet/blocklet.d.ts +4 -4
- package/lib/Blocklet/blocklet.js +2 -2
- package/lib/BlockletContext/index.d.ts +3 -3
- package/lib/BlockletNFT/index.d.ts +6 -6
- package/lib/BlockletNFT/index.js +3 -3
- package/lib/BlockletV2/blocklet.d.ts +2 -2
- package/lib/Button/wrap.d.ts +4 -4
- package/lib/Button/wrap.js +2 -2
- package/lib/CardSelector/index.js +0 -1
- package/lib/Center/index.d.ts +1 -1
- package/lib/ClickToCopy/copy-button.d.ts +5 -4
- package/lib/ClickToCopy/copy-button.js +0 -1
- package/lib/ClickToCopy/hook.d.ts +3 -8
- package/lib/ClickToCopy/index.d.ts +6 -4
- package/lib/CodeBlock/index.d.ts +3 -1
- package/lib/CookieConsent/index.d.ts +8 -29
- package/lib/CookieConsent/index.js +3 -17
- package/lib/CountDown/index.d.ts +21 -25
- package/lib/CountDown/index.js +12 -11
- package/lib/DID/index.d.ts +9 -8
- package/lib/Datatable/index.d.ts +5 -5
- package/lib/Datatable/index.js +5 -5
- package/lib/Dialog/confirm.d.ts +6 -6
- package/lib/Dialog/confirm.js +3 -3
- package/lib/Dialog/types.d.ts +1 -1
- package/lib/DidLogo/index.d.ts +5 -25
- package/lib/DidLogo/index.js +4 -15
- package/lib/DriftBot/index.d.ts +13 -19
- package/lib/DriftBot/index.js +5 -6
- package/lib/Earth/index.d.ts +28 -10
- package/lib/Earth/index.js +12 -52
- package/lib/Earth/util.d.ts +10 -5
- package/lib/Earth/util.js +1 -0
- package/lib/ErrorBoundary/fallback.d.ts +12 -19
- package/lib/ErrorBoundary/fallback.js +2 -19
- package/lib/ErrorBoundary/index.d.ts +1 -1
- package/lib/Footer/index.d.ts +17 -24
- package/lib/Footer/index.js +2 -11
- package/lib/Header/header.d.ts +2 -2
- package/lib/Icon/image.d.ts +3 -2
- package/lib/Icon/index.d.ts +6 -4
- package/lib/Img/index.d.ts +1 -1
- package/lib/Img/index.js +1 -1
- package/lib/InfoRow/index.d.ts +9 -32
- package/lib/InfoRow/index.js +10 -23
- package/lib/Layout/dashboard/external-link.d.ts +13 -14
- package/lib/Layout/dashboard/external-link.js +5 -22
- package/lib/Layout/dashboard/full-page.d.ts +19 -11
- package/lib/Layout/dashboard/full-page.js +2 -6
- package/lib/Layout/dashboard/index.d.ts +20 -39
- package/lib/Layout/dashboard/index.js +10 -38
- package/lib/Layout/dashboard/sidebar.d.ts +17 -20
- package/lib/Layout/dashboard/sidebar.js +3 -16
- package/lib/Layout/dashboard-legacy/header.d.ts +10 -36
- package/lib/Layout/dashboard-legacy/header.js +5 -24
- package/lib/Layout/dashboard-legacy/index.d.ts +17 -56
- package/lib/Layout/dashboard-legacy/index.js +12 -41
- package/lib/Layout/dashboard-legacy/sidebar.d.ts +15 -26
- package/lib/Layout/dashboard-legacy/sidebar.js +5 -15
- package/lib/Layout/index.d.ts +17 -56
- package/lib/Layout/index.js +24 -50
- package/lib/LoadingMask/index.d.ts +8 -31
- package/lib/LoadingMask/index.js +3 -19
- package/lib/Locale/browser-lang.d.ts +4 -1
- package/lib/Locale/browser-lang.js +8 -3
- package/lib/Locale/context.d.ts +18 -8
- package/lib/Locale/context.js +1 -1
- package/lib/Locale/languages.d.ts +9 -55
- package/lib/Locale/selector.d.ts +10 -26
- package/lib/Locale/selector.js +8 -25
- package/lib/Locale/util.d.ts +4 -3
- package/lib/Locale/util.js +0 -1
- package/lib/Logo/index.d.ts +9 -40
- package/lib/Logo/index.js +88 -46
- package/lib/Metric/index.d.ts +9 -31
- package/lib/Metric/index.js +5 -20
- package/lib/NFTDisplay/aspect-ratio-container.d.ts +5 -12
- package/lib/NFTDisplay/aspect-ratio-container.js +0 -5
- package/lib/NFTDisplay/broken.d.ts +3 -13
- package/lib/NFTDisplay/broken.js +80 -10
- package/lib/NFTDisplay/displayApi.d.ts +1 -1
- package/lib/NFTDisplay/index.d.ts +28 -6
- package/lib/NFTDisplay/index.js +17 -51
- package/lib/NFTDisplay/svg-embedder/img.d.ts +8 -23
- package/lib/NFTDisplay/svg-embedder/img.js +3 -17
- package/lib/NFTDisplay/svg-embedder/inline-svg.d.ts +7 -13
- package/lib/NFTDisplay/svg-embedder/inline-svg.js +1 -8
- package/lib/NavMenu/nav-menu.d.ts +2 -0
- package/lib/NavMenu/nav-menu.js +0 -1
- package/lib/PageScroller/index.d.ts +14 -13
- package/lib/PageScroller/index.js +12 -37
- package/lib/PageScroller/usePrevValue.d.ts +1 -1
- package/lib/PageScroller/usePrevValue.js +1 -2
- package/lib/Passport/index.d.ts +1 -1
- package/lib/Passport/passport.d.ts +10 -30
- package/lib/Passport/passport.js +5 -19
- package/lib/PoweredByArcBlock/index.d.ts +4 -14
- package/lib/PoweredByArcBlock/index.js +1 -8
- package/lib/PricingTable/PricingPlan.d.ts +11 -9
- package/lib/PricingTable/PricingPlan.js +0 -4
- package/lib/PricingTable/index.d.ts +5 -3
- package/lib/PricingTable/index.js +1 -5
- package/lib/QRCode/index.d.ts +11 -22
- package/lib/QRCode/index.js +2 -17
- package/lib/RelativeTime/index.d.ts +12 -40
- package/lib/RelativeTime/index.js +7 -27
- package/lib/Result/common.d.ts +26 -45
- package/lib/Result/common.js +2 -4
- package/lib/Result/index.d.ts +5 -18
- package/lib/Result/index.js +1 -9
- package/lib/Result/result.d.ts +7 -29
- package/lib/Result/result.js +2 -17
- package/lib/Result/translations.d.ts +2 -54
- package/lib/Screenshot/BaseScreenshot/index.d.ts +7 -24
- package/lib/Screenshot/BaseScreenshot/index.js +2 -15
- package/lib/Screenshot/BaseScreenshot/shells/Macbook.d.ts +25 -19
- package/lib/Screenshot/BaseScreenshot/shells/Phone.d.ts +25 -19
- package/lib/Screenshot/index.d.ts +84 -28
- package/lib/Screenshot/index.js +14 -43
- package/lib/SessionBlocklet/index.d.ts +6 -19
- package/lib/SessionBlocklet/index.js +5 -15
- package/lib/SessionManager/index.d.ts +1 -1
- package/lib/SessionPermission/index.d.ts +9 -17
- package/lib/SessionPermission/index.js +3 -11
- package/lib/SessionUser/components/logged-in.d.ts +9 -31
- package/lib/SessionUser/components/logged-in.js +13 -29
- package/lib/SessionUser/components/session-user-item.d.ts +8 -1
- package/lib/SessionUser/components/session-user-item.js +2 -12
- package/lib/SessionUser/components/session-user-switch.d.ts +9 -21
- package/lib/SessionUser/components/session-user-switch.js +3 -15
- package/lib/SessionUser/components/un-login.d.ts +7 -23
- package/lib/SessionUser/components/un-login.js +4 -16
- package/lib/SessionUser/components/user-info.d.ts +12 -29
- package/lib/SessionUser/components/user-info.js +4 -19
- package/lib/SessionUser/index.d.ts +7 -30
- package/lib/SessionUser/index.js +5 -26
- package/lib/SessionUser/libs/translation.d.ts +2 -31
- package/lib/SessionUser/libs/translation.js +1 -0
- package/lib/SessionUser/libs/utils.d.ts +10 -9
- package/lib/Sparkline/index.d.ts +22 -1
- package/lib/Sparkline/index.js +25 -17
- package/lib/Spinner/index.d.ts +6 -1
- package/lib/Spinner/index.js +4 -11
- package/lib/Success/index.d.ts +5 -21
- package/lib/Success/index.js +10 -19
- package/lib/Tabs/index.d.ts +12 -26
- package/lib/Tabs/index.js +7 -37
- package/lib/TextCollapse/index.d.ts +10 -10
- package/lib/TextCollapse/index.js +4 -21
- package/lib/Theme/index.js +0 -2
- package/lib/Theme/theme-provider.d.ts +1 -1
- package/lib/Theme/theme.d.ts +4 -1
- package/lib/Theme/theme.js +1 -2
- package/lib/Typography/index.d.ts +5 -24
- package/lib/Typography/index.js +5 -17
- package/lib/Util/index.d.ts +17 -8
- package/lib/Util/index.js +22 -3
- package/lib/Video/index.d.ts +12 -16
- package/lib/Video/index.js +0 -14
- package/lib/Wallet/Action.d.ts +13 -18
- package/lib/Wallet/Action.js +0 -7
- package/lib/Wallet/Download.d.ts +24 -30
- package/lib/Wallet/Download.js +201 -18
- package/lib/Wallet/Open.d.ts +5 -15
- package/lib/Wallet/Open.js +5 -11
- package/lib/WalletOSIcon/index.d.ts +6 -25
- package/lib/WalletOSIcon/index.js +3 -16
- package/lib/WebWalletSWKeeper/index.d.ts +8 -20
- package/lib/WebWalletSWKeeper/index.js +14 -19
- package/lib/WechatPrompt/index.js +2 -0
- package/lib/global.d.ts +15 -0
- package/lib/type.d.ts +12 -3
- package/lib/withTheme/index.d.ts +8 -6
- package/lib/withTracker/index.d.ts +1 -1
- package/lib/withTracker/index.js +3 -0
- package/package.json +9 -5
- package/src/Address/did-address.tsx +7 -6
- package/src/Address/index.tsx +1 -1
- package/src/Avatar/index.jsx +6 -4
- package/src/Blocklet/blocklet.jsx +2 -2
- package/src/BlockletContext/index.tsx +3 -3
- package/src/BlockletNFT/index.jsx +3 -3
- package/src/BlockletV2/blocklet.tsx +2 -2
- package/src/Button/wrap.jsx +2 -2
- package/src/CardSelector/index.tsx +0 -1
- package/src/Center/index.tsx +1 -1
- package/src/ClickToCopy/copy-button.tsx +4 -4
- package/src/ClickToCopy/hook.ts +3 -2
- package/src/ClickToCopy/index.tsx +6 -5
- package/src/CodeBlock/index.tsx +3 -1
- package/src/CookieConsent/{index.jsx → index.tsx} +16 -19
- package/src/CountDown/{index.jsx → index.tsx} +30 -16
- package/src/DID/index.tsx +9 -8
- package/src/Datatable/index.jsx +5 -5
- package/src/Dialog/confirm.jsx +3 -3
- package/src/Dialog/types.d.ts +1 -1
- package/src/DidLogo/{index.jsx → index.tsx} +7 -14
- package/src/DriftBot/{index.jsx → index.tsx} +13 -11
- package/src/Earth/{index.jsx → index.tsx} +94 -66
- package/src/Earth/{util.js → util.ts} +20 -17
- package/src/ErrorBoundary/{fallback.jsx → fallback.tsx} +20 -21
- package/src/Footer/{index.jsx → index.tsx} +17 -14
- package/src/Header/header.tsx +2 -3
- package/src/Header/responsive-header.tsx +0 -1
- package/src/Icon/image.tsx +3 -3
- package/src/Icon/index.tsx +7 -4
- package/src/Img/index.jsx +1 -1
- package/src/InfoRow/{index.jsx → index.tsx} +32 -25
- package/src/Layout/dashboard/external-link.tsx +46 -0
- package/src/Layout/dashboard/{full-page.jsx → full-page.tsx} +20 -9
- package/src/Layout/dashboard/{index.jsx → index.tsx} +42 -44
- package/src/Layout/dashboard/{sidebar.jsx → sidebar.tsx} +23 -20
- package/src/Layout/dashboard-legacy/{header.jsx → header.tsx} +16 -26
- package/src/Layout/dashboard-legacy/{index.jsx → index.tsx} +32 -46
- package/src/Layout/dashboard-legacy/{sidebar.jsx → sidebar.tsx} +27 -19
- package/src/Layout/{index.jsx → index.tsx} +41 -47
- package/src/LoadingMask/{index.jsx → index.tsx} +18 -20
- package/src/Locale/{browser-lang.js → browser-lang.ts} +9 -7
- package/src/Locale/context.tsx +18 -11
- package/src/Locale/{languages.js → languages.ts} +1 -1
- package/src/Locale/{selector.jsx → selector.tsx} +32 -29
- package/src/Locale/{util.js → util.ts} +9 -2
- package/src/Logo/index.tsx +58 -0
- package/src/Metric/{index.jsx → index.tsx} +23 -18
- package/src/NFTDisplay/{aspect-ratio-container.jsx → aspect-ratio-container.tsx} +9 -7
- package/src/NFTDisplay/{broken.jsx → broken.tsx} +7 -12
- package/src/NFTDisplay/{displayApi.js → displayApi.ts} +4 -4
- package/src/NFTDisplay/{index.jsx → index.tsx} +59 -64
- package/src/NFTDisplay/svg-embedder/{img.jsx → img.tsx} +10 -18
- package/src/NFTDisplay/svg-embedder/{inline-svg.jsx → inline-svg.tsx} +8 -9
- package/src/NavMenu/nav-menu.tsx +2 -3
- package/src/PageScroller/{index.jsx → index.tsx} +40 -53
- package/src/PageScroller/{usePrevValue.js → usePrevValue.ts} +2 -3
- package/src/Passport/{passport.jsx → passport.tsx} +22 -19
- package/src/PoweredByArcBlock/{index.jsx → index.tsx} +6 -11
- package/src/PricingTable/{PricingPlan.jsx → PricingPlan.tsx} +15 -5
- package/src/PricingTable/{index.jsx → index.tsx} +9 -6
- package/src/QRCode/{index.jsx → index.tsx} +14 -19
- package/src/RelativeTime/{index.jsx → index.tsx} +24 -24
- package/src/Result/{common.jsx → common.tsx} +17 -13
- package/src/Result/index.tsx +30 -0
- package/src/Result/{result.jsx → result.tsx} +8 -17
- package/src/Result/{translations.js → translations.ts} +3 -1
- package/src/Screenshot/BaseScreenshot/{index.jsx → index.tsx} +9 -15
- package/src/Screenshot/BaseScreenshot/shells/{Macbook.jsx → Macbook.tsx} +3 -1
- package/src/Screenshot/BaseScreenshot/shells/{Phone.jsx → Phone.tsx} +3 -1
- package/src/Screenshot/{index.jsx → index.tsx} +60 -54
- package/src/SessionBlocklet/{index.jsx → index.tsx} +9 -14
- package/src/SessionPermission/index.tsx +25 -0
- package/src/SessionUser/components/{logged-in.jsx → logged-in.tsx} +49 -31
- package/src/SessionUser/components/session-user-item.tsx +97 -0
- package/src/SessionUser/components/{session-user-switch.jsx → session-user-switch.tsx} +16 -21
- package/src/SessionUser/components/{un-login.jsx → un-login.tsx} +10 -15
- package/src/SessionUser/components/{user-info.jsx → user-info.tsx} +16 -22
- package/src/SessionUser/index.tsx +26 -0
- package/src/SessionUser/libs/{translation.js → translation.ts} +3 -1
- package/src/SessionUser/libs/utils.ts +39 -0
- package/src/Sparkline/{index.jsx → index.tsx} +38 -22
- package/src/Spinner/index.tsx +20 -0
- package/src/Success/{index.jsx → index.tsx} +13 -16
- package/src/Tabs/{index.jsx → index.tsx} +26 -40
- package/src/TextCollapse/{index.jsx → index.tsx} +26 -21
- package/src/Theme/index.ts +0 -1
- package/src/Theme/theme-provider.tsx +1 -1
- package/src/Theme/theme.ts +6 -3
- package/src/Typography/{index.jsx → index.tsx} +19 -22
- package/src/Util/index.ts +26 -9
- package/src/Video/{index.jsx → index.tsx} +7 -10
- package/src/Wallet/{Action.jsx → Action.tsx} +16 -12
- package/src/Wallet/{Download.jsx → Download.tsx} +25 -21
- package/src/Wallet/{Open.jsx → Open.tsx} +8 -11
- package/src/WalletOSIcon/{index.jsx → index.tsx} +8 -16
- package/src/WebWalletSWKeeper/{index.jsx → index.tsx} +21 -24
- package/src/WechatPrompt/{index.jsx → index.tsx} +1 -0
- package/src/global.d.ts +15 -0
- package/src/type.d.ts +12 -3
- package/src/withTheme/{index.jsx → index.tsx} +12 -2
- package/src/withTracker/{index.jsx → index.tsx} +6 -4
- package/src/Layout/dashboard/external-link.jsx +0 -47
- package/src/Logo/index.jsx +0 -66
- package/src/Result/index.jsx +0 -33
- package/src/SessionPermission/index.jsx +0 -28
- package/src/SessionUser/components/session-user-item.jsx +0 -93
- package/src/SessionUser/index.jsx +0 -38
- package/src/SessionUser/libs/utils.js +0 -37
- package/src/Spinner/index.jsx +0 -21
- /package/src/ErrorBoundary/{index.jsx → index.ts} +0 -0
- /package/src/NFTDisplay/{loading.jsx → loading.tsx} +0 -0
- /package/src/Passport/{index.jsx → index.ts} +0 -0
- /package/src/SessionManager/{index.jsx → index.tsx} +0 -0
@@ -1,7 +1,13 @@
|
|
1
1
|
/* eslint-disable */
|
2
2
|
// Code from: https://observablehq.com/@d3/world-tour
|
3
|
+
export type Vec3 = [number, number, number];
|
4
|
+
export type Vec2 = [number, number];
|
5
|
+
export type Quaternion = [number, number, number, number];
|
6
|
+
export type Rotation = Vec3;
|
7
|
+
export type Angles = Vec3;
|
8
|
+
|
3
9
|
export default class Util {
|
4
|
-
static fromAngles([l, p, g]) {
|
10
|
+
static fromAngles([l, p, g]: Angles) {
|
5
11
|
l *= Math.PI / 360;
|
6
12
|
p *= Math.PI / 360;
|
7
13
|
g *= Math.PI / 360;
|
@@ -16,10 +22,10 @@ export default class Util {
|
|
16
22
|
sl * cp * cg - cl * sp * sg,
|
17
23
|
cl * sp * cg + sl * cp * sg,
|
18
24
|
cl * cp * sg - sl * sp * cg,
|
19
|
-
];
|
25
|
+
] as Quaternion;
|
20
26
|
}
|
21
27
|
|
22
|
-
static toAngles([a, b, c, d]) {
|
28
|
+
static toAngles([a, b, c, d]: Quaternion) {
|
23
29
|
return [
|
24
30
|
(Math.atan2(2 * (a * b + c * d), 1 - 2 * (b * b + c * c)) * 180) / Math.PI,
|
25
31
|
(Math.asin(Math.max(-1, Math.min(1, 2 * (a * c - d * b)))) * 180) / Math.PI,
|
@@ -27,27 +33,24 @@ export default class Util {
|
|
27
33
|
];
|
28
34
|
}
|
29
35
|
|
30
|
-
static interpolateAngles(a, b) {
|
36
|
+
static interpolateAngles(a: [number, number, number], b: [number, number, number]) {
|
31
37
|
const i = Util.interpolate(Util.fromAngles(a), Util.fromAngles(b));
|
32
|
-
return t => Util.toAngles(i(t));
|
38
|
+
return (t: number) => Util.toAngles(i(t));
|
33
39
|
}
|
34
40
|
|
35
|
-
static interpolateLinear([a1, b1, c1, d1], [a2, b2, c2, d2]) {
|
41
|
+
static interpolateLinear([a1, b1, c1, d1]: Quaternion, [a2, b2, c2, d2]: Quaternion) {
|
36
42
|
(a2 -= a1), (b2 -= b1), (c2 -= c1), (d2 -= d1);
|
37
43
|
const x = new Array(4);
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
(x[1] = b1 + b2 * t),
|
42
|
-
(x[2] = c1 + c2 * t),
|
43
|
-
(x[3] = d1 + d2 * t)
|
44
|
-
);
|
44
|
+
|
45
|
+
return (t: number) => {
|
46
|
+
const l = Math.hypot((x[0] = a1 + a2 * t), (x[1] = b1 + b2 * t), (x[2] = c1 + c2 * t), (x[3] = d1 + d2 * t));
|
45
47
|
(x[0] /= l), (x[1] /= l), (x[2] /= l), (x[3] /= l);
|
46
|
-
|
48
|
+
|
49
|
+
return x as Quaternion;
|
47
50
|
};
|
48
51
|
}
|
49
52
|
|
50
|
-
static interpolate([a1, b1, c1, d1], [a2, b2, c2, d2]) {
|
53
|
+
static interpolate([a1, b1, c1, d1]: Quaternion, [a2, b2, c2, d2]: Quaternion) {
|
51
54
|
let dot = a1 * a2 + b1 * b2 + c1 * c2 + d1 * d2;
|
52
55
|
if (dot < 0) (a2 = -a2), (b2 = -b2), (c2 = -c2), (d2 = -d2), (dot = -dot);
|
53
56
|
if (dot > 0.9995) return Util.interpolateLinear([a1, b1, c1, d1], [a2, b2, c2, d2]);
|
@@ -55,7 +58,7 @@ export default class Util {
|
|
55
58
|
const x = new Array(4);
|
56
59
|
const l = Math.hypot((a2 -= a1 * dot), (b2 -= b1 * dot), (c2 -= c1 * dot), (d2 -= d1 * dot));
|
57
60
|
(a2 /= l), (b2 /= l), (c2 /= l), (d2 /= l);
|
58
|
-
return t => {
|
61
|
+
return (t: number) => {
|
59
62
|
const theta = theta0 * t;
|
60
63
|
const s = Math.sin(theta);
|
61
64
|
const c = Math.cos(theta);
|
@@ -63,7 +66,7 @@ export default class Util {
|
|
63
66
|
x[1] = b1 * c + b2 * s;
|
64
67
|
x[2] = c1 * c + c2 * s;
|
65
68
|
x[3] = d1 * c + d2 * s;
|
66
|
-
return x;
|
69
|
+
return x as Quaternion;
|
67
70
|
};
|
68
71
|
}
|
69
72
|
}
|
@@ -1,9 +1,18 @@
|
|
1
|
-
import PropTypes from 'prop-types';
|
2
1
|
import { red } from '@mui/material/colors';
|
3
2
|
import Button from '../Button';
|
4
3
|
import { styled } from '../Theme';
|
5
4
|
|
6
|
-
|
5
|
+
export interface InternalErrorFallbackProps {
|
6
|
+
title?: string;
|
7
|
+
desc: string;
|
8
|
+
retryFunc?: (() => void) | null;
|
9
|
+
}
|
10
|
+
|
11
|
+
function InternalErrorFallback({
|
12
|
+
title = 'Something went wrong...',
|
13
|
+
desc,
|
14
|
+
retryFunc = null,
|
15
|
+
}: InternalErrorFallbackProps) {
|
7
16
|
return (
|
8
17
|
<Root role="alert">
|
9
18
|
<h3>{title}</h3>
|
@@ -17,33 +26,23 @@ function InternalErrorFallback({ title, desc, retryFunc }) {
|
|
17
26
|
);
|
18
27
|
}
|
19
28
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
retryFunc: PropTypes.func,
|
24
|
-
};
|
25
|
-
InternalErrorFallback.defaultProps = {
|
26
|
-
title: 'Something went wrong...',
|
27
|
-
retryFunc: null,
|
28
|
-
};
|
29
|
+
export interface ErrorFallbackProps {
|
30
|
+
error: Error;
|
31
|
+
}
|
29
32
|
|
30
|
-
export function ErrorFallback({ error }) {
|
33
|
+
export function ErrorFallback({ error }: ErrorFallbackProps) {
|
31
34
|
return <InternalErrorFallback desc={error.message} />;
|
32
35
|
}
|
33
36
|
|
34
|
-
|
35
|
-
error:
|
36
|
-
|
37
|
+
export interface ErrorFallbackRetryProps {
|
38
|
+
error: Error;
|
39
|
+
resetErrorBoundary: () => void;
|
40
|
+
}
|
37
41
|
|
38
|
-
export function ErrorFallbackRetry({ error, resetErrorBoundary }) {
|
42
|
+
export function ErrorFallbackRetry({ error, resetErrorBoundary }: ErrorFallbackRetryProps) {
|
39
43
|
return <InternalErrorFallback desc={error.message} retryFunc={resetErrorBoundary} />;
|
40
44
|
}
|
41
45
|
|
42
|
-
ErrorFallbackRetry.propTypes = {
|
43
|
-
error: PropTypes.instanceOf(Error).isRequired,
|
44
|
-
resetErrorBoundary: PropTypes.func.isRequired,
|
45
|
-
};
|
46
|
-
|
47
46
|
const Root = styled('div')`
|
48
47
|
padding: 16px;
|
49
48
|
border: 2px solid ${(props) => props.theme.palette.error.main};
|
@@ -1,5 +1,4 @@
|
|
1
1
|
/* eslint-disable react/no-unused-prop-types */
|
2
|
-
import PropTypes from 'prop-types';
|
3
2
|
import Typography from '@mui/material/Typography';
|
4
3
|
import MuiContainer from '@mui/material/Container';
|
5
4
|
import Box from '@mui/material/Box';
|
@@ -8,7 +7,16 @@ import { mergeProps } from '../Util';
|
|
8
7
|
import Logo from '../Logo';
|
9
8
|
import { styled } from '../Theme';
|
10
9
|
|
11
|
-
export
|
10
|
+
export interface FooterProps {
|
11
|
+
dark?: false | true;
|
12
|
+
className?: string;
|
13
|
+
copyStart?: number | string;
|
14
|
+
brand?: string;
|
15
|
+
style?: React.CSSProperties;
|
16
|
+
addon?: React.ReactNode;
|
17
|
+
}
|
18
|
+
|
19
|
+
export default function Footer(props: FooterProps) {
|
12
20
|
const newProps = mergeProps(props, Footer, ['dark', 'style']);
|
13
21
|
const { className, copyStart, style, brand, dark, addon } = newProps;
|
14
22
|
|
@@ -50,27 +58,22 @@ export default function Footer(props) {
|
|
50
58
|
);
|
51
59
|
}
|
52
60
|
|
53
|
-
Footer.propTypes = {
|
54
|
-
dark: PropTypes.bool,
|
55
|
-
className: PropTypes.string,
|
56
|
-
copyStart: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
57
|
-
brand: PropTypes.string,
|
58
|
-
style: PropTypes.object,
|
59
|
-
addon: PropTypes.node,
|
60
|
-
};
|
61
|
-
|
62
61
|
Footer.defaultProps = {
|
63
62
|
dark: false,
|
64
|
-
brand: 'ArcBlock',
|
65
|
-
copyStart: '2017',
|
66
63
|
className: '',
|
64
|
+
copyStart: '2017',
|
65
|
+
brand: 'ArcBlock',
|
67
66
|
style: {},
|
68
67
|
addon: null,
|
69
68
|
};
|
70
69
|
|
70
|
+
type ContainerProps = {
|
71
|
+
dark: boolean;
|
72
|
+
};
|
73
|
+
|
71
74
|
const Container = styled('div', {
|
72
75
|
shouldForwardProp: (prop) => prop !== 'dark',
|
73
|
-
})
|
76
|
+
})<ContainerProps>`
|
74
77
|
position: relative;
|
75
78
|
margin-top: 64px;
|
76
79
|
padding: 24px 0 32px;
|
package/src/Header/header.tsx
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
import { Box, Container, type Breakpoint } from '@mui/material';
|
1
|
+
import { Box, type BoxProps, Container, type Breakpoint } from '@mui/material';
|
2
2
|
import { useRef, useState, useEffect } from 'react';
|
3
3
|
import AutoHidden from './auto-hidden';
|
4
4
|
import { styled } from '../Theme';
|
5
5
|
|
6
|
-
export interface HeaderProps extends
|
6
|
+
export interface HeaderProps extends Omit<BoxProps, 'maxWidth'> {
|
7
7
|
/** logo img/svg, 可以包裹一个 a 标签 */
|
8
8
|
logo?: React.ReactNode;
|
9
9
|
/** 相当于 Title, 可以包裹一个 a 标签 */
|
@@ -18,7 +18,6 @@ export interface HeaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
18
18
|
prepend?: React.ReactNode;
|
19
19
|
align?: 'left' | 'right';
|
20
20
|
maxWidth?: Breakpoint | false;
|
21
|
-
// eslint-disable-next-line no-unused-vars
|
22
21
|
homeLink?: string | ((brandContent: React.ReactNode) => React.ReactNode);
|
23
22
|
}
|
24
23
|
|
@@ -12,7 +12,6 @@ import { type HeaderProps } from './header';
|
|
12
12
|
|
13
13
|
export interface ResponsiveHeaderProps extends Omit<HeaderProps, 'children'> {
|
14
14
|
menu?: React.ReactNode;
|
15
|
-
// eslint-disable-next-line no-unused-vars
|
16
15
|
children?: React.ReactNode | ((props: { isMobile: boolean; closeMenu: () => void }) => React.ReactNode);
|
17
16
|
}
|
18
17
|
|
package/src/Icon/image.tsx
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
import Img from '../Img';
|
1
|
+
import Img, { type ImgProps } from '../Img';
|
2
2
|
import { styled } from '../Theme';
|
3
3
|
|
4
|
-
export interface ImageIconProps extends
|
4
|
+
export interface ImageIconProps extends Omit<ImgProps, 'size' | 'src'> {
|
5
5
|
name: string;
|
6
6
|
size?: number;
|
7
7
|
color?: string;
|
8
8
|
alt?: string;
|
9
9
|
prefix?: string;
|
10
|
-
showBadge?:
|
10
|
+
showBadge?: false | true;
|
11
11
|
}
|
12
12
|
|
13
13
|
export default function ImageIcon({
|
package/src/Icon/index.tsx
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
import { forwardRef } from 'react';
|
2
|
+
import { type SxProps } from '@mui/material';
|
3
|
+
|
2
4
|
import colors from '../Colors';
|
3
5
|
import { styled } from '../Theme';
|
4
6
|
import { withDeprecated } from '../Util/deprecate';
|
@@ -9,13 +11,14 @@ const variants = {
|
|
9
11
|
solid: 'fas',
|
10
12
|
};
|
11
13
|
|
12
|
-
export interface IconProps extends React.HTMLAttributes<
|
14
|
+
export interface IconProps extends React.HTMLAttributes<HTMLDivElement> {
|
13
15
|
name: string;
|
14
16
|
color?: string;
|
15
17
|
size?: number;
|
16
18
|
variant?: 'light' | 'regular' | 'solid';
|
17
|
-
rounded?:
|
18
|
-
forwardedRef?: React.ForwardedRef<
|
19
|
+
rounded?: false | true;
|
20
|
+
forwardedRef?: React.ForwardedRef<HTMLDivElement>;
|
21
|
+
sx?: SxProps;
|
19
22
|
}
|
20
23
|
|
21
24
|
// eslint-disable-next-line react/prop-types
|
@@ -67,6 +70,6 @@ const Span = styled('span')<{ size: number; color: string }>`
|
|
67
70
|
`;
|
68
71
|
|
69
72
|
export default withDeprecated(
|
70
|
-
forwardRef<
|
73
|
+
forwardRef<HTMLDivElement, IconProps>((props, ref) => <Icon {...props} forwardedRef={ref} />),
|
71
74
|
{ name: 'Icon', alternative: 'SVG icons' }
|
72
75
|
);
|
package/src/Img/index.jsx
CHANGED
@@ -1,11 +1,37 @@
|
|
1
|
-
import PropTypes from 'prop-types';
|
2
1
|
import camelCase from 'lodash/camelCase';
|
3
2
|
import upperFirst from 'lodash/upperFirst';
|
4
3
|
import Typography from '@mui/material/Typography';
|
5
4
|
|
6
5
|
import { styled } from '../Theme';
|
7
6
|
|
8
|
-
|
7
|
+
export interface InfoRowProps {
|
8
|
+
name: React.ReactNode;
|
9
|
+
nameFormatter: (name: React.ReactNode) => React.ReactNode;
|
10
|
+
layout?: 'horizontal' | 'vertical';
|
11
|
+
children: React.ReactNode;
|
12
|
+
valueComponent?: React.ElementType;
|
13
|
+
nameWidth?: number;
|
14
|
+
}
|
15
|
+
|
16
|
+
function InfoRow({
|
17
|
+
name,
|
18
|
+
// eslint-disable-next-line no-shadow
|
19
|
+
nameFormatter = (name) => {
|
20
|
+
if (typeof name === 'string') {
|
21
|
+
return name
|
22
|
+
.split(' ')
|
23
|
+
.map((x: any) => upperFirst(camelCase(x)))
|
24
|
+
.join(' ');
|
25
|
+
}
|
26
|
+
|
27
|
+
return name;
|
28
|
+
},
|
29
|
+
layout = 'horizontal',
|
30
|
+
children,
|
31
|
+
valueComponent = 'div',
|
32
|
+
nameWidth = 90,
|
33
|
+
...rest
|
34
|
+
}: InfoRowProps) {
|
9
35
|
return (
|
10
36
|
<Container layout={layout} width={nameWidth} {...rest}>
|
11
37
|
<Typography color="textSecondary" className="info-row__name">
|
@@ -21,31 +47,12 @@ function InfoRow({ name, nameFormatter, layout, children, valueComponent, nameWi
|
|
21
47
|
);
|
22
48
|
}
|
23
49
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
children: PropTypes.any,
|
28
|
-
nameFormatter: PropTypes.func,
|
29
|
-
valueComponent: PropTypes.string,
|
30
|
-
nameWidth: PropTypes.number,
|
31
|
-
};
|
32
|
-
|
33
|
-
InfoRow.defaultProps = {
|
34
|
-
children: null,
|
35
|
-
nameWidth: 90,
|
36
|
-
nameFormatter: (name) => {
|
37
|
-
const resetName = name
|
38
|
-
.split(' ')
|
39
|
-
.map((x) => upperFirst(camelCase(x)))
|
40
|
-
.join(' ');
|
41
|
-
|
42
|
-
return typeof name === 'string' ? resetName : name;
|
43
|
-
},
|
44
|
-
valueComponent: 'div',
|
45
|
-
layout: 'horizontal',
|
50
|
+
type ContainerProps = {
|
51
|
+
layout: 'horizontal' | 'vertical';
|
52
|
+
width: number;
|
46
53
|
};
|
47
54
|
|
48
|
-
const Container = styled('div')
|
55
|
+
const Container = styled('div')<ContainerProps>`
|
49
56
|
display: flex;
|
50
57
|
flex-direction: ${(props) => (props.layout === 'vertical' ? 'column' : 'row')};
|
51
58
|
justify-content: flex-start;
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import PropTypes from 'prop-types';
|
2
|
+
import { Link as RouterLink, NavLink as RouterNavLink } from 'react-router-dom';
|
3
|
+
|
4
|
+
interface ExternalLinkProps extends React.ComponentProps<typeof RouterLink> {
|
5
|
+
routerLinkComponent: React.ElementType;
|
6
|
+
to: string | object;
|
7
|
+
external?: false | true;
|
8
|
+
}
|
9
|
+
|
10
|
+
// 包裹 router Link/NavLink 组件, 支持 external link (external 为 true 时渲染为 a 标签)
|
11
|
+
function ExternalLink({
|
12
|
+
routerLinkComponent: RouterLinkComponent,
|
13
|
+
to,
|
14
|
+
external = false,
|
15
|
+
children,
|
16
|
+
...rest
|
17
|
+
}: ExternalLinkProps) {
|
18
|
+
if (external) {
|
19
|
+
return (
|
20
|
+
<a href={to as string} {...rest}>
|
21
|
+
{children}
|
22
|
+
</a>
|
23
|
+
);
|
24
|
+
}
|
25
|
+
return (
|
26
|
+
<RouterLinkComponent to={to} {...rest}>
|
27
|
+
{children}
|
28
|
+
</RouterLinkComponent>
|
29
|
+
);
|
30
|
+
}
|
31
|
+
|
32
|
+
export interface LinkProps extends Omit<ExternalLinkProps, 'routerLinkComponent'> {}
|
33
|
+
|
34
|
+
export function Link(props: LinkProps) {
|
35
|
+
return <ExternalLink routerLinkComponent={RouterLink} {...props} />;
|
36
|
+
}
|
37
|
+
|
38
|
+
export interface NavLinkProps extends Omit<ExternalLinkProps, 'routerLinkComponent' | 'className'> {
|
39
|
+
className?: string | (() => string);
|
40
|
+
}
|
41
|
+
|
42
|
+
export function NavLink({ className = '', ...rest }: NavLinkProps) {
|
43
|
+
// NavLink#className 支持 function
|
44
|
+
const classes = typeof className === 'function' ? className() : className;
|
45
|
+
return <ExternalLink routerLinkComponent={RouterNavLink} className={classes} {...rest} />;
|
46
|
+
}
|
@@ -1,9 +1,24 @@
|
|
1
1
|
import { useState, useContext, createContext, useMemo, useLayoutEffect } from 'react';
|
2
|
-
import PropTypes from 'prop-types';
|
3
2
|
|
4
|
-
|
3
|
+
type FullPageState = {
|
4
|
+
inFullPage: boolean;
|
5
|
+
showToggleButton: boolean;
|
6
|
+
headerVisibleInFullPage: boolean;
|
7
|
+
footerVisibleInFullPage: boolean;
|
8
|
+
sidebarVisibleInFullPage: boolean;
|
9
|
+
};
|
10
|
+
|
11
|
+
type FullPageContextValue = FullPageState & {
|
12
|
+
headerVisible: boolean;
|
13
|
+
footerVisible: boolean;
|
14
|
+
sidebarVisible: boolean;
|
15
|
+
toggleFullPage: () => void;
|
16
|
+
configure: (params: Partial<FullPageState>) => void;
|
17
|
+
};
|
5
18
|
|
6
|
-
export const
|
19
|
+
export const FullPageContext = createContext<FullPageContextValue>(null!);
|
20
|
+
|
21
|
+
export const useFullPage = (initialState?: FullPageState) => {
|
7
22
|
const ctx = useContext(FullPageContext);
|
8
23
|
useLayoutEffect(() => {
|
9
24
|
if (initialState) {
|
@@ -14,7 +29,7 @@ export const useFullPage = (initialState) => {
|
|
14
29
|
return ctx;
|
15
30
|
};
|
16
31
|
|
17
|
-
export function FullPageProvider({ children, ...rest }) {
|
32
|
+
export function FullPageProvider({ children, ...rest }: { children?: React.ReactNode }) {
|
18
33
|
const [state, setState] = useState({
|
19
34
|
inFullPage: false,
|
20
35
|
showToggleButton: false,
|
@@ -25,7 +40,7 @@ export function FullPageProvider({ children, ...rest }) {
|
|
25
40
|
const toggleFullPage = () => {
|
26
41
|
setState((prev) => ({ ...prev, inFullPage: !prev.inFullPage }));
|
27
42
|
};
|
28
|
-
const value = useMemo(() => {
|
43
|
+
const value = useMemo<FullPageContextValue>(() => {
|
29
44
|
return {
|
30
45
|
...state,
|
31
46
|
headerVisible: !state.inFullPage || state.headerVisibleInFullPage,
|
@@ -41,7 +56,3 @@ export function FullPageProvider({ children, ...rest }) {
|
|
41
56
|
</FullPageContext.Provider>
|
42
57
|
);
|
43
58
|
}
|
44
|
-
|
45
|
-
FullPageProvider.propTypes = {
|
46
|
-
children: PropTypes.node.isRequired,
|
47
|
-
};
|
@@ -1,26 +1,27 @@
|
|
1
1
|
import { useEffect, useMemo } from 'react';
|
2
|
-
import
|
3
|
-
import { useLocation, matchPath } from 'react-router-dom';
|
2
|
+
import { useLocation, matchPath, type Location } from 'react-router-dom';
|
4
3
|
import Helmet from 'react-helmet';
|
5
4
|
import Container from '@mui/material/Container';
|
6
5
|
import Hidden from '@mui/material/Hidden';
|
7
6
|
import Box from '@mui/material/Box';
|
7
|
+
import { type SxProps } from '@mui/material';
|
8
8
|
import clsx from 'clsx';
|
9
9
|
import OpenInFullIcon from '@mui/icons-material/OpenInFull';
|
10
10
|
import CloseFullscreenIcon from '@mui/icons-material/CloseFullscreen';
|
11
11
|
import DashboardLegacy from '../dashboard-legacy';
|
12
12
|
import { ResponsiveHeader } from '../../Header';
|
13
13
|
import NavMenu from '../../NavMenu';
|
14
|
-
import Footer from '../../Footer';
|
15
|
-
import Sidebar from './sidebar';
|
14
|
+
import Footer, { type FooterProps } from '../../Footer';
|
15
|
+
import Sidebar, { type LinkItem } from './sidebar';
|
16
16
|
import { styled, useTheme } from '../../Theme';
|
17
17
|
import { Link } from './external-link';
|
18
18
|
import { FullPageProvider, useFullPage } from './full-page';
|
19
|
+
import { NavMenuProps } from '../../NavMenu/nav-menu';
|
20
|
+
import { type DashboardProps as DashboardLegacyProps } from '../dashboard-legacy';
|
19
21
|
|
20
22
|
// 监听 location 变化并关闭 header 中的 menu (确保 drawer - disablePortal:false, keepMounted:true)
|
21
23
|
// 直接监听 menu 中 link 点击来触发 closeMenu 会有问题 (Suspense & lazy)
|
22
|
-
|
23
|
-
function NavMenuWrapper({ closeMenu, ...rest }) {
|
24
|
+
function NavMenuWrapper({ closeMenu, ...rest }: { closeMenu: () => void } & NavMenuProps) {
|
24
25
|
const location = useLocation();
|
25
26
|
useEffect(() => {
|
26
27
|
closeMenu();
|
@@ -29,7 +30,7 @@ function NavMenuWrapper({ closeMenu, ...rest }) {
|
|
29
30
|
return <NavMenu {...rest} />;
|
30
31
|
}
|
31
32
|
|
32
|
-
function formatLinks(links, location) {
|
33
|
+
function formatLinks(links: LinkItem[], location: Location): LinkItem[] {
|
33
34
|
return links.map((link) => {
|
34
35
|
if (link.children?.length) {
|
35
36
|
return {
|
@@ -51,7 +52,30 @@ function formatLinks(links, location) {
|
|
51
52
|
});
|
52
53
|
}
|
53
54
|
|
54
|
-
|
55
|
+
export interface DashboardProps extends React.HTMLAttributes<HTMLDivElement> {
|
56
|
+
title?: string;
|
57
|
+
headerProps?: object;
|
58
|
+
/** 支持分组, links item 如果是数组, 则视为一个 group */
|
59
|
+
links?: LinkItem[];
|
60
|
+
sidebarWidth?: number;
|
61
|
+
fullWidth?: false | true;
|
62
|
+
/** sidenav 稠密一些的布局, 纵向空间占用较少, 默认为 auto, 当 links 个数 > 8 时自动启用 */
|
63
|
+
dense?: 'auto' | boolean;
|
64
|
+
footerProps?: FooterProps;
|
65
|
+
sx?: SxProps;
|
66
|
+
}
|
67
|
+
|
68
|
+
function Dashboard({
|
69
|
+
title = 'Home',
|
70
|
+
headerProps = {},
|
71
|
+
links = [],
|
72
|
+
sidebarWidth = 120,
|
73
|
+
fullWidth = false,
|
74
|
+
dense = 'auto',
|
75
|
+
footerProps = {},
|
76
|
+
children,
|
77
|
+
...rest
|
78
|
+
}: DashboardProps) {
|
55
79
|
const theme = useTheme();
|
56
80
|
const { inFullPage, showToggleButton, headerVisible, footerVisible, sidebarVisible, toggleFullPage } = useFullPage();
|
57
81
|
const location = useLocation();
|
@@ -60,7 +84,7 @@ function Dashboard({ children, title, headerProps, links = [], fullWidth, dense,
|
|
60
84
|
// 一级菜单数量 > 8 或都分组模式, 都启用 dense 布局
|
61
85
|
const _dense = dense === 'auto' ? navItems.length >= 8 || isGroupedMode : dense;
|
62
86
|
const classes = clsx('dashboard', { 'dashboard-dense': _dense }, rest.className);
|
63
|
-
const defaultHomeLink = (content) => <Link to={window.blocklet?.prefix || '/'}>{content}</Link>;
|
87
|
+
const defaultHomeLink = (content: React.ReactNode) => <Link to={window.blocklet?.prefix || '/'}>{content}</Link>;
|
64
88
|
const _headerProps = {
|
65
89
|
homeLink: defaultHomeLink,
|
66
90
|
...headerProps,
|
@@ -69,12 +93,12 @@ function Dashboard({ children, title, headerProps, links = [], fullWidth, dense,
|
|
69
93
|
useEffect(() => {
|
70
94
|
const { searchParams } = new URL(window.location.href);
|
71
95
|
if (searchParams.get('inviter')) {
|
72
|
-
window.localStorage.setItem('inviter', searchParams.get('inviter'));
|
96
|
+
window.localStorage.setItem('inviter', searchParams.get('inviter')!);
|
73
97
|
}
|
74
98
|
}, []);
|
75
99
|
|
76
100
|
return (
|
77
|
-
<Wrapper {...rest} className={classes}>
|
101
|
+
<Wrapper {...rest} className={classes} sidebarWidth={sidebarWidth}>
|
78
102
|
<Helmet title={title} key={title} />
|
79
103
|
|
80
104
|
{headerVisible && (
|
@@ -147,29 +171,11 @@ function Dashboard({ children, title, headerProps, links = [], fullWidth, dense,
|
|
147
171
|
);
|
148
172
|
}
|
149
173
|
|
150
|
-
|
151
|
-
children: PropTypes.any.isRequired,
|
152
|
-
title: PropTypes.string,
|
153
|
-
// 支持分组, links item 如果是数组, 则视为一个 group
|
154
|
-
links: PropTypes.array.isRequired,
|
155
|
-
headerProps: PropTypes.object,
|
156
|
-
fullWidth: PropTypes.bool,
|
157
|
-
sidebarWidth: PropTypes.number,
|
158
|
-
// sidenav 稠密一些的布局, 纵向空间占用较少, 默认为 auto, 当 links 个数 > 8 时自动启用
|
159
|
-
dense: PropTypes.oneOf([true, false, 'auto']),
|
160
|
-
};
|
161
|
-
|
162
|
-
Dashboard.defaultProps = {
|
163
|
-
title: 'Home',
|
164
|
-
headerProps: {},
|
165
|
-
fullWidth: false,
|
166
|
-
sidebarWidth: 120,
|
167
|
-
dense: 'auto',
|
168
|
-
};
|
174
|
+
type WrapperProps = React.HTMLAttributes<HTMLDivElement> & { sidebarWidth: number };
|
169
175
|
|
170
176
|
const Wrapper = styled('div', {
|
171
177
|
shouldForwardProp: (prop) => prop !== 'sidebarWidth',
|
172
|
-
})
|
178
|
+
})<WrapperProps>`
|
173
179
|
&.dashboard {
|
174
180
|
display: flex;
|
175
181
|
flex-direction: column;
|
@@ -231,9 +237,12 @@ const StyledUxHeader = styled(ResponsiveHeader)`
|
|
231
237
|
`;
|
232
238
|
|
233
239
|
// 兼容旧版 dashboard
|
234
|
-
export default function DashboardWrapper
|
240
|
+
export default function DashboardWrapper<T extends boolean = true>({
|
241
|
+
legacy = true as T,
|
242
|
+
...rest
|
243
|
+
}: T extends true ? { legacy?: T } & DashboardLegacyProps : { legacy?: T } & DashboardProps) {
|
235
244
|
if (legacy) {
|
236
|
-
return <DashboardLegacy {...rest} />;
|
245
|
+
return <DashboardLegacy {...(rest as unknown as DashboardLegacyProps)} />;
|
237
246
|
}
|
238
247
|
return (
|
239
248
|
<FullPageProvider>
|
@@ -241,14 +250,3 @@ export default function DashboardWrapper({ legacy, ...rest }) {
|
|
241
250
|
</FullPageProvider>
|
242
251
|
);
|
243
252
|
}
|
244
|
-
|
245
|
-
DashboardWrapper.propTypes = {
|
246
|
-
...Dashboard.propTypes,
|
247
|
-
legacy: PropTypes.bool,
|
248
|
-
footerProps: PropTypes.shape(Footer.propTypes),
|
249
|
-
};
|
250
|
-
|
251
|
-
DashboardWrapper.defaultProps = {
|
252
|
-
...Dashboard.defaultProps,
|
253
|
-
legacy: true,
|
254
|
-
};
|