@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,212 @@
1
+ import {
2
+ RenderAddress
3
+ } from "./chunk-W5TV463S.js";
4
+ import {
5
+ formatAddress,
6
+ isInnerContractAddress
7
+ } from "./chunk-BVWWK2EL.js";
8
+ import {
9
+ Tooltip
10
+ } from "./chunk-GG35SV7M.js";
11
+ import {
12
+ coreCorrespondsToEspace,
13
+ formatString,
14
+ getNetwork
15
+ } from "./chunk-CAZ6T2TX.js";
16
+ import {
17
+ getEnvConfig,
18
+ getTranslations,
19
+ useGlobalData
20
+ } from "./chunk-DQGLZCIG.js";
21
+
22
+ // src/components/AddressContainer/addressSwitcher.tsx
23
+ import { AlertTriangle, File } from "@zeit-ui/react-icons";
24
+ import InternalContractIcon from "./internal-contract-icon-ZH2RG3CU.png";
25
+ import ContractIcon from "./contract-icon-P3W2HUAA.png";
26
+ import VerifiedIcon from "./verified-VJRHZNN7.png";
27
+ import isMeIcon from "./me-SIV36SR7.png";
28
+ import { isPosAddress } from "@cfx-kit/dapp-utils/dist/address";
29
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
30
+ var ContractCreatedAddress = (props) => {
31
+ const { contractCreated = "", outputType, t, isFull } = props;
32
+ const translations = getTranslations();
33
+ const contractAddress = formatAddress(contractCreated, outputType);
34
+ const customProps = {
35
+ content: t(translations.transaction.contractCreation),
36
+ alias: t(translations.transaction.contractCreation),
37
+ hrefAddress: contractAddress,
38
+ cfxAddress: contractAddress,
39
+ maxWidth: 160
40
+ };
41
+ const mergedProps = { ...props, ...customProps };
42
+ return RenderAddress({
43
+ ...mergedProps,
44
+ prefix: /* @__PURE__ */ jsx("div", { className: `mr-[2px] flex-shrink-0 ${isFull ? "icon" : ""}`, children: /* @__PURE__ */ jsx(Tooltip, { title: mergedProps.content, children: /* @__PURE__ */ jsx("div", { className: "relative w-[16px] h-[16px]", children: /* @__PURE__ */ jsx(
45
+ "img",
46
+ {
47
+ className: "w-[16px] h-[16px] align-bottom mb-[3px]",
48
+ src: ContractIcon,
49
+ alt: mergedProps.content
50
+ }
51
+ ) }) }) })
52
+ });
53
+ };
54
+ var CoreHexAddress = (props) => {
55
+ const { value, t, isFull, maxWidth } = props;
56
+ const { globalData } = useGlobalData();
57
+ const ENV_CONFIG = getEnvConfig();
58
+ const translations = getTranslations();
59
+ const hexAddress = formatAddress(value, "hex");
60
+ const network = getNetwork(
61
+ globalData?.networks,
62
+ coreCorrespondsToEspace(ENV_CONFIG.ENV_NETWORK_ID)
63
+ );
64
+ const url = `${window.location.protocol}${network.url}/address/${hexAddress}`;
65
+ return RenderAddress({
66
+ cfxAddress: hexAddress,
67
+ hoverValue: hexAddress,
68
+ link: url,
69
+ isFull,
70
+ maxWidth,
71
+ suffixSize: 0,
72
+ prefix: /* @__PURE__ */ jsx("div", { className: "mr-[2px] flex-shrink-0", children: /* @__PURE__ */ jsx(Tooltip, { title: t(translations.general.eSpaceAddress), children: /* @__PURE__ */ jsx(File, { size: 16, color: "#17B38A" }) }) })
73
+ });
74
+ };
75
+ var InvalidAddress = (props) => {
76
+ const {
77
+ value,
78
+ alias,
79
+ t,
80
+ isFull,
81
+ maxWidth,
82
+ isFullNameTag,
83
+ hideAliasPrefixInHover
84
+ } = props;
85
+ const translations = getTranslations();
86
+ const tip = t(translations.general.invalidAddress);
87
+ return RenderAddress({
88
+ cfxAddress: value,
89
+ alias,
90
+ hoverValue: `${tip}: ${value}`,
91
+ content: alias ? formatString(alias, "tag") : value,
92
+ link: false,
93
+ isFull,
94
+ isFullNameTag,
95
+ maxWidth,
96
+ style: { color: "#e00909" },
97
+ prefix: /* @__PURE__ */ jsx("div", { className: "mr-[2px] flex-shrink-0", children: /* @__PURE__ */ jsx(Tooltip, { title: tip, children: /* @__PURE__ */ jsx(AlertTriangle, { size: 16, color: "#e00909" }) }) }),
98
+ hideAliasPrefixInHover
99
+ });
100
+ };
101
+ var ContractAddress = (props) => {
102
+ const { showIcon, verify, t, cfxAddress, isFull } = props;
103
+ const translations = getTranslations();
104
+ const isInnerContract = cfxAddress && isInnerContractAddress(cfxAddress);
105
+ const typeText = t(
106
+ isInnerContract ? translations.general.internalContract : verify ? translations.general.verifiedContract : translations.general.unverifiedContract
107
+ );
108
+ return RenderAddress({
109
+ ...props,
110
+ prefix: showIcon ? /* @__PURE__ */ jsx("div", { className: `mr-[2px] flex-shrink-0 ${isFull ? "icon" : ""}`, children: /* @__PURE__ */ jsx(Tooltip, { title: typeText, children: /* @__PURE__ */ jsx("div", { className: "relative w-[16px] h-[16px]", children: isInnerContract ? /* @__PURE__ */ jsx(
111
+ "img",
112
+ {
113
+ className: "w-[16px] h-[16px] align-bottom mb-[5px]",
114
+ src: InternalContractIcon,
115
+ alt: typeText
116
+ }
117
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
118
+ /* @__PURE__ */ jsx(
119
+ "img",
120
+ {
121
+ className: "w-[16px] h-[16px] align-bottom mb-[5px]",
122
+ src: ContractIcon,
123
+ alt: typeText
124
+ }
125
+ ),
126
+ verify ? /* @__PURE__ */ jsx(
127
+ "img",
128
+ {
129
+ className: "w-[8px] h-[8px] absolute bottom-[-1px] right-[1px]",
130
+ src: VerifiedIcon,
131
+ alt: ""
132
+ }
133
+ ) : /* @__PURE__ */ jsx(Fragment, {})
134
+ ] }) }) }) }) : /* @__PURE__ */ jsx(Fragment, {})
135
+ });
136
+ };
137
+ var MyAddress = (props) => {
138
+ const { isFull } = props;
139
+ return RenderAddress({
140
+ ...props,
141
+ suffix: /* @__PURE__ */ jsx("div", { className: "mr-[2px] flex-shrink-0", children: /* @__PURE__ */ jsx(
142
+ "img",
143
+ {
144
+ className: "w-[38.5px] h-[16px] ml-[3px] align-bottom",
145
+ src: isMeIcon,
146
+ alt: "is me",
147
+ style: {
148
+ marginBottom: isFull ? "6px" : "4px"
149
+ }
150
+ }
151
+ ) })
152
+ });
153
+ };
154
+ var PosAddress = (props) => {
155
+ const {
156
+ alias,
157
+ isFull,
158
+ isFullNameTag,
159
+ maxWidth,
160
+ t,
161
+ link,
162
+ isMe,
163
+ hideAliasPrefixInHover
164
+ } = props;
165
+ const value = props.value;
166
+ if (!value) {
167
+ return /* @__PURE__ */ jsx(Fragment, { children: "--" });
168
+ }
169
+ if (isMe) {
170
+ return MyAddress(props);
171
+ }
172
+ const translations = getTranslations();
173
+ const content = alias ? formatString(alias, "tag") : formatString(value, "posAddress");
174
+ if (!isPosAddress(value)) {
175
+ const tip = t(translations.general.invalidPosAddress);
176
+ return RenderAddress({
177
+ cfxAddress: value,
178
+ alias,
179
+ hoverValue: `${tip}: ${value}`,
180
+ content,
181
+ link: false,
182
+ isFull,
183
+ isFullNameTag,
184
+ maxWidth,
185
+ style: { color: "#e00909" },
186
+ prefix: /* @__PURE__ */ jsx("div", { className: "mr-[2px] flex-shrink-0", children: /* @__PURE__ */ jsx(Tooltip, { title: tip, children: /* @__PURE__ */ jsx(AlertTriangle, { size: 16, color: "#e00909" }) }) }),
187
+ type: "pos",
188
+ hideAliasPrefixInHover
189
+ });
190
+ }
191
+ return RenderAddress({
192
+ cfxAddress: value,
193
+ alias,
194
+ link,
195
+ isFull,
196
+ isFullNameTag,
197
+ maxWidth,
198
+ type: "pos",
199
+ content,
200
+ hideAliasPrefixInHover
201
+ });
202
+ };
203
+
204
+ export {
205
+ ContractCreatedAddress,
206
+ CoreHexAddress,
207
+ InvalidAddress,
208
+ ContractAddress,
209
+ MyAddress,
210
+ PosAddress
211
+ };
212
+ //# sourceMappingURL=chunk-INIJGBG4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AddressContainer/addressSwitcher.tsx"],"sourcesContent":["import { WithTranslation } from 'react-i18next';\nimport { AlertTriangle, File } from '@zeit-ui/react-icons';\nimport InternalContractIcon from '../../images/internal-contract-icon.png';\nimport ContractIcon from '../../images/contract-icon.png';\nimport VerifiedIcon from '../../images/verified.png';\nimport isMeIcon from '../../images/me.png';\nimport { Tooltip } from '../Tooltip';\nimport { isPosAddress } from '@cfx-kit/dapp-utils/dist/address';\nimport { formatAddress, isInnerContractAddress } from '../../utils/address';\nimport { getTranslations, getEnvConfig, useGlobalData } from '../../store';\nimport { getNetwork, formatString, coreCorrespondsToEspace } from 'src/utils';\nimport { Props } from './types';\nimport { RenderAddress } from './addressView';\n\n// common\nexport const ContractCreatedAddress = (\n props: Props & WithTranslation & { outputType: 'hex' | 'base32' },\n) => {\n const { contractCreated = '', outputType, t, isFull } = props;\n\n const translations = getTranslations();\n\n const contractAddress = formatAddress(contractCreated, outputType);\n\n const customProps = {\n content: t(translations.transaction.contractCreation),\n alias: t(translations.transaction.contractCreation),\n hrefAddress: contractAddress,\n cfxAddress: contractAddress,\n maxWidth: 160,\n };\n\n const mergedProps = { ...props, ...customProps };\n return RenderAddress({\n ...mergedProps,\n prefix: (\n <div className={`mr-[2px] flex-shrink-0 ${isFull ? 'icon' : ''}`}>\n <Tooltip title={mergedProps.content}>\n <div className=\"relative w-[16px] h-[16px]\">\n <img\n className=\"w-[16px] h-[16px] align-bottom mb-[3px]\"\n src={ContractIcon}\n alt={mergedProps.content}\n />\n </div>\n </Tooltip>\n </div>\n ),\n });\n};\n\n// core\nexport const CoreHexAddress = (props: Props & WithTranslation) => {\n const { value, t, isFull, maxWidth } = props;\n const { globalData } = useGlobalData();\n\n const ENV_CONFIG = getEnvConfig();\n const translations = getTranslations();\n const hexAddress = formatAddress(value, 'hex');\n const network = getNetwork(\n globalData?.networks,\n coreCorrespondsToEspace(ENV_CONFIG.ENV_NETWORK_ID),\n );\n const url = `${window.location.protocol}${network.url}/address/${hexAddress}`;\n\n return RenderAddress({\n cfxAddress: hexAddress,\n hoverValue: hexAddress,\n link: url,\n isFull,\n maxWidth,\n suffixSize: 0,\n prefix: (\n <div className=\"mr-[2px] flex-shrink-0\">\n <Tooltip title={t((translations as any).general.eSpaceAddress)}>\n <File size={16} color=\"#17B38A\" />\n </Tooltip>\n </div>\n ),\n });\n};\n\n// common\nexport const InvalidAddress = (props: Props & WithTranslation) => {\n const {\n value,\n alias,\n t,\n isFull,\n maxWidth,\n isFullNameTag,\n hideAliasPrefixInHover,\n } = props;\n\n const translations = getTranslations();\n\n const tip = t(translations.general.invalidAddress);\n\n return RenderAddress({\n cfxAddress: value,\n alias,\n hoverValue: `${tip}: ${value}`,\n content: alias ? formatString(alias, 'tag') : value,\n link: false,\n isFull,\n isFullNameTag,\n maxWidth,\n style: { color: '#e00909' },\n prefix: (\n <div className=\"mr-[2px] flex-shrink-0\">\n <Tooltip title={tip}>\n <AlertTriangle size={16} color=\"#e00909\" />\n </Tooltip>\n </div>\n ),\n hideAliasPrefixInHover,\n });\n};\n\n// common\nexport const ContractAddress = (props: Props & WithTranslation) => {\n const { showIcon, verify, t, cfxAddress, isFull } = props;\n\n const translations = getTranslations();\n\n const isInnerContract = cfxAddress && isInnerContractAddress(cfxAddress);\n\n const typeText = t(\n isInnerContract\n ? translations.general.internalContract\n : verify\n ? translations.general.verifiedContract\n : translations.general.unverifiedContract,\n );\n\n return RenderAddress({\n ...props,\n prefix: showIcon ? (\n <div className={`mr-[2px] flex-shrink-0 ${isFull ? 'icon' : ''}`}>\n <Tooltip title={typeText}>\n <div className=\"relative w-[16px] h-[16px]\">\n {isInnerContract ? (\n <img\n className=\"w-[16px] h-[16px] align-bottom mb-[5px]\"\n src={InternalContractIcon}\n alt={typeText}\n />\n ) : (\n <>\n <img\n className=\"w-[16px] h-[16px] align-bottom mb-[5px]\"\n src={ContractIcon}\n alt={typeText}\n />\n {verify ? (\n <img\n className=\"w-[8px] h-[8px] absolute bottom-[-1px] right-[1px]\"\n src={VerifiedIcon}\n alt={''}\n />\n ) : (\n <></>\n )}\n </>\n )}\n </div>\n </Tooltip>\n </div>\n ) : (\n <></>\n ),\n });\n};\n\n// common\nexport const MyAddress = (props: Props & WithTranslation) => {\n const { isFull } = props;\n return RenderAddress({\n ...props,\n suffix: (\n <div className=\"mr-[2px] flex-shrink-0\">\n <img\n className=\"w-[38.5px] h-[16px] ml-[3px] align-bottom\"\n src={isMeIcon}\n alt=\"is me\"\n style={{\n marginBottom: isFull ? '6px' : '4px',\n }}\n />\n </div>\n ),\n });\n};\n\n// core\nexport const PosAddress = (props: Props & WithTranslation) => {\n const {\n alias,\n isFull,\n isFullNameTag,\n maxWidth,\n t,\n link,\n isMe,\n hideAliasPrefixInHover,\n } = props;\n const value = props.value;\n if (!value) {\n return <>--</>;\n }\n if (isMe) {\n return MyAddress(props);\n }\n const translations = getTranslations();\n const content = alias\n ? formatString(alias, 'tag')\n : formatString(value, 'posAddress');\n if (!isPosAddress(value)) {\n const tip = t(translations.general.invalidPosAddress);\n return RenderAddress({\n cfxAddress: value,\n alias,\n hoverValue: `${tip}: ${value}`,\n content,\n link: false,\n isFull,\n isFullNameTag,\n maxWidth,\n style: { color: '#e00909' },\n prefix: (\n <div className=\"mr-[2px] flex-shrink-0\">\n <Tooltip title={tip}>\n <AlertTriangle size={16} color=\"#e00909\" />\n </Tooltip>\n </div>\n ),\n type: 'pos',\n hideAliasPrefixInHover,\n });\n }\n\n return RenderAddress({\n cfxAddress: value,\n alias,\n link,\n isFull,\n isFullNameTag,\n maxWidth,\n type: 'pos',\n content,\n hideAliasPrefixInHover,\n });\n};\n"],"mappings":"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","names":[]}
@@ -0,0 +1,150 @@
1
+ import {
2
+ Spin
3
+ } from "./chunk-XCKMXAL2.js";
4
+ import {
5
+ cn
6
+ } from "./chunk-UGV7LSWR.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-ISMLXDGF.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":";;;;;;;;AAAA,SAAgB,WAAW,aAAa,eAAe;AACvD,OAAO,cAAc;AACrB,SAAS,SAAS;AAwChB,cAkBE,YAlBF;AALF,IAAM,WAAoC,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AACF,MACE,oBAAC,SAAI,WAAsB,SACxB,UACH;AAGF,IAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MACE;AAAA,EAAC;AAAA;AAAA,IACC,WAAW,GAAG,wCAAwC,kBAAkB;AAAA,IACxE,UAAU;AAAA,IACV,OAAO;AAAA,IAEP,+BAAC,QAAK,UAAU,SACb;AAAA,kBACC,oBAAC,KAAE,WAAU,kCAAiC,SAAS,SAAS;AAAA,MAElE,oBAAC,SAAI,WAAU,OAAO,UAAS;AAAA,OACjC;AAAA;AACF;AAGF,IAAM,mBAAmB,CACvB,WACA,SACA,WACG;AACH,YAAU,MAAM;AACd,QAAI,QAAQ;AACV,YAAM,gBAAgB,CAAC,UAAiB,QAAQ,KAAK;AAErD,eAAS,iBAAiB,WAAW,aAAa;AAClD,aAAO,MAAM;AACX,iBAAS,oBAAoB,WAAW,aAAa;AAAA,MACvD;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,SAAS,MAAM,CAAC;AACjC;AAEA,IAAM,QAA8B,CAAC;AAAA,EACnC;AAAA,EACA,aAAa;AAAA,EACb,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,SAAS,MAAM;AAAA,EAAC;AAAA,EAChB;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,WAAW;AAAA,EACX,UAAU;AACZ,MAAM;AACJ,YAAU,MAAM;AACd,QAAI,MAAM;AACR,eAAS;AACT,UAAI,eAAe;AACjB,iBAAS,KAAK,MAAM,WAAW;AAAA,MACjC;AAAA,IACF,OAAO;AACL,UAAI,eAAe;AACjB,iBAAS,KAAK,MAAM,WAAW;AAAA,MACjC;AAAA,IACF;AACA,WAAO,MAAM;AACX,UAAI,eAAe;AACjB,iBAAS,KAAK,MAAM,WAAW;AAAA,MACjC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,MAAM,QAAQ,aAAa,CAAC;AAEhC,QAAM,gBAAgB;AAAA,IACpB,CAAC,UAAyB;AACxB,UAAI,MAAM,QAAQ,YAAY,cAAc,SAAS;AACnD,kBAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,CAAC,YAAY,OAAO;AAAA,EACtB;AAEA,QAAM,qBAAqB,YAAY,MAAM;AAC3C,QAAI,WAAW,cAAc;AAC3B,gBAAU;AAAA,IACZ;AAAA,EACF,GAAG,CAAC,SAAS,YAAY,CAAC;AAE1B,QAAM,sBAAsB;AAAA,IAC1B,CAAC,UAAwD;AACvD,UAAI,gBAAgB,MAAM,WAAW,MAAM,iBAAiB,SAAS;AACnE,kBAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,CAAC,cAAc,OAAO;AAAA,EACxB;AAEA,QAAM,cAAmC;AAAA,IACvC,OAAO;AAAA,MACL,OAAO,OAAO,UAAU,WAAW,QAAQ,GAAG;AAAA,MAC9C,QAAQ,WAAW,SAAS;AAAA,IAC9B;AAAA,IACA,CAAC,OAAO,QAAQ;AAAA,EAClB;AAEA;AAAA,IACE;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACV;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACV;AAEA,MAAI,CAAC;AAAM,WAAO;AAElB,SAAO,SAAS;AAAA,IACd;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX;AACF;","names":[]}
@@ -0,0 +1,150 @@
1
+ import {
2
+ Spin
3
+ } from "./chunk-XCKMXAL2.js";
4
+ import {
5
+ cn
6
+ } from "./chunk-7WYVSPSJ.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-JEDBRDNZ.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":[]}