@cfxjs/sirius-next-common 0.1.38 → 0.1.39

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 (124) hide show
  1. package/dist/chunk-3RVRAMNW.js +69 -0
  2. package/dist/chunk-3RVRAMNW.js.map +1 -0
  3. package/dist/chunk-4HTI24KG.js +3629 -0
  4. package/dist/chunk-4HTI24KG.js.map +1 -0
  5. package/dist/chunk-6AGMKWAW.js +286 -0
  6. package/dist/chunk-6AGMKWAW.js.map +1 -0
  7. package/dist/chunk-6GBDCZIP.js +414 -0
  8. package/dist/chunk-6GBDCZIP.js.map +1 -0
  9. package/dist/chunk-73IFRWHE.js +130 -0
  10. package/dist/chunk-73IFRWHE.js.map +1 -0
  11. package/dist/chunk-AAQD5VX5.js +212 -0
  12. package/dist/chunk-AAQD5VX5.js.map +1 -0
  13. package/dist/chunk-AD46ITJC.js +416 -0
  14. package/dist/chunk-AD46ITJC.js.map +1 -0
  15. package/dist/chunk-AV2OU3PU.js +108 -0
  16. package/dist/chunk-AV2OU3PU.js.map +1 -0
  17. package/dist/chunk-B5XWZ3ZE.js +150 -0
  18. package/dist/chunk-B5XWZ3ZE.js.map +1 -0
  19. package/dist/chunk-CDYRVFSO.js +150 -0
  20. package/dist/chunk-CDYRVFSO.js.map +1 -0
  21. package/dist/chunk-EP4RVV4C.js +3629 -0
  22. package/dist/chunk-EP4RVV4C.js.map +1 -0
  23. package/dist/chunk-EVMUOMAM.js +412 -0
  24. package/dist/chunk-EVMUOMAM.js.map +1 -0
  25. package/dist/chunk-EYT54RGS.js +63 -0
  26. package/dist/chunk-EYT54RGS.js.map +1 -0
  27. package/dist/chunk-FMHO65DC.js +105 -0
  28. package/dist/chunk-FMHO65DC.js.map +1 -0
  29. package/dist/chunk-H6W3LPDS.js +2324 -0
  30. package/dist/chunk-H6W3LPDS.js.map +1 -0
  31. package/dist/chunk-HC2D4STF.js +69 -0
  32. package/dist/chunk-HC2D4STF.js.map +1 -0
  33. package/dist/chunk-IV4QQOMI.js +416 -0
  34. package/dist/chunk-IV4QQOMI.js.map +1 -0
  35. package/dist/chunk-IWECTQOD.js +212 -0
  36. package/dist/chunk-IWECTQOD.js.map +1 -0
  37. package/dist/chunk-JQUV4NMR.js +416 -0
  38. package/dist/chunk-JQUV4NMR.js.map +1 -0
  39. package/dist/chunk-KAGEJPGK.js +416 -0
  40. package/dist/chunk-KAGEJPGK.js.map +1 -0
  41. package/dist/chunk-KCPSCEXG.js +69 -0
  42. package/dist/chunk-KCPSCEXG.js.map +1 -0
  43. package/dist/chunk-KKR2JERD.js +284 -0
  44. package/dist/chunk-KKR2JERD.js.map +1 -0
  45. package/dist/chunk-LQXAMTBE.js +69 -0
  46. package/dist/chunk-LQXAMTBE.js.map +1 -0
  47. package/dist/chunk-M43SICPO.js +63 -0
  48. package/dist/chunk-M43SICPO.js.map +1 -0
  49. package/dist/chunk-M6MXSMYM.js +284 -0
  50. package/dist/chunk-M6MXSMYM.js.map +1 -0
  51. package/dist/chunk-MIAX5LP5.js +141 -0
  52. package/dist/chunk-MIAX5LP5.js.map +1 -0
  53. package/dist/chunk-N5TMLKGL.js +141 -0
  54. package/dist/chunk-N5TMLKGL.js.map +1 -0
  55. package/dist/chunk-NIYCXPXR.js +108 -0
  56. package/dist/chunk-NIYCXPXR.js.map +1 -0
  57. package/dist/chunk-O474QMUU.js +105 -0
  58. package/dist/chunk-O474QMUU.js.map +1 -0
  59. package/dist/chunk-OF33MONA.js +69 -0
  60. package/dist/chunk-OF33MONA.js.map +1 -0
  61. package/dist/chunk-PLU4IMEZ.js +130 -0
  62. package/dist/chunk-PLU4IMEZ.js.map +1 -0
  63. package/dist/chunk-RB2U3Y7F.js +49 -0
  64. package/dist/chunk-RB2U3Y7F.js.map +1 -0
  65. package/dist/chunk-RVVVAX7C.js +796 -0
  66. package/dist/chunk-RVVVAX7C.js.map +1 -0
  67. package/dist/chunk-TAJNIINB.js +69 -0
  68. package/dist/chunk-TAJNIINB.js.map +1 -0
  69. package/dist/chunk-VLDX5EPR.js +69 -0
  70. package/dist/chunk-VLDX5EPR.js.map +1 -0
  71. package/dist/chunk-VUULJBTQ.js +796 -0
  72. package/dist/chunk-VUULJBTQ.js.map +1 -0
  73. package/dist/chunk-VY6BUAPS.js +49 -0
  74. package/dist/chunk-VY6BUAPS.js.map +1 -0
  75. package/dist/chunk-XGOIDR7R.js +416 -0
  76. package/dist/chunk-XGOIDR7R.js.map +1 -0
  77. package/dist/chunk-XMBEB34D.js +69 -0
  78. package/dist/chunk-XMBEB34D.js.map +1 -0
  79. package/dist/chunk-XMWQQ4A6.js +414 -0
  80. package/dist/chunk-XMWQQ4A6.js.map +1 -0
  81. package/dist/chunk-Z6EYKGBH.js +286 -0
  82. package/dist/chunk-Z6EYKGBH.js.map +1 -0
  83. package/dist/chunk-ZKNMJZ5R.js +2324 -0
  84. package/dist/chunk-ZKNMJZ5R.js.map +1 -0
  85. package/dist/components/AddressContainer/CoreAddressContainer.js +10 -10
  86. package/dist/components/AddressContainer/EVMAddressContainer.js +9 -9
  87. package/dist/components/AddressContainer/addressSwitcher.js +7 -7
  88. package/dist/components/AddressContainer/addressView.js +6 -6
  89. package/dist/components/AddressContainer/label.js +4 -4
  90. package/dist/components/Age/index.js +4 -4
  91. package/dist/components/Charts/ChartOptions.js +2 -2
  92. package/dist/components/Charts/PreviewChartTemplate.js +6 -4
  93. package/dist/components/Charts/PreviewChartTemplate.js.map +1 -1
  94. package/dist/components/Charts/StockChartTemplate.js +7 -5
  95. package/dist/components/Charts/StockChartTemplate.js.map +1 -1
  96. package/dist/components/Charts/config.d.ts +5 -4
  97. package/dist/components/Charts/config.js +3 -1
  98. package/dist/components/CopyButton/index.js +3 -3
  99. package/dist/components/DownloadCSV/index.js +4 -4
  100. package/dist/components/GasPriceDropdown/index.js +2 -2
  101. package/dist/components/IncreasePercent/index.js +2 -2
  102. package/dist/components/InfoIconWithTooltip/index.js +3 -3
  103. package/dist/components/Modal/index.js +3 -3
  104. package/dist/components/NetworkIcon/index.js +2 -2
  105. package/dist/components/PhishingAddressContainer/index.js +4 -4
  106. package/dist/components/Price/index.js +3 -3
  107. package/dist/components/Radio/index.js +2 -2
  108. package/dist/components/Select/index.js +3 -3
  109. package/dist/components/Select/select.js +3 -3
  110. package/dist/components/Text/index.js +4 -4
  111. package/dist/components/Tooltip/index.js +3 -3
  112. package/dist/components/TransactionAction/coreTransactionAction.js +10 -10
  113. package/dist/components/TransactionAction/evmTransactionAction.js +9 -9
  114. package/dist/utils/address.d.ts +1 -1
  115. package/dist/utils/address.js +2 -2
  116. package/dist/utils/contractManagerTool.js +2 -2
  117. package/dist/utils/hooks/useChartQueryParams.d.ts +18 -0
  118. package/dist/utils/hooks/useChartQueryParams.js +31 -0
  119. package/dist/utils/hooks/useChartQueryParams.js.map +1 -0
  120. package/dist/utils/hooks/useENS.js +3 -3
  121. package/dist/utils/index.js +2 -2
  122. package/dist/utils/request.d.ts +1 -1
  123. package/dist/utils/request.js +1 -1
  124. package/package.json +3 -3
@@ -0,0 +1,108 @@
1
+ import {
2
+ ContractAddress,
3
+ ContractCreatedAddress,
4
+ InvalidAddress,
5
+ MyAddress
6
+ } from "./chunk-IWECTQOD.js";
7
+ import {
8
+ RenderAddress
9
+ } from "./chunk-PLU4IMEZ.js";
10
+ import {
11
+ convertCheckSum,
12
+ formatAddress,
13
+ isEvmAddress,
14
+ isZeroAddress
15
+ } from "./chunk-M6MXSMYM.js";
16
+ import {
17
+ getLabelInfo
18
+ } from "./chunk-VY6BUAPS.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-AV2OU3PU.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":[]}
@@ -0,0 +1,150 @@
1
+ import {
2
+ Spin
3
+ } from "./chunk-XCKMXAL2.js";
4
+ import {
5
+ cn
6
+ } from "./chunk-RVVVAX7C.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-B5XWZ3ZE.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,150 @@
1
+ import {
2
+ Spin
3
+ } from "./chunk-XCKMXAL2.js";
4
+ import {
5
+ cn
6
+ } from "./chunk-VUULJBTQ.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-CDYRVFSO.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":[]}