@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.
Files changed (294) hide show
  1. package/lib/Address/did-address.d.ts +6 -5
  2. package/lib/Address/index.d.ts +1 -1
  3. package/lib/Avatar/index.d.ts +10 -8
  4. package/lib/Avatar/index.js +6 -4
  5. package/lib/Blocklet/blocklet.d.ts +4 -4
  6. package/lib/Blocklet/blocklet.js +2 -2
  7. package/lib/BlockletContext/index.d.ts +3 -3
  8. package/lib/BlockletNFT/index.d.ts +6 -6
  9. package/lib/BlockletNFT/index.js +3 -3
  10. package/lib/BlockletV2/blocklet.d.ts +2 -2
  11. package/lib/Button/wrap.d.ts +4 -4
  12. package/lib/Button/wrap.js +2 -2
  13. package/lib/CardSelector/index.js +0 -1
  14. package/lib/Center/index.d.ts +1 -1
  15. package/lib/ClickToCopy/copy-button.d.ts +5 -4
  16. package/lib/ClickToCopy/copy-button.js +0 -1
  17. package/lib/ClickToCopy/hook.d.ts +3 -8
  18. package/lib/ClickToCopy/index.d.ts +6 -4
  19. package/lib/CodeBlock/index.d.ts +3 -1
  20. package/lib/CookieConsent/index.d.ts +8 -29
  21. package/lib/CookieConsent/index.js +3 -17
  22. package/lib/CountDown/index.d.ts +21 -25
  23. package/lib/CountDown/index.js +12 -11
  24. package/lib/DID/index.d.ts +9 -8
  25. package/lib/Datatable/index.d.ts +5 -5
  26. package/lib/Datatable/index.js +5 -5
  27. package/lib/Dialog/confirm.d.ts +6 -6
  28. package/lib/Dialog/confirm.js +3 -3
  29. package/lib/Dialog/types.d.ts +1 -1
  30. package/lib/DidLogo/index.d.ts +5 -25
  31. package/lib/DidLogo/index.js +4 -15
  32. package/lib/DriftBot/index.d.ts +13 -19
  33. package/lib/DriftBot/index.js +5 -6
  34. package/lib/Earth/index.d.ts +28 -10
  35. package/lib/Earth/index.js +12 -52
  36. package/lib/Earth/util.d.ts +10 -5
  37. package/lib/Earth/util.js +1 -0
  38. package/lib/ErrorBoundary/fallback.d.ts +12 -19
  39. package/lib/ErrorBoundary/fallback.js +2 -19
  40. package/lib/ErrorBoundary/index.d.ts +1 -1
  41. package/lib/Footer/index.d.ts +17 -24
  42. package/lib/Footer/index.js +2 -11
  43. package/lib/Header/header.d.ts +2 -2
  44. package/lib/Icon/image.d.ts +3 -2
  45. package/lib/Icon/index.d.ts +6 -4
  46. package/lib/Img/index.d.ts +1 -1
  47. package/lib/Img/index.js +1 -1
  48. package/lib/InfoRow/index.d.ts +9 -32
  49. package/lib/InfoRow/index.js +10 -23
  50. package/lib/Layout/dashboard/external-link.d.ts +13 -14
  51. package/lib/Layout/dashboard/external-link.js +5 -22
  52. package/lib/Layout/dashboard/full-page.d.ts +19 -11
  53. package/lib/Layout/dashboard/full-page.js +2 -6
  54. package/lib/Layout/dashboard/index.d.ts +20 -39
  55. package/lib/Layout/dashboard/index.js +10 -38
  56. package/lib/Layout/dashboard/sidebar.d.ts +17 -20
  57. package/lib/Layout/dashboard/sidebar.js +3 -16
  58. package/lib/Layout/dashboard-legacy/header.d.ts +10 -36
  59. package/lib/Layout/dashboard-legacy/header.js +5 -24
  60. package/lib/Layout/dashboard-legacy/index.d.ts +17 -56
  61. package/lib/Layout/dashboard-legacy/index.js +12 -41
  62. package/lib/Layout/dashboard-legacy/sidebar.d.ts +15 -26
  63. package/lib/Layout/dashboard-legacy/sidebar.js +5 -15
  64. package/lib/Layout/index.d.ts +17 -56
  65. package/lib/Layout/index.js +24 -50
  66. package/lib/LoadingMask/index.d.ts +8 -31
  67. package/lib/LoadingMask/index.js +3 -19
  68. package/lib/Locale/browser-lang.d.ts +4 -1
  69. package/lib/Locale/browser-lang.js +8 -3
  70. package/lib/Locale/context.d.ts +18 -8
  71. package/lib/Locale/context.js +1 -1
  72. package/lib/Locale/languages.d.ts +9 -55
  73. package/lib/Locale/selector.d.ts +10 -26
  74. package/lib/Locale/selector.js +8 -25
  75. package/lib/Locale/util.d.ts +4 -3
  76. package/lib/Locale/util.js +0 -1
  77. package/lib/Logo/index.d.ts +9 -40
  78. package/lib/Logo/index.js +88 -46
  79. package/lib/Metric/index.d.ts +9 -31
  80. package/lib/Metric/index.js +5 -20
  81. package/lib/NFTDisplay/aspect-ratio-container.d.ts +5 -12
  82. package/lib/NFTDisplay/aspect-ratio-container.js +0 -5
  83. package/lib/NFTDisplay/broken.d.ts +3 -13
  84. package/lib/NFTDisplay/broken.js +80 -10
  85. package/lib/NFTDisplay/displayApi.d.ts +1 -1
  86. package/lib/NFTDisplay/index.d.ts +28 -6
  87. package/lib/NFTDisplay/index.js +17 -51
  88. package/lib/NFTDisplay/svg-embedder/img.d.ts +8 -23
  89. package/lib/NFTDisplay/svg-embedder/img.js +3 -17
  90. package/lib/NFTDisplay/svg-embedder/inline-svg.d.ts +7 -13
  91. package/lib/NFTDisplay/svg-embedder/inline-svg.js +1 -8
  92. package/lib/NavMenu/nav-menu.d.ts +2 -0
  93. package/lib/NavMenu/nav-menu.js +0 -1
  94. package/lib/PageScroller/index.d.ts +14 -13
  95. package/lib/PageScroller/index.js +12 -37
  96. package/lib/PageScroller/usePrevValue.d.ts +1 -1
  97. package/lib/PageScroller/usePrevValue.js +1 -2
  98. package/lib/Passport/index.d.ts +1 -1
  99. package/lib/Passport/passport.d.ts +10 -30
  100. package/lib/Passport/passport.js +5 -19
  101. package/lib/PoweredByArcBlock/index.d.ts +4 -14
  102. package/lib/PoweredByArcBlock/index.js +1 -8
  103. package/lib/PricingTable/PricingPlan.d.ts +11 -9
  104. package/lib/PricingTable/PricingPlan.js +0 -4
  105. package/lib/PricingTable/index.d.ts +5 -3
  106. package/lib/PricingTable/index.js +1 -5
  107. package/lib/QRCode/index.d.ts +11 -22
  108. package/lib/QRCode/index.js +2 -17
  109. package/lib/RelativeTime/index.d.ts +12 -40
  110. package/lib/RelativeTime/index.js +7 -27
  111. package/lib/Result/common.d.ts +26 -45
  112. package/lib/Result/common.js +2 -4
  113. package/lib/Result/index.d.ts +5 -18
  114. package/lib/Result/index.js +1 -9
  115. package/lib/Result/result.d.ts +7 -29
  116. package/lib/Result/result.js +2 -17
  117. package/lib/Result/translations.d.ts +2 -54
  118. package/lib/Screenshot/BaseScreenshot/index.d.ts +7 -24
  119. package/lib/Screenshot/BaseScreenshot/index.js +2 -15
  120. package/lib/Screenshot/BaseScreenshot/shells/Macbook.d.ts +25 -19
  121. package/lib/Screenshot/BaseScreenshot/shells/Phone.d.ts +25 -19
  122. package/lib/Screenshot/index.d.ts +84 -28
  123. package/lib/Screenshot/index.js +14 -43
  124. package/lib/SessionBlocklet/index.d.ts +6 -19
  125. package/lib/SessionBlocklet/index.js +5 -15
  126. package/lib/SessionManager/index.d.ts +1 -1
  127. package/lib/SessionPermission/index.d.ts +9 -17
  128. package/lib/SessionPermission/index.js +3 -11
  129. package/lib/SessionUser/components/logged-in.d.ts +9 -31
  130. package/lib/SessionUser/components/logged-in.js +13 -29
  131. package/lib/SessionUser/components/session-user-item.d.ts +8 -1
  132. package/lib/SessionUser/components/session-user-item.js +2 -12
  133. package/lib/SessionUser/components/session-user-switch.d.ts +9 -21
  134. package/lib/SessionUser/components/session-user-switch.js +3 -15
  135. package/lib/SessionUser/components/un-login.d.ts +7 -23
  136. package/lib/SessionUser/components/un-login.js +4 -16
  137. package/lib/SessionUser/components/user-info.d.ts +12 -29
  138. package/lib/SessionUser/components/user-info.js +4 -19
  139. package/lib/SessionUser/index.d.ts +7 -30
  140. package/lib/SessionUser/index.js +5 -26
  141. package/lib/SessionUser/libs/translation.d.ts +2 -31
  142. package/lib/SessionUser/libs/translation.js +1 -0
  143. package/lib/SessionUser/libs/utils.d.ts +10 -9
  144. package/lib/Sparkline/index.d.ts +22 -1
  145. package/lib/Sparkline/index.js +25 -17
  146. package/lib/Spinner/index.d.ts +6 -1
  147. package/lib/Spinner/index.js +4 -11
  148. package/lib/Success/index.d.ts +5 -21
  149. package/lib/Success/index.js +10 -19
  150. package/lib/Tabs/index.d.ts +12 -26
  151. package/lib/Tabs/index.js +7 -37
  152. package/lib/TextCollapse/index.d.ts +10 -10
  153. package/lib/TextCollapse/index.js +4 -21
  154. package/lib/Theme/index.js +0 -2
  155. package/lib/Theme/theme-provider.d.ts +1 -1
  156. package/lib/Theme/theme.d.ts +4 -1
  157. package/lib/Theme/theme.js +1 -2
  158. package/lib/Typography/index.d.ts +5 -24
  159. package/lib/Typography/index.js +5 -17
  160. package/lib/Util/index.d.ts +17 -8
  161. package/lib/Util/index.js +22 -3
  162. package/lib/Video/index.d.ts +12 -16
  163. package/lib/Video/index.js +0 -14
  164. package/lib/Wallet/Action.d.ts +13 -18
  165. package/lib/Wallet/Action.js +0 -7
  166. package/lib/Wallet/Download.d.ts +24 -30
  167. package/lib/Wallet/Download.js +201 -18
  168. package/lib/Wallet/Open.d.ts +5 -15
  169. package/lib/Wallet/Open.js +5 -11
  170. package/lib/WalletOSIcon/index.d.ts +6 -25
  171. package/lib/WalletOSIcon/index.js +3 -16
  172. package/lib/WebWalletSWKeeper/index.d.ts +8 -20
  173. package/lib/WebWalletSWKeeper/index.js +14 -19
  174. package/lib/WechatPrompt/index.js +2 -0
  175. package/lib/global.d.ts +15 -0
  176. package/lib/type.d.ts +12 -3
  177. package/lib/withTheme/index.d.ts +8 -6
  178. package/lib/withTracker/index.d.ts +1 -1
  179. package/lib/withTracker/index.js +3 -0
  180. package/package.json +9 -5
  181. package/src/Address/did-address.tsx +7 -6
  182. package/src/Address/index.tsx +1 -1
  183. package/src/Avatar/index.jsx +6 -4
  184. package/src/Blocklet/blocklet.jsx +2 -2
  185. package/src/BlockletContext/index.tsx +3 -3
  186. package/src/BlockletNFT/index.jsx +3 -3
  187. package/src/BlockletV2/blocklet.tsx +2 -2
  188. package/src/Button/wrap.jsx +2 -2
  189. package/src/CardSelector/index.tsx +0 -1
  190. package/src/Center/index.tsx +1 -1
  191. package/src/ClickToCopy/copy-button.tsx +4 -4
  192. package/src/ClickToCopy/hook.ts +3 -2
  193. package/src/ClickToCopy/index.tsx +6 -5
  194. package/src/CodeBlock/index.tsx +3 -1
  195. package/src/CookieConsent/{index.jsx → index.tsx} +16 -19
  196. package/src/CountDown/{index.jsx → index.tsx} +30 -16
  197. package/src/DID/index.tsx +9 -8
  198. package/src/Datatable/index.jsx +5 -5
  199. package/src/Dialog/confirm.jsx +3 -3
  200. package/src/Dialog/types.d.ts +1 -1
  201. package/src/DidLogo/{index.jsx → index.tsx} +7 -14
  202. package/src/DriftBot/{index.jsx → index.tsx} +13 -11
  203. package/src/Earth/{index.jsx → index.tsx} +94 -66
  204. package/src/Earth/{util.js → util.ts} +20 -17
  205. package/src/ErrorBoundary/{fallback.jsx → fallback.tsx} +20 -21
  206. package/src/Footer/{index.jsx → index.tsx} +17 -14
  207. package/src/Header/header.tsx +2 -3
  208. package/src/Header/responsive-header.tsx +0 -1
  209. package/src/Icon/image.tsx +3 -3
  210. package/src/Icon/index.tsx +7 -4
  211. package/src/Img/index.jsx +1 -1
  212. package/src/InfoRow/{index.jsx → index.tsx} +32 -25
  213. package/src/Layout/dashboard/external-link.tsx +46 -0
  214. package/src/Layout/dashboard/{full-page.jsx → full-page.tsx} +20 -9
  215. package/src/Layout/dashboard/{index.jsx → index.tsx} +42 -44
  216. package/src/Layout/dashboard/{sidebar.jsx → sidebar.tsx} +23 -20
  217. package/src/Layout/dashboard-legacy/{header.jsx → header.tsx} +16 -26
  218. package/src/Layout/dashboard-legacy/{index.jsx → index.tsx} +32 -46
  219. package/src/Layout/dashboard-legacy/{sidebar.jsx → sidebar.tsx} +27 -19
  220. package/src/Layout/{index.jsx → index.tsx} +41 -47
  221. package/src/LoadingMask/{index.jsx → index.tsx} +18 -20
  222. package/src/Locale/{browser-lang.js → browser-lang.ts} +9 -7
  223. package/src/Locale/context.tsx +18 -11
  224. package/src/Locale/{languages.js → languages.ts} +1 -1
  225. package/src/Locale/{selector.jsx → selector.tsx} +32 -29
  226. package/src/Locale/{util.js → util.ts} +9 -2
  227. package/src/Logo/index.tsx +58 -0
  228. package/src/Metric/{index.jsx → index.tsx} +23 -18
  229. package/src/NFTDisplay/{aspect-ratio-container.jsx → aspect-ratio-container.tsx} +9 -7
  230. package/src/NFTDisplay/{broken.jsx → broken.tsx} +7 -12
  231. package/src/NFTDisplay/{displayApi.js → displayApi.ts} +4 -4
  232. package/src/NFTDisplay/{index.jsx → index.tsx} +59 -64
  233. package/src/NFTDisplay/svg-embedder/{img.jsx → img.tsx} +10 -18
  234. package/src/NFTDisplay/svg-embedder/{inline-svg.jsx → inline-svg.tsx} +8 -9
  235. package/src/NavMenu/nav-menu.tsx +2 -3
  236. package/src/PageScroller/{index.jsx → index.tsx} +40 -53
  237. package/src/PageScroller/{usePrevValue.js → usePrevValue.ts} +2 -3
  238. package/src/Passport/{passport.jsx → passport.tsx} +22 -19
  239. package/src/PoweredByArcBlock/{index.jsx → index.tsx} +6 -11
  240. package/src/PricingTable/{PricingPlan.jsx → PricingPlan.tsx} +15 -5
  241. package/src/PricingTable/{index.jsx → index.tsx} +9 -6
  242. package/src/QRCode/{index.jsx → index.tsx} +14 -19
  243. package/src/RelativeTime/{index.jsx → index.tsx} +24 -24
  244. package/src/Result/{common.jsx → common.tsx} +17 -13
  245. package/src/Result/index.tsx +30 -0
  246. package/src/Result/{result.jsx → result.tsx} +8 -17
  247. package/src/Result/{translations.js → translations.ts} +3 -1
  248. package/src/Screenshot/BaseScreenshot/{index.jsx → index.tsx} +9 -15
  249. package/src/Screenshot/BaseScreenshot/shells/{Macbook.jsx → Macbook.tsx} +3 -1
  250. package/src/Screenshot/BaseScreenshot/shells/{Phone.jsx → Phone.tsx} +3 -1
  251. package/src/Screenshot/{index.jsx → index.tsx} +60 -54
  252. package/src/SessionBlocklet/{index.jsx → index.tsx} +9 -14
  253. package/src/SessionPermission/index.tsx +25 -0
  254. package/src/SessionUser/components/{logged-in.jsx → logged-in.tsx} +49 -31
  255. package/src/SessionUser/components/session-user-item.tsx +97 -0
  256. package/src/SessionUser/components/{session-user-switch.jsx → session-user-switch.tsx} +16 -21
  257. package/src/SessionUser/components/{un-login.jsx → un-login.tsx} +10 -15
  258. package/src/SessionUser/components/{user-info.jsx → user-info.tsx} +16 -22
  259. package/src/SessionUser/index.tsx +26 -0
  260. package/src/SessionUser/libs/{translation.js → translation.ts} +3 -1
  261. package/src/SessionUser/libs/utils.ts +39 -0
  262. package/src/Sparkline/{index.jsx → index.tsx} +38 -22
  263. package/src/Spinner/index.tsx +20 -0
  264. package/src/Success/{index.jsx → index.tsx} +13 -16
  265. package/src/Tabs/{index.jsx → index.tsx} +26 -40
  266. package/src/TextCollapse/{index.jsx → index.tsx} +26 -21
  267. package/src/Theme/index.ts +0 -1
  268. package/src/Theme/theme-provider.tsx +1 -1
  269. package/src/Theme/theme.ts +6 -3
  270. package/src/Typography/{index.jsx → index.tsx} +19 -22
  271. package/src/Util/index.ts +26 -9
  272. package/src/Video/{index.jsx → index.tsx} +7 -10
  273. package/src/Wallet/{Action.jsx → Action.tsx} +16 -12
  274. package/src/Wallet/{Download.jsx → Download.tsx} +25 -21
  275. package/src/Wallet/{Open.jsx → Open.tsx} +8 -11
  276. package/src/WalletOSIcon/{index.jsx → index.tsx} +8 -16
  277. package/src/WebWalletSWKeeper/{index.jsx → index.tsx} +21 -24
  278. package/src/WechatPrompt/{index.jsx → index.tsx} +1 -0
  279. package/src/global.d.ts +15 -0
  280. package/src/type.d.ts +12 -3
  281. package/src/withTheme/{index.jsx → index.tsx} +12 -2
  282. package/src/withTracker/{index.jsx → index.tsx} +6 -4
  283. package/src/Layout/dashboard/external-link.jsx +0 -47
  284. package/src/Logo/index.jsx +0 -66
  285. package/src/Result/index.jsx +0 -33
  286. package/src/SessionPermission/index.jsx +0 -28
  287. package/src/SessionUser/components/session-user-item.jsx +0 -93
  288. package/src/SessionUser/index.jsx +0 -38
  289. package/src/SessionUser/libs/utils.js +0 -37
  290. package/src/Spinner/index.jsx +0 -21
  291. /package/src/ErrorBoundary/{index.jsx → index.ts} +0 -0
  292. /package/src/NFTDisplay/{loading.jsx → loading.tsx} +0 -0
  293. /package/src/Passport/{index.jsx → index.ts} +0 -0
  294. /package/src/SessionManager/{index.jsx → index.tsx} +0 -0
@@ -1,12 +1,12 @@
1
- import PropTypes from 'prop-types';
2
- import Button from '@mui/material/Button';
1
+ import Button, { type ButtonProps } from '@mui/material/Button';
3
2
  import CookieConsent, { resetCookieConsentValue } from 'react-cookie-consent';
4
3
 
5
4
  import { styled } from '../Theme';
5
+ import type { Locale, Translations } from '../type';
6
6
 
7
7
  export { resetCookieConsentValue };
8
8
 
9
- const translations = {
9
+ const translations: Translations = {
10
10
  en: {
11
11
  content:
12
12
  'We use cookies and other tracking technologies to improve your browsing experience on our website, to show you personalized content, to analyze our website traffic, and to understand where our visitors are coming from.',
@@ -27,16 +27,27 @@ function inIframe() {
27
27
  }
28
28
  }
29
29
 
30
- function AcceptButton(props) {
30
+ function AcceptButton(props: ButtonProps) {
31
31
  return <Button variant="contained" {...props} />;
32
32
  }
33
33
 
34
+ export interface CookieConsentProps extends React.ComponentProps<typeof CookieConsent> {
35
+ locale?: Locale;
36
+ displayInIframe?: false | true;
37
+ }
38
+
34
39
  /**
35
40
  * DefaultCookieConsent, 对 react-cookie-consent package 封装, 以便 arcblock 内部产品可以快速使用
36
41
  * - 默认内容
37
42
  * - 默认配置/样式
38
43
  */
39
- export default function DefaultCookieConsent({ children, locale, style, displayInIframe, ...rest }) {
44
+ export default function DefaultCookieConsent({
45
+ children,
46
+ locale = 'en',
47
+ style = {},
48
+ displayInIframe = false,
49
+ ...rest
50
+ }: CookieConsentProps) {
40
51
  if (!displayInIframe && inIframe()) {
41
52
  return null;
42
53
  }
@@ -59,20 +70,6 @@ export default function DefaultCookieConsent({ children, locale, style, displayI
59
70
  );
60
71
  }
61
72
 
62
- DefaultCookieConsent.propTypes = {
63
- children: PropTypes.any,
64
- style: PropTypes.object,
65
- locale: PropTypes.string,
66
- displayInIframe: PropTypes.bool,
67
- };
68
-
69
- DefaultCookieConsent.defaultProps = {
70
- children: null,
71
- style: {},
72
- locale: 'en',
73
- displayInIframe: false,
74
- };
75
-
76
73
  const Wrapper = styled('div')`
77
74
  box-sizing: border-box;
78
75
  position: fixed;
@@ -1,5 +1,5 @@
1
1
  import { Component } from 'react';
2
- import PropTypes from 'prop-types';
2
+ import { type SxProps } from '@mui/material';
3
3
 
4
4
  import { getColor, mergeProps } from '../Util';
5
5
  import { styled } from '../Theme';
@@ -8,7 +8,7 @@ const SECONDS_OF_MINUTE = 60;
8
8
  const SECONDS_OF_HOUR = 60 * SECONDS_OF_MINUTE;
9
9
  const SECONDS_OF_DAY = 24 * SECONDS_OF_HOUR;
10
10
 
11
- function getRemaining(endTime) {
11
+ function getRemaining(endTime: number) {
12
12
  const now = new Date().getTime();
13
13
  const diff = Math.round((endTime - now) / 1000);
14
14
  const days = Math.floor(diff / SECONDS_OF_DAY);
@@ -19,7 +19,7 @@ function getRemaining(endTime) {
19
19
  }
20
20
 
21
21
  // eslint-disable-next-line react/prop-types
22
- function FixWidthNumber({ number, label, length = 2 }) {
22
+ function FixWidthNumber({ number, label, length = 2 }: { number: number; label: string; length?: number }) {
23
23
  let str = number.toString();
24
24
  while (str.length < length) {
25
25
  str = `0${str}`;
@@ -41,12 +41,32 @@ function FixWidthNumber({ number, label, length = 2 }) {
41
41
  );
42
42
  }
43
43
 
44
- export default class CountDown extends Component {
45
- constructor(props) {
44
+ export interface CountDownProps extends React.HTMLAttributes<HTMLDivElement> {
45
+ /** endTime should be UTC */
46
+ endTime: number;
47
+ dark?: true | false;
48
+ sx?: SxProps;
49
+ }
50
+
51
+ export interface CountDownState {
52
+ days: number;
53
+ hours: number;
54
+ minutes: number;
55
+ seconds: number;
56
+ done: boolean;
57
+ }
58
+
59
+ export default class CountDown extends Component<CountDownProps, CountDownState> {
60
+ // eslint-disable-next-line react/static-property-placement
61
+ static defaultProps: { dark: boolean; style: {} };
62
+
63
+ timer?: NodeJS.Timeout;
64
+
65
+ constructor(props: CountDownProps) {
46
66
  super(props);
47
67
  const newProps = mergeProps(props, CountDown, ['dark', 'endTime', 'style']);
48
68
  this.state = getRemaining(newProps.endTime);
49
- this.timer = null;
69
+ this.timer = undefined;
50
70
  }
51
71
 
52
72
  componentDidMount() {
@@ -54,7 +74,7 @@ export default class CountDown extends Component {
54
74
  const remaining = getRemaining(this.props.endTime);
55
75
  if (remaining.done) {
56
76
  clearInterval(this.timer);
57
- this.timer = null;
77
+ this.timer = undefined;
58
78
  }
59
79
 
60
80
  this.setState(remaining);
@@ -64,7 +84,7 @@ export default class CountDown extends Component {
64
84
  componentWillUnmount() {
65
85
  if (this.timer) {
66
86
  clearInterval(this.timer);
67
- this.timer = null;
87
+ this.timer = undefined;
68
88
  }
69
89
  }
70
90
 
@@ -72,7 +92,7 @@ export default class CountDown extends Component {
72
92
  const { dark, endTime, ...rest } = this.props;
73
93
  const { days, hours, minutes, seconds } = this.state;
74
94
  return (
75
- <Container dark={dark} {...rest}>
95
+ <Container dark={dark!} {...rest}>
76
96
  <FixWidthNumber number={days} label="D" />
77
97
  <span className="num-sep">:</span>
78
98
  <FixWidthNumber number={hours} label="H" />
@@ -85,12 +105,6 @@ export default class CountDown extends Component {
85
105
  }
86
106
  }
87
107
 
88
- CountDown.propTypes = {
89
- endTime: PropTypes.number.isRequired, // endTime should be UTC
90
- dark: PropTypes.bool,
91
- style: PropTypes.object,
92
- };
93
-
94
108
  CountDown.defaultProps = {
95
109
  dark: true,
96
110
  style: {},
@@ -99,7 +113,7 @@ CountDown.defaultProps = {
99
113
  const textBackground = `linear-gradient(to bottom, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)),
100
114
  linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5) 77%, rgba(0, 0, 0, 0.5))`;
101
115
 
102
- const Container = styled('div')`
116
+ const Container = styled('div', { shouldForwardProp: (prop) => prop !== 'dark' })<{ dark: boolean }>`
103
117
  color: ${(props) => getColor(props)};
104
118
  font-size: 50px;
105
119
  display: flex;
package/src/DID/index.tsx CHANGED
@@ -15,6 +15,7 @@ import { DID_PREFIX } from '../Util/constant';
15
15
  import { HTMLDidAddressElement } from '../Address/did-address';
16
16
  import { translate } from '../Locale/util';
17
17
  import { getDIDColor, isEthereumDid } from '../Util';
18
+ import type { Locale } from '../type';
18
19
 
19
20
  const translations = {
20
21
  en: {
@@ -33,17 +34,17 @@ interface IDIDPropTypes extends IDidAddressWrapper {
33
34
  did: string;
34
35
  size?: number;
35
36
  component?: React.ElementType;
36
- copyable?: boolean;
37
- responsive?: boolean;
38
- showCopyButtonInTooltip?: boolean;
39
- showAvatar?: boolean;
40
- showQrcode?: boolean;
41
- inline?: boolean;
37
+ copyable?: true | false;
38
+ responsive?: true | false;
39
+ showCopyButtonInTooltip?: false | true;
40
+ showAvatar?: true | false;
41
+ showQrcode?: false | true;
42
+ inline?: false | true;
42
43
  append?: any;
43
- compact?: boolean;
44
+ compact?: false | true;
44
45
  startChars?: number;
45
46
  endChars?: number;
46
- locale?: 'en' | 'zh';
47
+ locale?: Locale;
47
48
  chainId?: string;
48
49
  roleType?: number;
49
50
  }
@@ -43,16 +43,16 @@ import { styled } from '../Theme';
43
43
  * @typedef {{
44
44
  * data: Array<object | number[] | string[]>,
45
45
  * columns: Array<DataTableColumn>,
46
- * locale?: string,
46
+ * locale?: import('../type').Locale,
47
47
  * options?: { searchDebounceTime?: number } & import('mui-datatables').MUIDataTableOptions,
48
48
  * style?: import('react').CSSProperties,
49
49
  * customButtons?: Array<DataTableCustomButton>,
50
50
  * onChange?: (state: DataTableState, action: string) => void | Promise<void>,
51
- * loading?: boolean,
52
- * disabled?: boolean,
53
- * stripped?: boolean,
51
+ * loading?: false | true,
52
+ * disabled?: false | true,
53
+ * stripped?: false | true,
54
54
  * verticalKeyWidth?: number | string,
55
- * hideTableHeader?: boolean,
55
+ * hideTableHeader?: false | true,
56
56
  * components?: ModifiedMUIDataTableProps['components'],
57
57
  * emptyNode?: import('react').ReactNode,
58
58
  * durable?: string,
@@ -13,9 +13,9 @@ import Dialog from './dialog';
13
13
  * onConfirm: Function,
14
14
  * onCancel: Function,
15
15
  * children?: React.ReactNode,
16
- * showCancelButton?: boolean,
17
- * showCloseButton?: boolean,
18
- * fullScreen?: boolean,
16
+ * showCancelButton?: true | false,
17
+ * showCloseButton?: true | false,
18
+ * fullScreen?: false | true,
19
19
  * confirmButton?: {text: string, props?: ButtonProps}
20
20
  * cancelButton?: {text: string, props?: ButtonProps}
21
21
  * PaperProps?: PaperProps
@@ -5,7 +5,7 @@ export interface OpenConfirmProps {
5
5
  content: ReactNode;
6
6
  onConfirm?: (close: () => void) => void;
7
7
  onCancel?: () => void;
8
- showCancelButton?: boolean;
8
+ showCancelButton?: true | false;
9
9
  confirmButtonText?: string;
10
10
  cancelButtonText?: string;
11
11
  }
@@ -1,4 +1,3 @@
1
- import PropTypes from 'prop-types';
2
1
  import DidLogoIcon from '@arcblock/icons/lib/DidLogo';
3
2
 
4
3
  const defaultStyle = {
@@ -7,7 +6,13 @@ const defaultStyle = {
7
6
  fill: 'currentColor',
8
7
  };
9
8
 
10
- export default function DidLogo({ style, size, className }) {
9
+ export interface DidLogoProps {
10
+ style?: React.CSSProperties;
11
+ size?: string | number;
12
+ className?: string;
13
+ }
14
+
15
+ export default function DidLogo({ style = defaultStyle, size = 0, className = '' }: DidLogoProps) {
11
16
  const height = Number(size) > 0 ? `${Number(size)}px` : size;
12
17
  return (
13
18
  <DidLogoIcon
@@ -16,15 +21,3 @@ export default function DidLogo({ style, size, className }) {
16
21
  />
17
22
  );
18
23
  }
19
-
20
- DidLogo.propTypes = {
21
- style: PropTypes.object,
22
- size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
23
- className: PropTypes.string,
24
- };
25
-
26
- DidLogo.defaultProps = {
27
- style: defaultStyle,
28
- size: 0,
29
- className: '',
30
- };
@@ -1,19 +1,27 @@
1
1
  /* eslint-disable max-len */
2
2
  import { Component } from 'react';
3
- import PropTypes from 'prop-types';
4
3
 
5
4
  import { mergeProps } from '../Util';
6
5
 
7
- export default class DriftBot extends Component {
8
- constructor(props) {
9
- super(mergeProps(props, DriftBot, ['attributes']));
6
+ export interface DriftBotProps {
7
+ appId: string;
8
+ userId?: string;
9
+ attributes?: Record<string, any>;
10
+ }
11
+
12
+ export default class DriftBot extends Component<DriftBotProps> {
13
+ // eslint-disable-next-line react/static-property-placement
14
+ static defaultProps: { userId: string; attributes: Record<string, any> };
15
+
16
+ constructor(props: DriftBotProps) {
17
+ super(mergeProps(props, DriftBot, ['attributes']) as DriftBotProps);
10
18
 
11
19
  this.addMainScript = this.addMainScript.bind(this);
12
20
  this.addIdentityVariables = this.addIdentityVariables.bind(this);
13
21
  this.insertScript = this.insertScript.bind(this);
14
22
  }
15
23
 
16
- insertScript(scriptText) {
24
+ insertScript(scriptText: string) {
17
25
  const script = document.createElement('script');
18
26
  script.innerText = scriptText;
19
27
  script.async = true;
@@ -69,12 +77,6 @@ export default class DriftBot extends Component {
69
77
  }
70
78
  }
71
79
 
72
- DriftBot.propTypes = {
73
- appId: PropTypes.string.isRequired,
74
- userId: PropTypes.string,
75
- attributes: PropTypes.object,
76
- };
77
-
78
80
  DriftBot.defaultProps = {
79
81
  userId: '',
80
82
  attributes: {},
@@ -1,13 +1,13 @@
1
1
  /* eslint-disable consistent-return */
2
2
  import { useReducer, useRef, useEffect } from 'react';
3
3
  import useSpring from 'react-use/lib/useSpring';
4
- import PropTypes from 'prop-types';
5
4
  import * as d3 from 'd3-geo';
6
5
  import * as topojson from 'topojson-client';
7
6
  import versor from 'versor';
8
7
 
9
8
  import json from './countries.json';
10
9
  import util from './util';
10
+ import type { Vec2, Vec3, Quaternion, Angles, Rotation } from './util';
11
11
  import { withDeprecated } from '../Util/deprecate';
12
12
  import { styled } from '../Theme';
13
13
 
@@ -33,7 +33,20 @@ const themes = {
33
33
  },
34
34
  };
35
35
 
36
- function stateReducer(state, action) {
36
+ type State = {
37
+ rotation: Angles;
38
+ isDragging: boolean;
39
+ animateDuration: number;
40
+ mousePosition: [number, number] | null;
41
+ tooltipIndex: number;
42
+ };
43
+
44
+ type Action = {
45
+ type: string;
46
+ payload: Record<string, any>;
47
+ };
48
+
49
+ function stateReducer(state: State, action: Action) {
37
50
  switch (action.type) {
38
51
  case 'dragEnd':
39
52
  return { ...state, isDragging: false };
@@ -52,8 +65,47 @@ function stateReducer(state, action) {
52
65
  }
53
66
  }
54
67
 
55
- function Earth({ theme, width, height, enableRotation, rotationSpeed, markers, activeMarkerId, colors }) {
56
- Object.assign(colors, themes[theme]);
68
+ export type Marker = {
69
+ id: string;
70
+ title: string;
71
+ description: string;
72
+ country: string;
73
+ latitude: number;
74
+ longitude: number;
75
+ };
76
+
77
+ export type Colors = {
78
+ ocean: string;
79
+ graticule: string;
80
+ land: string;
81
+ activeLand: string;
82
+ border: string;
83
+ marker: string;
84
+ activeMarker: string;
85
+ };
86
+
87
+ export interface EarthProps {
88
+ theme?: 'light' | 'dark';
89
+ width?: number;
90
+ height?: number;
91
+ enableRotation?: false | true;
92
+ rotationSpeed?: number;
93
+ activeMarkerId?: string;
94
+ markers?: Marker[];
95
+ colors?: Partial<Colors>;
96
+ }
97
+
98
+ function Earth({
99
+ theme = 'dark',
100
+ width = 1200,
101
+ height = 600,
102
+ enableRotation = false,
103
+ rotationSpeed = 5,
104
+ activeMarkerId,
105
+ markers = [],
106
+ colors: _colors = {},
107
+ }: EarthProps) {
108
+ const colors: Colors = Object.assign(_colors, themes[theme]);
57
109
  const [state, dispatch] = useReducer(stateReducer, {
58
110
  rotation: [0, 0, 0],
59
111
  isDragging: false,
@@ -62,17 +114,25 @@ function Earth({ theme, width, height, enableRotation, rotationSpeed, markers, a
62
114
  tooltipIndex: -1,
63
115
  });
64
116
 
65
- const svgRef = useRef(null);
117
+ const svgRef = useRef<SVGSVGElement>(null);
66
118
 
67
119
  // variables used to track drag and rotate
68
- const dragRef = useRef({
69
- v0: undefined,
70
- r0: undefined,
71
- q0: undefined,
72
- });
120
+ const dragRef = useRef<{
121
+ v0?: Vec3;
122
+ r0?: Rotation;
123
+ q0?: Quaternion;
124
+ }>({});
73
125
 
74
126
  // variables used to track start and end position when there is active marker
75
- const rotateRef = useRef({
127
+ const rotateRef = useRef<{
128
+ p1: Vec2 | null;
129
+ p2: Vec2;
130
+ r1: Rotation | null;
131
+ r2: Rotation;
132
+ step: number;
133
+ markerId: string | null;
134
+ iv: ((t: number) => Angles) | null;
135
+ }>({
76
136
  p1: null,
77
137
  p2: [0, 0],
78
138
  r1: null,
@@ -99,7 +159,7 @@ function Earth({ theme, width, height, enableRotation, rotationSpeed, markers, a
99
159
  geoJson
100
160
  )
101
161
  .rotate(
102
- t <= 1 || state.isDragging || !activeMarkerId ? state.rotation : rotateRef.current.iv(t / state.animateDuration)
162
+ t <= 1 || state.isDragging || !activeMarkerId ? state.rotation : rotateRef.current.iv!(t / state.animateDuration)
103
163
  );
104
164
 
105
165
  const pathGenerator = d3.geoPath().projection(projection).pointRadius(2);
@@ -111,7 +171,7 @@ function Earth({ theme, width, height, enableRotation, rotationSpeed, markers, a
111
171
  let { p1, p2, r1, r2, markerId } = rotateRef.current;
112
172
  // We should only start new animation if the marker has changed
113
173
  if (markerId !== activeMarkerId && !state.isDragging) {
114
- const marker = markers.find((x) => x.id === activeMarkerId);
174
+ const marker = markers.find((x) => x.id === activeMarkerId)!;
115
175
  p1 = p2;
116
176
  p2 = [marker.longitude, marker.latitude];
117
177
  r1 = r2;
@@ -149,16 +209,16 @@ function Earth({ theme, width, height, enableRotation, rotationSpeed, markers, a
149
209
  }
150
210
  });
151
211
 
152
- const getMousePosition = (event) => {
153
- const node = svgRef.current;
154
- const rect = node.getBoundingClientRect();
212
+ const getMousePosition = (event: MouseEvent) => {
213
+ const node = svgRef.current!;
214
+ const rect = node?.getBoundingClientRect();
155
215
  const mousePosition = [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];
156
216
 
157
217
  return mousePosition;
158
218
  };
159
219
 
160
- const onDragStart = (event) => {
161
- const mousePosition = getMousePosition(event);
220
+ const onDragStart = (event: React.MouseEvent<SVGSVGElement>) => {
221
+ const mousePosition = getMousePosition(event as unknown as MouseEvent);
162
222
 
163
223
  if (!mousePosition[0]) {
164
224
  return;
@@ -171,12 +231,12 @@ function Earth({ theme, width, height, enableRotation, rotationSpeed, markers, a
171
231
  dispatch({ type: 'dragStart', payload: { mousePosition } });
172
232
  };
173
233
 
174
- const onDrag = (event) => {
234
+ const onDrag = (event: React.MouseEvent<SVGSVGElement>) => {
175
235
  if (state.isDragging === false) {
176
236
  return;
177
237
  }
178
238
 
179
- const mousePosition = getMousePosition(event);
239
+ const mousePosition = getMousePosition(event as unknown as MouseEvent);
180
240
  const { r0, v0, q0 } = dragRef.current;
181
241
 
182
242
  const v1 = versor.cartesian(projection.rotate(r0).invert(mousePosition));
@@ -192,7 +252,7 @@ function Earth({ theme, width, height, enableRotation, rotationSpeed, markers, a
192
252
  }, 200);
193
253
  };
194
254
 
195
- const onShowTooltip = (event, i) =>
255
+ const onShowTooltip = (event: MouseEvent, i: number) =>
196
256
  dispatch({
197
257
  type: 'tooltip',
198
258
  payload: { tooltipIndex: i, mousePosition: getMousePosition(event) },
@@ -213,9 +273,9 @@ function Earth({ theme, width, height, enableRotation, rotationSpeed, markers, a
213
273
  <g
214
274
  key={x.id}
215
275
  className={`marker ${isActive ? 'marker--active' : ''}`}
216
- onFocus={(event) => onShowTooltip(event, i)}
276
+ onFocus={(event) => onShowTooltip(event as unknown as MouseEvent, i)}
217
277
  onBlur={onHideTooltip}
218
- onMouseOver={(event) => onShowTooltip(event, i)}
278
+ onMouseOver={(event) => onShowTooltip(event as unknown as MouseEvent, i)}
219
279
  onMouseOut={onHideTooltip}>
220
280
  <circle
221
281
  key="marker-inner"
@@ -260,12 +320,12 @@ function Earth({ theme, width, height, enableRotation, rotationSpeed, markers, a
260
320
  if (activeMarkerId && markers.some((x) => x.id === activeMarkerId)) {
261
321
  const activeMarker = markers.find((x) => x.id === activeMarkerId);
262
322
  activeCountry = geoJson.features.findIndex(
263
- (x) => x.properties && x.properties.name && x.properties.name === activeMarker.country
323
+ (x: any) => x.properties && x.properties.name && x.properties.name === activeMarker!.country
264
324
  );
265
325
  }
266
326
 
267
327
  return (
268
- <Container width={width} height={height} theme={theme} colors={colors} onMouseLeave={onDragEnd}>
328
+ <Container width={width} height={height} $theme={theme} colors={colors} onMouseLeave={onDragEnd}>
269
329
  {renderTooltip()}
270
330
  <svg
271
331
  className="earth"
@@ -279,7 +339,7 @@ function Earth({ theme, width, height, enableRotation, rotationSpeed, markers, a
279
339
  <circle cx={width / 2} cy={height / 2} r={projection.scale()} className="globe" filter="url(#glow)" />
280
340
  <path className="graticule" d={pathGenerator(d3.geoGraticule().step([10, 10])())} />
281
341
  <g className="features">
282
- {geoJson.features.map((x, i) => (
342
+ {geoJson.features.map((x: any, i: number) => (
283
343
  <path
284
344
  key={x.properties.name}
285
345
  className={`country ${activeCountry === i ? 'country--active' : ''}`}
@@ -324,49 +384,17 @@ function Earth({ theme, width, height, enableRotation, rotationSpeed, markers, a
324
384
  );
325
385
  }
326
386
 
327
- Earth.propTypes = {
328
- theme: PropTypes.oneOf(['light', 'dark']),
329
- width: PropTypes.number,
330
- height: PropTypes.number,
331
- enableRotation: PropTypes.bool,
332
- rotationSpeed: PropTypes.number,
333
- activeMarkerId: PropTypes.string,
334
- markers: PropTypes.arrayOf(
335
- PropTypes.shape({
336
- id: PropTypes.string.isRequired,
337
- title: PropTypes.string.isRequired,
338
- description: PropTypes.string.isRequired,
339
- country: PropTypes.string.isRequired,
340
- latitude: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
341
- longitude: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
342
- })
343
- ),
344
- colors: PropTypes.shape({
345
- ocean: PropTypes.string,
346
- graticule: PropTypes.string,
347
- land: PropTypes.string,
348
- activeLand: PropTypes.string,
349
- border: PropTypes.string,
350
- marker: PropTypes.string,
351
- activeMarker: PropTypes.string,
352
- }),
353
- };
387
+ export default withDeprecated(Earth, { name: 'Earth' });
354
388
 
355
- Earth.defaultProps = {
356
- theme: 'dark',
357
- width: 1200,
358
- height: 600,
359
- enableRotation: false,
360
- rotationSpeed: 5,
361
- markers: [],
362
- activeMarkerId: undefined,
363
- colors: {},
389
+ type ContainerProps = {
390
+ $theme: 'light' | 'dark';
391
+ width: number;
392
+ height: number;
393
+ colors: Colors;
364
394
  };
365
395
 
366
- export default withDeprecated(Earth, { name: 'Earth' });
367
-
368
- const Container = styled('div')`
369
- background-color: ${(props) => (props.theme === 'light' ? '#f7f7f7' : '#222')};
396
+ const Container = styled('div')<ContainerProps>`
397
+ background-color: ${(props) => (props.$theme === 'light' ? '#f7f7f7' : '#222')};
370
398
  width: ${(props) => props.width}px;
371
399
  height: ${(props) => props.height}px;
372
400
  position: relative;