react-public-components 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ActivityLog/index.cjs +2 -2
- package/dist/ActivityLog/index.js +1 -1
- package/dist/AudioPlayer/index.cjs +3 -3
- package/dist/AudioPlayer/index.js +2 -2
- package/dist/CascadeDrawer/index.cjs +2 -2
- package/dist/CascadeDrawer/index.d.ts +1 -1
- package/dist/CascadeDrawer/index.js +1 -1
- package/dist/CodeSnippet/index.cjs +2 -2
- package/dist/CodeSnippet/index.css +79 -11
- package/dist/CodeSnippet/index.css.map +1 -1
- package/dist/CodeSnippet/index.d.ts +10 -1
- package/dist/CodeSnippet/index.js +1 -1
- package/dist/CollapseBox/index.cjs +3 -3
- package/dist/CollapseBox/index.js +2 -2
- package/dist/ColorPicker/index.cjs +5 -5
- package/dist/ColorPicker/index.js +2 -2
- package/dist/ContextMenu/index.cjs +3 -3
- package/dist/ContextMenu/index.js +2 -2
- package/dist/CopyButton/index.cjs +3 -3
- package/dist/CopyButton/index.js +2 -2
- package/dist/CountUp/index.cjs +2 -2
- package/dist/CountUp/index.js +1 -1
- package/dist/CronPicker/index.cjs +4 -4
- package/dist/CronPicker/index.js +3 -3
- package/dist/DebounceSelect/index.cjs +3 -3
- package/dist/DebounceSelect/index.d.ts +1 -1
- package/dist/DebounceSelect/index.js +2 -2
- package/dist/DiffViewer/index.cjs +2 -2
- package/dist/DiffViewer/index.js +1 -1
- package/dist/DisabledBox/index.cjs +3 -3
- package/dist/DisabledBox/index.d.ts +11 -3
- package/dist/DisabledBox/index.js +2 -2
- package/dist/EnvBadge/index.cjs +2 -2
- package/dist/EnvBadge/index.js +1 -1
- package/dist/FilePreviewer/index.cjs +4 -4
- package/dist/FilePreviewer/index.js +2 -2
- package/dist/Fullscreen/index.cjs +3 -3
- package/dist/Fullscreen/index.js +2 -2
- package/dist/GuidedTour/index.cjs +3 -3
- package/dist/GuidedTour/index.js +2 -2
- package/dist/ImageCropper/index.cjs +3 -3
- package/dist/ImageCropper/index.js +2 -2
- package/dist/InfiniteScrollList/index.cjs +3 -3
- package/dist/InfiniteScrollList/index.js +2 -2
- package/dist/JsonDiffViewer/index.cjs +2 -2
- package/dist/JsonDiffViewer/index.js +1 -1
- package/dist/JsonEditor/index.cjs +4 -4
- package/dist/JsonEditor/index.d.ts +1 -1
- package/dist/JsonEditor/index.js +3 -3
- package/dist/JsonTree/index.cjs +2 -2
- package/dist/JsonTree/index.d.ts +1 -1
- package/dist/JsonTree/index.js +1 -1
- package/dist/KanbanBoard/index.cjs +2 -2
- package/dist/KanbanBoard/index.js +1 -1
- package/dist/KeyValEditor/index.cjs +3 -3
- package/dist/KeyValEditor/index.js +2 -2
- package/dist/Marquee/index.cjs +2 -2
- package/dist/Marquee/index.js +1 -1
- package/dist/MetricCard/index.cjs +3 -3
- package/dist/MetricCard/index.js +2 -2
- package/dist/NumericRangeInput/index.cjs +2 -2
- package/dist/NumericRangeInput/index.js +1 -1
- package/dist/PasswordStrength/index.cjs +4 -4
- package/dist/PasswordStrength/index.js +2 -2
- package/dist/PdfViewer/index.cjs +3 -3
- package/dist/PdfViewer/index.js +2 -2
- package/dist/QrCodeCard/index.cjs +3 -3
- package/dist/QrCodeCard/index.js +2 -2
- package/dist/QuickDateRange/index.cjs +2 -2
- package/dist/QuickDateRange/index.js +1 -1
- package/dist/ScrollTracker/index.cjs +4 -4
- package/dist/ScrollTracker/index.js +1 -1
- package/dist/SegmentedProgress/index.cjs +2 -2
- package/dist/SegmentedProgress/index.js +1 -1
- package/dist/SensitiveMask/index.cjs +5 -5
- package/dist/SensitiveMask/index.js +3 -3
- package/dist/Splitter/index.cjs +3 -3
- package/dist/Splitter/index.js +2 -2
- package/dist/StatusTimeline/index.cjs +2 -2
- package/dist/StatusTimeline/index.js +1 -1
- package/dist/TagInput/index.cjs +3 -3
- package/dist/TagInput/index.js +2 -2
- package/dist/TextEllipsis/index.cjs +4 -4
- package/dist/TextEllipsis/index.js +3 -3
- package/dist/TreeFilterPanel/index.cjs +2 -2
- package/dist/TreeFilterPanel/index.js +1 -1
- package/dist/TreeTransfer/index.cjs +3 -3
- package/dist/TreeTransfer/index.js +2 -2
- package/dist/TrendIndicator/index.cjs +2 -2
- package/dist/TrendIndicator/index.js +1 -1
- package/dist/VideoPlayer/index.cjs +3 -3
- package/dist/VideoPlayer/index.js +2 -2
- package/dist/VirtualList/index.cjs +2 -2
- package/dist/VirtualList/index.js +1 -1
- package/dist/Watermark/index.cjs +2 -2
- package/dist/Watermark/index.js +1 -1
- package/dist/{chunk-FRGH3Q75.cjs → chunk-2DIU347W.cjs} +4 -4
- package/dist/{chunk-FRGH3Q75.cjs.map → chunk-2DIU347W.cjs.map} +1 -1
- package/dist/{chunk-DATPWEQK.cjs → chunk-2MDYHFLH.cjs} +4 -4
- package/dist/{chunk-DATPWEQK.cjs.map → chunk-2MDYHFLH.cjs.map} +1 -1
- package/dist/{chunk-I3HBI52O.js → chunk-2O2A5XYF.js} +3 -11
- package/dist/chunk-2O2A5XYF.js.map +1 -0
- package/dist/{chunk-KUW2ZR2A.cjs → chunk-2UCTE6YN.cjs} +65 -72
- package/dist/chunk-2UCTE6YN.cjs.map +1 -0
- package/dist/{chunk-VTANPKPT.js → chunk-3R3NOO4K.js} +2 -2
- package/dist/chunk-3R3NOO4K.js.map +1 -0
- package/dist/{chunk-AVSFSS7S.cjs → chunk-3UNZXPOT.cjs} +63 -61
- package/dist/chunk-3UNZXPOT.cjs.map +1 -0
- package/dist/{chunk-QI7XQDFZ.cjs → chunk-4BDO5TJH.cjs} +77 -85
- package/dist/chunk-4BDO5TJH.cjs.map +1 -0
- package/dist/{chunk-7JLQOQJZ.cjs → chunk-4OXVTRYV.cjs} +7 -7
- package/dist/{chunk-7JLQOQJZ.cjs.map → chunk-4OXVTRYV.cjs.map} +1 -1
- package/dist/{chunk-UT5UXO44.js → chunk-56TD4LDC.js} +3 -3
- package/dist/chunk-56TD4LDC.js.map +1 -0
- package/dist/{chunk-PBPGBVQQ.cjs → chunk-5E36FGRP.cjs} +2 -2
- package/dist/chunk-5E36FGRP.cjs.map +1 -0
- package/dist/{chunk-PVKBGP6Q.js → chunk-5GLC2HU6.js} +2 -2
- package/dist/{chunk-PVKBGP6Q.js.map → chunk-5GLC2HU6.js.map} +1 -1
- package/dist/{chunk-QKSCFVN2.js → chunk-5HIRDMZH.js} +2 -2
- package/dist/chunk-5HIRDMZH.js.map +1 -0
- package/dist/{chunk-7AKHSOSZ.js → chunk-5R2YXBXM.js} +3 -11
- package/dist/chunk-5R2YXBXM.js.map +1 -0
- package/dist/{chunk-F42Z33L7.cjs → chunk-5V4UAS6I.cjs} +2 -2
- package/dist/chunk-5V4UAS6I.cjs.map +1 -0
- package/dist/{chunk-FWRVCH7T.js → chunk-5VSEUDVY.js} +14 -6
- package/dist/chunk-5VSEUDVY.js.map +1 -0
- package/dist/{chunk-VPHHGQWP.js → chunk-64LBDDZU.js} +3 -3
- package/dist/{chunk-VPHHGQWP.js.map → chunk-64LBDDZU.js.map} +1 -1
- package/dist/{chunk-DNRZCHZG.js → chunk-6FVAQECF.js} +4 -11
- package/dist/chunk-6FVAQECF.js.map +1 -0
- package/dist/{chunk-5G3XVLJF.js → chunk-6IXVUD2M.js} +3 -3
- package/dist/{chunk-5G3XVLJF.js.map → chunk-6IXVUD2M.js.map} +1 -1
- package/dist/{chunk-HTA5EG6X.cjs → chunk-6UKUAYN3.cjs} +5 -5
- package/dist/{chunk-HTA5EG6X.cjs.map → chunk-6UKUAYN3.cjs.map} +1 -1
- package/dist/{chunk-WWL4VEPH.js → chunk-6UTLBY6Y.js} +2 -2
- package/dist/chunk-6UTLBY6Y.js.map +1 -0
- package/dist/{chunk-4MRZVLM6.cjs → chunk-7SIUSULP.cjs} +2 -2
- package/dist/{chunk-4MRZVLM6.cjs.map → chunk-7SIUSULP.cjs.map} +1 -1
- package/dist/{chunk-KBBLTGIU.js → chunk-AFR7V4A4.js} +13 -5
- package/dist/chunk-AFR7V4A4.js.map +1 -0
- package/dist/{chunk-G564WB32.cjs → chunk-AMCCRVHG.cjs} +2 -2
- package/dist/chunk-AMCCRVHG.cjs.map +1 -0
- package/dist/{chunk-PIIJVF5D.cjs → chunk-B7NN6SZD.cjs} +5 -5
- package/dist/chunk-B7NN6SZD.cjs.map +1 -0
- package/dist/{chunk-OYRX4AY6.js → chunk-BFQV5MYD.js} +2 -2
- package/dist/chunk-BFQV5MYD.js.map +1 -0
- package/dist/{chunk-AXHJC7FV.js → chunk-BRHXKRG6.js} +3 -11
- package/dist/chunk-BRHXKRG6.js.map +1 -0
- package/dist/{chunk-IECISUOZ.js → chunk-BZXMWKD2.js} +61 -59
- package/dist/chunk-BZXMWKD2.js.map +1 -0
- package/dist/{chunk-BXFP7EAW.cjs → chunk-CPQLXDBR.cjs} +2 -2
- package/dist/{chunk-BXFP7EAW.cjs.map → chunk-CPQLXDBR.cjs.map} +1 -1
- package/dist/{chunk-62NPVN7T.js → chunk-CT66HLZ5.js} +3 -3
- package/dist/{chunk-62NPVN7T.js.map → chunk-CT66HLZ5.js.map} +1 -1
- package/dist/{chunk-XMBTKO5I.cjs → chunk-DJQEBDEP.cjs} +3 -11
- package/dist/chunk-DJQEBDEP.cjs.map +1 -0
- package/dist/{chunk-LBEGRYTP.js → chunk-EGZSSZBX.js} +77 -85
- package/dist/chunk-EGZSSZBX.js.map +1 -0
- package/dist/{chunk-YJESCN4Y.cjs → chunk-EOGYWPX7.cjs} +14 -6
- package/dist/chunk-EOGYWPX7.cjs.map +1 -0
- package/dist/{chunk-5GCEQDBM.cjs → chunk-EPYD35KB.cjs} +2 -2
- package/dist/chunk-EPYD35KB.cjs.map +1 -0
- package/dist/{chunk-ZSK74QFN.cjs → chunk-EUOBMHFF.cjs} +3 -7
- package/dist/chunk-EUOBMHFF.cjs.map +1 -0
- package/dist/{chunk-4IBF4R3H.cjs → chunk-GMZSBGSL.cjs} +2 -2
- package/dist/{chunk-4IBF4R3H.cjs.map → chunk-GMZSBGSL.cjs.map} +1 -1
- package/dist/{chunk-L7ULSFW6.cjs → chunk-GV2RRQ2S.cjs} +18 -8
- package/dist/chunk-GV2RRQ2S.cjs.map +1 -0
- package/dist/{chunk-YPVRTMX6.js → chunk-HFPWBZID.js} +4 -6
- package/dist/chunk-HFPWBZID.js.map +1 -0
- package/dist/{chunk-HQ65GEM7.js → chunk-HUXPCMNP.js} +3 -3
- package/dist/{chunk-HQ65GEM7.js.map → chunk-HUXPCMNP.js.map} +1 -1
- package/dist/{chunk-PMNTOEXC.js → chunk-HZERTFL6.js} +2 -2
- package/dist/chunk-HZERTFL6.js.map +1 -0
- package/dist/{chunk-DKTB6PKI.js → chunk-IBI6AT5Z.js} +3 -10
- package/dist/chunk-IBI6AT5Z.js.map +1 -0
- package/dist/{chunk-2ORGQ2IY.js → chunk-IBOCJ2ZS.js} +4 -10
- package/dist/chunk-IBOCJ2ZS.js.map +1 -0
- package/dist/{chunk-4VGH44DT.js → chunk-IBYFOFSS.js} +14 -4
- package/dist/chunk-IBYFOFSS.js.map +1 -0
- package/dist/{chunk-TGSKTHTV.js → chunk-ISUXPTLV.js} +28 -18
- package/dist/chunk-ISUXPTLV.js.map +1 -0
- package/dist/{chunk-5WHBZH44.cjs → chunk-JAW7Q2YC.cjs} +5 -5
- package/dist/chunk-JAW7Q2YC.cjs.map +1 -0
- package/dist/{chunk-XB3BT6BU.js → chunk-JECYRODB.js} +3 -3
- package/dist/{chunk-XB3BT6BU.js.map → chunk-JECYRODB.js.map} +1 -1
- package/dist/{chunk-4DUMEO5E.cjs → chunk-JEDW76LI.cjs} +5 -5
- package/dist/chunk-JEDW76LI.cjs.map +1 -0
- package/dist/{chunk-W6BUNUQM.cjs → chunk-KGZNVN7P.cjs} +3 -10
- package/dist/chunk-KGZNVN7P.cjs.map +1 -0
- package/dist/{chunk-4YPT2HUD.cjs → chunk-KXZM322K.cjs} +16 -7
- package/dist/chunk-KXZM322K.cjs.map +1 -0
- package/dist/{chunk-R7CRWOHG.js → chunk-L7X3RVEY.js} +2 -2
- package/dist/{chunk-R7CRWOHG.js.map → chunk-L7X3RVEY.js.map} +1 -1
- package/dist/{chunk-XO6PBAAM.cjs → chunk-LFXMUCEO.cjs} +2 -2
- package/dist/chunk-LFXMUCEO.cjs.map +1 -0
- package/dist/{chunk-AIIXJB34.js → chunk-LLWK5VKA.js} +3 -3
- package/dist/{chunk-AIIXJB34.js.map → chunk-LLWK5VKA.js.map} +1 -1
- package/dist/{chunk-Q4QF6UYX.cjs → chunk-MBOWSS4B.cjs} +28 -18
- package/dist/chunk-MBOWSS4B.cjs.map +1 -0
- package/dist/{chunk-5MQCVYVD.js → chunk-MC3NERDH.js} +16 -6
- package/dist/chunk-MC3NERDH.js.map +1 -0
- package/dist/{chunk-7JRGQL63.js → chunk-MGUNFP6P.js} +13 -4
- package/dist/chunk-MGUNFP6P.js.map +1 -0
- package/dist/{chunk-N7IQ6LYD.cjs → chunk-MGYDOC76.cjs} +15 -5
- package/dist/chunk-MGYDOC76.cjs.map +1 -0
- package/dist/{chunk-WBN5SAY5.js → chunk-MLYM5LAX.js} +2 -2
- package/dist/{chunk-WBN5SAY5.js.map → chunk-MLYM5LAX.js.map} +1 -1
- package/dist/{chunk-4GQ3X7MG.cjs → chunk-MNY5P5EG.cjs} +18 -27
- package/dist/chunk-MNY5P5EG.cjs.map +1 -0
- package/dist/{chunk-RTAQSOVE.cjs → chunk-MY4M7HVW.cjs} +5 -5
- package/dist/{chunk-RTAQSOVE.cjs.map → chunk-MY4M7HVW.cjs.map} +1 -1
- package/dist/{chunk-EIFN6XMU.cjs → chunk-NJIYP6SC.cjs} +11 -5
- package/dist/chunk-NJIYP6SC.cjs.map +1 -0
- package/dist/{chunk-XYJMP23P.cjs → chunk-NUTVJGVT.cjs} +4 -10
- package/dist/chunk-NUTVJGVT.cjs.map +1 -0
- package/dist/{chunk-X7EE5DXL.js → chunk-O2YTJPG4.js} +2 -2
- package/dist/{chunk-X7EE5DXL.js.map → chunk-O2YTJPG4.js.map} +1 -1
- package/dist/{chunk-OJEZ3TKT.js → chunk-OBK6XTUY.js} +2 -2
- package/dist/chunk-OBK6XTUY.js.map +1 -0
- package/dist/{chunk-DFHFXKR5.cjs → chunk-OCN7L2ID.cjs} +5 -12
- package/dist/chunk-OCN7L2ID.cjs.map +1 -0
- package/dist/{chunk-6OKTK3AQ.cjs → chunk-ODNGFJVN.cjs} +3 -11
- package/dist/chunk-ODNGFJVN.cjs.map +1 -0
- package/dist/{chunk-IUR7SPDA.js → chunk-OKCQZO5E.js} +85 -92
- package/dist/chunk-OKCQZO5E.js.map +1 -0
- package/dist/{chunk-GZCNFM6C.js → chunk-PJB7ADK6.js} +8 -17
- package/dist/chunk-PJB7ADK6.js.map +1 -0
- package/dist/{chunk-ZAHKA2V2.js → chunk-PUJJHD22.js} +3 -3
- package/dist/chunk-PUJJHD22.js.map +1 -0
- package/dist/{chunk-U2TTRBES.js → chunk-PUTAVQJZ.js} +3 -3
- package/dist/{chunk-U2TTRBES.js.map → chunk-PUTAVQJZ.js.map} +1 -1
- package/dist/{chunk-NMYXVZQP.cjs → chunk-QNSEJGF6.cjs} +2 -2
- package/dist/chunk-QNSEJGF6.cjs.map +1 -0
- package/dist/{chunk-H5VPBP7U.js → chunk-QZZGBUW4.js} +10 -4
- package/dist/chunk-QZZGBUW4.js.map +1 -0
- package/dist/{chunk-2ARM7X7A.js → chunk-RAF7I4A5.js} +2 -2
- package/dist/chunk-RAF7I4A5.js.map +1 -0
- package/dist/{chunk-SMVAHIBN.cjs → chunk-UCG7ZVK5.cjs} +2 -2
- package/dist/chunk-UCG7ZVK5.cjs.map +1 -0
- package/dist/{chunk-ELI3LL3K.cjs → chunk-V4O325BX.cjs} +14 -6
- package/dist/chunk-V4O325BX.cjs.map +1 -0
- package/dist/{chunk-Z5LFRNNJ.js → chunk-V7IUSCQS.js} +3 -3
- package/dist/{chunk-Z5LFRNNJ.js.map → chunk-V7IUSCQS.js.map} +1 -1
- package/dist/{chunk-AJIIY2QT.cjs → chunk-VF5P7XMC.cjs} +2 -2
- package/dist/chunk-VF5P7XMC.cjs.map +1 -0
- package/dist/{chunk-K5FWY6HB.cjs → chunk-VS2YVJOB.cjs} +5 -5
- package/dist/{chunk-K5FWY6HB.cjs.map → chunk-VS2YVJOB.cjs.map} +1 -1
- package/dist/{chunk-ZGWBLJ6U.cjs → chunk-WDHU3BSM.cjs} +2 -2
- package/dist/{chunk-ZGWBLJ6U.cjs.map → chunk-WDHU3BSM.cjs.map} +1 -1
- package/dist/{chunk-NCNDJTOK.js → chunk-WEGDIRDB.js} +2 -2
- package/dist/chunk-WEGDIRDB.js.map +1 -0
- package/dist/{chunk-NFC2C2TD.js → chunk-WEOMKZC6.js} +65 -72
- package/dist/chunk-WEOMKZC6.js.map +1 -0
- package/dist/{chunk-EJNMH7ND.js → chunk-WN557PFJ.js} +2 -2
- package/dist/chunk-WN557PFJ.js.map +1 -0
- package/dist/{chunk-FBOTWA6O.cjs → chunk-WWXBH57R.cjs} +5 -7
- package/dist/chunk-WWXBH57R.cjs.map +1 -0
- package/dist/{chunk-ZQBEQK2I.cjs → chunk-WZRUBHS3.cjs} +5 -5
- package/dist/{chunk-ZQBEQK2I.cjs.map → chunk-WZRUBHS3.cjs.map} +1 -1
- package/dist/{chunk-X4MEHYWV.js → chunk-XOMV26WS.js} +3 -3
- package/dist/chunk-XOMV26WS.js.map +1 -0
- package/dist/{chunk-5NI6HK5V.js → chunk-XWXFENGT.js} +3 -3
- package/dist/{chunk-5NI6HK5V.js.map → chunk-XWXFENGT.js.map} +1 -1
- package/dist/{chunk-JD4TEUIV.js → chunk-YFHKH6HL.js} +3 -7
- package/dist/chunk-YFHKH6HL.js.map +1 -0
- package/dist/{chunk-GCMI5JGQ.cjs → chunk-ZKM664KC.cjs} +2 -2
- package/dist/chunk-ZKM664KC.cjs.map +1 -0
- package/dist/{chunk-C5B5Y4S2.cjs → chunk-ZLWY7QS2.cjs} +4 -4
- package/dist/{chunk-C5B5Y4S2.cjs.map → chunk-ZLWY7QS2.cjs.map} +1 -1
- package/dist/{chunk-R77VVMV5.cjs → chunk-ZNFW6L3E.cjs} +87 -94
- package/dist/chunk-ZNFW6L3E.cjs.map +1 -0
- package/dist/{chunk-RWZSTG6Q.cjs → chunk-ZUW3XLZQ.cjs} +4 -4
- package/dist/{chunk-RWZSTG6Q.cjs.map → chunk-ZUW3XLZQ.cjs.map} +1 -1
- package/dist/{chunk-24ND5WB7.cjs → chunk-ZVSN7ADO.cjs} +3 -11
- package/dist/chunk-ZVSN7ADO.cjs.map +1 -0
- package/dist/index.cjs +95 -95
- package/dist/index.css +79 -11
- package/dist/index.css.map +1 -1
- package/dist/index.js +45 -45
- package/dist/src/icons.d.ts +11 -11
- package/dist/src/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/chunk-24ND5WB7.cjs.map +0 -1
- package/dist/chunk-2ARM7X7A.js.map +0 -1
- package/dist/chunk-2ORGQ2IY.js.map +0 -1
- package/dist/chunk-4DUMEO5E.cjs.map +0 -1
- package/dist/chunk-4GQ3X7MG.cjs.map +0 -1
- package/dist/chunk-4VGH44DT.js.map +0 -1
- package/dist/chunk-4YPT2HUD.cjs.map +0 -1
- package/dist/chunk-5GCEQDBM.cjs.map +0 -1
- package/dist/chunk-5MQCVYVD.js.map +0 -1
- package/dist/chunk-5WHBZH44.cjs.map +0 -1
- package/dist/chunk-6OKTK3AQ.cjs.map +0 -1
- package/dist/chunk-7AKHSOSZ.js.map +0 -1
- package/dist/chunk-7JRGQL63.js.map +0 -1
- package/dist/chunk-AJIIY2QT.cjs.map +0 -1
- package/dist/chunk-AVSFSS7S.cjs.map +0 -1
- package/dist/chunk-AXHJC7FV.js.map +0 -1
- package/dist/chunk-DFHFXKR5.cjs.map +0 -1
- package/dist/chunk-DKTB6PKI.js.map +0 -1
- package/dist/chunk-DNRZCHZG.js.map +0 -1
- package/dist/chunk-EIFN6XMU.cjs.map +0 -1
- package/dist/chunk-EJNMH7ND.js.map +0 -1
- package/dist/chunk-ELI3LL3K.cjs.map +0 -1
- package/dist/chunk-F42Z33L7.cjs.map +0 -1
- package/dist/chunk-FBOTWA6O.cjs.map +0 -1
- package/dist/chunk-FWRVCH7T.js.map +0 -1
- package/dist/chunk-G564WB32.cjs.map +0 -1
- package/dist/chunk-GCMI5JGQ.cjs.map +0 -1
- package/dist/chunk-GZCNFM6C.js.map +0 -1
- package/dist/chunk-H5VPBP7U.js.map +0 -1
- package/dist/chunk-I3HBI52O.js.map +0 -1
- package/dist/chunk-IECISUOZ.js.map +0 -1
- package/dist/chunk-IUR7SPDA.js.map +0 -1
- package/dist/chunk-JD4TEUIV.js.map +0 -1
- package/dist/chunk-KBBLTGIU.js.map +0 -1
- package/dist/chunk-KUW2ZR2A.cjs.map +0 -1
- package/dist/chunk-L7ULSFW6.cjs.map +0 -1
- package/dist/chunk-LBEGRYTP.js.map +0 -1
- package/dist/chunk-N7IQ6LYD.cjs.map +0 -1
- package/dist/chunk-NCNDJTOK.js.map +0 -1
- package/dist/chunk-NFC2C2TD.js.map +0 -1
- package/dist/chunk-NMYXVZQP.cjs.map +0 -1
- package/dist/chunk-OJEZ3TKT.js.map +0 -1
- package/dist/chunk-OYRX4AY6.js.map +0 -1
- package/dist/chunk-PBPGBVQQ.cjs.map +0 -1
- package/dist/chunk-PIIJVF5D.cjs.map +0 -1
- package/dist/chunk-PMNTOEXC.js.map +0 -1
- package/dist/chunk-Q4QF6UYX.cjs.map +0 -1
- package/dist/chunk-QI7XQDFZ.cjs.map +0 -1
- package/dist/chunk-QKSCFVN2.js.map +0 -1
- package/dist/chunk-R77VVMV5.cjs.map +0 -1
- package/dist/chunk-SMVAHIBN.cjs.map +0 -1
- package/dist/chunk-TGSKTHTV.js.map +0 -1
- package/dist/chunk-UT5UXO44.js.map +0 -1
- package/dist/chunk-VTANPKPT.js.map +0 -1
- package/dist/chunk-W6BUNUQM.cjs.map +0 -1
- package/dist/chunk-WWL4VEPH.js.map +0 -1
- package/dist/chunk-X4MEHYWV.js.map +0 -1
- package/dist/chunk-XMBTKO5I.cjs.map +0 -1
- package/dist/chunk-XO6PBAAM.cjs.map +0 -1
- package/dist/chunk-XYJMP23P.cjs.map +0 -1
- package/dist/chunk-YJESCN4Y.cjs.map +0 -1
- package/dist/chunk-YPVRTMX6.js.map +0 -1
- package/dist/chunk-ZAHKA2V2.js.map +0 -1
- package/dist/chunk-ZSK74QFN.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../Watermark/index.tsx"],"names":[],"mappings":"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","file":"chunk-PVKBGP6Q.js","sourcesContent":["import React, { useRef, useEffect, useCallback, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface WatermarkProps {\n\t/** 水印文本内容或多行文本数组 */\n\tcontent: string | string[];\n\t/** 子元素内容 */\n\tchildren?: ReactNode;\n\t/** 水印旋转角度,默认为 -22 */\n\trotate?: number;\n\t/** 字体大小(像素),默认为 14 */\n\tfontSize?: number;\n\t/** 水印颜色,默认为 'rgba(0, 0, 0, 0.12)' */\n\tcolor?: string;\n\t/** 单个水印单元宽度,默认为 240 */\n\twidth?: number;\n\t/** 单个水印单元高度,默认为 160 */\n\theight?: number;\n\t/** 水印层级 zIndex,默认为 9999 */\n\tzIndex?: number;\n\t/** 是否开启 MutationObserver 与心跳巡检防审查元素篡改,默认为 true */\n\tantiTamper?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n/** 生成 Canvas 水印平铺 Base64 图片 */\nfunction generateWatermarkBase64(\n\tcontent: string | string[],\n\twidth: number,\n\theight: number,\n\trotate: number,\n\tfontSize: number,\n\tcolor: string,\n): string {\n\tif (typeof document === 'undefined') return '';\n\tconst canvas = document.createElement('canvas');\n\tcanvas.width = width;\n\tcanvas.height = height;\n\n\tconst ctx = canvas.getContext('2d');\n\tif (!ctx) return '';\n\n\tctx.translate(width / 2, height / 2);\n\tctx.rotate((rotate * Math.PI) / 180);\n\tctx.font = `${fontSize}px -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif`;\n\tctx.fillStyle = color;\n\tctx.textAlign = 'center';\n\tctx.textBaseline = 'middle';\n\n\tconst lines = Array.isArray(content) ? content : [content];\n\tconst lineHeight = fontSize * 1.5;\n\tconst startY = -((lines.length - 1) * lineHeight) / 2;\n\n\tlines.forEach((line, idx) => {\n\t\tctx.fillText(line, 0, startY + idx * lineHeight);\n\t});\n\n\treturn canvas.toDataURL('image/png');\n}\n\n/** 获取完整的水印行内样式 CSS 文本 */\nfunction getWatermarkCssText(url: string, zIndex: number): string {\n\treturn `\n\t\tposition: absolute !important;\n\t\ttop: 0px !important;\n\t\tleft: 0px !important;\n\t\tright: 0px !important;\n\t\tbottom: 0px !important;\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t\tpointer-events: none !important;\n\t\tbackground-repeat: repeat !important;\n\t\tbackground-image: url(\"${url}\") !important;\n\t\tz-index: ${zIndex} !important;\n\t\tdisplay: block !important;\n\t\tvisibility: visible !important;\n\t\topacity: 1 !important;\n\t\ttransform: none !important;\n\t\tfilter: none !important;\n\t\tclip-path: none !important;\n\t`.replace(/\\s+/g, ' ').trim();\n}\n\n/** 创建全新的原生水印 DOM 节点(脱离 React 虚拟 DOM 控制,防止 DevTools 删除节点时引发 React Crash) */\nfunction createWatermarkElement(url: string, zIndex: number): HTMLDivElement {\n\tconst el = document.createElement('div');\n\tel.className = 'rpc_watermark_layer';\n\tel.style.cssText = getWatermarkCssText(url, zIndex);\n\treturn el;\n}\n\n/** 深度检查水印元素在当前真实 DOM 树中的有效性与样式完整性 */\nfunction checkWatermarkIntegrity(\n\twatermarkEl: HTMLElement | null,\n\twrapperEl: HTMLElement | null,\n\texpectedUrl: string,\n): boolean {\n\tif (!watermarkEl || !wrapperEl) return false;\n\tif (!wrapperEl.contains(watermarkEl)) return false;\n\n\t// 检查内联样式\n\tconst styleAttr = watermarkEl.getAttribute('style') || '';\n\tif (!styleAttr.includes(expectedUrl)) return false;\n\n\t// 检查真实的最终计算样式 ComputedStyle(防止在 DevTools Styles 面板取消勾选属性)\n\ttry {\n\t\tconst computed = window.getComputedStyle(watermarkEl);\n\t\tif (\n\t\t\tcomputed.display === 'none' ||\n\t\t\tcomputed.visibility === 'hidden' ||\n\t\t\tNumber(computed.opacity) < 0.1 ||\n\t\t\tcomputed.backgroundImage === 'none' ||\n\t\t\t!computed.backgroundImage.includes('data:image') ||\n\t\t\twatermarkEl.offsetWidth === 0 ||\n\t\t\twatermarkEl.offsetHeight === 0\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t} catch {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nconst Watermark: React.FC<WatermarkProps> = ({\n\tcontent,\n\tchildren,\n\trotate = -22,\n\tfontSize = 14,\n\tcolor = 'rgba(0, 0, 0, 0.12)',\n\twidth = 240,\n\theight = 160,\n\tzIndex = 9999,\n\tantiTamper = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst wrapperRef = useRef<HTMLDivElement>(null);\n\t// 使用原生 DOM 引用,脱离 React Virtual DOM 的 Diff 追踪\n\tconst watermarkNodeRef = useRef<HTMLDivElement | null>(null);\n\tconst watermarkUrlRef = useRef<string>('');\n\n\t// 重新生成水印 Base64\n\tconst watermarkUrl = generateWatermarkBase64(content, width, height, rotate, fontSize, color);\n\twatermarkUrlRef.current = watermarkUrl;\n\n\t// 原生挂载或重建水印\n\tconst mountOrRestoreWatermark = useCallback(() => {\n\t\tconst wrapper = wrapperRef.current;\n\t\tconst currentUrl = watermarkUrlRef.current;\n\t\tif (!wrapper || !currentUrl) return;\n\n\t\t// 检查当前节点是否存在且完整\n\t\tif (watermarkNodeRef.current && wrapper.contains(watermarkNodeRef.current)) {\n\t\t\t// 如果仅样式被篡改,直接重设行内 style\n\t\t\twatermarkNodeRef.current.style.cssText = getWatermarkCssText(currentUrl, zIndex);\n\t\t\t// 再次检查计算样式,如果依然有效则无需重新创建节点\n\t\t\tif (checkWatermarkIntegrity(watermarkNodeRef.current, wrapper, currentUrl)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// 否则移除旧的异常节点\n\t\t\ttry {\n\t\t\t\twrapper.removeChild(watermarkNodeRef.current);\n\t\t\t} catch {\n\t\t\t\t// ignore\n\t\t\t}\n\t\t}\n\n\t\t// 创建并追加全新原生水印节点\n\t\tconst newWatermarkEl = createWatermarkElement(currentUrl, zIndex);\n\t\twrapper.appendChild(newWatermarkEl);\n\t\twatermarkNodeRef.current = newWatermarkEl;\n\t}, [zIndex]);\n\n\t// 组件挂载或参数更新时初始化水印\n\tuseEffect(() => {\n\t\tmountOrRestoreWatermark();\n\t\treturn () => {\n\t\t\tif (watermarkNodeRef.current && wrapperRef.current) {\n\t\t\t\ttry {\n\t\t\t\t\tif (wrapperRef.current.contains(watermarkNodeRef.current)) {\n\t\t\t\t\t\twrapperRef.current.removeChild(watermarkNodeRef.current);\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// ignore\n\t\t\t\t}\n\t\t\t\twatermarkNodeRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [mountOrRestoreWatermark]);\n\n\t// 核心防篡改守护引擎:MutationObserver 毫秒级监听 + 定时心跳自愈\n\tuseEffect(() => {\n\t\tif (!antiTamper || !wrapperRef.current) return;\n\n\t\tconst wrapper = wrapperRef.current;\n\n\t\tconst verifyAndSelfHeal = () => {\n\t\t\tconst currentUrl = watermarkUrlRef.current;\n\t\t\tif (!currentUrl) return;\n\n\t\t\tconst isValid = checkWatermarkIntegrity(watermarkNodeRef.current, wrapper, currentUrl);\n\t\t\tif (!isValid) {\n\t\t\t\tmountOrRestoreWatermark();\n\t\t\t}\n\t\t};\n\n\t\t// 1. MutationObserver 监听任何 DOM 节点移除、替换或属性变动\n\t\tconst observer = new MutationObserver((mutations) => {\n\t\t\tfor (const mutation of mutations) {\n\t\t\t\t// 子节点被删除(包括 F12 Elements 面板按 Delete 直接删除水印 DOM)\n\t\t\t\tif (mutation.type === 'childList') {\n\t\t\t\t\tconst isRemoved = Array.from(mutation.removedNodes).some(\n\t\t\t\t\t\t(node) => node === watermarkNodeRef.current,\n\t\t\t\t\t);\n\t\t\t\t\tif (isRemoved || !wrapper.contains(watermarkNodeRef.current)) {\n\t\t\t\t\t\tmountOrRestoreWatermark();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// 属性被修改(包括 F12 Styles 面板取消勾选属性、修改 class 或 style)\n\t\t\t\tif (mutation.type === 'attributes') {\n\t\t\t\t\tverifyAndSelfHeal();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tobserver.observe(wrapper, {\n\t\t\tattributes: true,\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t\tattributeFilter: ['style', 'class', 'hidden', 'id', 'dir', 'aria-hidden'],\n\t\t});\n\n\t\t// 2. 心跳自检(防止断点或特殊篡改)\n\t\tconst timer = setInterval(() => {\n\t\t\tverifyAndSelfHeal();\n\t\t}, 400);\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t\tclearInterval(timer);\n\t\t};\n\t}, [antiTamper, mountOrRestoreWatermark]);\n\n\treturn (\n\t\t<div\n\t\t\tref={wrapperRef}\n\t\t\tclassName={`rpc_watermark_wrapper ${className}`}\n\t\t\tstyle={{ position: 'relative', ...style }}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n\nexport default Watermark;\n"]}
|
|
1
|
+
{"version":3,"sources":["../Watermark/index.tsx"],"names":[],"mappings":"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","file":"chunk-5GLC2HU6.js","sourcesContent":["import React, { useRef, useEffect, useCallback, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface WatermarkProps {\n\t/** 水印文本内容或多行文本数组 */\n\tcontent: string | string[];\n\t/** 子元素内容 */\n\tchildren?: ReactNode;\n\t/** 水印旋转角度,默认为 -22 */\n\trotate?: number;\n\t/** 字体大小(像素),默认为 14 */\n\tfontSize?: number;\n\t/** 水印颜色,默认为 'rgba(0, 0, 0, 0.12)' */\n\tcolor?: string;\n\t/** 单个水印单元宽度,默认为 240 */\n\twidth?: number;\n\t/** 单个水印单元高度,默认为 160 */\n\theight?: number;\n\t/** 水印层级 zIndex,默认为 9999 */\n\tzIndex?: number;\n\t/** 是否开启 MutationObserver 与心跳巡检防审查元素篡改,默认为 true */\n\tantiTamper?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n/** 生成 Canvas 水印平铺 Base64 图片 */\nfunction generateWatermarkBase64(\n\tcontent: string | string[],\n\twidth: number,\n\theight: number,\n\trotate: number,\n\tfontSize: number,\n\tcolor: string,\n): string {\n\tif (typeof document === 'undefined') return '';\n\tconst canvas = document.createElement('canvas');\n\tcanvas.width = width;\n\tcanvas.height = height;\n\n\tconst ctx = canvas.getContext('2d');\n\tif (!ctx) return '';\n\n\tctx.translate(width / 2, height / 2);\n\tctx.rotate((rotate * Math.PI) / 180);\n\tctx.font = `${fontSize}px -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif`;\n\tctx.fillStyle = color;\n\tctx.textAlign = 'center';\n\tctx.textBaseline = 'middle';\n\n\tconst lines = Array.isArray(content) ? content : [content];\n\tconst lineHeight = fontSize * 1.5;\n\tconst startY = -((lines.length - 1) * lineHeight) / 2;\n\n\tlines.forEach((line, idx) => {\n\t\tctx.fillText(line, 0, startY + idx * lineHeight);\n\t});\n\n\treturn canvas.toDataURL('image/png');\n}\n\n/** 获取完整的水印行内样式 CSS 文本 */\nfunction getWatermarkCssText(url: string, zIndex: number): string {\n\treturn `\n\t\tposition: absolute !important;\n\t\ttop: 0px !important;\n\t\tleft: 0px !important;\n\t\tright: 0px !important;\n\t\tbottom: 0px !important;\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t\tpointer-events: none !important;\n\t\tbackground-repeat: repeat !important;\n\t\tbackground-image: url(\"${url}\") !important;\n\t\tz-index: ${zIndex} !important;\n\t\tdisplay: block !important;\n\t\tvisibility: visible !important;\n\t\topacity: 1 !important;\n\t\ttransform: none !important;\n\t\tfilter: none !important;\n\t\tclip-path: none !important;\n\t`\n\t\t.replace(/\\s+/g, ' ')\n\t\t.trim();\n}\n\n/** 创建全新的原生水印 DOM 节点(脱离 React 虚拟 DOM 控制,防止 DevTools 删除节点时引发 React Crash) */\nfunction createWatermarkElement(url: string, zIndex: number): HTMLDivElement {\n\tconst el = document.createElement('div');\n\tel.className = 'rpc_watermark_layer';\n\tel.style.cssText = getWatermarkCssText(url, zIndex);\n\treturn el;\n}\n\n/** 深度检查水印元素在当前真实 DOM 树中的有效性与样式完整性 */\nfunction checkWatermarkIntegrity(\n\twatermarkEl: HTMLElement | null,\n\twrapperEl: HTMLElement | null,\n\texpectedUrl: string,\n): boolean {\n\tif (!watermarkEl || !wrapperEl) return false;\n\tif (!wrapperEl.contains(watermarkEl)) return false;\n\n\t// 检查内联样式\n\tconst styleAttr = watermarkEl.getAttribute('style') || '';\n\tif (!styleAttr.includes(expectedUrl)) return false;\n\n\t// 检查真实的最终计算样式 ComputedStyle(防止在 DevTools Styles 面板取消勾选属性)\n\ttry {\n\t\tconst computed = window.getComputedStyle(watermarkEl);\n\t\tif (\n\t\t\tcomputed.display === 'none' ||\n\t\t\tcomputed.visibility === 'hidden' ||\n\t\t\tNumber(computed.opacity) < 0.1 ||\n\t\t\tcomputed.backgroundImage === 'none' ||\n\t\t\t!computed.backgroundImage.includes('data:image') ||\n\t\t\twatermarkEl.offsetWidth === 0 ||\n\t\t\twatermarkEl.offsetHeight === 0\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t} catch {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nconst Watermark: React.FC<WatermarkProps> = ({\n\tcontent,\n\tchildren,\n\trotate = -22,\n\tfontSize = 14,\n\tcolor = 'rgba(0, 0, 0, 0.12)',\n\twidth = 240,\n\theight = 160,\n\tzIndex = 9999,\n\tantiTamper = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst wrapperRef = useRef<HTMLDivElement>(null);\n\t// 使用原生 DOM 引用,脱离 React Virtual DOM 的 Diff 追踪\n\tconst watermarkNodeRef = useRef<HTMLDivElement | null>(null);\n\tconst watermarkUrlRef = useRef<string>('');\n\n\t// 重新生成水印 Base64\n\tconst watermarkUrl = generateWatermarkBase64(content, width, height, rotate, fontSize, color);\n\twatermarkUrlRef.current = watermarkUrl;\n\n\t// 原生挂载或重建水印\n\tconst mountOrRestoreWatermark = useCallback(() => {\n\t\tconst wrapper = wrapperRef.current;\n\t\tconst currentUrl = watermarkUrlRef.current;\n\t\tif (!wrapper || !currentUrl) return;\n\n\t\t// 检查当前节点是否存在且完整\n\t\tif (watermarkNodeRef.current && wrapper.contains(watermarkNodeRef.current)) {\n\t\t\t// 如果仅样式被篡改,直接重设行内 style\n\t\t\twatermarkNodeRef.current.style.cssText = getWatermarkCssText(currentUrl, zIndex);\n\t\t\t// 再次检查计算样式,如果依然有效则无需重新创建节点\n\t\t\tif (checkWatermarkIntegrity(watermarkNodeRef.current, wrapper, currentUrl)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// 否则移除旧的异常节点\n\t\t\ttry {\n\t\t\t\twrapper.removeChild(watermarkNodeRef.current);\n\t\t\t} catch {\n\t\t\t\t// ignore\n\t\t\t}\n\t\t}\n\n\t\t// 创建并追加全新原生水印节点\n\t\tconst newWatermarkEl = createWatermarkElement(currentUrl, zIndex);\n\t\twrapper.appendChild(newWatermarkEl);\n\t\twatermarkNodeRef.current = newWatermarkEl;\n\t}, [zIndex]);\n\n\t// 组件挂载或参数更新时初始化水印\n\tuseEffect(() => {\n\t\tmountOrRestoreWatermark();\n\t\treturn () => {\n\t\t\tif (watermarkNodeRef.current && wrapperRef.current) {\n\t\t\t\ttry {\n\t\t\t\t\tif (wrapperRef.current.contains(watermarkNodeRef.current)) {\n\t\t\t\t\t\twrapperRef.current.removeChild(watermarkNodeRef.current);\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// ignore\n\t\t\t\t}\n\t\t\t\twatermarkNodeRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [mountOrRestoreWatermark]);\n\n\t// 核心防篡改守护引擎:MutationObserver 毫秒级监听 + 定时心跳自愈\n\tuseEffect(() => {\n\t\tif (!antiTamper || !wrapperRef.current) return;\n\n\t\tconst wrapper = wrapperRef.current;\n\n\t\tconst verifyAndSelfHeal = () => {\n\t\t\tconst currentUrl = watermarkUrlRef.current;\n\t\t\tif (!currentUrl) return;\n\n\t\t\tconst isValid = checkWatermarkIntegrity(watermarkNodeRef.current, wrapper, currentUrl);\n\t\t\tif (!isValid) {\n\t\t\t\tmountOrRestoreWatermark();\n\t\t\t}\n\t\t};\n\n\t\t// 1. MutationObserver 监听任何 DOM 节点移除、替换或属性变动\n\t\tconst observer = new MutationObserver((mutations) => {\n\t\t\tfor (const mutation of mutations) {\n\t\t\t\t// 子节点被删除(包括 F12 Elements 面板按 Delete 直接删除水印 DOM)\n\t\t\t\tif (mutation.type === 'childList') {\n\t\t\t\t\tconst isRemoved = Array.from(mutation.removedNodes).some(\n\t\t\t\t\t\t(node) => node === watermarkNodeRef.current,\n\t\t\t\t\t);\n\t\t\t\t\tif (isRemoved || !wrapper.contains(watermarkNodeRef.current)) {\n\t\t\t\t\t\tmountOrRestoreWatermark();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// 属性被修改(包括 F12 Styles 面板取消勾选属性、修改 class 或 style)\n\t\t\t\tif (mutation.type === 'attributes') {\n\t\t\t\t\tverifyAndSelfHeal();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tobserver.observe(wrapper, {\n\t\t\tattributes: true,\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t\tattributeFilter: ['style', 'class', 'hidden', 'id', 'dir', 'aria-hidden'],\n\t\t});\n\n\t\t// 2. 心跳自检(防止断点或特殊篡改)\n\t\tconst timer = setInterval(() => {\n\t\t\tverifyAndSelfHeal();\n\t\t}, 400);\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t\tclearInterval(timer);\n\t\t};\n\t}, [antiTamper, mountOrRestoreWatermark]);\n\n\treturn (\n\t\t<div\n\t\t\tref={wrapperRef}\n\t\t\tclassName={`rpc_watermark_wrapper ${className}`}\n\t\t\tstyle={{ position: 'relative', ...style }}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n\nexport default Watermark;\n"]}
|
|
@@ -92,5 +92,5 @@ var JsonTree = ({
|
|
|
92
92
|
var JsonTree_default = JsonTree;
|
|
93
93
|
|
|
94
94
|
export { JsonTree_default };
|
|
95
|
-
//# sourceMappingURL=chunk-
|
|
96
|
-
//# sourceMappingURL=chunk-
|
|
95
|
+
//# sourceMappingURL=chunk-5HIRDMZH.js.map
|
|
96
|
+
//# sourceMappingURL=chunk-5HIRDMZH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../JsonTree/index.tsx"],"names":[],"mappings":"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","file":"chunk-5HIRDMZH.js","sourcesContent":["import React, { useState, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface JsonTreeProps {\n\t/** JSON 数据源 */\n\tdata: unknown;\n\t/** 默认展开层级深度,默认为 2 */\n\tdefaultExpandedLevel?: number;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\ninterface TreeNodeProps {\n\tkeyName?: string;\n\tvalue: unknown;\n\tdepth: number;\n\tmaxDepth: number;\n}\n\nconst TreeNode: React.FC<TreeNodeProps> = ({ keyName, value, depth, maxDepth }) => {\n\tconst [collapsed, setCollapsed] = useState<boolean>(depth >= maxDepth);\n\n\tconst isObject = value !== null && typeof value === 'object';\n\tconst isArray = Array.isArray(value);\n\n\tif (!isObject) {\n\t\tlet valClass = 'rpc_json_tree_string';\n\t\tlet valStr = `\"${value}\"`;\n\n\t\tif (typeof value === 'number') {\n\t\t\tvalClass = 'rpc_json_tree_number';\n\t\t\tvalStr = String(value);\n\t\t} else if (typeof value === 'boolean') {\n\t\t\tvalClass = 'rpc_json_tree_boolean';\n\t\t\tvalStr = String(value);\n\t\t} else if (value === null) {\n\t\t\tvalClass = 'rpc_json_tree_null';\n\t\t\tvalStr = 'null';\n\t\t}\n\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t{keyName !== undefined && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span className=\"rpc_json_tree_key\">\"{keyName}\"</span>\n\t\t\t\t\t\t<span className=\"rpc_json_tree_colon\">:</span>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t<span className={valClass}>{valStr}</span>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst keys = Object.keys(value);\n\tconst openBracket = isArray ? '[' : '{';\n\tconst closeBracket = isArray ? ']' : '}';\n\n\treturn (\n\t\t<div>\n\t\t\t<span\n\t\t\t\tclassName={`rpc_json_tree_toggle ${collapsed ? 'rpc_json_tree_toggle_collapsed' : ''}`}\n\t\t\t\tonClick={() => setCollapsed(!collapsed)}\n\t\t\t>\n\t\t\t\t▼\n\t\t\t</span>\n\n\t\t\t{keyName !== undefined && (\n\t\t\t\t<>\n\t\t\t\t\t<span className=\"rpc_json_tree_key\">\"{keyName}\"</span>\n\t\t\t\t\t<span className=\"rpc_json_tree_colon\">:</span>\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t<span className=\"rpc_json_tree_bracket\">{openBracket}</span>\n\n\t\t\t{collapsed ? (\n\t\t\t\t<>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"rpc_json_tree_count\"\n\t\t\t\t\t\tstyle={{ cursor: 'pointer' }}\n\t\t\t\t\t\tonClick={() => setCollapsed(false)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{keys.length} items...\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"rpc_json_tree_bracket\">{closeBracket}</span>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<div className=\"rpc_json_tree_node\">\n\t\t\t\t\t\t{keys.map((k) => (\n\t\t\t\t\t\t\t<TreeNode\n\t\t\t\t\t\t\t\tkey={k}\n\t\t\t\t\t\t\t\tkeyName={isArray ? undefined : k}\n\t\t\t\t\t\t\t\tvalue={(value as Record<string, unknown>)[k]}\n\t\t\t\t\t\t\t\tdepth={depth + 1}\n\t\t\t\t\t\t\t\tmaxDepth={maxDepth}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t<span className=\"rpc_json_tree_bracket\">{closeBracket}</span>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nconst JsonTree: React.FC<JsonTreeProps> = ({\n\tdata,\n\tdefaultExpandedLevel = 2,\n\tclassName = '',\n\tstyle,\n}) => {\n\treturn (\n\t\t<div className={`rpc_json_tree ${className}`} style={style}>\n\t\t\t<TreeNode value={data} depth={0} maxDepth={defaultExpandedLevel} />\n\t\t</div>\n\t);\n};\n\nexport default JsonTree;\n"]}
|
|
@@ -115,20 +115,12 @@ var TreeFilterPanel = ({
|
|
|
115
115
|
selectedValues.length,
|
|
116
116
|
" \u9879"
|
|
117
117
|
] }),
|
|
118
|
-
selectedValues.length > 0 && /* @__PURE__ */ jsx(
|
|
119
|
-
"button",
|
|
120
|
-
{
|
|
121
|
-
type: "button",
|
|
122
|
-
className: "rpc_tree_filter_panel_clear_btn",
|
|
123
|
-
onClick: handleClear,
|
|
124
|
-
children: "\u6E05\u7A7A\u6240\u6709\u7B5B\u9009"
|
|
125
|
-
}
|
|
126
|
-
)
|
|
118
|
+
selectedValues.length > 0 && /* @__PURE__ */ jsx("button", { type: "button", className: "rpc_tree_filter_panel_clear_btn", onClick: handleClear, children: "\u6E05\u7A7A\u6240\u6709\u7B5B\u9009" })
|
|
127
119
|
] })
|
|
128
120
|
] });
|
|
129
121
|
};
|
|
130
122
|
var TreeFilterPanel_default = TreeFilterPanel;
|
|
131
123
|
|
|
132
124
|
export { TreeFilterPanel_default };
|
|
133
|
-
//# sourceMappingURL=chunk-
|
|
134
|
-
//# sourceMappingURL=chunk-
|
|
125
|
+
//# sourceMappingURL=chunk-5R2YXBXM.js.map
|
|
126
|
+
//# sourceMappingURL=chunk-5R2YXBXM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../TreeFilterPanel/index.tsx"],"names":[],"mappings":"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","file":"chunk-5R2YXBXM.js","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface TreeFilterNode {\n\tlabel: string;\n\tvalue: string | number;\n\tchildren?: TreeFilterNode[];\n}\n\nexport interface TreeFilterPanelProps {\n\t/** 树形分类选项列表 */\n\toptions: TreeFilterNode[];\n\t/** 当前选中的值数组(受控) */\n\tvalue?: (string | number)[];\n\t/** 默认选中的值数组 */\n\tdefaultValue?: (string | number)[];\n\t/** 选中值变化回调 */\n\tonChange?: (values: (string | number)[]) => void;\n\t/** 是否支持多选,默认为 true */\n\tmultiple?: boolean;\n\t/** 标题前缀,默认为 ['一级分类', '二级分类', '三级标签'] */\n\tlevelLabels?: string[];\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TreeFilterPanel: React.FC<TreeFilterPanelProps> = ({\n\toptions = [],\n\tvalue: controlledValue,\n\tdefaultValue = [],\n\tonChange,\n\tmultiple = true,\n\tlevelLabels = ['一级分类', '二级分类', '三级标签'],\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalVal, setInternalVal] = useState<(string | number)[]>(defaultValue);\n\tconst selectedValues = controlledValue !== undefined ? controlledValue : internalVal;\n\n\t// 记录每一层当前激活选中的父节点\n\tconst [activeLevel1, setActiveLevel1] = useState<string | number | null>(\n\t\toptions[0]?.value || null,\n\t);\n\n\tconst level1Option = options.find((opt) => opt.value === activeLevel1) || options[0];\n\tconst level2Options = level1Option?.children || [];\n\n\tconst [activeLevel2, setActiveLevel2] = useState<string | number | null>(\n\t\tlevel2Options[0]?.value || null,\n\t);\n\n\tconst level2Option = level2Options.find((opt) => opt.value === activeLevel2) || level2Options[0];\n\tconst level3Options = level2Option?.children || [];\n\n\tconst handleSelect = (val: string | number) => {\n\t\tlet next: (string | number)[];\n\t\tif (!multiple) {\n\t\t\tnext = [val];\n\t\t} else {\n\t\t\tif (selectedValues.includes(val)) {\n\t\t\t\tnext = selectedValues.filter((v) => v !== val);\n\t\t\t} else {\n\t\t\t\tnext = [...selectedValues, val];\n\t\t\t}\n\t\t}\n\n\t\tif (controlledValue === undefined) setInternalVal(next);\n\t\tonChange?.(next);\n\t};\n\n\tconst handleClear = () => {\n\t\tif (controlledValue === undefined) setInternalVal([]);\n\t\tonChange?.([]);\n\t};\n\n\treturn (\n\t\t<div className={`rpc_tree_filter_panel ${className}`} style={style}>\n\t\t\t{/* 一级分类 */}\n\t\t\t{options.length > 0 && (\n\t\t\t\t<div className=\"rpc_tree_filter_panel_row\">\n\t\t\t\t\t<div className=\"rpc_tree_filter_panel_label\">{levelLabels[0] || '一级分类'}:</div>\n\t\t\t\t\t<div className=\"rpc_tree_filter_panel_options\">\n\t\t\t\t\t\t{options.map((opt) => {\n\t\t\t\t\t\t\tconst isSelected = selectedValues.includes(opt.value);\n\t\t\t\t\t\t\tconst isCurrentActive = activeLevel1 === opt.value;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tkey={opt.value}\n\t\t\t\t\t\t\t\t\tclassName={`rpc_tree_filter_panel_item ${\n\t\t\t\t\t\t\t\t\t\tisSelected || isCurrentActive ? 'rpc_tree_filter_panel_item_active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tsetActiveLevel1(opt.value);\n\t\t\t\t\t\t\t\t\t\tif (opt.children && opt.children.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\tsetActiveLevel2(opt.children[0].value);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thandleSelect(opt.value);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 二级分类 */}\n\t\t\t{level2Options.length > 0 && (\n\t\t\t\t<div className=\"rpc_tree_filter_panel_row\">\n\t\t\t\t\t<div className=\"rpc_tree_filter_panel_label\">{levelLabels[1] || '二级分类'}:</div>\n\t\t\t\t\t<div className=\"rpc_tree_filter_panel_options\">\n\t\t\t\t\t\t{level2Options.map((opt) => {\n\t\t\t\t\t\t\tconst isSelected = selectedValues.includes(opt.value);\n\t\t\t\t\t\t\tconst isCurrentActive = activeLevel2 === opt.value;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tkey={opt.value}\n\t\t\t\t\t\t\t\t\tclassName={`rpc_tree_filter_panel_item ${\n\t\t\t\t\t\t\t\t\t\tisSelected || isCurrentActive ? 'rpc_tree_filter_panel_item_active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tsetActiveLevel2(opt.value);\n\t\t\t\t\t\t\t\t\t\thandleSelect(opt.value);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 三级标签 */}\n\t\t\t{level3Options.length > 0 && (\n\t\t\t\t<div className=\"rpc_tree_filter_panel_row\">\n\t\t\t\t\t<div className=\"rpc_tree_filter_panel_label\">{levelLabels[2] || '三级标签'}:</div>\n\t\t\t\t\t<div className=\"rpc_tree_filter_panel_options\">\n\t\t\t\t\t\t{level3Options.map((opt) => {\n\t\t\t\t\t\t\tconst isSelected = selectedValues.includes(opt.value);\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tkey={opt.value}\n\t\t\t\t\t\t\t\t\tclassName={`rpc_tree_filter_panel_item ${\n\t\t\t\t\t\t\t\t\t\tisSelected ? 'rpc_tree_filter_panel_item_active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => handleSelect(opt.value)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 底部汇总与重置 */}\n\t\t\t<div className=\"rpc_tree_filter_panel_footer\">\n\t\t\t\t<span>已选条件:{selectedValues.length} 项</span>\n\t\t\t\t{selectedValues.length > 0 && (\n\t\t\t\t\t<button type=\"button\" className=\"rpc_tree_filter_panel_clear_btn\" onClick={handleClear}>\n\t\t\t\t\t\t清空所有筛选\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default TreeFilterPanel;\n"]}
|
|
@@ -99,5 +99,5 @@ var QuickDateRange = ({
|
|
|
99
99
|
var QuickDateRange_default = QuickDateRange;
|
|
100
100
|
|
|
101
101
|
exports.QuickDateRange_default = QuickDateRange_default;
|
|
102
|
-
//# sourceMappingURL=chunk-
|
|
103
|
-
//# sourceMappingURL=chunk-
|
|
102
|
+
//# sourceMappingURL=chunk-5V4UAS6I.cjs.map
|
|
103
|
+
//# sourceMappingURL=chunk-5V4UAS6I.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../QuickDateRange/index.tsx"],"names":["useState","jsx"],"mappings":"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","file":"chunk-5V4UAS6I.cjs","sourcesContent":["import React, { useState, CSSProperties } from 'react';\nimport './index.less';\n\nexport type DateShortcutKey =\n\t'today' | 'yesterday' | '7days' | '30days' | 'thisMonth' | 'lastMonth';\n\nexport interface ShortcutItem {\n\tkey: string;\n\tlabel: string;\n\tcalc: () => [string, string];\n}\n\nexport interface QuickDateRangeProps {\n\t/** 当前选中项的 key(受控) */\n\tactiveKey?: string;\n\t/** 默认选中的 key,默认为 '7days' */\n\tdefaultKey?: string;\n\t/** 切换回调 */\n\tonChange?: (dateRange: [string, string], key: string) => void;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction formatDate(d: Date): string {\n\tconst y = d.getFullYear();\n\tconst m = String(d.getMonth() + 1).padStart(2, '0');\n\tconst day = String(d.getDate()).padStart(2, '0');\n\treturn `${y}-${m}-${day}`;\n}\n\nconst defaultShortcuts: ShortcutItem[] = [\n\t{\n\t\tkey: 'today',\n\t\tlabel: '今日',\n\t\tcalc: () => {\n\t\t\tconst now = formatDate(new Date());\n\t\t\treturn [now, now];\n\t\t},\n\t},\n\t{\n\t\tkey: 'yesterday',\n\t\tlabel: '昨日',\n\t\tcalc: () => {\n\t\t\tconst d = new Date();\n\t\t\td.setDate(d.getDate() - 1);\n\t\t\tconst yStr = formatDate(d);\n\t\t\treturn [yStr, yStr];\n\t\t},\n\t},\n\t{\n\t\tkey: '7days',\n\t\tlabel: '近7天',\n\t\tcalc: () => {\n\t\t\tconst end = new Date();\n\t\t\tconst start = new Date();\n\t\t\tstart.setDate(start.getDate() - 6);\n\t\t\treturn [formatDate(start), formatDate(end)];\n\t\t},\n\t},\n\t{\n\t\tkey: '30days',\n\t\tlabel: '近30天',\n\t\tcalc: () => {\n\t\t\tconst end = new Date();\n\t\t\tconst start = new Date();\n\t\t\tstart.setDate(start.getDate() - 29);\n\t\t\treturn [formatDate(start), formatDate(end)];\n\t\t},\n\t},\n\t{\n\t\tkey: 'thisMonth',\n\t\tlabel: '本月',\n\t\tcalc: () => {\n\t\t\tconst now = new Date();\n\t\t\tconst start = new Date(now.getFullYear(), now.getMonth(), 1);\n\t\t\treturn [formatDate(start), formatDate(now)];\n\t\t},\n\t},\n\t{\n\t\tkey: 'lastMonth',\n\t\tlabel: '上月',\n\t\tcalc: () => {\n\t\t\tconst now = new Date();\n\t\t\tconst start = new Date(now.getFullYear(), now.getMonth() - 1, 1);\n\t\t\tconst end = new Date(now.getFullYear(), now.getMonth(), 0);\n\t\t\treturn [formatDate(start), formatDate(end)];\n\t\t},\n\t},\n];\n\nconst QuickDateRange: React.FC<QuickDateRangeProps> = ({\n\tactiveKey: controlledKey,\n\tdefaultKey = '7days',\n\tonChange,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalKey, setInternalKey] = useState<string>(defaultKey);\n\tconst currentKey = controlledKey !== undefined ? controlledKey : internalKey;\n\n\tconst handleClick = (item: ShortcutItem) => {\n\t\tif (controlledKey === undefined) setInternalKey(item.key);\n\t\tconst range = item.calc();\n\t\tonChange?.(range, item.key);\n\t};\n\n\treturn (\n\t\t<div className={`rpc_quick_date_range ${className}`} style={style}>\n\t\t\t{defaultShortcuts.map((item) => {\n\t\t\t\tconst isActive = currentKey === item.key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<span\n\t\t\t\t\t\tkey={item.key}\n\t\t\t\t\t\tclassName={`rpc_quick_date_range_pill ${\n\t\t\t\t\t\t\tisActive ? 'rpc_quick_date_range_pill_active' : ''\n\t\t\t\t\t\t}`}\n\t\t\t\t\t\tonClick={() => handleClick(item)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.label}\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default QuickDateRange;\n"]}
|
|
@@ -5,6 +5,10 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
5
5
|
var CodeSnippet = ({
|
|
6
6
|
code,
|
|
7
7
|
language = "bash",
|
|
8
|
+
theme = "dark",
|
|
9
|
+
title,
|
|
10
|
+
showLineNumbers = false,
|
|
11
|
+
copyable = true,
|
|
8
12
|
className = "",
|
|
9
13
|
style
|
|
10
14
|
}) => {
|
|
@@ -17,21 +21,25 @@ var CodeSnippet = ({
|
|
|
17
21
|
} catch (e) {
|
|
18
22
|
}
|
|
19
23
|
};
|
|
20
|
-
|
|
24
|
+
const lines = code.split("\n");
|
|
25
|
+
return /* @__PURE__ */ jsxs("div", { className: `rpc_code_snippet rpc_code_snippet_${theme} ${className}`, style, children: [
|
|
21
26
|
/* @__PURE__ */ jsxs("div", { className: "rpc_code_snippet_top_bar", children: [
|
|
22
27
|
/* @__PURE__ */ jsxs("div", { className: "rpc_code_snippet_dots", children: [
|
|
23
28
|
/* @__PURE__ */ jsx("span", { className: "rpc_code_snippet_dot rpc_code_snippet_dot_red" }),
|
|
24
29
|
/* @__PURE__ */ jsx("span", { className: "rpc_code_snippet_dot rpc_code_snippet_dot_yellow" }),
|
|
25
30
|
/* @__PURE__ */ jsx("span", { className: "rpc_code_snippet_dot rpc_code_snippet_dot_green" })
|
|
26
31
|
] }),
|
|
27
|
-
/* @__PURE__ */ jsx("span", { className: "rpc_code_snippet_lang", children: language }),
|
|
28
|
-
/* @__PURE__ */ jsx("button", { type: "button", className: "rpc_code_snippet_copy_btn", onClick: handleCopy, children: copied ? "\u2713 \u5DF2\u590D\u5236" : "\u590D\u5236" })
|
|
32
|
+
/* @__PURE__ */ jsx("span", { className: "rpc_code_snippet_lang", children: title != null ? title : language }),
|
|
33
|
+
copyable ? /* @__PURE__ */ jsx("button", { type: "button", className: "rpc_code_snippet_copy_btn", onClick: handleCopy, children: copied ? "\u2713 \u5DF2\u590D\u5236" : "\u590D\u5236" }) : /* @__PURE__ */ jsx("span", {})
|
|
29
34
|
] }),
|
|
30
|
-
/* @__PURE__ */
|
|
35
|
+
/* @__PURE__ */ jsxs("div", { className: "rpc_code_snippet_body", children: [
|
|
36
|
+
showLineNumbers && /* @__PURE__ */ jsx("div", { className: "rpc_code_snippet_line_numbers", children: lines.map((_, idx) => /* @__PURE__ */ jsx("span", { className: "rpc_code_snippet_line_no", children: idx + 1 }, idx)) }),
|
|
37
|
+
/* @__PURE__ */ jsx("pre", { className: "rpc_code_snippet_content", children: /* @__PURE__ */ jsx("code", { children: code }) })
|
|
38
|
+
] })
|
|
31
39
|
] });
|
|
32
40
|
};
|
|
33
41
|
var CodeSnippet_default = CodeSnippet;
|
|
34
42
|
|
|
35
43
|
export { CodeSnippet_default };
|
|
36
|
-
//# sourceMappingURL=chunk-
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
44
|
+
//# sourceMappingURL=chunk-5VSEUDVY.js.map
|
|
45
|
+
//# sourceMappingURL=chunk-5VSEUDVY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../CodeSnippet/index.tsx"],"names":[],"mappings":";;;;AAwBA,IAAM,cAA0C,CAAC;AAAA,EAChD,IAAA;AAAA,EACA,QAAA,GAAW,MAAA;AAAA,EACX,KAAA,GAAQ,MAAA;AAAA,EACR,KAAA;AAAA,EACA,eAAA,GAAkB,KAAA;AAAA,EAClB,QAAA,GAAW,IAAA;AAAA,EACX,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAkB,KAAK,CAAA;AAEnD,EAAA,MAAM,aAAa,YAAY;AAC9B,IAAA,IAAI;AACH,MAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,IAAI,CAAA;AACxC,MAAA,SAAA,CAAU,IAAI,CAAA;AACd,MAAA,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,IAAI,CAAA;AAAA,IACxC,CAAA,CAAA,OAAQ,CAAA,EAAA;AAAA,IAER;AAAA,EACD,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAE7B,EAAA,uBACC,IAAA,CAAC,SAAI,SAAA,EAAW,CAAA,kCAAA,EAAqC,KAAK,CAAA,CAAA,EAAI,SAAS,IAAI,KAAA,EAC1E,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0BAAA,EACd,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uBAAA,EACd,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,+CAAA,EAAgD,CAAA;AAAA,wBAChE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kDAAA,EAAmD,CAAA;AAAA,wBACnE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iDAAA,EAAkD;AAAA,OAAA,EACnE,CAAA;AAAA,sBAEA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAyB,kCAAS,QAAA,EAAS,CAAA;AAAA,MAE1D,QAAA,mBACA,GAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,SAAA,EAAU,2BAAA,EAA4B,OAAA,EAAS,UAAA,EACnE,QAAA,EAAA,MAAA,GAAS,2BAAA,GAAU,cAAA,EACrB,CAAA,uBAEC,MAAA,EAAA,EAAK;AAAA,KAAA,EAER,CAAA;AAAA,oBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,MAAA,eAAA,wBACC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EACb,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,CAAA,EAAG,GAAA,qBACd,GAAA,CAAC,UAAe,SAAA,EAAU,0BAAA,EACxB,gBAAM,CAAA,EAAA,EADG,GAEX,CACA,CAAA,EACF,CAAA;AAAA,0BAEA,KAAA,EAAA,EAAI,SAAA,EAAU,4BACd,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAM,gBAAK,CAAA,EACb;AAAA,KAAA,EACD;AAAA,GAAA,EACD,CAAA;AAEF,CAAA;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-5VSEUDVY.js","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport type CodeSnippetTheme = 'dark' | 'light';\n\nexport interface CodeSnippetProps {\n\t/** 代码文本内容 */\n\tcode: string;\n\t/** 编程语言标识,默认为 'bash' */\n\tlanguage?: string;\n\t/** 代码块主题风格:'dark' 暗色(默认) / 'light' 亮色 */\n\ttheme?: CodeSnippetTheme;\n\t/** 顶部自定义标题或说明标签(不传时展示大写的 language) */\n\ttitle?: ReactNode;\n\t/** 是否显示代码行号,默认为 false */\n\tshowLineNumbers?: boolean;\n\t/** 是否展示右上角一键复制按钮,默认为 true */\n\tcopyable?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst CodeSnippet: React.FC<CodeSnippetProps> = ({\n\tcode,\n\tlanguage = 'bash',\n\ttheme = 'dark',\n\ttitle,\n\tshowLineNumbers = false,\n\tcopyable = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [copied, setCopied] = useState<boolean>(false);\n\n\tconst handleCopy = async () => {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(code);\n\t\t\tsetCopied(true);\n\t\t\tsetTimeout(() => setCopied(false), 1500);\n\t\t} catch {\n\t\t\t// fallback\n\t\t}\n\t};\n\n\tconst lines = code.split('\\n');\n\n\treturn (\n\t\t<div className={`rpc_code_snippet rpc_code_snippet_${theme} ${className}`} style={style}>\n\t\t\t<div className=\"rpc_code_snippet_top_bar\">\n\t\t\t\t<div className=\"rpc_code_snippet_dots\">\n\t\t\t\t\t<span className=\"rpc_code_snippet_dot rpc_code_snippet_dot_red\" />\n\t\t\t\t\t<span className=\"rpc_code_snippet_dot rpc_code_snippet_dot_yellow\" />\n\t\t\t\t\t<span className=\"rpc_code_snippet_dot rpc_code_snippet_dot_green\" />\n\t\t\t\t</div>\n\n\t\t\t\t<span className=\"rpc_code_snippet_lang\">{title ?? language}</span>\n\n\t\t\t\t{copyable ? (\n\t\t\t\t\t<button type=\"button\" className=\"rpc_code_snippet_copy_btn\" onClick={handleCopy}>\n\t\t\t\t\t\t{copied ? '✓ 已复制' : '复制'}\n\t\t\t\t\t</button>\n\t\t\t\t) : (\n\t\t\t\t\t<span />\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<div className=\"rpc_code_snippet_body\">\n\t\t\t\t{showLineNumbers && (\n\t\t\t\t\t<div className=\"rpc_code_snippet_line_numbers\">\n\t\t\t\t\t\t{lines.map((_, idx) => (\n\t\t\t\t\t\t\t<span key={idx} className=\"rpc_code_snippet_line_no\">\n\t\t\t\t\t\t\t\t{idx + 1}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<pre className=\"rpc_code_snippet_content\">\n\t\t\t\t\t<code>{code}</code>\n\t\t\t\t</pre>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default CodeSnippet;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RightOutlined, LeftOutlined, DownOutlined, UpOutlined } from './chunk-
|
|
1
|
+
import { RightOutlined, LeftOutlined, DownOutlined, UpOutlined } from './chunk-ISUXPTLV.js';
|
|
2
2
|
import { useState } from 'react';
|
|
3
3
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -100,5 +100,5 @@ var CollapsibleBox = ({
|
|
|
100
100
|
var CollapseBox_default = CollapsibleBox;
|
|
101
101
|
|
|
102
102
|
export { CollapseBox_default };
|
|
103
|
-
//# sourceMappingURL=chunk-
|
|
104
|
-
//# sourceMappingURL=chunk-
|
|
103
|
+
//# sourceMappingURL=chunk-64LBDDZU.js.map
|
|
104
|
+
//# sourceMappingURL=chunk-64LBDDZU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../CollapseBox/index.tsx"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../CollapseBox/index.tsx"],"names":[],"mappings":"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","file":"chunk-64LBDDZU.js","sourcesContent":["import { useState, type CSSProperties, type ReactNode } from 'react';\nimport { DownOutlined, LeftOutlined, RightOutlined, UpOutlined } from '../src/icons';\nimport './index.less';\n\nexport type CollapseBoxDirection = 'horizontal' | 'vertical';\nexport type CollapseBoxButtonPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface CollapseBoxProps {\n\tchildren?: ReactNode;\n\ttitle?: string;\n\tdirection?: CollapseBoxDirection;\n\tbuttonPosition?: CollapseBoxButtonPosition;\n\tdefaultWidth?: number | string;\n\tdefaultHeight?: number | string;\n\tcontentPadding?: string;\n\theaderHeight?: number;\n\tclassName?: string;\n}\n\nconst formatDimension = (value?: number | string): string | undefined => {\n\tif (value === undefined || value === null) return undefined;\n\treturn typeof value === 'number' ? `${value}px` : value;\n};\n\nconst ChevronLeft = () => <LeftOutlined />;\n\nconst ChevronRight = () => <RightOutlined />;\n\nconst ChevronUp = () => <UpOutlined />;\n\nconst ChevronDown = () => <DownOutlined />;\n\nconst CollapsibleBox = ({\n\tchildren,\n\ttitle = '内容区域',\n\tdirection = 'horizontal',\n\tbuttonPosition = 'right',\n\tdefaultWidth = 600,\n\tdefaultHeight = 300,\n\tcontentPadding = '16px',\n\theaderHeight = 16,\n\tclassName,\n}: CollapseBoxProps) => {\n\tconst [isExpanded, setIsExpanded] = useState(true);\n\n\tconst getContentMaxHeight = () => {\n\t\tif (typeof defaultHeight === 'number') {\n\t\t\treturn `${defaultHeight - headerHeight}px`;\n\t\t}\n\t\tif (typeof defaultHeight === 'string') {\n\t\t\treturn headerHeight ? `calc(${defaultHeight} - ${headerHeight}px)` : defaultHeight;\n\t\t}\n\t\treturn '100%';\n\t};\n\n\tconst getIcon = () => {\n\t\tif (direction === 'horizontal') {\n\t\t\tif (buttonPosition === 'right') {\n\t\t\t\treturn isExpanded ? <ChevronRight /> : <ChevronLeft />;\n\t\t\t}\n\t\t\treturn isExpanded ? <ChevronLeft /> : <ChevronRight />;\n\t\t}\n\t\tif (buttonPosition === 'bottom') {\n\t\t\treturn isExpanded ? <ChevronDown /> : <ChevronUp />;\n\t\t}\n\t\treturn isExpanded ? <ChevronUp /> : <ChevronDown />;\n\t};\n\n\tconst getButtonClass = () => {\n\t\tif (direction === 'horizontal') {\n\t\t\treturn buttonPosition === 'right' ? 'button-right' : 'button-left';\n\t\t}\n\t\treturn buttonPosition === 'bottom' ? 'button-bottom' : 'button-top';\n\t};\n\n\tconst getContainerStyle = (): CSSProperties => {\n\t\tif (direction === 'horizontal') {\n\t\t\treturn {\n\t\t\t\twidth: isExpanded ? '100%' : '0px',\n\t\t\t\theight: '100%',\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\theight: isExpanded ? '100%' : '0px',\n\t\t\twidth: '100%',\n\t\t};\n\t};\n\n\tconst baseWrapperClass =\n\t\tdirection === 'horizontal' ? 'collapsible-wrapper horizontal' : 'collapsible-wrapper vertical';\n\tconst wrapperClass = className ? `${baseWrapperClass} ${className}` : baseWrapperClass;\n\n\tconst containerClass = [\n\t\t'collapsible-container',\n\t\tdirection === 'horizontal' && buttonPosition === 'right' ? 'align-right' : '',\n\t\tdirection === 'vertical' && buttonPosition === 'bottom' ? 'align-bottom' : '',\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst height = getContentMaxHeight();\n\tconst contentStyle: CSSProperties = {\n\t\tmaxHeight: direction === 'vertical' ? (isExpanded ? height : '0px') : height,\n\t\toverflowY: 'auto',\n\t\tpadding: contentPadding,\n\t\tboxSizing: 'border-box',\n\t};\n\n\tconst formattedWidth = formatDimension(defaultWidth);\n\tconst formattedHeight = formatDimension(defaultHeight);\n\tconst wrapperStyle: CSSProperties = {\n\t\twidth: formattedWidth,\n\t\theight: formattedHeight,\n\t};\n\n\treturn (\n\t\t<div className={wrapperClass} style={wrapperStyle}>\n\t\t\t<div style={getContainerStyle()} className={containerClass}>\n\t\t\t\t{title && (\n\t\t\t\t\t<div className=\"collapsible-header\" style={{ display: 'none' }}>\n\t\t\t\t\t\t<h3>{title}</h3>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"collapsible-content\" style={contentStyle}>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tonClick={() => setIsExpanded(!isExpanded)}\n\t\t\t\tclassName={`toggle-button ${getButtonClass()}`}\n\t\t\t\ttitle={isExpanded ? '隐藏' : '展开'}\n\t\t\t>\n\t\t\t\t{getIcon()}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default CollapsibleBox;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CheckOutlined, CloseOutlined } from './chunk-
|
|
1
|
+
import { CheckOutlined, CloseOutlined } from './chunk-ISUXPTLV.js';
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -78,14 +78,7 @@ var PasswordStrength = ({
|
|
|
78
78
|
}) }),
|
|
79
79
|
showText && /* @__PURE__ */ jsxs("div", { className: "rpc_password_strength_label", children: [
|
|
80
80
|
/* @__PURE__ */ jsx("span", { children: "\u5BC6\u7801\u5B89\u5168\u6027" }),
|
|
81
|
-
/* @__PURE__ */ jsx(
|
|
82
|
-
"span",
|
|
83
|
-
{
|
|
84
|
-
className: "rpc_password_strength_level_text",
|
|
85
|
-
style: { color: currentInfo.color },
|
|
86
|
-
children: password ? currentInfo.text : "\u672A\u8F93\u5165\u5BC6\u7801"
|
|
87
|
-
}
|
|
88
|
-
)
|
|
81
|
+
/* @__PURE__ */ jsx("span", { className: "rpc_password_strength_level_text", style: { color: currentInfo.color }, children: password ? currentInfo.text : "\u672A\u8F93\u5165\u5BC6\u7801" })
|
|
89
82
|
] }),
|
|
90
83
|
showRules && /* @__PURE__ */ jsx("div", { className: "rpc_password_strength_rules", children: rules.map((r) => {
|
|
91
84
|
const isPassed = passedKeys.includes(r.key);
|
|
@@ -106,5 +99,5 @@ var PasswordStrength = ({
|
|
|
106
99
|
var PasswordStrength_default = PasswordStrength;
|
|
107
100
|
|
|
108
101
|
export { PasswordStrength_default, evaluatePasswordStrength };
|
|
109
|
-
//# sourceMappingURL=chunk-
|
|
110
|
-
//# sourceMappingURL=chunk-
|
|
102
|
+
//# sourceMappingURL=chunk-6FVAQECF.js.map
|
|
103
|
+
//# sourceMappingURL=chunk-6FVAQECF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../PasswordStrength/index.tsx"],"names":[],"mappings":"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","file":"chunk-6FVAQECF.js","sourcesContent":["import React, { useMemo, ReactNode, CSSProperties } from 'react';\nimport { CheckOutlined, CloseOutlined } from '../src/icons';\nimport './index.less';\n\nexport type PasswordStrengthLevel = 0 | 1 | 2 | 3 | 4;\n\nexport interface PasswordRule {\n\tkey: string;\n\tlabel: ReactNode;\n\tvalidator: (password: string) => boolean;\n}\n\nexport interface PasswordStrengthProps {\n\t/** 当前输入的密码文本 */\n\tpassword?: string;\n\t/** 是否显示密码强度文字(弱/中/强/极强),默认为 true */\n\tshowText?: boolean;\n\t/** 是否显示密码规则校验清单,默认为 false */\n\tshowRules?: boolean;\n\t/** 自定义规则列表 */\n\trules?: PasswordRule[];\n\t/** 强度等级改变回调 */\n\tonLevelChange?: (level: PasswordStrengthLevel) => void;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst defaultRules: PasswordRule[] = [\n\t{\n\t\tkey: 'length',\n\t\tlabel: '长度至少 8 位',\n\t\tvalidator: (pwd) => pwd.length >= 8,\n\t},\n\t{\n\t\tkey: 'lowercase',\n\t\tlabel: '包含小写字母 (a-z)',\n\t\tvalidator: (pwd) => /[a-z]/.test(pwd),\n\t},\n\t{\n\t\tkey: 'uppercase',\n\t\tlabel: '包含大写字母 (A-Z)',\n\t\tvalidator: (pwd) => /[A-Z]/.test(pwd),\n\t},\n\t{\n\t\tkey: 'number',\n\t\tlabel: '包含数字 (0-9)',\n\t\tvalidator: (pwd) => /[0-9]/.test(pwd),\n\t},\n\t{\n\t\tkey: 'special',\n\t\tlabel: '包含特殊符号 (!@#$...)',\n\t\tvalidator: (pwd) => /[^A-Za-z0-9]/.test(pwd),\n\t},\n];\n\n// 计算密码强度得分 (0~4)\nexport function evaluatePasswordStrength(\n\tpwd: string = '',\n\trules: PasswordRule[] = defaultRules,\n): { level: PasswordStrengthLevel; score: number; passedKeys: string[] } {\n\tif (!pwd) {\n\t\treturn { level: 0, score: 0, passedKeys: [] };\n\t}\n\n\tconst passedKeys = rules.filter((r) => r.validator(pwd)).map((r) => r.key);\n\tlet score = passedKeys.length;\n\n\t// 如果长度过短(<6),强制判定为弱\n\tif (pwd.length < 6) {\n\t\treturn { level: 1, score: 1, passedKeys };\n\t}\n\n\tlet level: PasswordStrengthLevel = 1;\n\tif (score <= 1) level = 1;\n\telse if (score <= 3) level = 2;\n\telse if (score === 4) level = 3;\n\telse level = 4;\n\n\treturn { level, score, passedKeys };\n}\n\nconst levelConfig: Record<\n\tPasswordStrengthLevel,\n\t{ text: string; color: string; classSuffix: string }\n> = {\n\t0: { text: '', color: '#d9d9d9', classSuffix: '' },\n\t1: { text: '强度较弱', color: '#ff4d4f', classSuffix: 'weak' },\n\t2: { text: '强度中等', color: '#fa8c16', classSuffix: 'medium' },\n\t3: { text: '强度良好', color: '#1677ff', classSuffix: 'good' },\n\t4: { text: '强度极高', color: '#52c41a', classSuffix: 'strong' },\n};\n\nconst PasswordStrength: React.FC<PasswordStrengthProps> = ({\n\tpassword = '',\n\tshowText = true,\n\tshowRules = false,\n\trules = defaultRules,\n\tonLevelChange,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst { level, passedKeys } = useMemo(() => {\n\t\tconst res = evaluatePasswordStrength(password, rules);\n\t\tonLevelChange?.(res.level);\n\t\treturn res;\n\t}, [password, rules, onLevelChange]);\n\n\tconst currentInfo = levelConfig[level];\n\n\treturn (\n\t\t<div className={`rpc_password_strength ${className}`} style={style}>\n\t\t\t{/* 4 段彩色进度条 */}\n\t\t\t<div className=\"rpc_password_strength_bars\">\n\t\t\t\t{[1, 2, 3, 4].map((segIndex) => {\n\t\t\t\t\tconst isActive = level >= segIndex;\n\t\t\t\t\tconst segmentClass = [\n\t\t\t\t\t\t'rpc_password_strength_bar_segment',\n\t\t\t\t\t\tisActive && currentInfo.classSuffix\n\t\t\t\t\t\t\t? `rpc_password_strength_bar_segment_active_${currentInfo.classSuffix}`\n\t\t\t\t\t\t\t: '',\n\t\t\t\t\t]\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t.join(' ');\n\n\t\t\t\t\treturn <div key={segIndex} className={segmentClass} />;\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t{/* 文本说明 */}\n\t\t\t{showText && (\n\t\t\t\t<div className=\"rpc_password_strength_label\">\n\t\t\t\t\t<span>密码安全性</span>\n\t\t\t\t\t<span className=\"rpc_password_strength_level_text\" style={{ color: currentInfo.color }}>\n\t\t\t\t\t\t{password ? currentInfo.text : '未输入密码'}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 规则校验列表 */}\n\t\t\t{showRules && (\n\t\t\t\t<div className=\"rpc_password_strength_rules\">\n\t\t\t\t\t{rules.map((r) => {\n\t\t\t\t\t\tconst isPassed = passedKeys.includes(r.key);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={r.key}\n\t\t\t\t\t\t\t\tclassName={`rpc_password_strength_rule_item ${\n\t\t\t\t\t\t\t\t\tisPassed ? 'rpc_password_strength_rule_item_passed' : ''\n\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{isPassed ? (\n\t\t\t\t\t\t\t\t\t<CheckOutlined style={{ fontSize: 11 }} />\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<CloseOutlined style={{ fontSize: 10, opacity: 0.5 }} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<span>{r.label}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default PasswordStrength;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LoadingOutlined } from './chunk-
|
|
1
|
+
import { LoadingOutlined } from './chunk-ISUXPTLV.js';
|
|
2
2
|
import { useRef, useCallback, useEffect } from 'react';
|
|
3
3
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -67,5 +67,5 @@ var InfiniteScrollList = ({
|
|
|
67
67
|
var InfiniteScrollList_default = InfiniteScrollList;
|
|
68
68
|
|
|
69
69
|
export { InfiniteScrollList_default };
|
|
70
|
-
//# sourceMappingURL=chunk-
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
70
|
+
//# sourceMappingURL=chunk-6IXVUD2M.js.map
|
|
71
|
+
//# sourceMappingURL=chunk-6IXVUD2M.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../InfiniteScrollList/index.tsx"],"names":[],"mappings":";;;;AA6BA,IAAM,qBAAwD,CAAC;AAAA,EAC9D,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,UAAA,GAAa,kCAAA;AAAA,EACb,gBAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,WAAA,GAAc,OAAuB,IAAI,CAAA;AAE/C,EAAA,MAAM,cAAA,GAAiB,YAAY,MAAM;AACxC,IAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AACxB,MAAA,UAAA,EAAW;AAAA,IACZ;AAAA,EACD,CAAA,EAAG,CAAC,OAAA,EAAS,OAAA,EAAS,UAAU,CAAC,CAAA;AAGjC,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,MAAM,WAAW,WAAA,CAAY,OAAA;AAC7B,IAAA,IAAI,CAAC,QAAA,EAAU;AAEf,IAAA,MAAM,QAAA,GACL,OAAO,gBAAA,KAAqB,UAAA,GACzB,kBAAiB,GACjB,gBAAA,KAAqB,MAAA,GAAS,YAAA,CAAa,OAAA,GAAU,IAAA,CAAA;AAEzD,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACpB,CAAC,CAAC,KAAK,CAAA,KAAM;AACZ,QAAA,IAAI,MAAM,cAAA,EAAgB;AACzB,UAAA,cAAA,EAAe;AAAA,QAChB;AAAA,MACD,CAAA;AAAA,MACA;AAAA,QACC,MAAM,QAAA,IAAY,IAAA;AAAA,QAClB,UAAA,EAAY,WAAW,SAAS,CAAA,MAAA,CAAA;AAAA,QAChC,SAAA,EAAW;AAAA;AACZ,KACD;AAEA,IAAA,QAAA,CAAS,QAAQ,QAAQ,CAAA;AACzB,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EAClC,GAAG,CAAC,MAAA,EAAQ,gBAAA,EAAkB,SAAA,EAAW,cAAc,CAAC,CAAA;AAExD,EAAA,MAAM,uBAAA,mBACL,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACd,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,mBAAgB,KAAA,EAAO,EAAE,UAAU,EAAA,EAAI,KAAA,EAAO,WAAU,EAAG,CAAA;AAAA,oBAC5D,GAAA,CAAC,UAAK,QAAA,EAAA,qDAAA,EAAW;AAAA,GAAA,EAClB,CAAA;AAGD,EAAA,MAAM,aAAA,GAAgB,QAAQ,MAAM,CAAA;AAEpC,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,GAAA,EAAK,YAAA;AAAA,MACL,WAAW,CAAA,yBAAA,EACV,aAAA,GAAgB,oCAAA,GAAuC,EACxD,IAAI,SAAS,CAAA,CAAA;AAAA,MACb,KAAA,EAAO;AAAA,QACN,MAAA;AAAA,QACA,GAAG;AAAA,OACJ;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBAGD,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,WAAA,EAAa,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,OAAA,EAAS,CAAA,EAAE,EAAG,CAAA;AAAA,QAGnE,YAAY,gBAAA,IAAoB,uBAAA,CAAA;AAAA,QAChC,CAAC,OAAA,IAAW,UAAA,wBACX,KAAA,EAAA,EAAI,SAAA,EAAU,gEACb,QAAA,EAAA,UAAA,EACF;AAAA;AAAA;AAAA,GAEF;AAEF,CAAA;AAEA,IAAO,0BAAA,GAAQ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../InfiniteScrollList/index.tsx"],"names":[],"mappings":";;;;AA6BA,IAAM,qBAAwD,CAAC;AAAA,EAC9D,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,UAAA,GAAa,kCAAA;AAAA,EACb,gBAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,WAAA,GAAc,OAAuB,IAAI,CAAA;AAE/C,EAAA,MAAM,cAAA,GAAiB,YAAY,MAAM;AACxC,IAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AACxB,MAAA,UAAA,EAAW;AAAA,IACZ;AAAA,EACD,CAAA,EAAG,CAAC,OAAA,EAAS,OAAA,EAAS,UAAU,CAAC,CAAA;AAGjC,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,MAAM,WAAW,WAAA,CAAY,OAAA;AAC7B,IAAA,IAAI,CAAC,QAAA,EAAU;AAEf,IAAA,MAAM,QAAA,GACL,OAAO,gBAAA,KAAqB,UAAA,GACzB,kBAAiB,GACjB,gBAAA,KAAqB,MAAA,GAAS,YAAA,CAAa,OAAA,GAAU,IAAA,CAAA;AAEzD,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACpB,CAAC,CAAC,KAAK,CAAA,KAAM;AACZ,QAAA,IAAI,MAAM,cAAA,EAAgB;AACzB,UAAA,cAAA,EAAe;AAAA,QAChB;AAAA,MACD,CAAA;AAAA,MACA;AAAA,QACC,MAAM,QAAA,IAAY,IAAA;AAAA,QAClB,UAAA,EAAY,WAAW,SAAS,CAAA,MAAA,CAAA;AAAA,QAChC,SAAA,EAAW;AAAA;AACZ,KACD;AAEA,IAAA,QAAA,CAAS,QAAQ,QAAQ,CAAA;AACzB,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EAClC,GAAG,CAAC,MAAA,EAAQ,gBAAA,EAAkB,SAAA,EAAW,cAAc,CAAC,CAAA;AAExD,EAAA,MAAM,uBAAA,mBACL,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACd,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,mBAAgB,KAAA,EAAO,EAAE,UAAU,EAAA,EAAI,KAAA,EAAO,WAAU,EAAG,CAAA;AAAA,oBAC5D,GAAA,CAAC,UAAK,QAAA,EAAA,qDAAA,EAAW;AAAA,GAAA,EAClB,CAAA;AAGD,EAAA,MAAM,aAAA,GAAgB,QAAQ,MAAM,CAAA;AAEpC,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,GAAA,EAAK,YAAA;AAAA,MACL,WAAW,CAAA,yBAAA,EACV,aAAA,GAAgB,oCAAA,GAAuC,EACxD,IAAI,SAAS,CAAA,CAAA;AAAA,MACb,KAAA,EAAO;AAAA,QACN,MAAA;AAAA,QACA,GAAG;AAAA,OACJ;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBAGD,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,WAAA,EAAa,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,OAAA,EAAS,CAAA,EAAE,EAAG,CAAA;AAAA,QAGnE,YAAY,gBAAA,IAAoB,uBAAA,CAAA;AAAA,QAChC,CAAC,OAAA,IAAW,UAAA,wBACX,KAAA,EAAA,EAAI,SAAA,EAAU,gEACb,QAAA,EAAA,UAAA,EACF;AAAA;AAAA;AAAA,GAEF;AAEF,CAAA;AAEA,IAAO,0BAAA,GAAQ","file":"chunk-6IXVUD2M.js","sourcesContent":["import React, { useRef, useEffect, useCallback, ReactNode, CSSProperties } from 'react';\nimport { LoadingOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface InfiniteScrollListProps {\n\t/** 列表项子内容 */\n\tchildren: ReactNode;\n\t/** 是否还有更多数据可供加载 */\n\thasMore: boolean;\n\t/** 当前是否正在加载下一页 */\n\tloading: boolean;\n\t/** 触底加载下一页回调 */\n\tonLoadMore: () => void | Promise<void>;\n\t/** 触发加载的触底距离阈值(像素),默认为 40 */\n\tthreshold?: number;\n\t/** 没有更多数据时的底部提示内容,默认为 '已经到底啦 ~' */\n\tendMessage?: ReactNode;\n\t/** 加载中指示器组件,默认为 Spin 图标与 '正在加载更多...' */\n\tloadingIndicator?: ReactNode;\n\t/** 容器固定高度(传值时为局部滚动容器,不传时监听 window 全局滚动) */\n\theight?: number | string;\n\t/** 滚动容器 ref 或自定义对象 */\n\tscrollableTarget?: HTMLElement | (() => HTMLElement | null) | null;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst InfiniteScrollList: React.FC<InfiniteScrollListProps> = ({\n\tchildren,\n\thasMore,\n\tloading,\n\tonLoadMore,\n\tthreshold = 40,\n\tendMessage = '已经到底啦 ~',\n\tloadingIndicator,\n\theight,\n\tscrollableTarget,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst sentinelRef = useRef<HTMLDivElement>(null);\n\n\tconst handleLoadMore = useCallback(() => {\n\t\tif (!loading && hasMore) {\n\t\t\tonLoadMore();\n\t\t}\n\t}, [loading, hasMore, onLoadMore]);\n\n\t// 使用 IntersectionObserver 监听底部哨兵元素\n\tuseEffect(() => {\n\t\tconst sentinel = sentinelRef.current;\n\t\tif (!sentinel) return;\n\n\t\tconst targetEl =\n\t\t\ttypeof scrollableTarget === 'function'\n\t\t\t\t? scrollableTarget()\n\t\t\t\t: scrollableTarget || (height ? containerRef.current : null);\n\n\t\tconst observer = new IntersectionObserver(\n\t\t\t([entry]) => {\n\t\t\t\tif (entry.isIntersecting) {\n\t\t\t\t\thandleLoadMore();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\troot: targetEl || null,\n\t\t\t\trootMargin: `0px 0px ${threshold}px 0px`,\n\t\t\t\tthreshold: 0,\n\t\t\t},\n\t\t);\n\n\t\tobserver.observe(sentinel);\n\t\treturn () => observer.disconnect();\n\t}, [height, scrollableTarget, threshold, handleLoadMore]);\n\n\tconst defaultLoadingIndicator = (\n\t\t<div className=\"rpc_infinite_scroll_list_footer\">\n\t\t\t<LoadingOutlined style={{ fontSize: 16, color: '#1677ff' }} />\n\t\t\t<span>正在加载更多数据...</span>\n\t\t</div>\n\t);\n\n\tconst isLocalScroll = Boolean(height);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tclassName={`rpc_infinite_scroll_list ${\n\t\t\t\tisLocalScroll ? 'rpc_infinite_scroll_list_container' : ''\n\t\t\t} ${className}`}\n\t\t\tstyle={{\n\t\t\t\theight: height,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t>\n\t\t\t{children}\n\n\t\t\t{/* 底部哨兵元素 */}\n\t\t\t<div ref={sentinelRef} style={{ height: 1, margin: 0, padding: 0 }} />\n\n\t\t\t{/* 底部状态提示 */}\n\t\t\t{loading && (loadingIndicator || defaultLoadingIndicator)}\n\t\t\t{!hasMore && endMessage && (\n\t\t\t\t<div className=\"rpc_infinite_scroll_list_footer rpc_infinite_scroll_list_end\">\n\t\t\t\t\t{endMessage}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default InfiniteScrollList;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkMBOWSS4B_cjs = require('./chunk-MBOWSS4B.cjs');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
|
|
@@ -327,7 +327,7 @@ var CustomSplitter = (props) => {
|
|
|
327
327
|
if (isCollapsed || isNeighborCollapsed) {
|
|
328
328
|
return null;
|
|
329
329
|
}
|
|
330
|
-
const Icon = resolvedOrientation === "horizontal" ? direction === "start" ?
|
|
330
|
+
const Icon = resolvedOrientation === "horizontal" ? direction === "start" ? chunkMBOWSS4B_cjs.LeftOutlined : chunkMBOWSS4B_cjs.RightOutlined : direction === "start" ? chunkMBOWSS4B_cjs.UpOutlined : chunkMBOWSS4B_cjs.DownOutlined;
|
|
331
331
|
const isHorizontal = resolvedOrientation === "horizontal";
|
|
332
332
|
const isAlwaysShow = config.showCollapsibleIcon === true;
|
|
333
333
|
const isHoveredOrDragging = hoveredIndex === draggerIndex || draggingIndex === draggerIndex;
|
|
@@ -562,7 +562,7 @@ var CustomSplitter = (props) => {
|
|
|
562
562
|
if (!isAllowed || config.showCollapsibleIcon === false) {
|
|
563
563
|
return null;
|
|
564
564
|
}
|
|
565
|
-
const ExpandIcon = resolvedOrientation === "horizontal" ? isLeftOrTopCollapsed ?
|
|
565
|
+
const ExpandIcon = resolvedOrientation === "horizontal" ? isLeftOrTopCollapsed ? chunkMBOWSS4B_cjs.RightOutlined : chunkMBOWSS4B_cjs.LeftOutlined : isLeftOrTopCollapsed ? chunkMBOWSS4B_cjs.DownOutlined : chunkMBOWSS4B_cjs.UpOutlined;
|
|
566
566
|
const neighborIndex = isLeftOrTopCollapsed ? index + 1 : index;
|
|
567
567
|
const isHorizontal = resolvedOrientation === "horizontal";
|
|
568
568
|
const expandTitle = resolvedOrientation === "horizontal" ? isLeftOrTopCollapsed ? "\u5C55\u5F00\u5DE6\u4FA7\u9762\u677F" : "\u5C55\u5F00\u53F3\u4FA7\u9762\u677F" : isLeftOrTopCollapsed ? "\u5C55\u5F00\u4E0A\u65B9\u9762\u677F" : "\u5C55\u5F00\u4E0B\u65B9\u9762\u677F";
|
|
@@ -621,5 +621,5 @@ CustomSplitter.Panel = SplitterPanel;
|
|
|
621
621
|
var Splitter_default = CustomSplitter;
|
|
622
622
|
|
|
623
623
|
exports.Splitter_default = Splitter_default;
|
|
624
|
-
//# sourceMappingURL=chunk-
|
|
625
|
-
//# sourceMappingURL=chunk-
|
|
624
|
+
//# sourceMappingURL=chunk-6UKUAYN3.cjs.map
|
|
625
|
+
//# sourceMappingURL=chunk-6UKUAYN3.cjs.map
|