@cfxjs/sirius-next-common 0.1.29 → 0.1.30

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 (199) hide show
  1. package/dist/chunk-3A4LE5OK.js +49 -0
  2. package/dist/chunk-3A4LE5OK.js.map +1 -0
  3. package/dist/chunk-3D63CPYB.js +2324 -0
  4. package/dist/chunk-3D63CPYB.js.map +1 -0
  5. package/dist/chunk-477HNUQM.js +63 -0
  6. package/dist/chunk-477HNUQM.js.map +1 -0
  7. package/dist/chunk-47CQDRI6.js +63 -0
  8. package/dist/chunk-47CQDRI6.js.map +1 -0
  9. package/dist/chunk-4QV2QZUP.js +212 -0
  10. package/dist/chunk-4QV2QZUP.js.map +1 -0
  11. package/dist/chunk-562J5LFF.js +246 -0
  12. package/dist/chunk-562J5LFF.js.map +1 -0
  13. package/dist/chunk-5ET2WT43.js +108 -0
  14. package/dist/chunk-5ET2WT43.js.map +1 -0
  15. package/dist/chunk-5FMESSK6.js +745 -0
  16. package/dist/chunk-5FMESSK6.js.map +1 -0
  17. package/dist/chunk-5IJQNIWM.js +2324 -0
  18. package/dist/chunk-5IJQNIWM.js.map +1 -0
  19. package/dist/chunk-5KR5M3LI.js +212 -0
  20. package/dist/chunk-5KR5M3LI.js.map +1 -0
  21. package/dist/chunk-5PC6ZUSP.js +49 -0
  22. package/dist/chunk-5PC6ZUSP.js.map +1 -0
  23. package/dist/chunk-5TBPQWGO.js +63 -0
  24. package/dist/chunk-5TBPQWGO.js.map +1 -0
  25. package/dist/chunk-62QRMHTS.js +244 -0
  26. package/dist/chunk-62QRMHTS.js.map +1 -0
  27. package/dist/chunk-7BBDDNFI.js +3629 -0
  28. package/dist/chunk-7BBDDNFI.js.map +1 -0
  29. package/dist/chunk-7WYVSPSJ.js +745 -0
  30. package/dist/chunk-7WYVSPSJ.js.map +1 -0
  31. package/dist/chunk-AS7RCHEU.js +212 -0
  32. package/dist/chunk-AS7RCHEU.js.map +1 -0
  33. package/dist/chunk-AYFDTOKM.js +127 -0
  34. package/dist/chunk-AYFDTOKM.js.map +1 -0
  35. package/dist/chunk-B2BIAMGC.js +2324 -0
  36. package/dist/chunk-B2BIAMGC.js.map +1 -0
  37. package/dist/chunk-BAXJ65FV.js +141 -0
  38. package/dist/chunk-BAXJ65FV.js.map +1 -0
  39. package/dist/chunk-BIXKB2BM.js +127 -0
  40. package/dist/chunk-BIXKB2BM.js.map +1 -0
  41. package/dist/chunk-BMC7K6XL.js +108 -0
  42. package/dist/chunk-BMC7K6XL.js.map +1 -0
  43. package/dist/chunk-BTGKYV55.js +244 -0
  44. package/dist/chunk-BTGKYV55.js.map +1 -0
  45. package/dist/chunk-CAZ6T2TX.js +745 -0
  46. package/dist/chunk-CAZ6T2TX.js.map +1 -0
  47. package/dist/chunk-D2WT6AUU.js +2324 -0
  48. package/dist/chunk-D2WT6AUU.js.map +1 -0
  49. package/dist/chunk-DDAGQ2JK.js +150 -0
  50. package/dist/chunk-DDAGQ2JK.js.map +1 -0
  51. package/dist/chunk-DSMBYGOR.js +141 -0
  52. package/dist/chunk-DSMBYGOR.js.map +1 -0
  53. package/dist/chunk-DVJSOTHM.js +141 -0
  54. package/dist/chunk-DVJSOTHM.js.map +1 -0
  55. package/dist/chunk-FJE2PVRA.js +745 -0
  56. package/dist/chunk-FJE2PVRA.js.map +1 -0
  57. package/dist/chunk-GG35SV7M.js +2324 -0
  58. package/dist/chunk-GG35SV7M.js.map +1 -0
  59. package/dist/chunk-GJCF27KI.js +105 -0
  60. package/dist/chunk-GJCF27KI.js.map +1 -0
  61. package/dist/chunk-GSS7YAQU.js +3629 -0
  62. package/dist/chunk-GSS7YAQU.js.map +1 -0
  63. package/dist/chunk-GTOQ3FIN.js +49 -0
  64. package/dist/chunk-GTOQ3FIN.js.map +1 -0
  65. package/dist/chunk-HFSZYAU2.js +141 -0
  66. package/dist/chunk-HFSZYAU2.js.map +1 -0
  67. package/dist/chunk-HZ4M5LY2.js +3629 -0
  68. package/dist/chunk-HZ4M5LY2.js.map +1 -0
  69. package/dist/chunk-INIJGBG4.js +212 -0
  70. package/dist/chunk-INIJGBG4.js.map +1 -0
  71. package/dist/chunk-ISMLXDGF.js +150 -0
  72. package/dist/chunk-ISMLXDGF.js.map +1 -0
  73. package/dist/chunk-JEDBRDNZ.js +150 -0
  74. package/dist/chunk-JEDBRDNZ.js.map +1 -0
  75. package/dist/chunk-JVUY3R5I.js +244 -0
  76. package/dist/chunk-JVUY3R5I.js.map +1 -0
  77. package/dist/chunk-L65TAZGA.js +2324 -0
  78. package/dist/chunk-L65TAZGA.js.map +1 -0
  79. package/dist/chunk-LEGITSAD.js +105 -0
  80. package/dist/chunk-LEGITSAD.js.map +1 -0
  81. package/dist/chunk-LLTRCE44.js +127 -0
  82. package/dist/chunk-LLTRCE44.js.map +1 -0
  83. package/dist/chunk-MDJJ2N7B.js +49 -0
  84. package/dist/chunk-MDJJ2N7B.js.map +1 -0
  85. package/dist/chunk-MO6EWADQ.js +63 -0
  86. package/dist/chunk-MO6EWADQ.js.map +1 -0
  87. package/dist/chunk-MT5ZPVBD.js +212 -0
  88. package/dist/chunk-MT5ZPVBD.js.map +1 -0
  89. package/dist/chunk-NCKPYRTE.js +105 -0
  90. package/dist/chunk-NCKPYRTE.js.map +1 -0
  91. package/dist/chunk-NHXG5FKK.js +108 -0
  92. package/dist/chunk-NHXG5FKK.js.map +1 -0
  93. package/dist/chunk-NQ5QNBNM.js +105 -0
  94. package/dist/chunk-NQ5QNBNM.js.map +1 -0
  95. package/dist/chunk-NVSEXPAT.js +3629 -0
  96. package/dist/chunk-NVSEXPAT.js.map +1 -0
  97. package/dist/chunk-NXGS5QEO.js +141 -0
  98. package/dist/chunk-NXGS5QEO.js.map +1 -0
  99. package/dist/chunk-NXXSUIXY.js +150 -0
  100. package/dist/chunk-NXXSUIXY.js.map +1 -0
  101. package/dist/chunk-PXXEFNOE.js +3629 -0
  102. package/dist/chunk-PXXEFNOE.js.map +1 -0
  103. package/dist/chunk-Q3MMY6EU.js +244 -0
  104. package/dist/chunk-Q3MMY6EU.js.map +1 -0
  105. package/dist/chunk-Q5D5FHO7.js +212 -0
  106. package/dist/chunk-Q5D5FHO7.js.map +1 -0
  107. package/dist/chunk-QCVM6HOF.js +3629 -0
  108. package/dist/chunk-QCVM6HOF.js.map +1 -0
  109. package/dist/chunk-QFAWAODA.js +150 -0
  110. package/dist/chunk-QFAWAODA.js.map +1 -0
  111. package/dist/chunk-QUOMAXP4.js +2324 -0
  112. package/dist/chunk-QUOMAXP4.js.map +1 -0
  113. package/dist/chunk-QY5G7QYB.js +150 -0
  114. package/dist/chunk-QY5G7QYB.js.map +1 -0
  115. package/dist/chunk-RLQ7WP5W.js +127 -0
  116. package/dist/chunk-RLQ7WP5W.js.map +1 -0
  117. package/dist/chunk-RP27EARH.js +49 -0
  118. package/dist/chunk-RP27EARH.js.map +1 -0
  119. package/dist/chunk-RVL3W5DP.js +105 -0
  120. package/dist/chunk-RVL3W5DP.js.map +1 -0
  121. package/dist/chunk-S335KQ5D.js +49 -0
  122. package/dist/chunk-S335KQ5D.js.map +1 -0
  123. package/dist/chunk-SN6AMUVZ.js +108 -0
  124. package/dist/chunk-SN6AMUVZ.js.map +1 -0
  125. package/dist/chunk-SOL2SFT2.js +246 -0
  126. package/dist/chunk-SOL2SFT2.js.map +1 -0
  127. package/dist/chunk-T54ODLMI.js +49 -0
  128. package/dist/chunk-T54ODLMI.js.map +1 -0
  129. package/dist/chunk-T7FNENEU.js +150 -0
  130. package/dist/chunk-T7FNENEU.js.map +1 -0
  131. package/dist/chunk-TGW2NDL5.js +108 -0
  132. package/dist/chunk-TGW2NDL5.js.map +1 -0
  133. package/dist/chunk-TIAC33MC.js +745 -0
  134. package/dist/chunk-TIAC33MC.js.map +1 -0
  135. package/dist/chunk-TLIOHXCZ.js +63 -0
  136. package/dist/chunk-TLIOHXCZ.js.map +1 -0
  137. package/dist/chunk-UCDEIGII.js +141 -0
  138. package/dist/chunk-UCDEIGII.js.map +1 -0
  139. package/dist/chunk-UGV7LSWR.js +745 -0
  140. package/dist/chunk-UGV7LSWR.js.map +1 -0
  141. package/dist/chunk-UVTOU2ZP.js +127 -0
  142. package/dist/chunk-UVTOU2ZP.js.map +1 -0
  143. package/dist/chunk-V7FEY5O4.js +127 -0
  144. package/dist/chunk-V7FEY5O4.js.map +1 -0
  145. package/dist/chunk-VMQBNQNS.js +141 -0
  146. package/dist/chunk-VMQBNQNS.js.map +1 -0
  147. package/dist/chunk-W5TV463S.js +127 -0
  148. package/dist/chunk-W5TV463S.js.map +1 -0
  149. package/dist/chunk-WEOKDVJD.js +108 -0
  150. package/dist/chunk-WEOKDVJD.js.map +1 -0
  151. package/dist/chunk-XC53X56K.js +108 -0
  152. package/dist/chunk-XC53X56K.js.map +1 -0
  153. package/dist/chunk-XCPB27SN.js +745 -0
  154. package/dist/chunk-XCPB27SN.js.map +1 -0
  155. package/dist/chunk-XYR4GKBH.js +63 -0
  156. package/dist/chunk-XYR4GKBH.js.map +1 -0
  157. package/dist/chunk-Y7TGANWP.js +212 -0
  158. package/dist/chunk-Y7TGANWP.js.map +1 -0
  159. package/dist/chunk-YKN5WWYP.js +63 -0
  160. package/dist/chunk-YKN5WWYP.js.map +1 -0
  161. package/dist/chunk-YVVEURB7.js +3629 -0
  162. package/dist/chunk-YVVEURB7.js.map +1 -0
  163. package/dist/chunk-YXISQECP.js +244 -0
  164. package/dist/chunk-YXISQECP.js.map +1 -0
  165. package/dist/chunk-Z2WEOQ72.js +105 -0
  166. package/dist/chunk-Z2WEOQ72.js.map +1 -0
  167. package/dist/chunk-ZKPSSERO.js +105 -0
  168. package/dist/chunk-ZKPSSERO.js.map +1 -0
  169. package/dist/components/AddressContainer/CoreAddressContainer.js +9 -9
  170. package/dist/components/AddressContainer/EVMAddressContainer.js +8 -8
  171. package/dist/components/AddressContainer/addressSwitcher.js +6 -6
  172. package/dist/components/AddressContainer/addressView.js +5 -5
  173. package/dist/components/AddressContainer/label.js +4 -4
  174. package/dist/components/Age/index.js +4 -4
  175. package/dist/components/Charts/PreviewChartTemplate.js +1 -1
  176. package/dist/components/Charts/StockChartTemplate.js +1 -1
  177. package/dist/components/CopyButton/index.js +3 -3
  178. package/dist/components/DownloadCSV/index.js +5 -9
  179. package/dist/components/DownloadCSV/index.js.map +1 -1
  180. package/dist/components/Dropdown/index.js +7 -13
  181. package/dist/components/Dropdown/index.js.map +1 -1
  182. package/dist/components/GasPriceDropdown/index.js +2 -2
  183. package/dist/components/IncreasePercent/index.js +2 -2
  184. package/dist/components/InfoIconWithTooltip/index.js +3 -3
  185. package/dist/components/Modal/index.js +3 -3
  186. package/dist/components/PhishingAddressContainer/index.js +3 -3
  187. package/dist/components/Price/index.js +3 -3
  188. package/dist/components/Radio/index.js +2 -2
  189. package/dist/components/Select/index.js +3 -3
  190. package/dist/components/Select/select.js +3 -3
  191. package/dist/components/Text/index.js +4 -4
  192. package/dist/components/Tooltip/index.js +3 -3
  193. package/dist/components/TransactionAction/coreTransactionAction.js +9 -9
  194. package/dist/components/TransactionAction/evmTransactionAction.js +8 -8
  195. package/dist/utils/hooks/useENS.js +2 -2
  196. package/dist/utils/index.js +2 -2
  197. package/dist/utils/request.d.ts +2 -2
  198. package/dist/utils/request.js +3 -3
  199. package/package.json +4 -4
@@ -0,0 +1,150 @@
1
+ import {
2
+ Spin
3
+ } from "./chunk-XCKMXAL2.js";
4
+ import {
5
+ cn
6
+ } from "./chunk-TIAC33MC.js";
7
+
8
+ // src/components/Modal/index.tsx
9
+ import { useEffect, useCallback, useMemo } from "react";
10
+ import ReactDOM from "react-dom";
11
+ import { X } from "lucide-react";
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ var Backdrop = ({
14
+ onClick,
15
+ children,
16
+ className
17
+ }) => /* @__PURE__ */ jsx("div", { className, onClick, children });
18
+ var ModalContent = ({
19
+ containerClassName,
20
+ closable,
21
+ onClose,
22
+ children,
23
+ loading,
24
+ modalStyles
25
+ }) => /* @__PURE__ */ jsx(
26
+ "div",
27
+ {
28
+ className: cn("relative bg-[#FFF] rounded shadow-lg", containerClassName),
29
+ tabIndex: -1,
30
+ style: modalStyles,
31
+ children: /* @__PURE__ */ jsxs(Spin, { spinning: loading, children: [
32
+ closable && /* @__PURE__ */ jsx(X, { className: "h-4 w-4 absolute right-5 top-5", onClick: onClose }),
33
+ /* @__PURE__ */ jsx("div", { className: "p-4", children })
34
+ ] })
35
+ }
36
+ );
37
+ var useEventListener = (eventName, handler, active) => {
38
+ useEffect(() => {
39
+ if (active) {
40
+ const eventListener = (event) => handler(event);
41
+ document.addEventListener(eventName, eventListener);
42
+ return () => {
43
+ document.removeEventListener(eventName, eventListener);
44
+ };
45
+ }
46
+ }, [eventName, handler, active]);
47
+ };
48
+ var Modal = ({
49
+ open,
50
+ closeOnEsc = true,
51
+ closable = true,
52
+ preventScroll = true,
53
+ backdropClassName = "",
54
+ containerClassName = "",
55
+ onOpen = () => {
56
+ },
57
+ onClose,
58
+ children,
59
+ width = "600px",
60
+ maskClosable = true,
61
+ centered = true,
62
+ loading = false
63
+ }) => {
64
+ useEffect(() => {
65
+ if (open) {
66
+ onOpen?.();
67
+ if (preventScroll) {
68
+ document.body.style.overflow = "hidden";
69
+ }
70
+ } else {
71
+ if (preventScroll) {
72
+ document.body.style.overflow = "";
73
+ }
74
+ }
75
+ return () => {
76
+ if (preventScroll) {
77
+ document.body.style.overflow = "";
78
+ }
79
+ };
80
+ }, [open, onOpen, preventScroll]);
81
+ const handleKeyDown = useCallback(
82
+ (event) => {
83
+ if (event.key === "Escape" && closeOnEsc && onClose) {
84
+ onClose?.();
85
+ }
86
+ },
87
+ [closeOnEsc, onClose]
88
+ );
89
+ const handleClickOutside = useCallback(() => {
90
+ if (onClose && maskClosable) {
91
+ onClose?.();
92
+ }
93
+ }, [onClose, maskClosable]);
94
+ const handleBackdropClick = useCallback(
95
+ (event) => {
96
+ if (maskClosable && event.target === event.currentTarget && onClose) {
97
+ onClose?.();
98
+ }
99
+ },
100
+ [maskClosable, onClose]
101
+ );
102
+ const modalStyles = useMemo(
103
+ () => ({
104
+ width: typeof width === "string" ? width : `${width}px`,
105
+ margin: centered ? "auto" : void 0
106
+ }),
107
+ [width, centered]
108
+ );
109
+ useEventListener(
110
+ "keydown",
111
+ handleKeyDown,
112
+ open && closeOnEsc
113
+ );
114
+ useEventListener(
115
+ "mousedown",
116
+ handleClickOutside,
117
+ open && maskClosable
118
+ );
119
+ if (!open)
120
+ return null;
121
+ return ReactDOM.createPortal(
122
+ /* @__PURE__ */ jsx(
123
+ Backdrop,
124
+ {
125
+ onClick: handleBackdropClick,
126
+ className: cn(
127
+ "fixed inset-0 bg-[#000] bg-opacity-25 flex items-center justify-center z-10000",
128
+ backdropClassName
129
+ ),
130
+ children: /* @__PURE__ */ jsx(
131
+ ModalContent,
132
+ {
133
+ containerClassName,
134
+ closable,
135
+ onClose,
136
+ children,
137
+ loading,
138
+ modalStyles
139
+ }
140
+ )
141
+ }
142
+ ),
143
+ document.body
144
+ );
145
+ };
146
+
147
+ export {
148
+ Modal
149
+ };
150
+ //# sourceMappingURL=chunk-QY5G7QYB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Modal/index.tsx"],"sourcesContent":["import React, { useEffect, useCallback, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport { X } from 'lucide-react';\nimport { Spin } from '../Spin';\nimport { cn } from '../../utils';\n\ninterface ModalProps {\n open: boolean;\n closeOnEsc?: boolean;\n closable?: boolean;\n preventScroll?: boolean;\n backdropClassName?: string;\n containerClassName?: string;\n onOpen?: () => void;\n onClose?: () => void;\n children?: React.ReactNode;\n width?: string | number;\n maskClosable?: boolean;\n centered?: boolean;\n loading?: boolean;\n}\n\ninterface ModalContentProps {\n containerClassName: string;\n closable: boolean;\n onClose?: VoidFunction;\n children?: React.ReactNode;\n loading?: boolean;\n modalStyles: React.CSSProperties;\n}\n\ninterface BackdropProps {\n onClick: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n className: string;\n children?: React.ReactNode;\n}\n\nconst Backdrop: React.FC<BackdropProps> = ({\n onClick,\n children,\n className,\n}) => (\n <div className={className} onClick={onClick}>\n {children}\n </div>\n);\n\nconst ModalContent = ({\n containerClassName,\n closable,\n onClose,\n children,\n loading,\n modalStyles,\n}: ModalContentProps) => (\n <div\n className={cn('relative bg-[#FFF] rounded shadow-lg', containerClassName)}\n tabIndex={-1}\n style={modalStyles}\n >\n <Spin spinning={loading}>\n {closable && (\n <X className=\"h-4 w-4 absolute right-5 top-5\" onClick={onClose} />\n )}\n <div className=\"p-4\">{children}</div>\n </Spin>\n </div>\n);\n\nconst useEventListener = (\n eventName: string,\n handler: (event: Event) => void,\n active: boolean,\n) => {\n useEffect(() => {\n if (active) {\n const eventListener = (event: Event) => handler(event);\n\n document.addEventListener(eventName, eventListener);\n return () => {\n document.removeEventListener(eventName, eventListener);\n };\n }\n }, [eventName, handler, active]);\n};\n\nconst Modal: React.FC<ModalProps> = ({\n open,\n closeOnEsc = true,\n closable = true,\n preventScroll = true,\n backdropClassName = '',\n containerClassName = '',\n onOpen = () => {},\n onClose,\n children,\n width = '600px',\n maskClosable = true,\n centered = true,\n loading = false,\n}) => {\n useEffect(() => {\n if (open) {\n onOpen?.();\n if (preventScroll) {\n document.body.style.overflow = 'hidden';\n }\n } else {\n if (preventScroll) {\n document.body.style.overflow = '';\n }\n }\n return () => {\n if (preventScroll) {\n document.body.style.overflow = '';\n }\n };\n }, [open, onOpen, preventScroll]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Escape' && closeOnEsc && onClose) {\n onClose?.();\n }\n },\n [closeOnEsc, onClose],\n );\n\n const handleClickOutside = useCallback(() => {\n if (onClose && maskClosable) {\n onClose?.();\n }\n }, [onClose, maskClosable]);\n\n const handleBackdropClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (maskClosable && event.target === event.currentTarget && onClose) {\n onClose?.();\n }\n },\n [maskClosable, onClose],\n );\n\n const modalStyles: React.CSSProperties = useMemo(\n () => ({\n width: typeof width === 'string' ? width : `${width}px`,\n margin: centered ? 'auto' : undefined,\n }),\n [width, centered],\n );\n\n useEventListener(\n 'keydown',\n handleKeyDown as (event: Event) => void,\n open && closeOnEsc,\n );\n useEventListener(\n 'mousedown',\n handleClickOutside as (event: Event) => void,\n open && maskClosable,\n );\n\n if (!open) return null;\n\n return ReactDOM.createPortal(\n <Backdrop\n onClick={handleBackdropClick}\n className={cn(\n 'fixed inset-0 bg-[#000] bg-opacity-25 flex items-center justify-center z-10000',\n backdropClassName,\n )}\n >\n <ModalContent\n containerClassName={containerClassName}\n closable={closable}\n onClose={onClose}\n children={children}\n loading={loading}\n modalStyles={modalStyles}\n />\n </Backdrop>,\n document.body,\n );\n};\n\nexport { Modal };\n"],"mappings":"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","names":[]}
@@ -0,0 +1,127 @@
1
+ import {
2
+ convertCheckSum
3
+ } from "./chunk-BVWWK2EL.js";
4
+ import {
5
+ Text
6
+ } from "./chunk-NQ5QNBNM.js";
7
+ import {
8
+ getTranslations
9
+ } from "./chunk-DQGLZCIG.js";
10
+
11
+ // src/components/AddressContainer/addressView.tsx
12
+ import { Translation } from "react-i18next";
13
+ import { shortenAddress } from "@cfx-kit/dapp-utils/dist/address";
14
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
15
+ var defaultPCMaxWidth = 138;
16
+ var renderTooltipContent = (tooltipContent) => {
17
+ return Object.entries(tooltipContent).map(([key, { label, value, hideLabel }]) => {
18
+ if (value) {
19
+ return /* @__PURE__ */ jsxs("div", { children: [
20
+ !hideLabel && /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(Translation, { children: (t) => t(label) }) }),
21
+ value
22
+ ] }, key);
23
+ }
24
+ return null;
25
+ }).filter(Boolean);
26
+ };
27
+ var convertLink = ({
28
+ link,
29
+ type,
30
+ hrefAddress,
31
+ cfxAddress
32
+ }) => {
33
+ if (typeof link === "string") {
34
+ return link;
35
+ }
36
+ const address = hrefAddress || cfxAddress;
37
+ if (address && typeof address === "string") {
38
+ const pathname = window.location.pathname.toLowerCase();
39
+ const addressLower = address.toLowerCase();
40
+ if (pathname.includes("/address/" + addressLower)) {
41
+ return false;
42
+ }
43
+ if (type === "pow") {
44
+ return `/address/${address}`;
45
+ }
46
+ if (type === "pos") {
47
+ return `/pos/accounts/${address}`;
48
+ }
49
+ }
50
+ return false;
51
+ };
52
+ var RenderAddress = ({
53
+ cfxAddress,
54
+ alias,
55
+ hoverValue,
56
+ hrefAddress,
57
+ content,
58
+ link = "",
59
+ isFull = false,
60
+ isFullNameTag = false,
61
+ style = {},
62
+ maxWidth,
63
+ prefix = null,
64
+ suffix = null,
65
+ type = "pow",
66
+ addressLabel = "",
67
+ ENSLabel = "",
68
+ nametag = "",
69
+ hideAliasPrefixInHover = false
70
+ }) => {
71
+ const translations = getTranslations();
72
+ const name = content || ENSLabel || nametag || addressLabel || alias;
73
+ const defaultStyle = {
74
+ maxWidth: `${name && isFullNameTag || isFull ? "auto" : (maxWidth || defaultPCMaxWidth) + "px"}`
75
+ };
76
+ const href = convertLink({ link, type, hrefAddress, cfxAddress });
77
+ const Wrapper = href ? "a" : "div";
78
+ const tooltipContent = {
79
+ ENSLabel: {
80
+ label: translations?.ens?.tip,
81
+ value: ENSLabel
82
+ },
83
+ nametag: {
84
+ label: translations?.nametag?.tip,
85
+ value: nametag
86
+ },
87
+ addressLabel: {
88
+ label: translations?.profile.address.myNameTag,
89
+ value: addressLabel
90
+ },
91
+ alias: {
92
+ label: translations?.profile.address.publicNameTag,
93
+ value: alias,
94
+ hideLabel: hideAliasPrefixInHover
95
+ }
96
+ };
97
+ const checksumAddress = convertCheckSum(cfxAddress);
98
+ const cfxAddressLabel = typeof cfxAddress === "string" && !isFull ? shortenAddress(checksumAddress) : checksumAddress;
99
+ return /* @__PURE__ */ jsxs("div", { className: "inline-flex", children: [
100
+ prefix,
101
+ /* @__PURE__ */ jsx(
102
+ Text,
103
+ {
104
+ tag: "span",
105
+ hoverValue: /* @__PURE__ */ jsxs(Fragment, { children: [
106
+ renderTooltipContent(tooltipContent),
107
+ /* @__PURE__ */ jsx("div", { children: hoverValue || checksumAddress })
108
+ ] }),
109
+ children: /* @__PURE__ */ jsx(
110
+ Wrapper,
111
+ {
112
+ className: "block relative align-bottom cursor-default truncate",
113
+ style: { ...defaultStyle, ...style },
114
+ ...href ? { href: String(href) } : {},
115
+ children: name || cfxAddressLabel
116
+ }
117
+ )
118
+ }
119
+ ),
120
+ suffix
121
+ ] });
122
+ };
123
+
124
+ export {
125
+ RenderAddress
126
+ };
127
+ //# sourceMappingURL=chunk-RLQ7WP5W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AddressContainer/addressView.tsx"],"sourcesContent":["import { Translation } from 'react-i18next';\nimport { Text } from '../Text';\nimport { convertCheckSum } from '../../utils/address';\nimport { getTranslations } from '../../store';\nimport { TooltipContent, RenderAddressProps } from './types';\nimport { shortenAddress } from '@cfx-kit/dapp-utils/dist/address';\n\nconst defaultPCMaxWidth = 138;\n\n// common\nconst renderTooltipContent = (tooltipContent: TooltipContent) => {\n return Object.entries(tooltipContent)\n .map(([key, { label, value, hideLabel }]) => {\n if (value) {\n return (\n <div key={key}>\n {!hideLabel && (\n <span>\n <Translation>{t => t(label)}</Translation>\n </span>\n )}\n {value}\n </div>\n );\n }\n return null;\n })\n .filter(Boolean);\n};\n\n// common\nconst convertLink = ({\n link,\n type,\n hrefAddress,\n cfxAddress,\n}: RenderAddressProps) => {\n if (typeof link === 'string') {\n return link;\n }\n\n const address = hrefAddress || cfxAddress;\n\n if (address && typeof address === 'string') {\n const pathname = window.location.pathname.toLowerCase();\n const addressLower = address.toLowerCase();\n if (pathname.includes('/address/' + addressLower)) {\n return false;\n }\n\n if (type === 'pow') {\n return `/address/${address}`;\n }\n\n if (type === 'pos') {\n return `/pos/accounts/${address}`;\n }\n }\n\n return false;\n};\n\n// common\nexport const RenderAddress = ({\n cfxAddress,\n alias,\n hoverValue,\n hrefAddress,\n content,\n link = '',\n isFull = false,\n isFullNameTag = false,\n style = {},\n maxWidth,\n prefix = null,\n suffix = null,\n type = 'pow',\n addressLabel = '',\n ENSLabel = '',\n nametag = '',\n hideAliasPrefixInHover = false,\n}: RenderAddressProps) => {\n const translations = getTranslations();\n\n const name = content || ENSLabel || nametag || addressLabel || alias;\n\n const defaultStyle = {\n maxWidth: `${(name && isFullNameTag) || isFull ? 'auto' : (maxWidth || defaultPCMaxWidth) + 'px'}`,\n };\n\n const href = convertLink({ link, type, hrefAddress, cfxAddress });\n\n const Wrapper = href ? 'a' : 'div';\n\n const tooltipContent: TooltipContent = {\n ENSLabel: {\n label: (translations as any)?.ens?.tip,\n value: ENSLabel,\n },\n nametag: {\n label: translations?.nametag?.tip,\n value: nametag,\n },\n addressLabel: {\n label: translations?.profile.address.myNameTag,\n value: addressLabel,\n },\n alias: {\n label: translations?.profile.address.publicNameTag,\n value: alias,\n hideLabel: hideAliasPrefixInHover,\n },\n };\n\n const checksumAddress = convertCheckSum(cfxAddress);\n\n const cfxAddressLabel =\n typeof cfxAddress === 'string' && !isFull\n ? shortenAddress(checksumAddress!)\n : checksumAddress;\n\n return (\n <div className=\"inline-flex\">\n {prefix}\n <Text\n tag=\"span\"\n hoverValue={\n <>\n {renderTooltipContent(tooltipContent)}\n <div>{hoverValue || checksumAddress}</div>\n </>\n }\n >\n <Wrapper\n className=\"block relative align-bottom cursor-default truncate\"\n style={{ ...defaultStyle, ...style }}\n {...(href ? { href: String(href) } : {})}\n >\n {name || cfxAddressLabel}\n </Wrapper>\n </Text>\n {suffix}\n </div>\n );\n};\n"],"mappings":"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","names":[]}
@@ -0,0 +1,49 @@
1
+ import {
2
+ Tooltip
3
+ } from "./chunk-GG35SV7M.js";
4
+ import {
5
+ getTranslations
6
+ } from "./chunk-DQGLZCIG.js";
7
+
8
+ // src/components/AddressContainer/label.tsx
9
+ import { Translation } from "react-i18next";
10
+ import { Bookmark, Hash } from "@zeit-ui/react-icons";
11
+ import ICON_ENS from "./logo-cns-7CXISC6I.svg";
12
+ import { jsx } from "react/jsx-runtime";
13
+ var getLabelInfo = (label, type) => {
14
+ const translations = getTranslations();
15
+ if (label) {
16
+ let trans = "";
17
+ let icon = null;
18
+ if (type === "tag") {
19
+ trans = translations.profile.tip.label;
20
+ icon = /* @__PURE__ */ jsx(Bookmark, { color: "var(--theme-color-gray2)", size: 16 });
21
+ } else if (type === "ens") {
22
+ trans = translations.ens.label;
23
+ icon = /* @__PURE__ */ jsx(
24
+ "img",
25
+ {
26
+ src: ICON_ENS,
27
+ className: "w-[16px] h-[16px] mb-[3px] mr-[2px]",
28
+ alt: ""
29
+ }
30
+ );
31
+ } else if (type === "nametag") {
32
+ trans = translations.nametag.label;
33
+ icon = /* @__PURE__ */ jsx(Hash, { color: "var(--theme-color-gray2)", size: 16 });
34
+ }
35
+ return {
36
+ label,
37
+ icon: /* @__PURE__ */ jsx("span", { className: "mr-[2px]", children: /* @__PURE__ */ jsx(Tooltip, { title: /* @__PURE__ */ jsx(Translation, { children: (t) => t(trans) }), children: icon }) })
38
+ };
39
+ }
40
+ return {
41
+ label: "",
42
+ icon: null
43
+ };
44
+ };
45
+
46
+ export {
47
+ getLabelInfo
48
+ };
49
+ //# sourceMappingURL=chunk-RP27EARH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AddressContainer/label.tsx"],"sourcesContent":["import { Translation } from 'react-i18next';\nimport { Bookmark, Hash } from '@zeit-ui/react-icons';\nimport { Tooltip } from '../Tooltip';\nimport { getTranslations } from '../../store';\nimport ICON_ENS from '../../images/logo-cns.svg';\n\nexport const getLabelInfo = (label: string, type: string) => {\n const translations = getTranslations();\n if (label) {\n let trans: string = '';\n let icon: React.ReactNode = null;\n\n if (type === 'tag') {\n trans = translations.profile.tip.label;\n icon = <Bookmark color=\"var(--theme-color-gray2)\" size={16} />;\n } else if (type === 'ens') {\n trans = (translations as any).ens.label;\n icon = (\n <img\n src={ICON_ENS}\n className=\"w-[16px] h-[16px] mb-[3px] mr-[2px]\"\n alt=\"\"\n />\n );\n // nametag from official operational staff\n } else if (type === 'nametag') {\n trans = translations.nametag.label;\n icon = <Hash color=\"var(--theme-color-gray2)\" size={16} />;\n }\n\n return {\n label,\n icon: (\n <span className=\"mr-[2px]\">\n <Tooltip title={<Translation>{t => t(trans)}</Translation>}>\n {icon}\n </Tooltip>\n </span>\n ),\n };\n }\n\n return {\n label: '',\n icon: null,\n };\n};\n"],"mappings":";;;;;;;;AAAA,SAAS,mBAAmB;AAC5B,SAAS,UAAU,YAAY;AAG/B,OAAO,cAAc;AAUR;AARN,IAAM,eAAe,CAAC,OAAe,SAAiB;AAC3D,QAAM,eAAe,gBAAgB;AACrC,MAAI,OAAO;AACT,QAAI,QAAgB;AACpB,QAAI,OAAwB;AAE5B,QAAI,SAAS,OAAO;AAClB,cAAQ,aAAa,QAAQ,IAAI;AACjC,aAAO,oBAAC,YAAS,OAAM,4BAA2B,MAAM,IAAI;AAAA,IAC9D,WAAW,SAAS,OAAO;AACzB,cAAS,aAAqB,IAAI;AAClC,aACE;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,WAAU;AAAA,UACV,KAAI;AAAA;AAAA,MACN;AAAA,IAGJ,WAAW,SAAS,WAAW;AAC7B,cAAQ,aAAa,QAAQ;AAC7B,aAAO,oBAAC,QAAK,OAAM,4BAA2B,MAAM,IAAI;AAAA,IAC1D;AAEA,WAAO;AAAA,MACL;AAAA,MACA,MACE,oBAAC,UAAK,WAAU,YACd,8BAAC,WAAQ,OAAO,oBAAC,eAAa,iBAAK,EAAE,KAAK,GAAE,GACzC,gBACH,GACF;AAAA,IAEJ;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AACF;","names":[]}
@@ -0,0 +1,105 @@
1
+ import {
2
+ useBreakpoint
3
+ } from "./chunk-TOKKKTFG.js";
4
+ import {
5
+ Tooltip
6
+ } from "./chunk-5IJQNIWM.js";
7
+ import {
8
+ selectText
9
+ } from "./chunk-XCPB27SN.js";
10
+
11
+ // src/components/Text/index.tsx
12
+ import React from "react";
13
+ import clsx from "clsx";
14
+ import { jsx } from "react/jsx-runtime";
15
+ var getTypeColor = (type) => {
16
+ const colors = {
17
+ default: "inherit",
18
+ primary: "#7cd77b",
19
+ secondary: "#666",
20
+ success: "#7cd77b",
21
+ warning: "#ffc438",
22
+ error: "#e15c56"
23
+ };
24
+ return colors[type] || colors.default;
25
+ };
26
+ var Text = React.memo(
27
+ ({
28
+ className,
29
+ children,
30
+ maxWidth: _maxWidth,
31
+ mobileMaxWidth = _maxWidth,
32
+ maxCount: _maxCount,
33
+ mobileMaxCount = _maxCount,
34
+ hoverValue,
35
+ hoverValueMaxCount: outerHoverValueMaxCount,
36
+ tag = "p",
37
+ type = "default",
38
+ hideTooltip = false,
39
+ ...props
40
+ }) => {
41
+ const Component = tag;
42
+ const bp = useBreakpoint();
43
+ let child = children;
44
+ const maxCount = bp === "s" ? mobileMaxCount : _maxCount;
45
+ const maxWidth = bp === "s" ? mobileMaxWidth : _maxWidth;
46
+ if (maxWidth === void 0 && maxCount && typeof children === "string" && children.length > maxCount) {
47
+ child = String.prototype.substr.call(children, 0, maxCount) + "...";
48
+ }
49
+ let textContent = hoverValue || children;
50
+ if (bp === "s" && typeof textContent === "string") {
51
+ const hoverValueMaxCount = outerHoverValueMaxCount || 34;
52
+ let textContentCopy = textContent;
53
+ let newTextContent = [];
54
+ let count = 0;
55
+ while (textContentCopy.length > hoverValueMaxCount) {
56
+ newTextContent.push(
57
+ /* @__PURE__ */ jsx("span", { children: textContentCopy.substr(0, hoverValueMaxCount) }, count)
58
+ );
59
+ newTextContent.push(/* @__PURE__ */ jsx("br", {}, `br${count}`));
60
+ textContentCopy = textContentCopy.substr(hoverValueMaxCount);
61
+ if (count > 3) {
62
+ textContentCopy = textContentCopy.substr(0, hoverValueMaxCount - 3) + "...";
63
+ }
64
+ }
65
+ newTextContent.push(/* @__PURE__ */ jsx("span", { children: textContentCopy }, ++count));
66
+ textContent = newTextContent;
67
+ }
68
+ const tooltipText = !hideTooltip && React.createElement(
69
+ "div",
70
+ {
71
+ onClick: (e) => {
72
+ e.preventDefault();
73
+ e.stopPropagation();
74
+ selectText(e.currentTarget);
75
+ }
76
+ },
77
+ textContent
78
+ );
79
+ const p = { title: tooltipText };
80
+ return React.createElement(Tooltip, p, [
81
+ /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(
82
+ Component,
83
+ {
84
+ className: clsx(
85
+ "sirius-text truncate vertical-bottom",
86
+ "all-[a]:truncate all-[a]:vertical-bottom all-[a]:cursor-pointer all-[a:hover]:text-#0626ae",
87
+ className
88
+ ),
89
+ style: {
90
+ maxWidth,
91
+ display: maxWidth === void 0 ? "inherit" : "inline-block",
92
+ color: getTypeColor(type)
93
+ },
94
+ ...props,
95
+ children: child
96
+ }
97
+ ) }, "text")
98
+ ]);
99
+ }
100
+ );
101
+
102
+ export {
103
+ Text
104
+ };
105
+ //# sourceMappingURL=chunk-RVL3W5DP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Text/index.tsx"],"sourcesContent":["import React from 'react';\nimport clsx from 'clsx';\nimport { Tooltip } from '../Tooltip';\nimport { selectText } from '../../utils';\nimport { useBreakpoint } from '../../utils/media';\n\ntype NormalTypes =\n | 'default'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'error'\n | 'primary';\n\ntype TextProps = {\n children?: React.ReactNode;\n maxWidth?: string;\n mobileMaxWidth?: string;\n maxCount?: number;\n mobileMaxCount?: number;\n hoverValue?: React.ReactNode;\n hoverValueMaxCount?: number;\n tag?: 'p' | 'span';\n type?: NormalTypes;\n hideTooltip?: boolean;\n};\ntype NativeAttrs = Omit<React.HTMLAttributes<any>, keyof TextProps>;\n\nconst getTypeColor = (type: NormalTypes) => {\n const colors: { [key in NormalTypes]: string } = {\n default: 'inherit',\n primary: '#7cd77b',\n secondary: '#666',\n success: '#7cd77b',\n warning: '#ffc438',\n error: '#e15c56',\n };\n\n return colors[type] || colors.default;\n};\n\n// note:\n// 1. maxWidth priority is higher than maxCount\n// 2. maxCount only apply to string\n// 3. if hoverValue is provided, use hoverValue as Tooltip text, otherwise use children\n// if text of prop tooltip is provided, use as Tooltip text\nexport const Text = React.memo(\n ({\n className,\n children,\n maxWidth: _maxWidth,\n mobileMaxWidth = _maxWidth,\n maxCount: _maxCount,\n mobileMaxCount = _maxCount,\n hoverValue,\n hoverValueMaxCount: outerHoverValueMaxCount,\n tag = 'p',\n type = 'default',\n hideTooltip = false,\n ...props\n }: NativeAttrs & TextProps) => {\n const Component = tag;\n const bp = useBreakpoint();\n let child: React.ReactNode = children;\n const maxCount = bp === 's' ? mobileMaxCount : _maxCount;\n const maxWidth = bp === 's' ? mobileMaxWidth : _maxWidth;\n if (\n maxWidth === undefined &&\n maxCount &&\n typeof children === 'string' &&\n children.length > maxCount\n ) {\n child = String.prototype.substr.call(children, 0, maxCount) + '...';\n }\n\n let textContent = hoverValue || children;\n // 控制移动端字符串类型 tooltip 的长度\n // 这里有个问题,就是截断的位置可能是一个完整的单词,暂时没有办法处理,如果为了避免这种情况,需要由外面传入前对内容进行处理,比如设置固定宽度小于 24rem\n // @todo 后续可以试下读取文本长度,动态设置容器宽度值的方式,可以避免截断位置的问题\n if (bp === 's' && typeof textContent === 'string') {\n const hoverValueMaxCount = outerHoverValueMaxCount || 34; // default text count is 36\n let textContentCopy: string = textContent;\n let newTextContent: Array<React.ReactNode> = [];\n let count = 0;\n while (textContentCopy.length > hoverValueMaxCount) {\n newTextContent.push(\n <span key={count}>\n {textContentCopy.substr(0, hoverValueMaxCount)}\n </span>,\n );\n newTextContent.push(<br key={`br${count}`} />);\n textContentCopy = textContentCopy.substr(hoverValueMaxCount);\n // 防止文本过长的情况\n if (count > 3) {\n textContentCopy =\n textContentCopy.substr(0, hoverValueMaxCount - 3) + '...';\n }\n }\n newTextContent.push(<span key={++count}>{textContentCopy}</span>);\n textContent = newTextContent;\n }\n const tooltipText =\n !hideTooltip &&\n React.createElement(\n 'div',\n {\n onClick: e => {\n e.preventDefault();\n e.stopPropagation();\n selectText(e.currentTarget);\n },\n },\n textContent,\n );\n\n const p = { title: tooltipText };\n return React.createElement(Tooltip, p, [\n <span key=\"text\">\n <Component\n className={clsx(\n 'sirius-text truncate vertical-bottom',\n 'all-[a]:truncate all-[a]:vertical-bottom all-[a]:cursor-pointer all-[a:hover]:text-#0626ae',\n className,\n )}\n style={{\n maxWidth,\n display: maxWidth === undefined ? 'inherit' : 'inline-block',\n color: getTypeColor(type),\n }}\n {...props}\n >\n {child}\n </Component>\n </span>,\n ]);\n },\n);\n"],"mappings":";;;;;;;;;;;AAAA,OAAO,WAAW;AAClB,OAAO,UAAU;AAqFP;AA1DV,IAAM,eAAe,CAAC,SAAsB;AAC1C,QAAM,SAA2C;AAAA,IAC/C,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,EACT;AAEA,SAAO,OAAO,IAAI,KAAK,OAAO;AAChC;AAOO,IAAM,OAAO,MAAM;AAAA,EACxB,CAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB;AAAA,IACA,oBAAoB;AAAA,IACpB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,cAAc;AAAA,IACd,GAAG;AAAA,EACL,MAA+B;AAC7B,UAAM,YAAY;AAClB,UAAM,KAAK,cAAc;AACzB,QAAI,QAAyB;AAC7B,UAAM,WAAW,OAAO,MAAM,iBAAiB;AAC/C,UAAM,WAAW,OAAO,MAAM,iBAAiB;AAC/C,QACE,aAAa,UACb,YACA,OAAO,aAAa,YACpB,SAAS,SAAS,UAClB;AACA,cAAQ,OAAO,UAAU,OAAO,KAAK,UAAU,GAAG,QAAQ,IAAI;AAAA,IAChE;AAEA,QAAI,cAAc,cAAc;AAIhC,QAAI,OAAO,OAAO,OAAO,gBAAgB,UAAU;AACjD,YAAM,qBAAqB,2BAA2B;AACtD,UAAI,kBAA0B;AAC9B,UAAI,iBAAyC,CAAC;AAC9C,UAAI,QAAQ;AACZ,aAAO,gBAAgB,SAAS,oBAAoB;AAClD,uBAAe;AAAA,UACb,oBAAC,UACE,0BAAgB,OAAO,GAAG,kBAAkB,KADpC,KAEX;AAAA,QACF;AACA,uBAAe,KAAK,oBAAC,UAAQ,KAAK,OAAS,CAAE;AAC7C,0BAAkB,gBAAgB,OAAO,kBAAkB;AAE3D,YAAI,QAAQ,GAAG;AACb,4BACE,gBAAgB,OAAO,GAAG,qBAAqB,CAAC,IAAI;AAAA,QACxD;AAAA,MACF;AACA,qBAAe,KAAK,oBAAC,UAAoB,6BAAV,EAAE,KAAwB,CAAO;AAChE,oBAAc;AAAA,IAChB;AACA,UAAM,cACJ,CAAC,eACD,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,QACE,SAAS,OAAK;AACZ,YAAE,eAAe;AACjB,YAAE,gBAAgB;AAClB,qBAAW,EAAE,aAAa;AAAA,QAC5B;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAEF,UAAM,IAAI,EAAE,OAAO,YAAY;AAC/B,WAAO,MAAM,cAAc,SAAS,GAAG;AAAA,MACrC,oBAAC,UACC;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,OAAO;AAAA,YACL;AAAA,YACA,SAAS,aAAa,SAAY,YAAY;AAAA,YAC9C,OAAO,aAAa,IAAI;AAAA,UAC1B;AAAA,UACC,GAAG;AAAA,UAEH;AAAA;AAAA,MACH,KAfQ,MAgBV;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -0,0 +1,49 @@
1
+ import {
2
+ Tooltip
3
+ } from "./chunk-3D63CPYB.js";
4
+ import {
5
+ getTranslations
6
+ } from "./chunk-DQGLZCIG.js";
7
+
8
+ // src/components/AddressContainer/label.tsx
9
+ import { Translation } from "react-i18next";
10
+ import { Bookmark, Hash } from "@zeit-ui/react-icons";
11
+ import ICON_ENS from "./logo-cns-7CXISC6I.svg";
12
+ import { jsx } from "react/jsx-runtime";
13
+ var getLabelInfo = (label, type) => {
14
+ const translations = getTranslations();
15
+ if (label) {
16
+ let trans = "";
17
+ let icon = null;
18
+ if (type === "tag") {
19
+ trans = translations.profile.tip.label;
20
+ icon = /* @__PURE__ */ jsx(Bookmark, { color: "var(--theme-color-gray2)", size: 16 });
21
+ } else if (type === "ens") {
22
+ trans = translations.ens.label;
23
+ icon = /* @__PURE__ */ jsx(
24
+ "img",
25
+ {
26
+ src: ICON_ENS,
27
+ className: "w-[16px] h-[16px] mb-[3px] mr-[2px]",
28
+ alt: ""
29
+ }
30
+ );
31
+ } else if (type === "nametag") {
32
+ trans = translations.nametag.label;
33
+ icon = /* @__PURE__ */ jsx(Hash, { color: "var(--theme-color-gray2)", size: 16 });
34
+ }
35
+ return {
36
+ label,
37
+ icon: /* @__PURE__ */ jsx("span", { className: "mr-[2px]", children: /* @__PURE__ */ jsx(Tooltip, { title: /* @__PURE__ */ jsx(Translation, { children: (t) => t(trans) }), children: icon }) })
38
+ };
39
+ }
40
+ return {
41
+ label: "",
42
+ icon: null
43
+ };
44
+ };
45
+
46
+ export {
47
+ getLabelInfo
48
+ };
49
+ //# sourceMappingURL=chunk-S335KQ5D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AddressContainer/label.tsx"],"sourcesContent":["import { Translation } from 'react-i18next';\nimport { Bookmark, Hash } from '@zeit-ui/react-icons';\nimport { Tooltip } from '../Tooltip';\nimport { getTranslations } from '../../store';\nimport ICON_ENS from '../../images/logo-cns.svg';\n\nexport const getLabelInfo = (label: string, type: string) => {\n const translations = getTranslations();\n if (label) {\n let trans: string = '';\n let icon: React.ReactNode = null;\n\n if (type === 'tag') {\n trans = translations.profile.tip.label;\n icon = <Bookmark color=\"var(--theme-color-gray2)\" size={16} />;\n } else if (type === 'ens') {\n trans = (translations as any).ens.label;\n icon = (\n <img\n src={ICON_ENS}\n className=\"w-[16px] h-[16px] mb-[3px] mr-[2px]\"\n alt=\"\"\n />\n );\n // nametag from official operational staff\n } else if (type === 'nametag') {\n trans = translations.nametag.label;\n icon = <Hash color=\"var(--theme-color-gray2)\" size={16} />;\n }\n\n return {\n label,\n icon: (\n <span className=\"mr-[2px]\">\n <Tooltip title={<Translation>{t => t(trans)}</Translation>}>\n {icon}\n </Tooltip>\n </span>\n ),\n };\n }\n\n return {\n label: '',\n icon: null,\n };\n};\n"],"mappings":";;;;;;;;AAAA,SAAS,mBAAmB;AAC5B,SAAS,UAAU,YAAY;AAG/B,OAAO,cAAc;AAUR;AARN,IAAM,eAAe,CAAC,OAAe,SAAiB;AAC3D,QAAM,eAAe,gBAAgB;AACrC,MAAI,OAAO;AACT,QAAI,QAAgB;AACpB,QAAI,OAAwB;AAE5B,QAAI,SAAS,OAAO;AAClB,cAAQ,aAAa,QAAQ,IAAI;AACjC,aAAO,oBAAC,YAAS,OAAM,4BAA2B,MAAM,IAAI;AAAA,IAC9D,WAAW,SAAS,OAAO;AACzB,cAAS,aAAqB,IAAI;AAClC,aACE;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,WAAU;AAAA,UACV,KAAI;AAAA;AAAA,MACN;AAAA,IAGJ,WAAW,SAAS,WAAW;AAC7B,cAAQ,aAAa,QAAQ;AAC7B,aAAO,oBAAC,QAAK,OAAM,4BAA2B,MAAM,IAAI;AAAA,IAC1D;AAEA,WAAO;AAAA,MACL;AAAA,MACA,MACE,oBAAC,UAAK,WAAU,YACd,8BAAC,WAAQ,OAAO,oBAAC,eAAa,iBAAK,EAAE,KAAK,GAAE,GACzC,gBACH,GACF;AAAA,IAEJ;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AACF;","names":[]}
@@ -0,0 +1,108 @@
1
+ import {
2
+ ContractAddress,
3
+ ContractCreatedAddress,
4
+ InvalidAddress,
5
+ MyAddress
6
+ } from "./chunk-Q5D5FHO7.js";
7
+ import {
8
+ RenderAddress
9
+ } from "./chunk-AYFDTOKM.js";
10
+ import {
11
+ convertCheckSum,
12
+ formatAddress,
13
+ isEvmAddress,
14
+ isZeroAddress
15
+ } from "./chunk-BVWWK2EL.js";
16
+ import {
17
+ getLabelInfo
18
+ } from "./chunk-T54ODLMI.js";
19
+ import {
20
+ getTranslations,
21
+ useGlobalData
22
+ } from "./chunk-DQGLZCIG.js";
23
+
24
+ // src/components/AddressContainer/EVMAddressContainer.tsx
25
+ import { memo } from "react";
26
+ import { withTranslation } from "react-i18next";
27
+ import _ from "lodash";
28
+ import { Fragment, jsx } from "react/jsx-runtime";
29
+ var parseProps = (props, globalData) => {
30
+ const { alias, t, showAddressLabel, showNametag, nametagInfo } = props;
31
+ const value = props.value || "";
32
+ const cfxAddress = formatAddress(value, "hex");
33
+ const translations = getTranslations();
34
+ let aliasLabel = alias;
35
+ if (!alias && isZeroAddress(cfxAddress)) {
36
+ aliasLabel = t(translations.general.zeroAddress);
37
+ }
38
+ let officalNametag = null;
39
+ let addressLabel = null;
40
+ if (cfxAddress && showAddressLabel) {
41
+ const addressLabels = globalData?.["CONFLUX_SCAN_ADDRESS_LABELS" /* addressLabel */];
42
+ const gAddressLabel = addressLabels?.[convertCheckSum(cfxAddress)] || addressLabels?.[cfxAddress.toLowerCase()];
43
+ if (gAddressLabel) {
44
+ const { label } = getLabelInfo(gAddressLabel, "tag");
45
+ addressLabel = label;
46
+ }
47
+ }
48
+ if (cfxAddress && showNametag) {
49
+ const nametags = nametagInfo?.[convertCheckSum(cfxAddress)] || nametagInfo?.[cfxAddress.toLowerCase()];
50
+ if (nametags) {
51
+ const nametag = nametags?.nametag ?? "";
52
+ const { label } = getLabelInfo(nametag, "nametag");
53
+ officalNametag = label;
54
+ }
55
+ }
56
+ return {
57
+ alias: aliasLabel,
58
+ nametag: officalNametag,
59
+ addressLabel,
60
+ cfxAddress
61
+ };
62
+ };
63
+ var EVMAddressContainer = withTranslation()(
64
+ memo((props) => {
65
+ const { globalData } = useGlobalData();
66
+ if (!props.value && !props.contractCreated) {
67
+ return /* @__PURE__ */ jsx(Fragment, { children: "--" });
68
+ }
69
+ const defaultProps = {
70
+ isFull: false,
71
+ isFullNameTag: false,
72
+ link: true,
73
+ isMe: false,
74
+ showIcon: true,
75
+ verify: false,
76
+ showAddressLabel: true,
77
+ showENSLabel: true,
78
+ showNametag: true
79
+ };
80
+ const mergeDefaultProps = _.assign({}, defaultProps, props);
81
+ const mergeParseProps = _.merge(
82
+ {},
83
+ mergeDefaultProps,
84
+ parseProps(mergeDefaultProps, globalData)
85
+ );
86
+ if (!mergeParseProps.value && mergeParseProps.contractCreated) {
87
+ return ContractCreatedAddress({
88
+ ...mergeParseProps,
89
+ outputType: "hex"
90
+ });
91
+ }
92
+ if (!isEvmAddress(mergeParseProps.value)) {
93
+ return InvalidAddress(mergeParseProps);
94
+ }
95
+ if (mergeParseProps.isContract) {
96
+ return ContractAddress(mergeParseProps);
97
+ }
98
+ if (mergeParseProps.isMe) {
99
+ return MyAddress(mergeParseProps);
100
+ }
101
+ return RenderAddress(mergeParseProps);
102
+ })
103
+ );
104
+
105
+ export {
106
+ EVMAddressContainer
107
+ };
108
+ //# sourceMappingURL=chunk-SN6AMUVZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AddressContainer/EVMAddressContainer.tsx"],"sourcesContent":["import { memo } from 'react';\nimport { WithTranslation, withTranslation } from 'react-i18next';\nimport _ from 'lodash';\nimport {\n formatAddress,\n isEvmAddress,\n isZeroAddress,\n convertCheckSum,\n} from '../../utils/address';\nimport { useGlobalData, getTranslations } from '../../store';\nimport { LOCALSTORAGE_KEYS_MAP } from '../../utils/constants';\nimport { getLabelInfo } from './label';\n\nimport { RenderAddress } from './addressView';\nimport {\n ContractCreatedAddress,\n InvalidAddress,\n ContractAddress,\n MyAddress,\n} from './addressSwitcher';\nimport { GlobalDataType } from 'src/store/types';\nimport { EVMAddressContainerProps } from './types';\n\nconst parseProps = (\n props: EVMAddressContainerProps & WithTranslation,\n globalData: GlobalDataType,\n) => {\n const { alias, t, showAddressLabel, showNametag, nametagInfo } = props;\n const value: string = props.value || '';\n const cfxAddress = formatAddress(value, 'hex');\n\n const translations = getTranslations();\n\n let aliasLabel = alias;\n if (!alias && isZeroAddress(cfxAddress)) {\n aliasLabel = t(translations.general.zeroAddress);\n }\n\n // official name tag\n let officalNametag: React.ReactNode = null;\n // private name tag\n let addressLabel: React.ReactNode = null;\n\n if (cfxAddress && showAddressLabel) {\n // global private name tag\n const addressLabels = globalData?.[LOCALSTORAGE_KEYS_MAP.addressLabel];\n const gAddressLabel =\n addressLabels?.[convertCheckSum(cfxAddress)] ||\n addressLabels?.[cfxAddress.toLowerCase()];\n\n if (gAddressLabel) {\n const { label } = getLabelInfo(gAddressLabel, 'tag');\n addressLabel = label;\n }\n }\n\n if (cfxAddress && showNametag) {\n const nametags =\n nametagInfo?.[convertCheckSum(cfxAddress)] ||\n nametagInfo?.[cfxAddress.toLowerCase()];\n\n if (nametags) {\n const nametag = nametags?.nametag ?? '';\n const { label } = getLabelInfo(nametag, 'nametag');\n officalNametag = label;\n }\n }\n\n return {\n alias: aliasLabel,\n nametag: officalNametag,\n addressLabel,\n cfxAddress,\n };\n};\n\nexport const EVMAddressContainer = withTranslation()(\n memo((props: EVMAddressContainerProps & WithTranslation) => {\n const { globalData } = useGlobalData();\n\n // If a txn receipt has no 'to' address or 'contractCreated', show -- for temp\n if (!props.value && !props.contractCreated) {\n return <>--</>;\n }\n\n const defaultProps = {\n isFull: false,\n isFullNameTag: false,\n link: true,\n isMe: false,\n showIcon: true,\n verify: false,\n showAddressLabel: true,\n showENSLabel: true,\n showNametag: true,\n };\n\n const mergeDefaultProps = _.assign({}, defaultProps, props);\n\n const mergeParseProps = _.merge(\n {},\n mergeDefaultProps,\n parseProps(mergeDefaultProps, globalData),\n );\n\n if (!mergeParseProps.value && mergeParseProps.contractCreated) {\n return ContractCreatedAddress({\n ...mergeParseProps,\n outputType: 'hex',\n });\n }\n\n if (!isEvmAddress(mergeParseProps.value)) {\n return InvalidAddress(mergeParseProps);\n }\n\n if (mergeParseProps.isContract) {\n return ContractAddress(mergeParseProps);\n }\n\n if (mergeParseProps.isMe) {\n return MyAddress(mergeParseProps);\n }\n\n return RenderAddress(mergeParseProps);\n }),\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY;AACrB,SAA0B,uBAAuB;AACjD,OAAO,OAAO;AAgFD;AA3Db,IAAM,aAAa,CACjB,OACA,eACG;AACH,QAAM,EAAE,OAAO,GAAG,kBAAkB,aAAa,YAAY,IAAI;AACjE,QAAM,QAAgB,MAAM,SAAS;AACrC,QAAM,aAAa,cAAc,OAAO,KAAK;AAE7C,QAAM,eAAe,gBAAgB;AAErC,MAAI,aAAa;AACjB,MAAI,CAAC,SAAS,cAAc,UAAU,GAAG;AACvC,iBAAa,EAAE,aAAa,QAAQ,WAAW;AAAA,EACjD;AAGA,MAAI,iBAAkC;AAEtC,MAAI,eAAgC;AAEpC,MAAI,cAAc,kBAAkB;AAElC,UAAM,gBAAgB,6DAA+C;AACrE,UAAM,gBACJ,gBAAgB,gBAAgB,UAAU,CAAC,KAC3C,gBAAgB,WAAW,YAAY,CAAC;AAE1C,QAAI,eAAe;AACjB,YAAM,EAAE,MAAM,IAAI,aAAa,eAAe,KAAK;AACnD,qBAAe;AAAA,IACjB;AAAA,EACF;AAEA,MAAI,cAAc,aAAa;AAC7B,UAAM,WACJ,cAAc,gBAAgB,UAAU,CAAC,KACzC,cAAc,WAAW,YAAY,CAAC;AAExC,QAAI,UAAU;AACZ,YAAM,UAAU,UAAU,WAAW;AACrC,YAAM,EAAE,MAAM,IAAI,aAAa,SAAS,SAAS;AACjD,uBAAiB;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;AAEO,IAAM,sBAAsB,gBAAgB;AAAA,EACjD,KAAK,CAAC,UAAsD;AAC1D,UAAM,EAAE,WAAW,IAAI,cAAc;AAGrC,QAAI,CAAC,MAAM,SAAS,CAAC,MAAM,iBAAiB;AAC1C,aAAO,gCAAE,gBAAE;AAAA,IACb;AAEA,UAAM,eAAe;AAAA,MACnB,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,aAAa;AAAA,IACf;AAEA,UAAM,oBAAoB,EAAE,OAAO,CAAC,GAAG,cAAc,KAAK;AAE1D,UAAM,kBAAkB,EAAE;AAAA,MACxB,CAAC;AAAA,MACD;AAAA,MACA,WAAW,mBAAmB,UAAU;AAAA,IAC1C;AAEA,QAAI,CAAC,gBAAgB,SAAS,gBAAgB,iBAAiB;AAC7D,aAAO,uBAAuB;AAAA,QAC5B,GAAG;AAAA,QACH,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAEA,QAAI,CAAC,aAAa,gBAAgB,KAAK,GAAG;AACxC,aAAO,eAAe,eAAe;AAAA,IACvC;AAEA,QAAI,gBAAgB,YAAY;AAC9B,aAAO,gBAAgB,eAAe;AAAA,IACxC;AAEA,QAAI,gBAAgB,MAAM;AACxB,aAAO,UAAU,eAAe;AAAA,IAClC;AAEA,WAAO,cAAc,eAAe;AAAA,EACtC,CAAC;AACH;","names":[]}