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
package/dist/index.js
CHANGED
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
export { TreeFilterPanel_default as TreeFilterPanel } from './chunk-
|
|
2
|
-
export { TreeTransfer_default as TreeTransfer } from './chunk-
|
|
3
|
-
export { TrendIndicator_default as TrendIndicator } from './chunk-
|
|
4
|
-
export { VideoPlayer_default as VideoPlayer } from './chunk-
|
|
5
|
-
export { VirtualList_default as VirtualList } from './chunk-
|
|
6
|
-
export { Watermark_default as Watermark } from './chunk-
|
|
7
|
-
export { SensitiveMask_default as SensitiveMask, maskSensitiveText } from './chunk-
|
|
1
|
+
export { TreeFilterPanel_default as TreeFilterPanel } from './chunk-5R2YXBXM.js';
|
|
2
|
+
export { TreeTransfer_default as TreeTransfer } from './chunk-QZZGBUW4.js';
|
|
3
|
+
export { TrendIndicator_default as TrendIndicator } from './chunk-RAF7I4A5.js';
|
|
4
|
+
export { VideoPlayer_default as VideoPlayer } from './chunk-CT66HLZ5.js';
|
|
5
|
+
export { VirtualList_default as VirtualList } from './chunk-2O2A5XYF.js';
|
|
6
|
+
export { Watermark_default as Watermark } from './chunk-5GLC2HU6.js';
|
|
7
|
+
export { SensitiveMask_default as SensitiveMask, maskSensitiveText } from './chunk-AFR7V4A4.js';
|
|
8
8
|
export { ShimmerSkeleton_default as ShimmerSkeleton } from './chunk-KCXXUUWC.js';
|
|
9
|
-
export { Splitter_default as Splitter } from './chunk-
|
|
9
|
+
export { Splitter_default as Splitter } from './chunk-JECYRODB.js';
|
|
10
10
|
export { SpotlightCard_default as SpotlightCard } from './chunk-WZ2GV4HA.js';
|
|
11
|
-
export { StatusTimeline_default as StatusTimeline } from './chunk-
|
|
12
|
-
export { TagInput_default as TagInput } from './chunk-
|
|
13
|
-
export { TextEllipsis_default as TextEllipsis } from './chunk-
|
|
11
|
+
export { StatusTimeline_default as StatusTimeline } from './chunk-YFHKH6HL.js';
|
|
12
|
+
export { TagInput_default as TagInput } from './chunk-V7IUSCQS.js';
|
|
13
|
+
export { TextEllipsis_default as TextEllipsis } from './chunk-HFPWBZID.js';
|
|
14
14
|
export { TiltCard_default as TiltCard } from './chunk-B4VXFHER.js';
|
|
15
|
-
export { NumericRangeInput_default as NumericRangeInput } from './chunk-
|
|
16
|
-
export { PasswordStrength_default as PasswordStrength, evaluatePasswordStrength } from './chunk-
|
|
17
|
-
export { PdfViewer_default as PdfViewer } from './chunk-
|
|
15
|
+
export { NumericRangeInput_default as NumericRangeInput } from './chunk-L7X3RVEY.js';
|
|
16
|
+
export { PasswordStrength_default as PasswordStrength, evaluatePasswordStrength } from './chunk-6FVAQECF.js';
|
|
17
|
+
export { PdfViewer_default as PdfViewer } from './chunk-MGUNFP6P.js';
|
|
18
18
|
export { PhotoViewer_default as PhotoViewer } from './chunk-3JJP4D5L.js';
|
|
19
|
-
export { QrCodeCard_default as QrCodeCard } from './chunk-
|
|
20
|
-
export { QuickDateRange_default as QuickDateRange } from './chunk-
|
|
21
|
-
export { ScrollTracker_default as ScrollTracker, StickyHeader } from './chunk-
|
|
22
|
-
export { SegmentedProgress_default as SegmentedProgress } from './chunk-
|
|
23
|
-
export { JsonTree_default as JsonTree } from './chunk-
|
|
24
|
-
export { KanbanBoard_default as KanbanBoard } from './chunk-
|
|
25
|
-
export { KeyValEditor_default as KeyValEditor } from './chunk-
|
|
26
|
-
export { Marquee_default as Marquee } from './chunk-
|
|
19
|
+
export { QrCodeCard_default as QrCodeCard } from './chunk-XOMV26WS.js';
|
|
20
|
+
export { QuickDateRange_default as QuickDateRange } from './chunk-WEGDIRDB.js';
|
|
21
|
+
export { ScrollTracker_default as ScrollTracker, StickyHeader } from './chunk-WN557PFJ.js';
|
|
22
|
+
export { SegmentedProgress_default as SegmentedProgress } from './chunk-MLYM5LAX.js';
|
|
23
|
+
export { JsonTree_default as JsonTree } from './chunk-5HIRDMZH.js';
|
|
24
|
+
export { KanbanBoard_default as KanbanBoard } from './chunk-HZERTFL6.js';
|
|
25
|
+
export { KeyValEditor_default as KeyValEditor } from './chunk-PUJJHD22.js';
|
|
26
|
+
export { Marquee_default as Marquee } from './chunk-3R3NOO4K.js';
|
|
27
27
|
export { Masonry_default as Masonry } from './chunk-ES3KKDLM.js';
|
|
28
|
-
export { MetricCard_default as MetricCard } from './chunk-
|
|
28
|
+
export { MetricCard_default as MetricCard } from './chunk-IBYFOFSS.js';
|
|
29
29
|
export { MiniSparkline_default as MiniSparkline } from './chunk-NNS4YN3C.js';
|
|
30
30
|
export { NumberStepper_default as NumberStepper } from './chunk-X2F2DVMB.js';
|
|
31
|
-
export { Fullscreen_default as Fullscreen } from './chunk-
|
|
31
|
+
export { Fullscreen_default as Fullscreen } from './chunk-XWXFENGT.js';
|
|
32
32
|
export { GradientText_default as GradientText } from './chunk-ZLHNRKOQ.js';
|
|
33
|
-
export { GuidedTour_default as GuidedTour } from './chunk-
|
|
33
|
+
export { GuidedTour_default as GuidedTour } from './chunk-IBOCJ2ZS.js';
|
|
34
34
|
export { HoverCard_default as HoverCard } from './chunk-6TKNFV4B.js';
|
|
35
|
-
export { ImageCropper_default as ImageCropper } from './chunk-
|
|
36
|
-
export { InfiniteScrollList_default as InfiniteScrollList } from './chunk-
|
|
37
|
-
export { JsonDiffViewer_default as JsonDiffViewer } from './chunk-
|
|
38
|
-
export { JsonEditor_default as JsonEditor } from './chunk-
|
|
39
|
-
export { DisabledBox_default as DisabledBox } from './chunk-
|
|
35
|
+
export { ImageCropper_default as ImageCropper } from './chunk-OKCQZO5E.js';
|
|
36
|
+
export { InfiniteScrollList_default as InfiniteScrollList } from './chunk-6IXVUD2M.js';
|
|
37
|
+
export { JsonDiffViewer_default as JsonDiffViewer } from './chunk-O2YTJPG4.js';
|
|
38
|
+
export { JsonEditor_default as JsonEditor } from './chunk-WEOMKZC6.js';
|
|
39
|
+
export { DisabledBox_default as DisabledBox } from './chunk-MC3NERDH.js';
|
|
40
40
|
export { DragSortList_default as DragSortList } from './chunk-EQ7S5SYM.js';
|
|
41
41
|
export { DualRangeSlider_default as DualRangeSlider } from './chunk-A4LXKZQ5.js';
|
|
42
|
-
export { EnvBadge_default as EnvBadge } from './chunk-
|
|
42
|
+
export { EnvBadge_default as EnvBadge } from './chunk-BRHXKRG6.js';
|
|
43
43
|
export { FileDropZone_default as FileDropZone } from './chunk-Y7A3WQQN.js';
|
|
44
|
-
export { FilePreviewer_default as FilePreviewer, inferFileType } from './chunk-
|
|
44
|
+
export { FilePreviewer_default as FilePreviewer, inferFileType } from './chunk-PJB7ADK6.js';
|
|
45
45
|
export { FilterChips_default as FilterChips } from './chunk-YXTLWTY4.js';
|
|
46
46
|
export { FlipCard_default as FlipCard } from './chunk-RIR43PO3.js';
|
|
47
|
-
export { CollapseBox_default as CollapseBox } from './chunk-
|
|
48
|
-
export { Color, ColorPicker_default as ColorPicker, generateColor } from './chunk-
|
|
49
|
-
export { ContextMenu_default as ContextMenu } from './chunk-
|
|
50
|
-
export { CountUp_default as CountUp } from './chunk-
|
|
51
|
-
export { CronPicker_default as CronPicker } from './chunk-
|
|
52
|
-
export { CopyButton_default as CopyButton } from './chunk-
|
|
53
|
-
export { DebounceSelect_default as DebounceSelect } from './chunk-
|
|
54
|
-
export { DiffViewer_default as DiffViewer } from './chunk-
|
|
55
|
-
export { ActivityLog_default as ActivityLog } from './chunk-
|
|
47
|
+
export { CollapseBox_default as CollapseBox } from './chunk-64LBDDZU.js';
|
|
48
|
+
export { Color, ColorPicker_default as ColorPicker, generateColor } from './chunk-BZXMWKD2.js';
|
|
49
|
+
export { ContextMenu_default as ContextMenu } from './chunk-LLWK5VKA.js';
|
|
50
|
+
export { CountUp_default as CountUp } from './chunk-OBK6XTUY.js';
|
|
51
|
+
export { CronPicker_default as CronPicker } from './chunk-PUTAVQJZ.js';
|
|
52
|
+
export { CopyButton_default as CopyButton } from './chunk-56TD4LDC.js';
|
|
53
|
+
export { DebounceSelect_default as DebounceSelect } from './chunk-EGZSSZBX.js';
|
|
54
|
+
export { DiffViewer_default as DiffViewer } from './chunk-BFQV5MYD.js';
|
|
55
|
+
export { ActivityLog_default as ActivityLog } from './chunk-IBI6AT5Z.js';
|
|
56
56
|
export { AnnouncementBar_default as AnnouncementBar } from './chunk-5YQVSOHK.js';
|
|
57
|
-
export { AudioPlayer_default as AudioPlayer } from './chunk-
|
|
58
|
-
import './chunk-
|
|
57
|
+
export { AudioPlayer_default as AudioPlayer } from './chunk-HUXPCMNP.js';
|
|
58
|
+
import './chunk-ISUXPTLV.js';
|
|
59
59
|
export { BadgeRibbon_default as BadgeRibbon } from './chunk-F36V2QTN.js';
|
|
60
60
|
export { BorderBeam_default as BorderBeam } from './chunk-J3IKUWXD.js';
|
|
61
|
-
export { CascadeDrawer_default as CascadeDrawer } from './chunk-
|
|
62
|
-
export { CodeSnippet_default as CodeSnippet } from './chunk-
|
|
61
|
+
export { CascadeDrawer_default as CascadeDrawer } from './chunk-6UTLBY6Y.js';
|
|
62
|
+
export { CodeSnippet_default as CodeSnippet } from './chunk-5VSEUDVY.js';
|
|
63
63
|
//# sourceMappingURL=index.js.map
|
|
64
64
|
//# sourceMappingURL=index.js.map
|
package/dist/src/icons.d.ts
CHANGED
|
@@ -33,38 +33,38 @@ export declare const FileOutlined: ({ style, className }: IconProps) => import("
|
|
|
33
33
|
export declare const FilePdfOutlined: ({ style, className }: IconProps) => import("react").JSX.Element;
|
|
34
34
|
export declare const FileImageOutlined: ({ style, className }: IconProps) => import("react").JSX.Element;
|
|
35
35
|
export declare const FileTextOutlined: ({ style, className }: IconProps) => import("react").JSX.Element;
|
|
36
|
-
export declare const EyeOutlined: ({ style, className, onClick }: IconProps & {
|
|
36
|
+
export declare const EyeOutlined: ({ style, className, onClick, }: IconProps & {
|
|
37
37
|
onClick?: (e: React.MouseEvent) => void;
|
|
38
38
|
}) => import("react").JSX.Element;
|
|
39
|
-
export declare const EyeInvisibleOutlined: ({ style, className, onClick }: IconProps & {
|
|
39
|
+
export declare const EyeInvisibleOutlined: ({ style, className, onClick, }: IconProps & {
|
|
40
40
|
onClick?: (e: React.MouseEvent) => void;
|
|
41
41
|
}) => import("react").JSX.Element;
|
|
42
|
-
export declare const PlayCircleOutlined: ({ style, className, onClick }: IconProps & {
|
|
42
|
+
export declare const PlayCircleOutlined: ({ style, className, onClick, }: IconProps & {
|
|
43
43
|
onClick?: (e: React.MouseEvent) => void;
|
|
44
44
|
}) => import("react").JSX.Element;
|
|
45
|
-
export declare const PauseCircleOutlined: ({ style, className, onClick }: IconProps & {
|
|
45
|
+
export declare const PauseCircleOutlined: ({ style, className, onClick, }: IconProps & {
|
|
46
46
|
onClick?: (e: React.MouseEvent) => void;
|
|
47
47
|
}) => import("react").JSX.Element;
|
|
48
|
-
export declare const UndoOutlined: ({ style, className, onClick }: IconProps & {
|
|
48
|
+
export declare const UndoOutlined: ({ style, className, onClick, }: IconProps & {
|
|
49
49
|
onClick?: (e: React.MouseEvent) => void;
|
|
50
50
|
}) => import("react").JSX.Element;
|
|
51
|
-
export declare const RedoOutlined: ({ style, className, onClick }: IconProps & {
|
|
51
|
+
export declare const RedoOutlined: ({ style, className, onClick, }: IconProps & {
|
|
52
52
|
onClick?: (e: React.MouseEvent) => void;
|
|
53
53
|
}) => import("react").JSX.Element;
|
|
54
|
-
export declare const ReloadOutlined: ({ style, className, onClick }: IconProps & {
|
|
54
|
+
export declare const ReloadOutlined: ({ style, className, onClick, }: IconProps & {
|
|
55
55
|
onClick?: (e: React.MouseEvent) => void;
|
|
56
56
|
}) => import("react").JSX.Element;
|
|
57
57
|
export declare const SoundOutlined: ({ style, className }: IconProps) => import("react").JSX.Element;
|
|
58
|
-
export declare const SendOutlined: ({ style, className, onClick }: IconProps & {
|
|
58
|
+
export declare const SendOutlined: ({ style, className, onClick, }: IconProps & {
|
|
59
59
|
onClick?: (e: React.MouseEvent) => void;
|
|
60
60
|
}) => import("react").JSX.Element;
|
|
61
|
-
export declare const LikeOutlined: ({ style, className, onClick }: IconProps & {
|
|
61
|
+
export declare const LikeOutlined: ({ style, className, onClick, }: IconProps & {
|
|
62
62
|
onClick?: (e: React.MouseEvent) => void;
|
|
63
63
|
}) => import("react").JSX.Element;
|
|
64
|
-
export declare const DislikeOutlined: ({ style, className, onClick }: IconProps & {
|
|
64
|
+
export declare const DislikeOutlined: ({ style, className, onClick, }: IconProps & {
|
|
65
65
|
onClick?: (e: React.MouseEvent) => void;
|
|
66
66
|
}) => import("react").JSX.Element;
|
|
67
|
-
export declare const StarFilled: ({ style, className, onClick }: IconProps & {
|
|
67
|
+
export declare const StarFilled: ({ style, className, onClick, }: IconProps & {
|
|
68
68
|
onClick?: (e: React.MouseEvent) => void;
|
|
69
69
|
}) => import("react").JSX.Element;
|
|
70
70
|
export {};
|
package/dist/src/index.d.ts
CHANGED
|
@@ -107,7 +107,7 @@ export type { NumberStepperProps } from '../NumberStepper';
|
|
|
107
107
|
export { default as JsonTree } from '../JsonTree';
|
|
108
108
|
export type { JsonTreeProps } from '../JsonTree';
|
|
109
109
|
export { default as CodeSnippet } from '../CodeSnippet';
|
|
110
|
-
export type { CodeSnippetProps } from '../CodeSnippet';
|
|
110
|
+
export type { CodeSnippetProps, CodeSnippetTheme } from '../CodeSnippet';
|
|
111
111
|
export { default as MiniSparkline } from '../MiniSparkline';
|
|
112
112
|
export type { MiniSparklineProps } from '../MiniSparkline';
|
|
113
113
|
export { default as FileDropZone } from '../FileDropZone';
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../VirtualList/index.tsx"],"names":["useState","useRef","useMemo","jsx"],"mappings":";;;;;;AAsBA,SAAS,WAAA,CAAe;AAAA,EACvB,QAAQ,EAAC;AAAA,EACT,UAAA,GAAa,EAAA;AAAA,EACb,MAAA,GAAS,GAAA;AAAA,EACT,UAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA,GAAS,CAAA;AAAA,EACT,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,EAAwB;AACvB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAiB,CAAC,CAAA;AACpD,EAAA,MAAM,YAAA,GAAeC,aAAuB,IAAI,CAAA;AAEhD,EAAA,MAAM,aAAa,KAAA,CAAM,MAAA;AACzB,EAAA,MAAM,cAAc,UAAA,GAAa,UAAA;AAGjC,EAAA,MAAM,EAAE,UAAA,EAAY,QAAA,EAAU,OAAA,EAAQ,GAAIC,cAAQ,MAAM;AACvD,IAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,SAAA,GAAY,UAAU,CAAA,GAAI,MAAM,CAAA;AACrE,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,UAAU,CAAA;AAClD,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,YAAY,KAAA,GAAQ,YAAA,GAAe,SAAS,CAAC,CAAA;AAClE,IAAA,MAAM,SAAS,KAAA,GAAQ,UAAA;AAEvB,IAAA,OAAO,EAAE,UAAA,EAAY,KAAA,EAAO,QAAA,EAAU,GAAA,EAAK,SAAS,MAAA,EAAO;AAAA,EAC5D,GAAG,CAAC,SAAA,EAAW,YAAY,MAAA,EAAQ,MAAA,EAAQ,UAAU,CAAC,CAAA;AAEtD,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,KAAA,CAAM,UAAA,EAAY,QAAQ,CAAA;AAErD,EAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAqC;AAC1D,IAAA,YAAA,CAAa,CAAA,CAAE,cAAc,SAAS,CAAA;AAAA,EACvC,CAAA;AAEA,EAAA,uBACCC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,GAAA,EAAK,YAAA;AAAA,MACL,QAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,oBAAoB,SAAS,CAAA,CAAA;AAAA,MACxC,KAAA,EAAO,EAAE,MAAA,EAAQ,GAAG,KAAA,EAAM;AAAA,MAE1B,QAAA,kBAAAA,cAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,SAAA,EAAU,0BAAA;AAAA,UACV,KAAA,EAAO;AAAA,YACN,MAAA,EAAQ,WAAA;AAAA,YACR,UAAA,EAAY;AAAA,WACb;AAAA,UAEC,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,EAAM,GAAA,KAAQ;AAChC,YAAA,MAAM,cAAc,UAAA,GAAa,GAAA;AACjC,YAAA,MAAM,GAAA,GAAM,YAAA,GAAe,YAAA,CAAa,IAAA,EAAM,WAAW,CAAA,GAAI,WAAA;AAE7D,YAAA,uBACCA,cAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEA,SAAA,EAAU,uBAAA;AAAA,gBACV,KAAA,EAAO,EAAE,MAAA,EAAQ,UAAA,EAAW;AAAA,gBAE3B,QAAA,EAAA,UAAA,CAAW,MAAM,WAAW;AAAA,eAAA;AAAA,cAJxB;AAAA,aAKN;AAAA,UAEF,CAAC;AAAA;AAAA;AACF;AAAA,GACD;AAEF;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-24ND5WB7.cjs","sourcesContent":["import React, { useState, useRef, useMemo, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface VirtualListProps<T> {\n\t/** 数据源数组 */\n\titems: T[];\n\t/** 单个列表项固定高度(像素),默认为 48 */\n\titemHeight?: number;\n\t/** 滚动容器可视高度(像素),默认为 360 */\n\theight?: number;\n\t/** 自定义渲染单个列表项 */\n\trenderItem: (item: T, index: number) => ReactNode;\n\t/** 提取唯一 Key */\n\tkeyExtractor?: (item: T, index: number) => string | number;\n\t/** 上下视口外额外渲染的缓冲项数量,默认为 5 */\n\tbuffer?: number;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction VirtualList<T>({\n\titems = [],\n\titemHeight = 48,\n\theight = 360,\n\trenderItem,\n\tkeyExtractor,\n\tbuffer = 5,\n\tclassName = '',\n\tstyle,\n}: VirtualListProps<T>) {\n\tconst [scrollTop, setScrollTop] = useState<number>(0);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\n\tconst totalCount = items.length;\n\tconst totalHeight = totalCount * itemHeight;\n\n\t// 计算当前可视区域的起止索引\n\tconst { startIndex, endIndex, offsetY } = useMemo(() => {\n\t\tconst start = Math.max(0, Math.floor(scrollTop / itemHeight) - buffer);\n\t\tconst visibleCount = Math.ceil(height / itemHeight);\n\t\tconst end = Math.min(totalCount, start + visibleCount + buffer * 2);\n\t\tconst offset = start * itemHeight;\n\n\t\treturn { startIndex: start, endIndex: end, offsetY: offset };\n\t}, [scrollTop, itemHeight, height, buffer, totalCount]);\n\n\tconst visibleItems = items.slice(startIndex, endIndex);\n\n\tconst handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n\t\tsetScrollTop(e.currentTarget.scrollTop);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tonScroll={handleScroll}\n\t\t\tclassName={`rpc_virtual_list ${className}`}\n\t\t\tstyle={{ height, ...style }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"rpc_virtual_list_content\"\n\t\t\t\tstyle={{\n\t\t\t\t\theight: totalHeight,\n\t\t\t\t\tpaddingTop: offsetY,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{visibleItems.map((item, idx) => {\n\t\t\t\t\tconst actualIndex = startIndex + idx;\n\t\t\t\t\tconst key = keyExtractor ? keyExtractor(item, actualIndex) : actualIndex;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\tclassName=\"rpc_virtual_list_item\"\n\t\t\t\t\t\t\tstyle={{ height: itemHeight }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderItem(item, actualIndex)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default VirtualList;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../TrendIndicator/index.tsx"],"names":[],"mappings":";;;AAsBA,IAAM,iBAAgD,CAAC;AAAA,EACtD,KAAA;AAAA,EACA,MAAA,GAAS,GAAA;AAAA,EACT,MAAA,GAAS,EAAA;AAAA,EACT,SAAA,GAAY,CAAA;AAAA,EACZ,IAAA,GAAO,QAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,IAAA;AACjC,EAAA,MAAM,aAAa,KAAA,GAAQ,CAAA;AAG3B,EAAA,IAAI,WAAA,GAAc,MAAA;AAClB,EAAA,IAAI,CAAC,MAAA,EAAQ;AACZ,IAAA,MAAM,MAAA,GAAS,OAAA,GAAU,CAAC,UAAA,GAAa,UAAA;AACvC,IAAA,WAAA,GAAc,SAAS,IAAA,GAAO,MAAA;AAAA,EAC/B;AAEA,EAAA,MAAM,eAAe,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,CAAE,QAAQ,SAAS,CAAA;AACtD,EAAA,MAAM,IAAA,GAAO,UAAA,GAAa,GAAA,GAAM,KAAA,GAAQ,IAAI,GAAA,GAAM,EAAA;AAElD,EAAA,uBACC,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACA,WAAW,CAAA,wCAAA,EAA2C,IAAI,CAAA,qBAAA,EAAwB,WAAW,IAAI,SAAS,CAAA,CAAA;AAAA,MAC1G,KAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAK,SAAA,EAAU,2BAAA,EACd,mBAAS,QAAA,GAAM,UAAA,GAAa,WAAM,QAAA,EACpC,CAAA;AAAA,6BACC,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,UAAA,MAAA;AAAA,UACA,IAAA;AAAA,UACA,YAAA;AAAA,UACA;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GACD;AAEF,CAAA;AAEA,IAAO,sBAAA,GAAQ","file":"chunk-2ARM7X7A.js","sourcesContent":["import React, { CSSProperties } from 'react';\nimport './index.less';\n\nexport interface TrendIndicatorProps {\n\t/** 变动数值(如 14.2 代表 +14.2%,-5.8 代表 -5.8%) */\n\tvalue: number;\n\t/** 数值后缀,默认为 '%' */\n\tsuffix?: string;\n\t/** 数值前缀 */\n\tprefix?: string;\n\t/** 保留小数位数,默认为 1 */\n\tprecision?: number;\n\t/** 展示模式:'filled' 填充色块 | 'outlined' 线框 | 'text' 纯文字,默认为 'filled' */\n\ttype?: 'filled' | 'outlined' | 'text';\n\t/** 是否反转红绿色彩规则(如成本/延时降低为绿色),默认为 false */\n\treverse?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TrendIndicator: React.FC<TrendIndicatorProps> = ({\n\tvalue,\n\tsuffix = '%',\n\tprefix = '',\n\tprecision = 1,\n\ttype = 'filled',\n\treverse = false,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst isZero = Math.abs(value) < 0.0001;\n\tconst isPositive = value > 0;\n\n\t// 判断颜色状态\n\tlet statusClass = 'flat';\n\tif (!isZero) {\n\t\tconst isGood = reverse ? !isPositive : isPositive;\n\t\tstatusClass = isGood ? 'up' : 'down';\n\t}\n\n\tconst formattedVal = Math.abs(value).toFixed(precision);\n\tconst sign = isPositive ? '+' : value < 0 ? '-' : '';\n\n\treturn (\n\t\t<span\n\t\t\tclassName={`rpc_trend_indicator rpc_trend_indicator_${type} rpc_trend_indicator_${statusClass} ${className}`}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<span className=\"rpc_trend_indicator_arrow\">\n\t\t\t\t{isZero ? '—' : isPositive ? '▲' : '▼'}\n\t\t\t</span>\n\t\t\t<span>\n\t\t\t\t{prefix}\n\t\t\t\t{sign}\n\t\t\t\t{formattedVal}\n\t\t\t\t{suffix}\n\t\t\t</span>\n\t\t</span>\n\t);\n};\n\nexport default TrendIndicator;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../GuidedTour/index.tsx"],"names":["currentStep"],"mappings":"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","file":"chunk-2ORGQ2IY.js","sourcesContent":["import React, { useState, useEffect, ReactNode, CSSProperties } from 'react';\nimport ReactDOM from 'react-dom';\nimport { CloseOutlined } from '../src/icons';\nimport './index.less';\n\nexport type TourPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface TourStep {\n\t/** 目标 DOM 节点选择器、DOM 对象或获取函数 */\n\ttarget: string | HTMLElement | (() => HTMLElement | null) | null;\n\t/** 引导步骤标题 */\n\ttitle: ReactNode;\n\t/** 引导步骤详细说明 */\n\tdescription: ReactNode;\n\t/** 气泡对齐方向,默认为 'bottom' */\n\tplacement?: TourPlacement;\n}\n\nexport interface GuidedTourProps {\n\t/** 引导步骤列表 */\n\tsteps: TourStep[];\n\t/** 是否开启引导 */\n\topen: boolean;\n\t/** 当前步数(受控,可选) */\n\tcurrent?: number;\n\t/** 步数改变回调 */\n\tonChange?: (current: number) => void;\n\t/** 关闭/跳过引导回调 */\n\tonClose?: () => void;\n\t/** 全部引导完成回调 */\n\tonFinish?: () => void;\n\t/** LocalStorage 存储已完成状态的 Key(若提供则完成或跳过后自动持久化记录) */\n\tstorageKey?: string;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst GuidedTour: React.FC<GuidedTourProps> = ({\n\tsteps = [],\n\topen,\n\tcurrent: controlledCurrent,\n\tonChange,\n\tonClose,\n\tonFinish,\n\tstorageKey,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalCurrent, setInternalCurrent] = useState<number>(0);\n\tconst currentStepIndex = controlledCurrent !== undefined ? controlledCurrent : internalCurrent;\n\n\tconst [targetRect, setTargetRect] = useState<DOMRect | null>(null);\n\n\t// 获取当前步骤的目标 DOM\n\tconst getTargetElement = (step: TourStep): HTMLElement | null => {\n\t\tif (!step || !step.target) return null;\n\t\tif (typeof step.target === 'function') {\n\t\t\treturn step.target();\n\t\t}\n\t\tif (typeof step.target === 'string') {\n\t\t\treturn document.querySelector(step.target);\n\t\t}\n\t\treturn step.target;\n\t};\n\n\t// 计算目标节点坐标\n\tuseEffect(() => {\n\t\tif (!open || steps.length === 0) return;\n\n\t\tconst currentStep = steps[currentStepIndex];\n\t\tif (!currentStep) return;\n\n\t\tconst el = getTargetElement(currentStep);\n\t\tif (el) {\n\t\t\tconst rect = el.getBoundingClientRect();\n\t\t\tsetTargetRect(rect);\n\t\t\t// 自动平滑滚动到可见区域\n\t\t\tel.scrollIntoView({ behavior: 'smooth', block: 'center' });\n\t\t} else {\n\t\t\tsetTargetRect(null);\n\t\t}\n\t}, [open, steps, currentStepIndex]);\n\n\tif (!open || steps.length === 0) return null;\n\n\tconst currentStep = steps[currentStepIndex];\n\tif (!currentStep) return null;\n\n\tconst handleNext = () => {\n\t\tif (currentStepIndex < steps.length - 1) {\n\t\t\tconst next = currentStepIndex + 1;\n\t\t\tif (controlledCurrent === undefined) setInternalCurrent(next);\n\t\t\tonChange?.(next);\n\t\t} else {\n\t\t\tif (storageKey) localStorage.setItem(storageKey, 'true');\n\t\t\tonFinish?.();\n\t\t\tonClose?.();\n\t\t}\n\t};\n\n\tconst handlePrev = () => {\n\t\tif (currentStepIndex > 0) {\n\t\t\tconst prev = currentStepIndex - 1;\n\t\t\tif (controlledCurrent === undefined) setInternalCurrent(prev);\n\t\t\tonChange?.(prev);\n\t\t}\n\t};\n\n\tconst handleSkip = () => {\n\t\tif (storageKey) localStorage.setItem(storageKey, 'true');\n\t\tonClose?.();\n\t};\n\n\t// 气泡卡片定位计算\n\tlet popoverTop = 100;\n\tlet popoverLeft = 100;\n\n\tif (targetRect) {\n\t\tconst placement = currentStep.placement || 'bottom';\n\t\tconst padding = 12;\n\n\t\tif (placement === 'bottom') {\n\t\t\tpopoverTop = targetRect.bottom + padding;\n\t\t\tpopoverLeft = targetRect.left;\n\t\t} else if (placement === 'top') {\n\t\t\tpopoverTop = targetRect.top - 180 - padding;\n\t\t\tpopoverLeft = targetRect.left;\n\t\t} else if (placement === 'left') {\n\t\t\tpopoverTop = targetRect.top;\n\t\t\tpopoverLeft = targetRect.left - 320 - padding;\n\t\t} else if (placement === 'right') {\n\t\t\tpopoverTop = targetRect.top;\n\t\t\tpopoverLeft = targetRect.right + padding;\n\t\t}\n\n\t\t// 视口防溢出修正\n\t\tpopoverLeft = Math.max(16, Math.min(window.innerWidth - 340, popoverLeft));\n\t\tpopoverTop = Math.max(16, Math.min(window.innerHeight - 200, popoverTop));\n\t}\n\n\treturn ReactDOM.createPortal(\n\t\t<div className={`rpc_guided_tour ${className}`} style={style}>\n\t\t\t{/* 镂空高亮遮罩层 */}\n\t\t\t{targetRect && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"rpc_guided_tour_highlight_box\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tleft: `${targetRect.left - 4}px`,\n\t\t\t\t\t\ttop: `${targetRect.top - 4}px`,\n\t\t\t\t\t\twidth: `${targetRect.width + 8}px`,\n\t\t\t\t\t\theight: `${targetRect.height + 8}px`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{/* 引导卡片 */}\n\t\t\t<div\n\t\t\t\tclassName=\"rpc_guided_tour_popover\"\n\t\t\t\tstyle={{\n\t\t\t\t\tleft: `${popoverLeft}px`,\n\t\t\t\t\ttop: `${popoverTop}px`,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"rpc_guided_tour_header\">\n\t\t\t\t\t<span className=\"rpc_guided_tour_title\">{currentStep.title}</span>\n\t\t\t\t\t<CloseOutlined\n\t\t\t\t\t\tstyle={{ cursor: 'pointer', color: '#8c8c8c' }}\n\t\t\t\t\t\tonClick={handleSkip}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"rpc_guided_tour_description\">{currentStep.description}</div>\n\n\t\t\t\t<div className=\"rpc_guided_tour_footer\">\n\t\t\t\t\t<span className=\"rpc_guided_tour_progress\">\n\t\t\t\t\t\t{currentStepIndex + 1} / {steps.length}\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<div className=\"rpc_guided_tour_actions\">\n\t\t\t\t\t\t{currentStepIndex > 0 && (\n\t\t\t\t\t\t\t<button type=\"button\" className=\"rpc_guided_tour_btn\" onClick={handlePrev}>\n\t\t\t\t\t\t\t\t上一步\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_guided_tour_btn rpc_guided_tour_btn_primary\"\n\t\t\t\t\t\t\tonClick={handleNext}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currentStepIndex === steps.length - 1 ? '完成' : '下一步'}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument.body,\n\t);\n};\n\nexport default GuidedTour;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../QrCodeCard/index.tsx"],"names":["useRef","useEffect","jsxs","jsx","ReloadOutlined","LoadingOutlined"],"mappings":"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","file":"chunk-4DUMEO5E.cjs","sourcesContent":["import React, { useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { ReloadOutlined, LoadingOutlined } from '../src/icons';\nimport './index.less';\n\nexport type QrCodeStatus = 'active' | 'expired' | 'loading';\n\nexport interface QrCodeCardProps {\n\t/** 二维码内容或跳转 URL */\n\tvalue: string;\n\t/** 二维码尺寸(像素),默认为 160 */\n\tsize?: number;\n\t/** 中心嵌入的 Logo 图标地址 */\n\ticon?: string;\n\t/** 二维码状态:'active' 正常,'expired' 已过期,'loading' 生成中,默认为 'active' */\n\tstatus?: QrCodeStatus;\n\t/** 卡片标题说明 */\n\ttitle?: ReactNode;\n\t/** 卡片副标题或扫码提示 */\n\tdescription?: ReactNode;\n\t/** 是否显示一键下载二维码按钮,默认为 false */\n\tdownloadable?: boolean;\n\t/** 点击过期遮罩刷新时的回调 */\n\tonRefresh?: () => void;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 简易轻量伪随机但确定性的二维码图案矩阵绘制算法(保证零外部大库)\nfunction drawQrCode(canvas: HTMLCanvasElement, text: string, size: number) {\n\tconst ctx = canvas.getContext('2d');\n\tif (!ctx) return;\n\n\tconst dpr = window.devicePixelRatio || 1;\n\tcanvas.width = size * dpr;\n\tcanvas.height = size * dpr;\n\tctx.scale(dpr, dpr);\n\n\tctx.fillStyle = '#ffffff';\n\tctx.fillRect(0, 0, size, size);\n\n\tconst modules = 25; // 25x25 矩阵\n\tconst cellSize = size / modules;\n\n\tctx.fillStyle = '#000000';\n\n\t// 绘制三个角的定位方块 (Position Detection Patterns)\n\tconst drawPositionPattern = (x: number, y: number) => {\n\t\t// 外 7x7\n\t\tctx.fillRect(x * cellSize, y * cellSize, 7 * cellSize, 7 * cellSize);\n\t\t// 中间挖空 5x5\n\t\tctx.fillStyle = '#ffffff';\n\t\tctx.fillRect((x + 1) * cellSize, (y + 1) * cellSize, 5 * cellSize, 5 * cellSize);\n\t\t// 中心实心 3x3\n\t\tctx.fillStyle = '#000000';\n\t\tctx.fillRect((x + 2) * cellSize, (y + 2) * cellSize, 3 * cellSize, 3 * cellSize);\n\t};\n\n\tdrawPositionPattern(0, 0);\n\tdrawPositionPattern(modules - 7, 0);\n\tdrawPositionPattern(0, modules - 7);\n\n\t// 基于文本字符串的 hash 填充数据点\n\tlet hash = 0;\n\tfor (let i = 0; i < text.length; i++) {\n\t\thash = (hash << 5) - hash + text.charCodeAt(i);\n\t\thash |= 0;\n\t}\n\n\tfor (let r = 0; r < modules; r++) {\n\t\tfor (let c = 0; c < modules; c++) {\n\t\t\t// 跳过三个角的位置\n\t\t\tif (\n\t\t\t\t(r < 8 && c < 8) ||\n\t\t\t\t(r < 8 && c >= modules - 8) ||\n\t\t\t\t(r >= modules - 8 && c < 8)\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst seed = (r * 31 + c * 17 + hash) % 100;\n\t\t\tif (Math.abs(seed) % 2 === 0) {\n\t\t\t\tctx.fillStyle = '#000000';\n\t\t\t\tctx.fillRect(c * cellSize, r * cellSize, cellSize - 0.2, cellSize - 0.2);\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst QrCodeCard: React.FC<QrCodeCardProps> = ({\n\tvalue,\n\tsize = 160,\n\ticon,\n\tstatus = 'active',\n\ttitle,\n\tdescription,\n\tdownloadable = false,\n\tonRefresh,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst canvasRef = useRef<HTMLCanvasElement>(null);\n\n\tuseEffect(() => {\n\t\tif (canvasRef.current && value) {\n\t\t\tdrawQrCode(canvasRef.current, value, size);\n\t\t}\n\t}, [value, size]);\n\n\tconst handleDownload = () => {\n\t\tif (!canvasRef.current) return;\n\t\tconst url = canvasRef.current.toDataURL('image/png');\n\t\tconst a = document.createElement('a');\n\t\ta.href = url;\n\t\ta.download = `qrcode-${Date.now()}.png`;\n\t\ta.click();\n\t};\n\n\treturn (\n\t\t<div className={`rpc_qrcode_card ${className}`} style={style}>\n\t\t\t<div className=\"rpc_qrcode_card_wrap\" style={{ width: size, height: size }}>\n\t\t\t\t<canvas\n\t\t\t\t\tref={canvasRef}\n\t\t\t\t\tclassName=\"rpc_qrcode_card_canvas\"\n\t\t\t\t\tstyle={{ width: size, height: size }}\n\t\t\t\t/>\n\n\t\t\t\t{/* 嵌入中心 Logo */}\n\t\t\t\t{icon && status === 'active' && (\n\t\t\t\t\t<img src={icon} alt=\"Logo\" className=\"rpc_qrcode_card_logo\" />\n\t\t\t\t)}\n\n\t\t\t\t{/* 过期或加载中蒙层 */}\n\t\t\t\t{status === 'expired' && (\n\t\t\t\t\t<div className=\"rpc_qrcode_card_mask\" onClick={onRefresh}>\n\t\t\t\t\t\t<span>二维码已失效</span>\n\t\t\t\t\t\t<button type=\"button\" className=\"rpc_qrcode_card_refresh_btn\">\n\t\t\t\t\t\t\t<ReloadOutlined />\n\t\t\t\t\t\t\t<span>点击刷新</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{status === 'loading' && (\n\t\t\t\t\t<div className=\"rpc_qrcode_card_mask rpc_qrcode_card_mask_loading\">\n\t\t\t\t\t\t<LoadingOutlined style={{ fontSize: 28, color: '#1677ff' }} />\n\t\t\t\t\t\t<span className=\"rpc_qrcode_card_mask_text\">加载中...</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* 标题说明 */}\n\t\t\t{(title || description) && (\n\t\t\t\t<div className=\"rpc_qrcode_card_info\">\n\t\t\t\t\t{title && <span className=\"rpc_qrcode_card_title\">{title}</span>}\n\t\t\t\t\t{description && <span className=\"rpc_qrcode_card_description\">{description}</span>}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 下载链接 */}\n\t\t\t{downloadable && status === 'active' && (\n\t\t\t\t<span className=\"rpc_qrcode_card_download\" onClick={handleDownload}>\n\t\t\t\t\t下载二维码\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default QrCodeCard;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../FilePreviewer/index.tsx"],"names":["useState","useEffect","FileImageOutlined","FilePdfOutlined","FileTextOutlined","FileOutlined","jsx","jsxs","DownloadOutlined","ReactDOM","Fragment","ZoomInOutlined","ZoomOutOutlined","RotateRightOutlined","CloseOutlined"],"mappings":"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","file":"chunk-4GQ3X7MG.cjs","sourcesContent":["import React, { useState, useEffect, ReactNode, CSSProperties } from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n\tCloseOutlined,\n\tRotateRightOutlined,\n\tZoomInOutlined,\n\tZoomOutOutlined,\n\tDownloadOutlined,\n\tFilePdfOutlined,\n\tFileImageOutlined,\n\tFileTextOutlined,\n\tFileOutlined,\n} from '../src/icons';\nimport './index.less';\n\nexport type FileType = 'image' | 'video' | 'audio' | 'pdf' | 'text' | 'unknown';\n\nexport interface FileItem {\n\t/** 文件访问 URL 或 Base64 */\n\turl: string;\n\t/** 文件名称 */\n\tname?: string;\n\t/** 文件类型(如不传则根据文件名后缀或 URL 自动推断) */\n\tfileType?: FileType;\n\t/** 文件大小描述(如 '2.4 MB') */\n\tsize?: string;\n\t/** 纯文本内容(针对直接传入 text 字符串预览) */\n\ttextContent?: string;\n}\n\nexport interface FilePreviewerProps {\n\t/** 是否打开预览弹窗 */\n\topen: boolean;\n\t/** 当前预览的文件对象或 URL 字符串 */\n\tfile?: FileItem | string | null;\n\t/** 关闭弹窗回调 */\n\tonCancel?: () => void;\n\t/** 自定义下载行为(不传时使用默认浏览器下载) */\n\tonDownload?: (file: FileItem) => void;\n\t/** 自定义标题栏右侧额外操作按钮 */\n\textraActions?: ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 根据文件名或 URL 后缀推断文件类型\nexport function inferFileType(urlOrName: string): FileType {\n\tif (!urlOrName) return 'unknown';\n\tconst clean = urlOrName.split('?')[0].split('#')[0].toLowerCase();\n\tconst ext = clean.substring(clean.lastIndexOf('.') + 1);\n\n\tif (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp', 'ico'].includes(ext)) {\n\t\treturn 'image';\n\t}\n\tif (['mp4', 'webm', 'ogg', 'mov', 'mkv'].includes(ext)) {\n\t\treturn 'video';\n\t}\n\tif (['mp3', 'wav', 'aac', 'flac', 'm4a'].includes(ext)) {\n\t\treturn 'audio';\n\t}\n\tif (['pdf'].includes(ext)) {\n\t\treturn 'pdf';\n\t}\n\tif (['txt', 'json', 'js', 'ts', 'jsx', 'tsx', 'html', 'css', 'less', 'md', 'log', 'xml'].includes(ext)) {\n\t\treturn 'text';\n\t}\n\treturn 'unknown';\n}\n\nconst FilePreviewer: React.FC<FilePreviewerProps> & {\n\tpreview: (options: FileItem) => { close: () => void };\n} = ({\n\topen,\n\tfile,\n\tonCancel,\n\tonDownload,\n\textraActions,\n\tclassName = '',\n\tstyle,\n}) => {\n\t// 图片控制状态\n\tconst [imageScale, setImageScale] = useState<number>(1);\n\tconst [imageRotate, setImageRotate] = useState<number>(0);\n\n\tuseEffect(() => {\n\t\tif (open) {\n\t\t\tsetImageScale(1);\n\t\t\tsetImageRotate(0);\n\t\t}\n\t}, [open, file]);\n\n\tif (!open || !file) return null;\n\n\tconst currentFile: FileItem =\n\t\ttypeof file === 'string'\n\t\t\t? { url: file, name: file.substring(file.lastIndexOf('/') + 1) }\n\t\t\t: file;\n\n\tconst type: FileType = currentFile.fileType || inferFileType(currentFile.name || currentFile.url);\n\n\t// 默认下载处理\n\tconst handleDefaultDownload = () => {\n\t\tif (onDownload) {\n\t\t\tonDownload(currentFile);\n\t\t\treturn;\n\t\t}\n\t\tconst a = document.createElement('a');\n\t\ta.href = currentFile.url;\n\t\ta.download = currentFile.name || 'download';\n\t\ta.target = '_blank';\n\t\tdocument.body.appendChild(a);\n\t\ta.click();\n\t\ta.remove();\n\t};\n\n\t// 渲染文件图标\n\tconst renderFileIcon = () => {\n\t\tswitch (type) {\n\t\t\tcase 'image':\n\t\t\t\treturn <FileImageOutlined style={{ color: '#1677ff' }} />;\n\t\t\tcase 'pdf':\n\t\t\t\treturn <FilePdfOutlined style={{ color: '#ff4d4f' }} />;\n\t\t\tcase 'text':\n\t\t\t\treturn <FileTextOutlined style={{ color: '#52c41a' }} />;\n\t\t\tdefault:\n\t\t\t\treturn <FileOutlined style={{ color: '#8c8c8c' }} />;\n\t\t}\n\t};\n\n\t// 渲染主体内容\n\tconst renderBodyContent = () => {\n\t\tswitch (type) {\n\t\t\tcase 'image':\n\t\t\t\treturn (\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={currentFile.url}\n\t\t\t\t\t\talt={currentFile.name || 'Preview'}\n\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_image\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\ttransform: `scale(${imageScale}) rotate(${imageRotate}deg)`,\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase 'video':\n\t\t\t\treturn (\n\t\t\t\t\t<video\n\t\t\t\t\t\tsrc={currentFile.url}\n\t\t\t\t\t\tcontrols\n\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_media\"\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase 'audio':\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"rpc_file_previewer_modal_audio_wrap\">\n\t\t\t\t\t\t<div style={{ fontSize: 48 }}>🎵</div>\n\t\t\t\t\t\t<div style={{ fontSize: 16, fontWeight: 600 }}>{currentFile.name || '音频播放'}</div>\n\t\t\t\t\t\t<audio src={currentFile.url} controls autoPlay style={{ width: 320 }} />\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\tcase 'pdf':\n\t\t\t\treturn (\n\t\t\t\t\t<iframe\n\t\t\t\t\t\tsrc={currentFile.url}\n\t\t\t\t\t\ttitle={currentFile.name || 'PDF Preview'}\n\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_iframe\"\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase 'text':\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"rpc_file_previewer_modal_text_wrap\">\n\t\t\t\t\t\t{currentFile.textContent || '正在加载文件内容...'}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"rpc_file_previewer_modal_fallback_card\">\n\t\t\t\t\t\t<div style={{ fontSize: 48, color: '#8c8c8c' }}>📦</div>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<h4 style={{ margin: '0 0 6px 0', fontSize: 16, color: '#1f1f1f' }}>\n\t\t\t\t\t\t\t\t{currentFile.name || '未知文件'}\n\t\t\t\t\t\t\t</h4>\n\t\t\t\t\t\t\t<p style={{ margin: 0, color: '#8c8c8c', fontSize: 13 }}>\n\t\t\t\t\t\t\t\t该格式暂不支持直接在线预览,请下载后在本地查看。{currentFile.size ? `(${currentFile.size})` : ''}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={handleDefaultDownload}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\tgap: 6,\n\t\t\t\t\t\t\t\tpadding: '8px 20px',\n\t\t\t\t\t\t\t\tbackground: '#1677ff',\n\t\t\t\t\t\t\t\tcolor: '#fff',\n\t\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\t\tborderRadius: 6,\n\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DownloadOutlined /> 立即下载\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t}\n\t};\n\n\treturn ReactDOM.createPortal(\n\t\t<div className={`rpc_file_previewer_modal ${className}`} onClick={onCancel} style={style}>\n\t\t\t<div className=\"rpc_file_previewer_modal_card\" onClick={(e) => e.stopPropagation()}>\n\t\t\t\t{/* 顶部标题栏与工具栏 */}\n\t\t\t\t<div className=\"rpc_file_previewer_modal_header\">\n\t\t\t\t\t<div className=\"rpc_file_previewer_modal_title\">\n\t\t\t\t\t\t{renderFileIcon()}\n\t\t\t\t\t\t<span>{currentFile.name || '文件预览'}</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"rpc_file_previewer_modal_actions\">\n\t\t\t\t\t\t{type === 'image' && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_action_btn\"\n\t\t\t\t\t\t\t\t\tonClick={() => setImageScale((s) => Math.min(s + 0.2, 3))}\n\t\t\t\t\t\t\t\t\ttitle=\"放大\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ZoomInOutlined />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_action_btn\"\n\t\t\t\t\t\t\t\t\tonClick={() => setImageScale((s) => Math.max(s - 0.2, 0.4))}\n\t\t\t\t\t\t\t\t\ttitle=\"缩小\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ZoomOutOutlined />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_action_btn\"\n\t\t\t\t\t\t\t\t\tonClick={() => setImageRotate((r) => (r + 90) % 360)}\n\t\t\t\t\t\t\t\t\ttitle=\"顺时针旋转90°\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<RotateRightOutlined />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_action_btn\"\n\t\t\t\t\t\t\tonClick={handleDefaultDownload}\n\t\t\t\t\t\t\ttitle=\"下载文件\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DownloadOutlined />\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t{extraActions}\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_action_btn\"\n\t\t\t\t\t\t\tonClick={onCancel}\n\t\t\t\t\t\t\ttitle=\"关闭预览 (ESC)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<CloseOutlined />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* 预览主体内容区域 */}\n\t\t\t\t<div className=\"rpc_file_previewer_modal_body\">{renderBodyContent()}</div>\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument.body,\n\t);\n};\n\n// 命令式调用方法\nFilePreviewer.preview = (options: FileItem) => {\n\tconst div = document.createElement('div');\n\tdocument.body.appendChild(div);\n\n\tconst close = () => {\n\t\tReactDOM.render(<></>, div);\n\t\tdiv.remove();\n\t};\n\n\tReactDOM.render(\n\t\t<FilePreviewer open={true} file={options} onCancel={close} />,\n\t\tdiv,\n\t);\n\n\treturn { close };\n};\n\nexport default FilePreviewer;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../MetricCard/index.tsx"],"names":[],"mappings":"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","file":"chunk-4VGH44DT.js","sourcesContent":["import React, { ReactNode, CSSProperties } from 'react';\nimport CountUp from '../CountUp';\nimport './index.less';\n\nexport interface MetricCardProps {\n\t/** 卡片标题 */\n\ttitle: ReactNode;\n\t/** 指标数值(若是数字则自动平滑滚动) */\n\tvalue: number | string;\n\t/** 数值前缀(如 '¥') */\n\tprefix?: ReactNode;\n\t/** 数值后缀(如 '元' / '%') */\n\tsuffix?: ReactNode;\n\t/** 趋势方向:'up' 上升(绿色),'down' 下降(红色) */\n\ttrend?: 'up' | 'down';\n\t/** 趋势数值说明(如 '+18.5%' 或 '-3.2%') */\n\ttrendValue?: ReactNode;\n\t/** 趋势比较文本说明(如 '较上月') */\n\ttrendLabel?: ReactNode;\n\t/** 迷你折线图数据数组(如 [12, 18, 15, 26, 32, 40]) */\n\tchartData?: number[];\n\t/** 折线图颜色,默认为 '#1677ff' */\n\tchartColor?: string;\n\t/** 底部说明节点 */\n\tfooter?: ReactNode;\n\t/** 右上角额外操作节点 */\n\textra?: ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 自动生成 SVG Sparkline 迷你平滑路径\nfunction generateSparklinePath(data: number[], width: number = 200, height: number = 36) {\n\tif (!data || data.length < 2) return { linePath: '', fillPath: '' };\n\n\tconst min = Math.min(...data);\n\tconst max = Math.max(...data);\n\tconst range = max - min || 1;\n\n\tconst padding = 2;\n\tconst usableHeight = height - padding * 2;\n\n\tconst points = data.map((val, idx) => {\n\t\tconst x = (idx / (data.length - 1)) * width;\n\t\tconst y = height - padding - ((val - min) / range) * usableHeight;\n\t\treturn `${x.toFixed(1)},${y.toFixed(1)}`;\n\t});\n\n\tconst linePath = `M ${points.join(' L ')}`;\n\tconst fillPath = `M ${points[0]} L ${points.join(' L ')} L ${width},${height} L 0,${height} Z`;\n\n\treturn { linePath, fillPath };\n}\n\nconst MetricCard: React.FC<MetricCardProps> = ({\n\ttitle,\n\tvalue,\n\tprefix,\n\tsuffix,\n\ttrend,\n\ttrendValue,\n\ttrendLabel,\n\tchartData,\n\tchartColor = '#1677ff',\n\tfooter,\n\textra,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst isNumeric = typeof value === 'number';\n\tconst { linePath, fillPath } = chartData ? generateSparklinePath(chartData) : { linePath: '', fillPath: '' };\n\n\treturn (\n\t\t<div className={`rpc_metric_card ${className}`} style={style}>\n\t\t\t{/* 头部标题与操作 */}\n\t\t\t<div className=\"rpc_metric_card_header\">\n\t\t\t\t<span className=\"rpc_metric_card_title\">{title}</span>\n\t\t\t\t{extra && <div>{extra}</div>}\n\t\t\t</div>\n\n\t\t\t{/* 主体数值与趋势 */}\n\t\t\t<div className=\"rpc_metric_card_body\">\n\t\t\t\t<div className=\"rpc_metric_card_value_wrap\">\n\t\t\t\t\t{prefix && <span className=\"rpc_metric_card_prefix\">{prefix}</span>}\n\t\t\t\t\t<span className=\"rpc_metric_card_value\">\n\t\t\t\t\t\t{isNumeric ? <CountUp end={value as number} duration={1.2} /> : value}\n\t\t\t\t\t</span>\n\t\t\t\t\t{suffix && <span className=\"rpc_metric_card_suffix\">{suffix}</span>}\n\t\t\t\t</div>\n\n\t\t\t\t{trend && (\n\t\t\t\t\t<div className={`rpc_metric_card_trend rpc_metric_card_trend_${trend}`}>\n\t\t\t\t\t\t<span>{trend === 'up' ? '▲' : '▼'}</span>\n\t\t\t\t\t\t<span>{trendValue}</span>\n\t\t\t\t\t\t{trendLabel && <span style={{ color: '#8c8c8c', fontWeight: 400, marginLeft: 2 }}>{trendLabel}</span>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* 微折线 Sparkline 图 */}\n\t\t\t{chartData && chartData.length > 1 && (\n\t\t\t\t<div className=\"rpc_metric_card_sparkline\">\n\t\t\t\t\t<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 200 36\" preserveAspectRatio=\"none\">\n\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t<linearGradient id={`grad-${chartColor}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n\t\t\t\t\t\t\t\t<stop offset=\"0%\" stopColor={chartColor} stopOpacity=\"0.25\" />\n\t\t\t\t\t\t\t\t<stop offset=\"100%\" stopColor={chartColor} stopOpacity=\"0\" />\n\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t</defs>\n\t\t\t\t\t\t<path d={fillPath} fill={`url(#grad-${chartColor})`} />\n\t\t\t\t\t\t<path d={linePath} fill=\"none\" stroke={chartColor} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 底部备注 */}\n\t\t\t{footer && <div className=\"rpc_metric_card_footer\">{footer}</div>}\n\t\t</div>\n\t);\n};\n\nexport default MetricCard;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../PdfViewer/index.tsx"],"names":["useState","jsxs","jsx","ZoomOutOutlined","ZoomInOutlined","RotateRightOutlined","DownloadOutlined"],"mappings":"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","file":"chunk-4YPT2HUD.cjs","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport { ZoomInOutlined, ZoomOutOutlined, RotateRightOutlined, DownloadOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface PdfViewerProps {\n\t/** PDF 文件 URL 地址 */\n\tsrc: string;\n\t/** 文档标题 */\n\ttitle?: ReactNode;\n\t/** 宽度,默认为 '100%' */\n\twidth?: number | string;\n\t/** 高度,默认为 500 */\n\theight?: number | string;\n\t/** 是否显示下载按钮,默认为 true */\n\tshowDownload?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst PdfViewer: React.FC<PdfViewerProps> = ({\n\tsrc,\n\ttitle = 'PDF Document Preview',\n\twidth = '100%',\n\theight = 500,\n\tshowDownload = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [zoom, setZoom] = useState<number>(100);\n\tconst [rotation, setRotation] = useState<number>(0);\n\n\tconst handleZoomIn = () => {\n\t\tsetZoom((prev) => Math.min(200, prev + 15));\n\t};\n\n\tconst handleZoomOut = () => {\n\t\tsetZoom((prev) => Math.max(50, prev - 15));\n\t};\n\n\tconst handleRotate = () => {\n\t\tsetRotation((prev) => (prev + 90) % 360);\n\t};\n\n\treturn (\n\t\t<div className={`rpc_pdf_viewer ${className}`} style={{ width, height, ...style }}>\n\t\t\t{/* 顶部工具栏 */}\n\t\t\t<div className=\"rpc_pdf_viewer_toolbar\">\n\t\t\t\t<span className=\"rpc_pdf_viewer_title\">{title}</span>\n\n\t\t\t\t<div className=\"rpc_pdf_viewer_actions\">\n\t\t\t\t\t<button type=\"button\" className=\"rpc_pdf_viewer_btn\" onClick={handleZoomOut} title=\"缩小\">\n\t\t\t\t\t\t<ZoomOutOutlined />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<span style={{ fontSize: 12, minWidth: 40, textAlign: 'center' }}>{zoom}%</span>\n\n\t\t\t\t\t<button type=\"button\" className=\"rpc_pdf_viewer_btn\" onClick={handleZoomIn} title=\"放大\">\n\t\t\t\t\t\t<ZoomInOutlined />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<button type=\"button\" className=\"rpc_pdf_viewer_btn\" onClick={handleRotate} title=\"顺时针旋转 90°\">\n\t\t\t\t\t\t<RotateRightOutlined />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t{showDownload && (\n\t\t\t\t\t\t<a href={src} download className=\"rpc_pdf_viewer_btn\" title=\"下载 PDF\">\n\t\t\t\t\t\t\t<DownloadOutlined />\n\t\t\t\t\t\t\t<span>下载</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* PDF 内容嵌入容器 */}\n\t\t\t<div className=\"rpc_pdf_viewer_body\">\n\t\t\t\t<iframe\n\t\t\t\t\tsrc={`${src}#toolbar=0&navpanes=0`}\n\t\t\t\t\ttitle=\"PDF Preview Frame\"\n\t\t\t\t\tclassName=\"rpc_pdf_viewer_frame\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttransform: `scale(${zoom / 100}) rotate(${rotation}deg)`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default PdfViewer;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../KanbanBoard/index.tsx"],"names":["useState","jsx","jsxs"],"mappings":"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","file":"chunk-5GCEQDBM.cjs","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface KanbanColumn<T> {\n\tid: string;\n\ttitle: string;\n\tcolor?: string;\n\titems: T[];\n}\n\nexport interface KanbanBoardProps<T> {\n\t/** 泳道列数据 */\n\tcolumns: KanbanColumn<T>[];\n\t/** 提取卡片唯一 Key */\n\tkeyExtractor: (item: T) => string;\n\t/** 自定义渲染单个卡片 */\n\trenderCard: (item: T, columnId: string) => ReactNode;\n\t/** 卡片拖拽移动完成回调 */\n\tonCardMove?: (\n\t\tcardId: string,\n\t\tsourceColId: string,\n\t\ttargetColId: string,\n\t\tnewIndex: number,\n\t) => void;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction KanbanBoard<T>({\n\tcolumns,\n\tkeyExtractor,\n\trenderCard,\n\tonCardMove,\n\tclassName = '',\n\tstyle,\n}: KanbanBoardProps<T>) {\n\tconst [draggingCardId, setDraggingCardId] = useState<string | null>(null);\n\tconst [sourceColumnId, setSourceColumnId] = useState<string | null>(null);\n\tconst [dragOverColumnId, setDragOverColumnId] = useState<string | null>(null);\n\n\tconst handleDragStart = (\n\t\te: React.DragEvent<HTMLDivElement>,\n\t\tcardId: string,\n\t\tcolId: string,\n\t) => {\n\t\tsetDraggingCardId(cardId);\n\t\tsetSourceColumnId(colId);\n\t\te.dataTransfer.setData('text/plain', JSON.stringify({ cardId, colId }));\n\t\te.dataTransfer.effectAllowed = 'move';\n\t};\n\n\tconst handleDragEnd = () => {\n\t\tsetDraggingCardId(null);\n\t\tsetSourceColumnId(null);\n\t\tsetDragOverColumnId(null);\n\t};\n\n\tconst handleDragOverCol = (e: React.DragEvent<HTMLDivElement>, colId: string) => {\n\t\te.preventDefault();\n\t\te.dataTransfer.dropEffect = 'move';\n\t\tif (dragOverColumnId !== colId) {\n\t\t\tsetDragOverColumnId(colId);\n\t\t}\n\t};\n\n\tconst handleDropOnCol = (\n\t\te: React.DragEvent<HTMLDivElement>,\n\t\ttargetColId: string,\n\t\ttargetIndex?: number,\n\t) => {\n\t\te.preventDefault();\n\t\tif (!draggingCardId || !sourceColumnId) return;\n\n\t\tconst targetColumn = columns.find((c) => c.id === targetColId);\n\t\tconst newIdx = targetIndex !== undefined ? targetIndex : targetColumn ? targetColumn.items.length : 0;\n\n\t\tonCardMove?.(draggingCardId, sourceColumnId, targetColId, newIdx);\n\t\thandleDragEnd();\n\t};\n\n\treturn (\n\t\t<div className={`rpc_kanban_board ${className}`} style={style}>\n\t\t\t{columns.map((col) => {\n\t\t\t\tconst isOver = dragOverColumnId === col.id;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={col.id}\n\t\t\t\t\t\tclassName={`rpc_kanban_board_column ${\n\t\t\t\t\t\t\tisOver ? 'rpc_kanban_board_column_dragover' : ''\n\t\t\t\t\t\t}`}\n\t\t\t\t\t\tonDragOver={(e) => handleDragOverCol(e, col.id)}\n\t\t\t\t\t\tonDrop={(e) => handleDropOnCol(e, col.id)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{/* 列头部 */}\n\t\t\t\t\t\t<div className=\"rpc_kanban_board_column_header\">\n\t\t\t\t\t\t\t<div className=\"rpc_kanban_board_column_title_wrap\">\n\t\t\t\t\t\t\t\t{col.color && (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_kanban_board_column_dot\"\n\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: col.color }}\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<span>{col.title}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span className=\"rpc_kanban_board_column_count\">\n\t\t\t\t\t\t\t\t{col.items.length}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t{/* 卡片列表 */}\n\t\t\t\t\t\t<div className=\"rpc_kanban_board_column_body\">\n\t\t\t\t\t\t\t{col.items.map((item, idx) => {\n\t\t\t\t\t\t\t\tconst cardId = keyExtractor(item);\n\t\t\t\t\t\t\t\tconst isDragging = draggingCardId === cardId;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tkey={cardId}\n\t\t\t\t\t\t\t\t\t\tdraggable\n\t\t\t\t\t\t\t\t\t\tonDragStart={(e) => handleDragStart(e, cardId, col.id)}\n\t\t\t\t\t\t\t\t\t\tonDragEnd={handleDragEnd}\n\t\t\t\t\t\t\t\t\t\tonDragOver={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonDrop={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\thandleDropOnCol(e, col.id, idx);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tclassName={`rpc_kanban_board_card ${\n\t\t\t\t\t\t\t\t\t\t\tisDragging ? 'rpc_kanban_board_card_dragging' : ''\n\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{renderCard(item, col.id)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nexport default KanbanBoard;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../DisabledBox/index.tsx"],"names":[],"mappings":";;;AAaA,IAAM,WAAA,GAAc,CAAC,KAAA,KAA4B;AAChD,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,WAAW,KAAA,EAAO,SAAA,GAAY,QAAO,GAAI,KAAA;AAClE,EAAA,MAAM,UAAU,QAAA,IAAA,IAAA,GAAA,QAAA,GAAY,KAAA;AAG5B,EAAA,IAAI,CAAC,QAAA,EAAU;AACd,IAAA,uCAAU,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,EACnB;AAKA,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAwB;AACnD,IAAA,IAAI,QAAA,EAAU;AACb,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,CAAA,CAAE,cAAA,EAAe;AAAA,IAClB;AAAA,EACD,CAAA;AAEA,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAU,8CAAA;AAAA,MACV,cAAA,EAAgB,kBAAA;AAAA,MAEf,QAAA,EAAA;AAAA,QAAA,SAAA,KAAc,MAAA,oBAAU,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,mBAAA,EAAoB,CAAA;AAAA,wBACrE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAA,EAAsB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QAC7C,SAAA,KAAc,OAAA,oBAAW,GAAA,CAAC,YAAA,EAAA,EAAa,WAAU,mBAAA,EAAoB;AAAA;AAAA;AAAA,GACvE;AAEF,CAAA;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-5MQCVYVD.js","sourcesContent":["import type { ReactNode } from 'react';\nimport { LockOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface DisabledBoxProps {\n\ttitle?: ReactNode;\n\tchildren?: ReactNode;\n\t// 是否禁用,禁用时显示锁图标 + 文字灰色 + 不可点击\n\tdisabled?: boolean;\n\t// 锁图标对齐方向\n\ticonAlign?: 'left' | 'right';\n}\n\nconst DisabledBox = (props: DisabledBoxProps) => {\n\tconst { title, children, disabled = false, iconAlign = 'left' } = props;\n\tconst content = children ?? title;\n\n\t// 未禁用时原样渲染,不加锁\n\tif (!disabled) {\n\t\treturn <>{content}</>;\n\t}\n\n\t// disabled 时用div渲染,样式模拟disabled效果\n\t// 在捕获阶段阻止click事件传播,既防止内部点击事件触发,也阻止冒泡到父组件\n\t// 不阻止mouseenter/mouseleave等hover事件,保证Tooltip正常显示\n\tconst handleClickCapture = (e: React.MouseEvent) => {\n\t\tif (disabled) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"disabled_box_container disabled_box_disabled\"\n\t\t\tonClickCapture={handleClickCapture}\n\t\t>\n\t\t\t{iconAlign === 'left' && <LockOutlined className=\"disabled_box_icon\" />}\n\t\t\t<span className=\"disabled_box_title\">{content}</span>\n\t\t\t{iconAlign === 'right' && <LockOutlined className=\"disabled_box_icon\" />}\n\t\t</div>\n\t);\n};\n\nexport default DisabledBox;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../CopyButton/index.tsx"],"names":["useState","useRef","useEffect","jsx","CopyOutlined","CheckOutlined","jsxs"],"mappings":"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","file":"chunk-5WHBZH44.cjs","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { CopyOutlined, CheckOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface CopyButtonProps {\n\t/** 要复制的目标文本 */\n\ttext?: string;\n\t/** 动态获取要复制的目标文本(支持异步) */\n\tgetText?: () => string | Promise<string>;\n\t/** 复制按钮的展示形态:button 按钮形态、icon 纯图标、inline 行内文本 */\n\tmode?: 'button' | 'icon' | 'inline';\n\t/** 按钮类型(仅在 mode='button' 时有效) */\n\ttype?: 'default' | 'primary';\n\t/** 默认图标 */\n\ticon?: ReactNode;\n\t/** 复制成功后的图标 */\n\tcopiedIcon?: ReactNode;\n\t/** 复制成功后展示的文本 */\n\tcopiedText?: ReactNode;\n\t/** 默认展示的子内容/按钮文案 */\n\tchildren?: ReactNode;\n\t/** 复制成功提示的 Tooltip 配置(传 false 禁用,传字符串/ReactNode 自定义文案,传 true 使用默认'复制成功') */\n\ttooltip?: boolean | ReactNode;\n\t/** 复制成功后的高亮展示持续时间(毫秒),默认 2000ms */\n\tduration?: number;\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 成功复制回调 */\n\tonCopy?: (text: string) => void;\n\t/** 复制失败回调 */\n\tonError?: (error: unknown) => void;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n/** 浏览器剪贴板复制降级方案 */\nasync function copyToClipboard(content: string): Promise<void> {\n\tif (navigator.clipboard && window.isSecureContext) {\n\t\tawait navigator.clipboard.writeText(content);\n\t\treturn;\n\t}\n\n\tconst textArea = document.createElement('textarea');\n\ttextArea.value = content;\n\ttextArea.style.position = 'fixed';\n\ttextArea.style.left = '-999999px';\n\ttextArea.style.top = '-999999px';\n\tdocument.body.appendChild(textArea);\n\ttextArea.focus();\n\ttextArea.select();\n\n\treturn new Promise((resolve, reject) => {\n\t\tconst successful = document.execCommand('copy');\n\t\ttextArea.remove();\n\t\tif (successful) {\n\t\t\tresolve();\n\t\t} else {\n\t\t\treject(new Error('复制失败'));\n\t\t}\n\t});\n}\n\nconst CopyButton: React.FC<CopyButtonProps> = ({\n\ttext,\n\tgetText,\n\tmode = 'button',\n\ttype = 'default',\n\ticon,\n\tcopiedIcon,\n\tcopiedText,\n\tchildren,\n\ttooltip = true,\n\tduration = 2000,\n\tdisabled = false,\n\tonCopy,\n\tonError,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [isCopied, setIsCopied] = useState<boolean>(false);\n\tconst [isHovered, setIsHovered] = useState<boolean>(false);\n\tconst timerRef = useRef<number | null>(null);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (timerRef.current) {\n\t\t\t\twindow.clearTimeout(timerRef.current);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\tconst handleCopy = async (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tif (disabled) return;\n\n\t\ttry {\n\t\t\tlet targetText = text || '';\n\t\t\tif (getText) {\n\t\t\t\ttargetText = await getText();\n\t\t\t}\n\n\t\t\tawait copyToClipboard(targetText);\n\t\t\tsetIsCopied(true);\n\t\t\tonCopy?.(targetText);\n\n\t\t\tif (timerRef.current) {\n\t\t\t\twindow.clearTimeout(timerRef.current);\n\t\t\t}\n\t\t\ttimerRef.current = window.setTimeout(() => {\n\t\t\t\tsetIsCopied(false);\n\t\t\t}, duration);\n\t\t} catch (err) {\n\t\t\tonError?.(err);\n\t\t}\n\t};\n\n\tconst defaultIcon = icon ?? <CopyOutlined />;\n\tconst defaultCopiedIcon = copiedIcon ?? <CheckOutlined style={{ color: '#52c41a' }} />;\n\n\t// 计算展示的图标与文案\n\tconst currentIcon = isCopied ? defaultCopiedIcon : defaultIcon;\n\tconst currentText = isCopied ? (copiedText ?? children ?? '已复制') : (children ?? (mode === 'button' ? '复制' : null));\n\n\t// Tooltip 提示文本计算\n\tlet tooltipContent: ReactNode = null;\n\tif (tooltip) {\n\t\tif (isCopied) {\n\t\t\ttooltipContent = typeof tooltip === 'boolean' ? '复制成功!' : tooltip;\n\t\t} else if (mode === 'icon') {\n\t\t\ttooltipContent = '点击复制';\n\t\t}\n\t}\n\n\tconst classNames = [\n\t\t'rpc_copy_button',\n\t\t`rpc_copy_button_${mode}`,\n\t\ttype === 'primary' && mode === 'button' ? 'rpc_copy_button_primary' : '',\n\t\tisCopied ? 'rpc_copy_button_copied' : '',\n\t\tdisabled ? 'rpc_copy_button_disabled' : '',\n\t\tclassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames}\n\t\t\tstyle={style}\n\t\t\tonClick={handleCopy}\n\t\t\tonMouseEnter={() => setIsHovered(true)}\n\t\t\tonMouseLeave={() => setIsHovered(false)}\n\t\t\trole=\"button\"\n\t\t\ttabIndex={disabled ? -1 : 0}\n\t\t>\n\t\t\t<span className=\"rpc_copy_button_icon_wrap\">{currentIcon}</span>\n\t\t\t{currentText && <span>{currentText}</span>}\n\n\t\t\t{tooltip && tooltipContent && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={`rpc_copy_button_tooltip ${\n\t\t\t\t\t\tisCopied ? 'rpc_copy_button_tooltip_visible' : isHovered ? 'rpc_copy_button_tooltip_hover' : ''\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t{tooltipContent}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default CopyButton;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../EnvBadge/index.tsx"],"names":["useState","useRef","useEffect","jsxs","jsx"],"mappings":"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","file":"chunk-6OKTK3AQ.cjs","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport type EnvType = 'dev' | 'test' | 'uat' | 'staging' | 'prod';\nexport type EnvPlacement = 'top-right' | 'top-left' | 'bottom-right';\n\nexport interface EnvBuildInfo {\n\tapiHost?: string;\n\tbranch?: string;\n\tcommit?: string;\n\tbuildTime?: string;\n\tversion?: string;\n}\n\nexport interface EnvSwitchItem {\n\tlabel: string;\n\turl: string;\n\tenv: EnvType;\n}\n\nexport interface EnvBadgeProps {\n\t/** 当前运行环境:'dev' | 'test' | 'uat' | 'staging' | 'prod' */\n\tenv: EnvType;\n\t/** 显示文本(不传则默认大写环境名) */\n\tlabel?: ReactNode;\n\t/** 悬浮挂载位置,默认为 'top-right' */\n\tplacement?: EnvPlacement;\n\t/** 当前构建与部署版本信息 */\n\tinfo?: EnvBuildInfo;\n\t/** 快捷切换至其他环境列表 */\n\tswitchList?: EnvSwitchItem[];\n\t/** 是否默认常驻,默认为 true */\n\tvisible?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst defaultEnvLabels: Record<EnvType, string> = {\n\tdev: 'DEV 开发环境',\n\ttest: 'TEST 测试环境',\n\tuat: 'UAT 预验收',\n\tstaging: 'STAGING 预发',\n\tprod: '🚨 PROD 生产环境',\n};\n\nconst EnvBadge: React.FC<EnvBadgeProps> = ({\n\tenv,\n\tlabel,\n\tplacement = 'top-right',\n\tinfo,\n\tswitchList,\n\tvisible = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [isOpen, setIsOpen] = useState<boolean>(false);\n\tconst badgeRef = useRef<HTMLDivElement>(null);\n\n\tconst text = label || defaultEnvLabels[env] || env.toUpperCase();\n\n\t// 点击外部自动关闭气泡\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (e: MouseEvent) => {\n\t\t\tif (badgeRef.current && !badgeRef.current.contains(e.target as Node)) {\n\t\t\t\tsetIsOpen(false);\n\t\t\t}\n\t\t};\n\n\t\tif (isOpen) {\n\t\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\t}\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside);\n\t}, [isOpen]);\n\n\tif (!visible) return null;\n\n\treturn (\n\t\t<div\n\t\t\tref={badgeRef}\n\t\t\tclassName={`rpc_env_badge rpc_env_badge_${placement.replace('-', '_')} ${className}`}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={`rpc_env_badge_tag rpc_env_badge_tag_${env}`}\n\t\t\t\tonClick={() => setIsOpen(!isOpen)}\n\t\t\t>\n\t\t\t\t<span>●</span>\n\t\t\t\t<span>{text}</span>\n\t\t\t</div>\n\n\t\t\t{isOpen && (\n\t\t\t\t<div className=\"rpc_env_badge_popover\">\n\t\t\t\t\t<div className=\"rpc_env_badge_pop_header\">\n\t\t\t\t\t\t<span>系统环境信息</span>\n\t\t\t\t\t\t<span style={{ fontSize: 12, color: '#8c8c8c' }}>{env.toUpperCase()}</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{info ? (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{info.version && (\n\t\t\t\t\t\t\t\t<div className=\"rpc_env_badge_pop_row\">\n\t\t\t\t\t\t\t\t\t<span>发布版本</span>\n\t\t\t\t\t\t\t\t\t<span>v{info.version}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{info.branch && (\n\t\t\t\t\t\t\t\t<div className=\"rpc_env_badge_pop_row\">\n\t\t\t\t\t\t\t\t\t<span>Git 分支</span>\n\t\t\t\t\t\t\t\t\t<span>{info.branch}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{info.commit && (\n\t\t\t\t\t\t\t\t<div className=\"rpc_env_badge_pop_row\">\n\t\t\t\t\t\t\t\t\t<span>Commit</span>\n\t\t\t\t\t\t\t\t\t<span>{info.commit}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{info.apiHost && (\n\t\t\t\t\t\t\t\t<div className=\"rpc_env_badge_pop_row\">\n\t\t\t\t\t\t\t\t\t<span>API 网关</span>\n\t\t\t\t\t\t\t\t\t<span style={{ fontSize: 11 }}>{info.apiHost}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{info.buildTime && (\n\t\t\t\t\t\t\t\t<div className=\"rpc_env_badge_pop_row\">\n\t\t\t\t\t\t\t\t\t<span>构建时间</span>\n\t\t\t\t\t\t\t\t\t<span>{info.buildTime}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div style={{ color: '#8c8c8c', fontSize: 12, padding: '8px 0' }}>\n\t\t\t\t\t\t\t暂无详细构建元数据\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{switchList && switchList.length > 0 && (\n\t\t\t\t\t\t<div className=\"rpc_env_badge_switch_wrap\">\n\t\t\t\t\t\t\t<span style={{ fontSize: 11, color: '#8c8c8c', width: '100%' }}>\n\t\t\t\t\t\t\t\t切换环境:\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{switchList.map((item, idx) => (\n\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\t\t\t\thref={item.url}\n\t\t\t\t\t\t\t\t\tclassName=\"rpc_env_badge_switch_btn\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\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 EnvBadge;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../TreeFilterPanel/index.tsx"],"names":[],"mappings":"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","file":"chunk-7AKHSOSZ.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\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName=\"rpc_tree_filter_panel_clear_btn\"\n\t\t\t\t\t\tonClick={handleClear}\n\t\t\t\t\t>\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"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../PdfViewer/index.tsx"],"names":[],"mappings":"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","file":"chunk-7JRGQL63.js","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport { ZoomInOutlined, ZoomOutOutlined, RotateRightOutlined, DownloadOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface PdfViewerProps {\n\t/** PDF 文件 URL 地址 */\n\tsrc: string;\n\t/** 文档标题 */\n\ttitle?: ReactNode;\n\t/** 宽度,默认为 '100%' */\n\twidth?: number | string;\n\t/** 高度,默认为 500 */\n\theight?: number | string;\n\t/** 是否显示下载按钮,默认为 true */\n\tshowDownload?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst PdfViewer: React.FC<PdfViewerProps> = ({\n\tsrc,\n\ttitle = 'PDF Document Preview',\n\twidth = '100%',\n\theight = 500,\n\tshowDownload = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [zoom, setZoom] = useState<number>(100);\n\tconst [rotation, setRotation] = useState<number>(0);\n\n\tconst handleZoomIn = () => {\n\t\tsetZoom((prev) => Math.min(200, prev + 15));\n\t};\n\n\tconst handleZoomOut = () => {\n\t\tsetZoom((prev) => Math.max(50, prev - 15));\n\t};\n\n\tconst handleRotate = () => {\n\t\tsetRotation((prev) => (prev + 90) % 360);\n\t};\n\n\treturn (\n\t\t<div className={`rpc_pdf_viewer ${className}`} style={{ width, height, ...style }}>\n\t\t\t{/* 顶部工具栏 */}\n\t\t\t<div className=\"rpc_pdf_viewer_toolbar\">\n\t\t\t\t<span className=\"rpc_pdf_viewer_title\">{title}</span>\n\n\t\t\t\t<div className=\"rpc_pdf_viewer_actions\">\n\t\t\t\t\t<button type=\"button\" className=\"rpc_pdf_viewer_btn\" onClick={handleZoomOut} title=\"缩小\">\n\t\t\t\t\t\t<ZoomOutOutlined />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<span style={{ fontSize: 12, minWidth: 40, textAlign: 'center' }}>{zoom}%</span>\n\n\t\t\t\t\t<button type=\"button\" className=\"rpc_pdf_viewer_btn\" onClick={handleZoomIn} title=\"放大\">\n\t\t\t\t\t\t<ZoomInOutlined />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<button type=\"button\" className=\"rpc_pdf_viewer_btn\" onClick={handleRotate} title=\"顺时针旋转 90°\">\n\t\t\t\t\t\t<RotateRightOutlined />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t{showDownload && (\n\t\t\t\t\t\t<a href={src} download className=\"rpc_pdf_viewer_btn\" title=\"下载 PDF\">\n\t\t\t\t\t\t\t<DownloadOutlined />\n\t\t\t\t\t\t\t<span>下载</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* PDF 内容嵌入容器 */}\n\t\t\t<div className=\"rpc_pdf_viewer_body\">\n\t\t\t\t<iframe\n\t\t\t\t\tsrc={`${src}#toolbar=0&navpanes=0`}\n\t\t\t\t\ttitle=\"PDF Preview Frame\"\n\t\t\t\t\tclassName=\"rpc_pdf_viewer_frame\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttransform: `scale(${zoom / 100}) rotate(${rotation}deg)`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default PdfViewer;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../DiffViewer/index.tsx"],"names":["i","j","useState","useMemo","jsxs","jsx"],"mappings":"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","file":"chunk-AJIIY2QT.cjs","sourcesContent":["import React, { useState, useMemo, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport type DiffViewMode = 'split' | 'unified';\n\nexport interface DiffViewerProps {\n\t/** 修改前的旧文本 */\n\toldValue: string;\n\t/** 修改后的新文本 */\n\tnewValue: string;\n\t/** 视图模式:'split' 左右分栏,'unified' 单列行内,默认为 'split' */\n\tviewMode?: DiffViewMode;\n\t/** 是否允许用户自由切换视图模式,默认为 true */\n\tallowModeChange?: boolean;\n\t/** 文件标题或说明 */\n\ttitle?: ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\ninterface DiffLine {\n\ttype: 'unchanged' | 'added' | 'removed';\n\ttext: string;\n\toldLineNumber?: number;\n\tnewLineNumber?: number;\n}\n\n// 简单高效的 LCS 行级差异比较算法\nfunction computeLineDiff(oldStr: string, newStr: string): DiffLine[] {\n\tconst oldLines = oldStr.split('\\n');\n\tconst newLines = newStr.split('\\n');\n\n\tconst n = oldLines.length;\n\tconst m = newLines.length;\n\n\t// 动态规划构建 LCS 矩阵\n\tconst dp: number[][] = Array.from({ length: n + 1 }, () => Array(m + 1).fill(0));\n\n\tfor (let i = 0; i < n; i++) {\n\t\tfor (let j = 0; j < m; j++) {\n\t\t\tif (oldLines[i] === newLines[j]) {\n\t\t\t\tdp[i + 1][j + 1] = dp[i][j] + 1;\n\t\t\t} else {\n\t\t\t\tdp[i + 1][j + 1] = Math.max(dp[i + 1][j], dp[i][j + 1]);\n\t\t\t}\n\t\t}\n\t}\n\n\t// 回溯生成差异序列\n\tconst result: DiffLine[] = [];\n\tlet i = n;\n\tlet j = m;\n\n\twhile (i > 0 || j > 0) {\n\t\tif (i > 0 && j > 0 && oldLines[i - 1] === newLines[j - 1]) {\n\t\t\tresult.unshift({\n\t\t\t\ttype: 'unchanged',\n\t\t\t\ttext: oldLines[i - 1],\n\t\t\t\toldLineNumber: i,\n\t\t\t\tnewLineNumber: j,\n\t\t\t});\n\t\t\ti--;\n\t\t\tj--;\n\t\t} else if (j > 0 && (i === 0 || dp[i][j - 1] >= dp[i - 1][j])) {\n\t\t\tresult.unshift({\n\t\t\t\ttype: 'added',\n\t\t\t\ttext: newLines[j - 1],\n\t\t\t\tnewLineNumber: j,\n\t\t\t});\n\t\t\tj--;\n\t\t} else if (i > 0 && (j === 0 || dp[i][j - 1] < dp[i - 1][j])) {\n\t\t\tresult.unshift({\n\t\t\t\ttype: 'removed',\n\t\t\t\ttext: oldLines[i - 1],\n\t\t\t\toldLineNumber: i,\n\t\t\t});\n\t\t\ti--;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nconst DiffViewer: React.FC<DiffViewerProps> = ({\n\toldValue = '',\n\tnewValue = '',\n\tviewMode: initialMode = 'split',\n\tallowModeChange = true,\n\ttitle,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [mode, setMode] = useState<DiffViewMode>(initialMode);\n\n\tconst diffLines = useMemo(() => {\n\t\treturn computeLineDiff(oldValue, newValue);\n\t}, [oldValue, newValue]);\n\n\t// 统计变动行数\n\tconst stats = useMemo(() => {\n\t\tlet added = 0;\n\t\tlet removed = 0;\n\t\tdiffLines.forEach((l) => {\n\t\t\tif (l.type === 'added') added++;\n\t\t\tif (l.type === 'removed') removed++;\n\t\t});\n\t\treturn { added, removed };\n\t}, [diffLines]);\n\n\treturn (\n\t\t<div className={`rpc_diff_viewer ${className}`} style={style}>\n\t\t\t{/* 头部标题与模式切换 */}\n\t\t\t<div className=\"rpc_diff_viewer_header\">\n\t\t\t\t<div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>\n\t\t\t\t\t<span className=\"rpc_diff_viewer_title\">{title || 'Diff Comparison'}</span>\n\t\t\t\t\t<span style={{ fontSize: 12, color: '#52c41a' }}>+{stats.added}</span>\n\t\t\t\t\t<span style={{ fontSize: 12, color: '#ff4d4f' }}>-{stats.removed}</span>\n\t\t\t\t</div>\n\n\t\t\t\t{allowModeChange && (\n\t\t\t\t\t<div className=\"rpc_diff_viewer_mode_toggle\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName={`rpc_diff_viewer_mode_btn ${\n\t\t\t\t\t\t\t\tmode === 'split' ? 'rpc_diff_viewer_mode_btn_active' : ''\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\tonClick={() => setMode('split')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t分栏 (Split)\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName={`rpc_diff_viewer_mode_btn ${\n\t\t\t\t\t\t\t\tmode === 'unified' ? 'rpc_diff_viewer_mode_btn_active' : ''\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\tonClick={() => setMode('unified')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t行内 (Unified)\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* 差异展示主体 */}\n\t\t\t<div style={{ overflowX: 'auto', maxHeight: 420, overflowY: 'auto' }}>\n\t\t\t\t{mode === 'unified' ? (\n\t\t\t\t\t<table className=\"rpc_diff_viewer_table\">\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t{diffLines.map((line, idx) => {\n\t\t\t\t\t\t\t\tconst rowClass =\n\t\t\t\t\t\t\t\t\tline.type === 'added'\n\t\t\t\t\t\t\t\t\t\t? 'rpc_diff_viewer_row_added'\n\t\t\t\t\t\t\t\t\t\t: line.type === 'removed'\n\t\t\t\t\t\t\t\t\t\t\t? 'rpc_diff_viewer_row_removed'\n\t\t\t\t\t\t\t\t\t\t\t: '';\n\n\t\t\t\t\t\t\t\tconst marker = line.type === 'added' ? '+' : line.type === 'removed' ? '-' : ' ';\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<tr key={idx} className={`rpc_diff_viewer_row ${rowClass}`}>\n\t\t\t\t\t\t\t\t\t\t<td className=\"rpc_diff_viewer_gutter\">{line.oldLineNumber || ''}</td>\n\t\t\t\t\t\t\t\t\t\t<td className=\"rpc_diff_viewer_gutter\">{line.newLineNumber || ''}</td>\n\t\t\t\t\t\t\t\t\t\t<td className=\"rpc_diff_viewer_marker\">{marker}</td>\n\t\t\t\t\t\t\t\t\t\t<td className=\"rpc_diff_viewer_code\">{line.text || ' '}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t) : (\n\t\t\t\t\t/* 分栏 Split 模式 */\n\t\t\t\t\t<table className=\"rpc_diff_viewer_table\">\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t{diffLines.map((line, idx) => {\n\t\t\t\t\t\t\t\tconst isAdd = line.type === 'added';\n\t\t\t\t\t\t\t\tconst isDel = line.type === 'removed';\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<tr key={idx} className=\"rpc_diff_viewer_row\">\n\t\t\t\t\t\t\t\t\t\t{/* 左侧旧版 */}\n\t\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\t\tclassName={`rpc_diff_viewer_gutter ${\n\t\t\t\t\t\t\t\t\t\t\t\tisDel ? 'rpc_diff_viewer_row_removed' : isAdd ? 'rpc_diff_viewer_row_empty' : ''\n\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{line.oldLineNumber || ''}\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\t\tclassName={`rpc_diff_viewer_code ${\n\t\t\t\t\t\t\t\t\t\t\t\tisDel ? 'rpc_diff_viewer_row_removed' : isAdd ? 'rpc_diff_viewer_row_empty' : ''\n\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{isDel || line.type === 'unchanged' ? line.text || ' ' : ''}\n\t\t\t\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t\t\t\t\t{/* 右侧新版 */}\n\t\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\t\tclassName={`rpc_diff_viewer_gutter ${\n\t\t\t\t\t\t\t\t\t\t\t\tisAdd ? 'rpc_diff_viewer_row_added' : isDel ? 'rpc_diff_viewer_row_empty' : ''\n\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{line.newLineNumber || ''}\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\t\tclassName={`rpc_diff_viewer_code ${\n\t\t\t\t\t\t\t\t\t\t\t\tisAdd ? 'rpc_diff_viewer_row_added' : isDel ? 'rpc_diff_viewer_row_empty' : ''\n\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{isAdd || line.type === 'unchanged' ? line.text || ' ' : ''}\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default DiffViewer;\n"]}
|