react-public-components 1.2.8 → 1.2.9
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/README.md +181 -109
- package/dist/AnnouncementBar/index.cjs +3 -3
- package/dist/AnnouncementBar/index.js +2 -2
- package/dist/AudioPlayer/index.cjs +3 -3
- package/dist/AudioPlayer/index.js +2 -2
- package/dist/CeilingBox/index.cjs +2 -2
- package/dist/CeilingBox/index.js +1 -1
- package/dist/CodeSnippet/index.cjs +3 -3
- package/dist/CodeSnippet/index.js +2 -2
- 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/CronPicker/index.cjs +4 -4
- package/dist/CronPicker/index.js +3 -3
- package/dist/DebounceSelect/index.cjs +3 -3
- package/dist/DebounceSelect/index.js +2 -2
- package/dist/DisabledBox/index.cjs +3 -3
- package/dist/DisabledBox/index.js +2 -2
- package/dist/DragSortList/index.cjs +3 -3
- package/dist/DragSortList/index.js +2 -2
- 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/JsonEditor/index.cjs +4 -4
- package/dist/JsonEditor/index.js +3 -3
- package/dist/KeyValEditor/index.cjs +3 -3
- package/dist/KeyValEditor/index.js +2 -2
- package/dist/LazyLoadBox/index.cjs +3 -3
- package/dist/LazyLoadBox/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/PeriodSelect/index.cjs +4 -4
- package/dist/PeriodSelect/index.js +1 -1
- package/dist/QrCodeCard/index.cjs +3 -3
- package/dist/QrCodeCard/index.js +2 -2
- 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/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/TreeTransfer/index.cjs +3 -3
- package/dist/TreeTransfer/index.js +2 -2
- package/dist/VideoPlayer/index.cjs +3 -3
- package/dist/VideoPlayer/index.js +2 -2
- package/dist/{chunk-56VELHCH.js → chunk-2SEHUMQH.js} +3 -3
- package/dist/{chunk-56VELHCH.js.map → chunk-2SEHUMQH.js.map} +1 -1
- package/dist/{chunk-2INP6NM4.js → chunk-3WLGM74R.js} +3 -3
- package/dist/{chunk-2INP6NM4.js.map → chunk-3WLGM74R.js.map} +1 -1
- package/dist/{chunk-2IDVNTKR.js → chunk-537T6BR3.js} +32 -8
- package/dist/chunk-537T6BR3.js.map +1 -0
- package/dist/{chunk-XUAHWX6B.js → chunk-5QEXX32M.js} +3 -3
- package/dist/{chunk-XUAHWX6B.js.map → chunk-5QEXX32M.js.map} +1 -1
- package/dist/{chunk-ETFLLRTO.js → chunk-5XTIASJH.js} +3 -3
- package/dist/{chunk-ETFLLRTO.js.map → chunk-5XTIASJH.js.map} +1 -1
- package/dist/{chunk-TNZ2OLGW.cjs → chunk-6KODABJW.cjs} +4 -4
- package/dist/{chunk-TNZ2OLGW.cjs.map → chunk-6KODABJW.cjs.map} +1 -1
- package/dist/{chunk-ZWKUHYTV.cjs → chunk-6WCWYSFU.cjs} +6 -6
- package/dist/{chunk-ZWKUHYTV.cjs.map → chunk-6WCWYSFU.cjs.map} +1 -1
- package/dist/{chunk-Y54KVULF.js → chunk-7FGE7NRH.js} +11 -4
- package/dist/chunk-7FGE7NRH.js.map +1 -0
- package/dist/{chunk-VJOO2DG3.cjs → chunk-7NXCDDBT.cjs} +8 -8
- package/dist/{chunk-VJOO2DG3.cjs.map → chunk-7NXCDDBT.cjs.map} +1 -1
- package/dist/{chunk-VYPIRVL4.js → chunk-7W7PCWMM.js} +2 -2
- package/dist/chunk-7W7PCWMM.js.map +1 -0
- package/dist/{chunk-TUEVILTA.cjs → chunk-BKHKPZ6O.cjs} +5 -5
- package/dist/{chunk-TUEVILTA.cjs.map → chunk-BKHKPZ6O.cjs.map} +1 -1
- package/dist/{chunk-AXPVN2OO.js → chunk-BXLUH6FE.js} +3 -3
- package/dist/{chunk-AXPVN2OO.js.map → chunk-BXLUH6FE.js.map} +1 -1
- package/dist/{chunk-PYCSRJSF.cjs → chunk-CWG7A5DS.cjs} +7 -7
- package/dist/{chunk-PYCSRJSF.cjs.map → chunk-CWG7A5DS.cjs.map} +1 -1
- package/dist/{chunk-YP4XTMK3.cjs → chunk-DTJEY3BC.cjs} +4 -4
- package/dist/{chunk-YP4XTMK3.cjs.map → chunk-DTJEY3BC.cjs.map} +1 -1
- package/dist/{chunk-2EIAWXFA.cjs → chunk-DWG4FUDX.cjs} +5 -5
- package/dist/{chunk-2EIAWXFA.cjs.map → chunk-DWG4FUDX.cjs.map} +1 -1
- package/dist/{chunk-IF4XAUV3.js → chunk-E6EJLQL7.js} +3 -3
- package/dist/{chunk-IF4XAUV3.js.map → chunk-E6EJLQL7.js.map} +1 -1
- package/dist/{chunk-RFTYEXKU.js → chunk-EMQHYD3G.js} +6 -14
- package/dist/chunk-EMQHYD3G.js.map +1 -0
- package/dist/{chunk-O4EABET3.js → chunk-ERPKXNWM.js} +10 -4
- package/dist/chunk-ERPKXNWM.js.map +1 -0
- package/dist/{chunk-QRZ2GVVJ.js → chunk-FJ33L5D7.js} +3 -3
- package/dist/{chunk-QRZ2GVVJ.js.map → chunk-FJ33L5D7.js.map} +1 -1
- package/dist/{chunk-4KMVABTM.js → chunk-FQHPCK3S.js} +4 -6
- package/dist/chunk-FQHPCK3S.js.map +1 -0
- package/dist/{chunk-OLLVIQPL.js → chunk-FT2XGH4D.js} +3 -3
- package/dist/{chunk-OLLVIQPL.js.map → chunk-FT2XGH4D.js.map} +1 -1
- package/dist/{chunk-EMT4NUI5.js → chunk-G76ELHWZ.js} +3 -3
- package/dist/{chunk-EMT4NUI5.js.map → chunk-G76ELHWZ.js.map} +1 -1
- package/dist/{chunk-QU33CY3M.cjs → chunk-IHUBENM6.cjs} +6 -14
- package/dist/chunk-IHUBENM6.cjs.map +1 -0
- package/dist/{chunk-M4FZJALR.js → chunk-J3C46E6G.js} +4 -4
- package/dist/{chunk-M4FZJALR.js.map → chunk-J3C46E6G.js.map} +1 -1
- package/dist/{chunk-UIU6VCEQ.cjs → chunk-JLW5ISIR.cjs} +6 -3
- package/dist/chunk-JLW5ISIR.cjs.map +1 -0
- package/dist/{chunk-UAUP5TJK.cjs → chunk-K4LVWWEE.cjs} +5 -5
- package/dist/{chunk-UAUP5TJK.cjs.map → chunk-K4LVWWEE.cjs.map} +1 -1
- package/dist/{chunk-P5CS7V4W.js → chunk-KJ537QZS.js} +3 -3
- package/dist/{chunk-P5CS7V4W.js.map → chunk-KJ537QZS.js.map} +1 -1
- package/dist/{chunk-U2EBNBGK.cjs → chunk-KSXCVQU3.cjs} +4 -4
- package/dist/{chunk-U2EBNBGK.cjs.map → chunk-KSXCVQU3.cjs.map} +1 -1
- package/dist/{chunk-LFGBZXQH.cjs → chunk-KWL5465Y.cjs} +4 -4
- package/dist/{chunk-LFGBZXQH.cjs.map → chunk-KWL5465Y.cjs.map} +1 -1
- package/dist/{chunk-TUDLE3RT.cjs → chunk-KYM35LPD.cjs} +13 -15
- package/dist/chunk-KYM35LPD.cjs.map +1 -0
- package/dist/{chunk-RN5WU7KA.cjs → chunk-L76JMQUH.cjs} +7 -7
- package/dist/{chunk-RN5WU7KA.cjs.map → chunk-L76JMQUH.cjs.map} +1 -1
- package/dist/{chunk-AHTRLNYK.cjs → chunk-LPDHDZTA.cjs} +5 -5
- package/dist/{chunk-AHTRLNYK.cjs.map → chunk-LPDHDZTA.cjs.map} +1 -1
- package/dist/{chunk-JHVPDKBM.cjs → chunk-LRUSUUPJ.cjs} +6 -6
- package/dist/{chunk-JHVPDKBM.cjs.map → chunk-LRUSUUPJ.cjs.map} +1 -1
- package/dist/{chunk-MQJBUHDB.js → chunk-MWVME3UR.js} +3 -3
- package/dist/{chunk-MQJBUHDB.js.map → chunk-MWVME3UR.js.map} +1 -1
- package/dist/{chunk-OONBZRPV.cjs → chunk-N4UF72SJ.cjs} +4 -4
- package/dist/{chunk-OONBZRPV.cjs.map → chunk-N4UF72SJ.cjs.map} +1 -1
- package/dist/{chunk-EKDJPOA3.cjs → chunk-NKLHMUGB.cjs} +5 -5
- package/dist/{chunk-EKDJPOA3.cjs.map → chunk-NKLHMUGB.cjs.map} +1 -1
- package/dist/{chunk-M3GQ7RCV.cjs → chunk-NZNNDZW4.cjs} +4 -4
- package/dist/{chunk-M3GQ7RCV.cjs.map → chunk-NZNNDZW4.cjs.map} +1 -1
- package/dist/{chunk-UZB7GOEI.cjs → chunk-OLIPC6HC.cjs} +4 -4
- package/dist/{chunk-UZB7GOEI.cjs.map → chunk-OLIPC6HC.cjs.map} +1 -1
- package/dist/{chunk-PTFKE67K.js → chunk-OOH3YSNC.js} +3 -3
- package/dist/{chunk-PTFKE67K.js.map → chunk-OOH3YSNC.js.map} +1 -1
- package/dist/{chunk-Q7OVUH5K.js → chunk-OXBOWSLR.js} +3 -3
- package/dist/{chunk-Q7OVUH5K.js.map → chunk-OXBOWSLR.js.map} +1 -1
- package/dist/{chunk-EDNBPLUS.js → chunk-P7P3UVGN.js} +3 -3
- package/dist/{chunk-EDNBPLUS.js.map → chunk-P7P3UVGN.js.map} +1 -1
- package/dist/{chunk-ANTFNDH4.js → chunk-Q2M3ZE7E.js} +3 -3
- package/dist/{chunk-ANTFNDH4.js.map → chunk-Q2M3ZE7E.js.map} +1 -1
- package/dist/{chunk-W5JA3YTT.js → chunk-Q3Z6OWKR.js} +3 -3
- package/dist/{chunk-W5JA3YTT.js.map → chunk-Q3Z6OWKR.js.map} +1 -1
- package/dist/{chunk-R4V3EJVP.cjs → chunk-QMLDK2DL.cjs} +32 -8
- package/dist/chunk-QMLDK2DL.cjs.map +1 -0
- package/dist/{chunk-PUMVD7CP.js → chunk-QVTQQB6M.js} +3 -3
- package/dist/{chunk-PUMVD7CP.js.map → chunk-QVTQQB6M.js.map} +1 -1
- package/dist/{chunk-ZCBT56AG.js → chunk-RBX6VEKI.js} +3 -3
- package/dist/{chunk-ZCBT56AG.js.map → chunk-RBX6VEKI.js.map} +1 -1
- package/dist/{chunk-4TMBGQQE.cjs → chunk-S35SIDXQ.cjs} +5 -5
- package/dist/{chunk-4TMBGQQE.cjs.map → chunk-S35SIDXQ.cjs.map} +1 -1
- package/dist/{chunk-CURWX7OY.js → chunk-SCVOSNWF.js} +3 -3
- package/dist/{chunk-CURWX7OY.js.map → chunk-SCVOSNWF.js.map} +1 -1
- package/dist/{chunk-ZXMFWVE4.cjs → chunk-SG7Z432O.cjs} +11 -5
- package/dist/chunk-SG7Z432O.cjs.map +1 -0
- package/dist/{chunk-FZH5FL7X.cjs → chunk-THZFDBJM.cjs} +12 -5
- package/dist/chunk-THZFDBJM.cjs.map +1 -0
- package/dist/{chunk-HKALWFWZ.cjs → chunk-TWL3QEFV.cjs} +5 -5
- package/dist/{chunk-HKALWFWZ.cjs.map → chunk-TWL3QEFV.cjs.map} +1 -1
- package/dist/{chunk-XLOGMDAQ.js → chunk-U4VZGKQV.js} +3 -3
- package/dist/{chunk-XLOGMDAQ.js.map → chunk-U4VZGKQV.js.map} +1 -1
- package/dist/{chunk-EJYTTSW6.js → chunk-VAU4USHW.js} +3 -3
- package/dist/{chunk-EJYTTSW6.js.map → chunk-VAU4USHW.js.map} +1 -1
- package/dist/{chunk-JNA5AQ2K.js → chunk-VY4XERM4.js} +3 -3
- package/dist/{chunk-JNA5AQ2K.js.map → chunk-VY4XERM4.js.map} +1 -1
- package/dist/{chunk-V55FEQYU.cjs → chunk-W52O3Y2I.cjs} +2 -2
- package/dist/chunk-W52O3Y2I.cjs.map +1 -0
- package/dist/{chunk-7ZBA4NHH.cjs → chunk-W7LZVHTA.cjs} +4 -4
- package/dist/{chunk-7ZBA4NHH.cjs.map → chunk-W7LZVHTA.cjs.map} +1 -1
- package/dist/{chunk-5Q7THN6M.js → chunk-WLAHW5RF.js} +6 -3
- package/dist/chunk-WLAHW5RF.js.map +1 -0
- package/dist/{chunk-IPS7PC3M.cjs → chunk-X5X4YABT.cjs} +13 -13
- package/dist/{chunk-IPS7PC3M.cjs.map → chunk-X5X4YABT.cjs.map} +1 -1
- package/dist/{chunk-WKF4C6TJ.js → chunk-XLPOXPOV.js} +3 -3
- package/dist/{chunk-WKF4C6TJ.js.map → chunk-XLPOXPOV.js.map} +1 -1
- package/dist/{chunk-QP3RKA4J.cjs → chunk-XM6J7F5X.cjs} +4 -4
- package/dist/{chunk-QP3RKA4J.cjs.map → chunk-XM6J7F5X.cjs.map} +1 -1
- package/dist/{chunk-ED3ZG2VX.cjs → chunk-ZR56U55S.cjs} +5 -5
- package/dist/{chunk-ED3ZG2VX.cjs.map → chunk-ZR56U55S.cjs.map} +1 -1
- package/dist/{chunk-77ANKL4K.cjs → chunk-ZRNAJCZI.cjs} +8 -8
- package/dist/{chunk-77ANKL4K.cjs.map → chunk-ZRNAJCZI.cjs.map} +1 -1
- package/dist/index.cjs +71 -71
- package/dist/index.js +31 -31
- package/dist/src/icons.d.ts +6 -6
- package/dist/src/index.d.ts +2 -2
- package/package.json +1 -1
- package/dist/chunk-2IDVNTKR.js.map +0 -1
- package/dist/chunk-4KMVABTM.js.map +0 -1
- package/dist/chunk-5Q7THN6M.js.map +0 -1
- package/dist/chunk-FZH5FL7X.cjs.map +0 -1
- package/dist/chunk-O4EABET3.js.map +0 -1
- package/dist/chunk-QU33CY3M.cjs.map +0 -1
- package/dist/chunk-R4V3EJVP.cjs.map +0 -1
- package/dist/chunk-RFTYEXKU.js.map +0 -1
- package/dist/chunk-TUDLE3RT.cjs.map +0 -1
- package/dist/chunk-UIU6VCEQ.cjs.map +0 -1
- package/dist/chunk-V55FEQYU.cjs.map +0 -1
- package/dist/chunk-VYPIRVL4.js.map +0 -1
- package/dist/chunk-Y54KVULF.js.map +0 -1
- package/dist/chunk-ZXMFWVE4.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../CodeSnippet/sandbox.ts","../CodeSnippet/index.tsx"],"names":[],"mappings":"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","file":"chunk-FQHPCK3S.js","sourcesContent":["/**\n * 在线沙箱 (StackBlitz / CodeSandbox / CodePen) 一键调起工具\n * 零第三方 UI 库依赖,原生运行 react-public-components\n */\n\nexport interface SandboxConfig {\n\ttitle?: string;\n\tdescription?: string;\n\tdependencies?: Record<string, string>;\n\tdevDependencies?: Record<string, string>;\n}\n\nconst defaultPackageJson = (\n\tdependencies: Record<string, string> = {},\n\tdevDependencies: Record<string, string> = {},\n) => ({\n\tname: 'react-public-components-demo',\n\tversion: '1.0.0',\n\tdescription: 'Interactive demo generated by react-public-components',\n\tmain: 'src/index.tsx',\n\tdependencies: {\n\t\treact: '^18.3.1',\n\t\t'react-dom': '^18.3.1',\n\t\t'react-public-components': 'latest',\n\t\t...dependencies,\n\t},\n\tdevDependencies: {\n\t\t'@types/react': '^18.3.3',\n\t\t'@types/react-dom': '^18.3.0',\n\t\ttypescript: '^5.5.0',\n\t\t...devDependencies,\n\t},\n});\n\nconst defaultHtml = `<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>React Public Components Demo</title>\n <link rel=\"stylesheet\" href=\"https://unpkg.com/react-public-components/dist/index.css\" />\n <style>\n * { box-sizing: border-box; }\n body { margin: 0; padding: 24px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background: #f8fafc; }\n </style>\n</head>\n<body>\n <div id=\"root\"></div>\n</body>\n</html>`;\n\nconst defaultIndexTsx = `import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport 'react-public-components/dist/index.css';\nimport App from './App';\n\nconst container = document.getElementById('root');\nif (container) {\n const root = createRoot(container);\n root.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>\n );\n}`;\n\n/**\n * 在 StackBlitz 中打开项目(极速、免注册、支持完整 TSX 编译)\n */\nexport function openInStackBlitz(code: string, config: SandboxConfig = {}) {\n\tconst form = document.createElement('form');\n\tform.method = 'POST';\n\tform.action = 'https://stackblitz.com/run';\n\tform.target = '_blank';\n\tform.style.display = 'none';\n\n\tconst pkg = defaultPackageJson(config.dependencies, config.devDependencies);\n\n\tconst fields: Record<string, string> = {\n\t\t'project[title]': config.title || 'react-public-components Demo',\n\t\t'project[description]': config.description || 'Live Component Demo',\n\t\t'project[template]': 'create-react-app',\n\t\t'project[files][package.json]': JSON.stringify(pkg, null, 2),\n\t\t'project[files][public/index.html]': defaultHtml,\n\t\t'project[files][src/index.tsx]': defaultIndexTsx,\n\t\t'project[files][src/App.tsx]': code,\n\t\t'project[files][tsconfig.json]': JSON.stringify(\n\t\t\t{\n\t\t\t\tcompilerOptions: {\n\t\t\t\t\ttarget: 'es5',\n\t\t\t\t\tlib: ['dom', 'dom.iterable', 'esnext'],\n\t\t\t\t\tallowJs: true,\n\t\t\t\t\tskipLibCheck: true,\n\t\t\t\t\tesModuleInterop: true,\n\t\t\t\t\tallowSyntheticDefaultImports: true,\n\t\t\t\t\tstrict: true,\n\t\t\t\t\tforceConsistentCasingInFileNames: true,\n\t\t\t\t\tnoFallthroughCasesInSwitch: true,\n\t\t\t\t\tmodule: 'esnext',\n\t\t\t\t\tmoduleResolution: 'node',\n\t\t\t\t\tresolveJsonModule: true,\n\t\t\t\t\tisolatedModules: true,\n\t\t\t\t\tnoEmit: true,\n\t\t\t\t\tjsx: 'react-jsx',\n\t\t\t\t},\n\t\t\t\tinclude: ['src'],\n\t\t\t},\n\t\t\tnull,\n\t\t\t2,\n\t\t),\n\t};\n\n\tObject.entries(fields).forEach(([key, val]) => {\n\t\tconst input = document.createElement('input');\n\t\tinput.type = 'hidden';\n\t\tinput.name = key;\n\t\tinput.value = val;\n\t\tform.appendChild(input);\n\t});\n\n\tdocument.body.appendChild(form);\n\tform.submit();\n\tdocument.body.removeChild(form);\n}\n\n/**\n * 在 CodeSandbox 中打开项目\n */\nexport function openInCodeSandbox(code: string, config: SandboxConfig = {}) {\n\tconst pkg = defaultPackageJson(config.dependencies, config.devDependencies);\n\n\tconst files = {\n\t\t'package.json': {\n\t\t\tcontent: JSON.stringify(pkg, null, 2),\n\t\t},\n\t\t'public/index.html': {\n\t\t\tcontent: defaultHtml,\n\t\t},\n\t\t'src/index.tsx': {\n\t\t\tcontent: defaultIndexTsx,\n\t\t},\n\t\t'src/App.tsx': {\n\t\t\tcontent: code,\n\t\t},\n\t};\n\n\tfetch('https://codesandbox.io/api/v1/sandboxes/define?json=1', {\n\t\tmethod: 'POST',\n\t\theaders: {\n\t\t\t'Content-Type': 'application/json',\n\t\t\tAccept: 'application/json',\n\t\t},\n\t\tbody: JSON.stringify({ files }),\n\t})\n\t\t.then((res) => res.json())\n\t\t.then((data) => {\n\t\t\tif (data && data.sandbox_id) {\n\t\t\t\twindow.open(`https://codesandbox.io/s/${data.sandbox_id}`, '_blank');\n\t\t\t}\n\t\t})\n\t\t.catch(() => {\n\t\t\t// 降级使用 StackBlitz 打开\n\t\t\topenInStackBlitz(code, config);\n\t\t});\n}\n\n/**\n * 在 CodePen 中打开演练场\n */\nexport function openInCodePen(code: string, config: SandboxConfig = {}) {\n\tconst form = document.createElement('form');\n\tform.method = 'POST';\n\tform.action = 'https://codepen.io/pen/define/';\n\tform.target = '_blank';\n\tform.style.display = 'none';\n\n\tlet cleanJs = code\n\t\t.replace(/import\\s+[\\s\\S]*?from\\s+['\"][^'\"]+['\"];?/g, '')\n\t\t.replace(/export\\s+default\\s+App;?/g, '')\n\t\t.replace(/export\\s+default\\s+/g, '');\n\n\tcleanJs +=\n\t\t'\\n\\nconst root = ReactDOM.createRoot(document.getElementById(\"root\"));\\nroot.render(<App />);';\n\n\tconst data = {\n\t\ttitle: config.title || 'react-public-components Demo',\n\t\tdescription: config.description || 'Live Component Demo',\n\t\thtml: '<div id=\"root\"></div>',\n\t\tjs: cleanJs,\n\t\tjs_pre_processor: 'babel',\n\t\tcss: 'body { margin: 0; padding: 24px; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif; background: #f8fafc; }',\n\t\tjs_external: [\n\t\t\t'https://unpkg.com/react@18/umd/react.production.min.js',\n\t\t\t'https://unpkg.com/react-dom@18/umd/react-dom.production.min.js',\n\t\t\t'https://unpkg.com/react-public-components/dist/index.umd.js',\n\t\t].join(';'),\n\t\tcss_external: ['https://unpkg.com/react-public-components/dist/index.css'].join(';'),\n\t};\n\n\tconst input = document.createElement('input');\n\tinput.type = 'hidden';\n\tinput.name = 'data';\n\tinput.value = JSON.stringify(data);\n\tform.appendChild(input);\n\n\tdocument.body.appendChild(form);\n\tform.submit();\n\tdocument.body.removeChild(form);\n}\n\n/**\n * 在新标签页中独立打开运行\n */\nexport function openInNewTab(code: string, title: string = 'Demo Preview') {\n\tconst newWin = window.open('', '_blank');\n\tif (!newWin) return;\n\n\tconst htmlContent = `<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\" />\n <title>${title}</title>\n <link rel=\"stylesheet\" href=\"https://unpkg.com/react-public-components/dist/index.css\" />\n <script src=\"https://unpkg.com/react@18/umd/react.production.min.js\"></script>\n <script src=\"https://unpkg.com/react-dom@18/umd/react-dom.production.min.js\"></script>\n <script src=\"https://unpkg.com/@babel/standalone/babel.min.js\"></script>\n <style>\n * { box-sizing: border-box; }\n body { margin: 0; padding: 24px; background: #f8fafc; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif; }\n #root { background: #fff; padding: 32px; border-radius: 12px; box-shadow: 0 4px 16px rgba(0,0,0,0.06); max-width: 900px; margin: 0 auto; }\n </style>\n</head>\n<body>\n <div id=\"root\"></div>\n <script type=\"text/babel\">\n const { useState, useEffect, useRef, useMemo, useCallback } = React;\n \n ${code\n\t\t\t.replace(/import\\s+[\\s\\S]*?from\\s+['\"][^'\"]+['\"];?/g, '')\n\t\t\t.replace(/export\\s+default\\s+App;?/g, '')\n\t\t\t.replace(/export\\s+default\\s+/g, '')}\n\n if (typeof App !== 'undefined') {\n const root = ReactDOM.createRoot(document.getElementById('root'));\n root.render(<App />);\n }\n </script>\n</body>\n</html>`;\n\n\tnewWin.document.open();\n\tnewWin.document.write(htmlContent);\n\tnewWin.document.close();\n}\n","import React, { useState, ReactNode, CSSProperties } from 'react';\nimport {\n\tCodeSandboxOutlined,\n\tCodePenOutlined,\n\tThunderboltOutlined,\n\tCodeOutlined,\n\tExportOutlined,\n\tCopyOutlined,\n\tCheckOutlined,\n\tUpOutlined,\n\tDownOutlined,\n} from '../src/icons';\nimport {\n\topenInCodeSandbox,\n\topenInCodePen,\n\topenInStackBlitz,\n\topenInNewTab,\n\tSandboxConfig,\n} from './sandbox';\nimport './index.less';\n\nexport type CodeSnippetTheme = 'dark' | 'light';\n\nexport interface CodeTabItem {\n\tkey: string;\n\tlabel: ReactNode;\n\tcode: string;\n\tlanguage?: string;\n}\n\nexport type BuiltinAction =\n\t'codesandbox' | 'codepen' | 'stackblitz' | 'copy' | 'external' | 'collapse';\n\nexport interface CodeSnippetProps {\n\t/** 代码文本内容(单代码模式) */\n\tcode?: string;\n\t/** 编程语言标识,默认为 'tsx' */\n\tlanguage?: string;\n\t/** 代码块主题风格:'dark' 暗色(默认) / 'light' 亮色 */\n\ttheme?: CodeSnippetTheme;\n\t/** 顶部自定义标题或说明标签(不传时展示大写的 language) */\n\ttitle?: ReactNode;\n\t/** 是否显示代码行号,默认为 false */\n\tshowLineNumbers?: boolean;\n\t/** 是否展示一键复制按钮,默认为 true */\n\tcopyable?: boolean;\n\t/** 多语言/多版本 Tabs 切换(如 TypeScript / JavaScript) */\n\ttabs?: CodeTabItem[];\n\t/** 当前激活的 Tab key(受控) */\n\tactiveTabKey?: string;\n\t/** 默认激活的 Tab key */\n\tdefaultActiveTabKey?: string;\n\t/** Tab 切换回调 */\n\tonTabChange?: (key: string) => void;\n\t/** 是否展示上方经典操作工具栏(CodeSandbox、CodePen、StackBlitz、外部打开、复制、代码展开折叠) */\n\tshowActions?: boolean;\n\t/** 自定义操作栏按钮列表 */\n\tactions?: (BuiltinAction | ReactNode)[];\n\t/** 点击操作按钮时的回调函数 */\n\tonAction?: (actionKey: string) => void;\n\t/** 沙箱自定义配置(标题、依赖库等) */\n\tsandboxConfig?: SandboxConfig;\n\t/** 外部独立运行的完整页面 URL(若传则 external 按钮直接打开此链接,不传则自动在新窗口动态构建运行) */\n\texternalUrl?: string;\n\t/** 是否支持折叠/展开代码 */\n\tcollapsible?: boolean;\n\t/** 默认是否折叠 */\n\tdefaultCollapsed?: boolean;\n\t/** 当前是否折叠(受控) */\n\tcollapsed?: boolean;\n\t/** 折叠状态切换回调 */\n\tonCollapseChange?: (collapsed: boolean) => void;\n\t/** 是否展示底部的“收起 / 展开代码”控制条,默认为 false */\n\tshowCollapseFooter?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst CodeSnippet: React.FC<CodeSnippetProps> = ({\n\tcode: singleCode = '',\n\tlanguage: defaultLang = 'tsx',\n\ttheme = 'dark',\n\ttitle,\n\tshowLineNumbers = false,\n\tcopyable = true,\n\ttabs,\n\tactiveTabKey: controlledTabKey,\n\tdefaultActiveTabKey,\n\tonTabChange,\n\tshowActions = false,\n\tactions = ['codesandbox', 'codepen', 'stackblitz', 'external', 'copy', 'collapse'],\n\tonAction,\n\tsandboxConfig,\n\texternalUrl,\n\tcollapsible = false,\n\tdefaultCollapsed = false,\n\tcollapsed: controlledCollapsed,\n\tonCollapseChange,\n\tshowCollapseFooter = false,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst hasTabs = Array.isArray(tabs) && tabs.length > 0;\n\tconst [internalTabKey, setInternalTabKey] = useState<string>(\n\t\tdefaultActiveTabKey ?? (hasTabs ? tabs[0].key : ''),\n\t);\n\tconst activeKey = controlledTabKey !== undefined ? controlledTabKey : internalTabKey;\n\n\tconst [internalCollapsed, setInternalCollapsed] = useState<boolean>(defaultCollapsed);\n\tconst isCollapsed = controlledCollapsed !== undefined ? controlledCollapsed : internalCollapsed;\n\n\tconst [copied, setCopied] = useState<boolean>(false);\n\n\t// 获取当前展示的代码与语言\n\tconst currentTab = hasTabs ? tabs.find((t) => t.key === activeKey) || tabs[0] : null;\n\tconst currentCode = currentTab ? currentTab.code : singleCode;\n\tconst currentLanguage = currentTab ? currentTab.language || defaultLang : defaultLang;\n\n\tconst handleCopy = async () => {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(currentCode);\n\t\t\tsetCopied(true);\n\t\t\tsetTimeout(() => setCopied(false), 1500);\n\t\t\tonAction?.('copy');\n\t\t} catch {\n\t\t\t// fallback\n\t\t}\n\t};\n\n\tconst handleToggleCollapse = () => {\n\t\tconst next = !isCollapsed;\n\t\tif (controlledCollapsed === undefined) {\n\t\t\tsetInternalCollapsed(next);\n\t\t}\n\t\tonCollapseChange?.(next);\n\t\tonAction?.('collapse');\n\t};\n\n\tconst handleActionClick = (action: string) => {\n\t\tconst config: SandboxConfig = {\n\t\t\ttitle: typeof title === 'string' ? title : 'react-public-components Demo',\n\t\t\t...sandboxConfig,\n\t\t};\n\n\t\tif (action === 'codesandbox') {\n\t\t\topenInCodeSandbox(currentCode, config);\n\t\t} else if (action === 'codepen') {\n\t\t\topenInCodePen(currentCode, config);\n\t\t} else if (action === 'stackblitz') {\n\t\t\topenInStackBlitz(currentCode, config);\n\t\t} else if (action === 'external') {\n\t\t\tif (externalUrl) {\n\t\t\t\twindow.open(externalUrl, '_blank');\n\t\t\t} else {\n\t\t\t\topenInNewTab(currentCode, config.title || 'Demo Preview');\n\t\t\t}\n\t\t} else if (action === 'copy') {\n\t\t\thandleCopy();\n\t\t\treturn;\n\t\t} else if (action === 'collapse') {\n\t\t\thandleToggleCollapse();\n\t\t\treturn;\n\t\t}\n\t\tonAction?.(action);\n\t};\n\n\tconst handleTabClick = (key: string) => {\n\t\tif (controlledTabKey === undefined) {\n\t\t\tsetInternalTabKey(key);\n\t\t}\n\t\tonTabChange?.(key);\n\t};\n\n\tconst lines = currentCode.split('\\n');\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`rpc_code_snippet rpc_code_snippet_${theme} ${\n\t\t\t\tisCollapsed ? 'rpc_code_snippet_collapsed' : ''\n\t\t\t} ${className}`}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{/* 1. 顶部操作工具栏(图1红色区域) */}\n\t\t\t{showActions && (\n\t\t\t\t<div className=\"rpc_code_snippet_actions_bar\">\n\t\t\t\t\t<div className=\"rpc_code_snippet_actions_list\">\n\t\t\t\t\t\t{actions.map((act, index) => {\n\t\t\t\t\t\t\tif (typeof act !== 'string') {\n\t\t\t\t\t\t\t\treturn <React.Fragment key={index}>{act}</React.Fragment>;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tswitch (act) {\n\t\t\t\t\t\t\t\tcase 'codesandbox':\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey=\"codesandbox\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_code_snippet_action_btn\"\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"在 CodeSandbox 中打开并在线运行\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick('codesandbox')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<CodeSandboxOutlined />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcase 'codepen':\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey=\"codepen\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_code_snippet_action_btn\"\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"在 CodePen 中打开并演练\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick('codepen')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<CodePenOutlined />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcase 'stackblitz':\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey=\"stackblitz\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_code_snippet_action_btn\"\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"在 StackBlitz 中极速启动\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick('stackblitz')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<ThunderboltOutlined />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcase 'external':\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey=\"external\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_code_snippet_action_btn\"\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"在独立新标签页中全屏运行\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick('external')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<ExportOutlined />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcase 'copy':\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey=\"copy\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={`rpc_code_snippet_action_btn ${\n\t\t\t\t\t\t\t\t\t\t\t\tcopied ? 'rpc_code_snippet_action_copied' : ''\n\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\ttitle={copied ? '已复制到剪贴板!' : '复制代码'}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick('copy')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{copied ? <CheckOutlined style={{ color: '#52c41a' }} /> : <CopyOutlined />}\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcase 'collapse':\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey=\"collapse\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={`rpc_code_snippet_action_btn ${\n\t\t\t\t\t\t\t\t\t\t\t\t!isCollapsed ? 'rpc_code_snippet_action_active' : ''\n\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\ttitle={isCollapsed ? '展开代码' : '收起代码'}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick('collapse')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<CodeOutlined />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn null;\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{/* 2. 标签页切换栏(TypeScript / JavaScript) */}\n\t\t\t{hasTabs && (\n\t\t\t\t<div className=\"rpc_code_snippet_tabs_bar\">\n\t\t\t\t\t{tabs.map((tab) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={tab.key}\n\t\t\t\t\t\t\tclassName={`rpc_code_snippet_tab_item ${\n\t\t\t\t\t\t\t\ttab.key === activeKey ? 'rpc_code_snippet_tab_active' : ''\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\tonClick={() => handleTabClick(tab.key)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{tab.label}\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\n\t\t\t{/* 3. 经典标题栏(无 showActions 时显示) */}\n\t\t\t{!showActions && (\n\t\t\t\t<div className=\"rpc_code_snippet_top_bar\">\n\t\t\t\t\t<div className=\"rpc_code_snippet_dots\">\n\t\t\t\t\t\t<span className=\"rpc_code_snippet_dot rpc_code_snippet_dot_red\" />\n\t\t\t\t\t\t<span className=\"rpc_code_snippet_dot rpc_code_snippet_dot_yellow\" />\n\t\t\t\t\t\t<span className=\"rpc_code_snippet_dot rpc_code_snippet_dot_green\" />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<span className=\"rpc_code_snippet_lang\">{title ?? currentLanguage}</span>\n\n\t\t\t\t\t{copyable ? (\n\t\t\t\t\t\t<button type=\"button\" className=\"rpc_code_snippet_copy_btn\" onClick={handleCopy}>\n\t\t\t\t\t\t\t{copied ? '✓ 已复制' : '复制'}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<span />\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 4. 代码内容主体 */}\n\t\t\t{!isCollapsed && (\n\t\t\t\t<div className=\"rpc_code_snippet_body\">\n\t\t\t\t\t{showLineNumbers && (\n\t\t\t\t\t\t<div className=\"rpc_code_snippet_line_numbers\">\n\t\t\t\t\t\t\t{lines.map((_, idx) => (\n\t\t\t\t\t\t\t\t<span key={idx} className=\"rpc_code_snippet_line_no\">\n\t\t\t\t\t\t\t\t\t{idx + 1}\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</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<pre className=\"rpc_code_snippet_content\">\n\t\t\t\t\t\t<code>{currentCode}</code>\n\t\t\t\t\t</pre>\n\t\t\t\t\t{showActions && copyable && (\n\t\t\t\t\t\t<div className=\"rpc_code_snippet_floating_copy\" onClick={handleCopy} title=\"复制代码\">\n\t\t\t\t\t\t\t{copied ? <CheckOutlined style={{ color: '#52c41a' }} /> : <CopyOutlined />}\n\t\t\t\t\t\t\t<span style={{ fontSize: 11, marginLeft: 4 }}>{currentLanguage}</span>\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\n\t\t\t{/* 5. 底部收起/展开控制条 */}\n\t\t\t{(showCollapseFooter || collapsible) && !isCollapsed && (\n\t\t\t\t<div className=\"rpc_code_snippet_footer\" onClick={handleToggleCollapse}>\n\t\t\t\t\t<UpOutlined style={{ marginRight: 6, fontSize: 12 }} />\n\t\t\t\t\t<span>收起代码</span>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{(showCollapseFooter || collapsible) && isCollapsed && (\n\t\t\t\t<div className=\"rpc_code_snippet_footer\" onClick={handleToggleCollapse}>\n\t\t\t\t\t<DownOutlined style={{ marginRight: 6, fontSize: 12 }} />\n\t\t\t\t\t<span>展开代码</span>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default CodeSnippet;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CloseOutlined } from './chunk-
|
|
1
|
+
import { CloseOutlined } from './chunk-537T6BR3.js';
|
|
2
2
|
import { useState, useRef } from 'react';
|
|
3
3
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -153,5 +153,5 @@ var TagInput = ({
|
|
|
153
153
|
var TagInput_default = TagInput;
|
|
154
154
|
|
|
155
155
|
export { TagInput_default };
|
|
156
|
-
//# sourceMappingURL=chunk-
|
|
157
|
-
//# sourceMappingURL=chunk-
|
|
156
|
+
//# sourceMappingURL=chunk-FT2XGH4D.js.map
|
|
157
|
+
//# sourceMappingURL=chunk-FT2XGH4D.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../TagInput/index.tsx"],"names":[],"mappings":"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","file":"chunk-OLLVIQPL.js","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { CloseOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface TagInputProps {\n\t/** 标签列表(受控) */\n\tvalue?: string[];\n\t/** 默认标签列表 */\n\tdefaultValue?: string[];\n\t/** 标签列表改变回调 */\n\tonChange?: (tags: string[]) => void;\n\t/** 最大允许输入的标签数量 */\n\tmaxCount?: number;\n\t/** 单个标签的最大字符长度 */\n\tmaxLength?: number;\n\t/** 是否允许重复标签,默认为 false */\n\tallowDuplicates?: boolean;\n\t/** 触发添加标签的按键/分隔符,默认为 ['Enter', ',', ','] */\n\tseparators?: string[];\n\t/** 标签自定义校验函数(返回 true 通过,返回 false 或 string 报错) */\n\tvalidate?: (tag: string) => boolean | string;\n\t/** 占位提示文案 */\n\tplaceholder?: string;\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 自定义渲染单个 Tag */\n\trenderTag?: (tag: string, index: number, onClose: () => void) => ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TagInput: React.FC<TagInputProps> = ({\n\tvalue: controlledValue,\n\tdefaultValue = [],\n\tonChange,\n\tmaxCount,\n\tmaxLength,\n\tallowDuplicates = false,\n\tseparators = ['Enter', ',', ','],\n\tvalidate,\n\tplaceholder = '输入标签后按回车...',\n\tdisabled = false,\n\trenderTag,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalTags, setInternalTags] = useState<string[]>(defaultValue);\n\tconst tags = controlledValue !== undefined ? controlledValue : internalTags;\n\n\tconst [inputValue, setInputValue] = useState<string>('');\n\tconst [isFocused, setIsFocused] = useState<boolean>(false);\n\tconst [errorMessage, setErrorMessage] = useState<string>('');\n\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\n\t// 添加 Tag\n\tconst addTag = (text: string) => {\n\t\tconst trimmed = text.trim();\n\t\tif (!trimmed) return;\n\n\t\tif (maxCount !== undefined && tags.length >= maxCount) {\n\t\t\tsetErrorMessage(`最多只能添加 ${maxCount} 个标签`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!allowDuplicates && tags.includes(trimmed)) {\n\t\t\tsetErrorMessage(`标签 \"${trimmed}\" 已存在`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (validate) {\n\t\t\tconst res = validate(trimmed);\n\t\t\tif (typeof res === 'string') {\n\t\t\t\tsetErrorMessage(res);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (res === false) {\n\t\t\t\tsetErrorMessage(`标签 \"${trimmed}\" 格式不合法`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst nextTags = [...tags, trimmed];\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalTags(nextTags);\n\t\t}\n\t\tonChange?.(nextTags);\n\t\tsetInputValue('');\n\t\tsetErrorMessage('');\n\t};\n\n\t// 删除 Tag\n\tconst removeTag = (index: number) => {\n\t\tif (disabled) return;\n\t\tconst nextTags = tags.filter((_, i) => i !== index);\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalTags(nextTags);\n\t\t}\n\t\tonChange?.(nextTags);\n\t\tsetErrorMessage('');\n\t};\n\n\t// 键盘事件处理\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (disabled) return;\n\n\t\t// 分隔符触发添加\n\t\tif (separators.includes(e.key)) {\n\t\t\te.preventDefault();\n\t\t\taddTag(inputValue);\n\t\t\treturn;\n\t\t}\n\n\t\t// 退格键删除最后一个 Tag\n\t\tif (e.key === 'Backspace' && !inputValue && tags.length > 0) {\n\t\t\te.preventDefault();\n\t\t\tremoveTag(tags.length - 1);\n\t\t}\n\t};\n\n\t// 失去焦点时添加\n\tconst handleBlur = () => {\n\t\tsetIsFocused(false);\n\t\tif (inputValue.trim()) {\n\t\t\taddTag(inputValue);\n\t\t}\n\t};\n\n\t// 双击编辑 Tag\n\tconst handleDoubleClick = (index: number, tag: string) => {\n\t\tif (disabled) return;\n\t\tremoveTag(index);\n\t\tsetInputValue(tag);\n\t\tinputRef.current?.focus();\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tclassName={`rpc_tag_input ${isFocused ? 'rpc_tag_input_focused' : ''} ${\n\t\t\t\tdisabled ? 'rpc_tag_input_disabled' : ''\n\t\t\t} ${errorMessage ? 'rpc_tag_input_error' : ''} ${className}`}\n\t\t\tstyle={style}\n\t\t\tonClick={() => {\n\t\t\t\tif (!disabled) inputRef.current?.focus();\n\t\t\t}}\n\t\t>\n\t\t\t{tags.map((tag, idx) => {\n\t\t\t\tif (renderTag) {\n\t\t\t\t\treturn renderTag(tag, idx, () => removeTag(idx));\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<span\n\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\tclassName=\"rpc_tag_input_tag\"\n\t\t\t\t\t\tonDoubleClick={() => handleDoubleClick(idx, tag)}\n\t\t\t\t\t\ttitle=\"双击可重新编辑\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>{tag}</span>\n\t\t\t\t\t\t{!disabled && (\n\t\t\t\t\t\t\t<CloseOutlined\n\t\t\t\t\t\t\t\tclassName=\"rpc_tag_input_tag_close\"\n\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\tremoveTag(idx);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{(!maxCount || tags.length < maxCount) && (\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\tmaxLength={maxLength}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName=\"rpc_tag_input_input\"\n\t\t\t\t\tplaceholder={tags.length === 0 ? placeholder : ''}\n\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\tsetInputValue(e.target.value);\n\t\t\t\t\t\tif (errorMessage) setErrorMessage('');\n\t\t\t\t\t}}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{errorMessage && <div className=\"rpc_tag_input_error_tip\">{errorMessage}</div>}\n\t\t</div>\n\t);\n};\n\nexport default TagInput;\n"]}
|
|
1
|
+
{"version":3,"sources":["../TagInput/index.tsx"],"names":[],"mappings":"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","file":"chunk-FT2XGH4D.js","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { CloseOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface TagInputProps {\n\t/** 标签列表(受控) */\n\tvalue?: string[];\n\t/** 默认标签列表 */\n\tdefaultValue?: string[];\n\t/** 标签列表改变回调 */\n\tonChange?: (tags: string[]) => void;\n\t/** 最大允许输入的标签数量 */\n\tmaxCount?: number;\n\t/** 单个标签的最大字符长度 */\n\tmaxLength?: number;\n\t/** 是否允许重复标签,默认为 false */\n\tallowDuplicates?: boolean;\n\t/** 触发添加标签的按键/分隔符,默认为 ['Enter', ',', ','] */\n\tseparators?: string[];\n\t/** 标签自定义校验函数(返回 true 通过,返回 false 或 string 报错) */\n\tvalidate?: (tag: string) => boolean | string;\n\t/** 占位提示文案 */\n\tplaceholder?: string;\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 自定义渲染单个 Tag */\n\trenderTag?: (tag: string, index: number, onClose: () => void) => ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TagInput: React.FC<TagInputProps> = ({\n\tvalue: controlledValue,\n\tdefaultValue = [],\n\tonChange,\n\tmaxCount,\n\tmaxLength,\n\tallowDuplicates = false,\n\tseparators = ['Enter', ',', ','],\n\tvalidate,\n\tplaceholder = '输入标签后按回车...',\n\tdisabled = false,\n\trenderTag,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalTags, setInternalTags] = useState<string[]>(defaultValue);\n\tconst tags = controlledValue !== undefined ? controlledValue : internalTags;\n\n\tconst [inputValue, setInputValue] = useState<string>('');\n\tconst [isFocused, setIsFocused] = useState<boolean>(false);\n\tconst [errorMessage, setErrorMessage] = useState<string>('');\n\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\n\t// 添加 Tag\n\tconst addTag = (text: string) => {\n\t\tconst trimmed = text.trim();\n\t\tif (!trimmed) return;\n\n\t\tif (maxCount !== undefined && tags.length >= maxCount) {\n\t\t\tsetErrorMessage(`最多只能添加 ${maxCount} 个标签`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!allowDuplicates && tags.includes(trimmed)) {\n\t\t\tsetErrorMessage(`标签 \"${trimmed}\" 已存在`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (validate) {\n\t\t\tconst res = validate(trimmed);\n\t\t\tif (typeof res === 'string') {\n\t\t\t\tsetErrorMessage(res);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (res === false) {\n\t\t\t\tsetErrorMessage(`标签 \"${trimmed}\" 格式不合法`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst nextTags = [...tags, trimmed];\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalTags(nextTags);\n\t\t}\n\t\tonChange?.(nextTags);\n\t\tsetInputValue('');\n\t\tsetErrorMessage('');\n\t};\n\n\t// 删除 Tag\n\tconst removeTag = (index: number) => {\n\t\tif (disabled) return;\n\t\tconst nextTags = tags.filter((_, i) => i !== index);\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalTags(nextTags);\n\t\t}\n\t\tonChange?.(nextTags);\n\t\tsetErrorMessage('');\n\t};\n\n\t// 键盘事件处理\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (disabled) return;\n\n\t\t// 分隔符触发添加\n\t\tif (separators.includes(e.key)) {\n\t\t\te.preventDefault();\n\t\t\taddTag(inputValue);\n\t\t\treturn;\n\t\t}\n\n\t\t// 退格键删除最后一个 Tag\n\t\tif (e.key === 'Backspace' && !inputValue && tags.length > 0) {\n\t\t\te.preventDefault();\n\t\t\tremoveTag(tags.length - 1);\n\t\t}\n\t};\n\n\t// 失去焦点时添加\n\tconst handleBlur = () => {\n\t\tsetIsFocused(false);\n\t\tif (inputValue.trim()) {\n\t\t\taddTag(inputValue);\n\t\t}\n\t};\n\n\t// 双击编辑 Tag\n\tconst handleDoubleClick = (index: number, tag: string) => {\n\t\tif (disabled) return;\n\t\tremoveTag(index);\n\t\tsetInputValue(tag);\n\t\tinputRef.current?.focus();\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tclassName={`rpc_tag_input ${isFocused ? 'rpc_tag_input_focused' : ''} ${\n\t\t\t\tdisabled ? 'rpc_tag_input_disabled' : ''\n\t\t\t} ${errorMessage ? 'rpc_tag_input_error' : ''} ${className}`}\n\t\t\tstyle={style}\n\t\t\tonClick={() => {\n\t\t\t\tif (!disabled) inputRef.current?.focus();\n\t\t\t}}\n\t\t>\n\t\t\t{tags.map((tag, idx) => {\n\t\t\t\tif (renderTag) {\n\t\t\t\t\treturn renderTag(tag, idx, () => removeTag(idx));\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<span\n\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\tclassName=\"rpc_tag_input_tag\"\n\t\t\t\t\t\tonDoubleClick={() => handleDoubleClick(idx, tag)}\n\t\t\t\t\t\ttitle=\"双击可重新编辑\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>{tag}</span>\n\t\t\t\t\t\t{!disabled && (\n\t\t\t\t\t\t\t<CloseOutlined\n\t\t\t\t\t\t\t\tclassName=\"rpc_tag_input_tag_close\"\n\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\tremoveTag(idx);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{(!maxCount || tags.length < maxCount) && (\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\tmaxLength={maxLength}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName=\"rpc_tag_input_input\"\n\t\t\t\t\tplaceholder={tags.length === 0 ? placeholder : ''}\n\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\tsetInputValue(e.target.value);\n\t\t\t\t\t\tif (errorMessage) setErrorMessage('');\n\t\t\t\t\t}}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{errorMessage && <div className=\"rpc_tag_input_error_tip\">{errorMessage}</div>}\n\t\t</div>\n\t);\n};\n\nexport default TagInput;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FullscreenExitOutlined, FullscreenOutlined } from './chunk-
|
|
1
|
+
import { FullscreenExitOutlined, FullscreenOutlined } from './chunk-537T6BR3.js';
|
|
2
2
|
import { forwardRef, useRef, useState, useCallback, useImperativeHandle, useEffect } from 'react';
|
|
3
3
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -155,5 +155,5 @@ Fullscreen.displayName = "Fullscreen";
|
|
|
155
155
|
var Fullscreen_default = Fullscreen;
|
|
156
156
|
|
|
157
157
|
export { Fullscreen_default };
|
|
158
|
-
//# sourceMappingURL=chunk-
|
|
159
|
-
//# sourceMappingURL=chunk-
|
|
158
|
+
//# sourceMappingURL=chunk-G76ELHWZ.js.map
|
|
159
|
+
//# sourceMappingURL=chunk-G76ELHWZ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../Fullscreen/index.tsx"],"names":[],"mappings":";;;;AA8DA,IAAM,UAAA,GAAa,UAAA;AAAA,EAClB,CACC;AAAA,IACC,QAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP,MAAA;AAAA,IACA,UAAA,EAAY,oBAAA;AAAA,IACZ,iBAAA,GAAoB,KAAA;AAAA,IACpB,QAAA;AAAA,IACA,UAAA,GAAa,KAAA;AAAA,IACb,cAAA,GAAiB,WAAA;AAAA,IACjB,SAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA,GAAY,EAAA;AAAA,IACZ;AAAA,KAED,GAAA,KACI;AACJ,IAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,IAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAI,SAAkB,iBAAiB,CAAA;AACvF,IAAA,MAAM,eAAe,oBAAA,KAAyB,MAAA;AAC9C,IAAA,MAAM,YAAA,GAAe,eAAe,oBAAA,GAAuB,kBAAA;AAE3D,IAAA,MAAM,gBAAA,GAAmB,YAAY,MAA0B;AAC9D,MAAA,IAAI,OAAO,WAAW,UAAA,EAAY;AACjC,QAAA,OAAO,MAAA,EAAO;AAAA,MACf;AACA,MAAA,IAAI,MAAA,EAAQ;AACX,QAAA,OAAO,MAAA;AAAA,MACR;AACA,MAAA,OAAO,YAAA,CAAa,OAAA;AAAA,IACrB,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAGX,IAAA,MAAM,KAAA,GAAQ,YAAY,YAAY;AACrC,MAAA,MAAM,KAAK,gBAAA,EAAiB;AAC5B,MAAA,IAAI,CAAC,EAAA,EAAI;AAET,MAAA,IAAI,SAAS,SAAA,EAAW;AACvB,QAAA,IAAI,GAAG,iBAAA,EAAmB;AACzB,UAAA,MAAM,GAAG,iBAAA,EAAkB;AAAA,QAC5B,CAAA,MAAA,IAAY,GAAW,uBAAA,EAAyB;AAC/C,UAAA,MAAO,GAAW,uBAAA,EAAwB;AAAA,QAC3C,CAAA,MAAA,IAAY,GAAW,mBAAA,EAAqB;AAC3C,UAAA,MAAO,GAAW,mBAAA,EAAoB;AAAA,QACvC;AAAA,MACD,CAAA,MAAO;AACN,QAAA,IAAI,CAAC,YAAA,EAAc;AAClB,UAAA,qBAAA,CAAsB,IAAI,CAAA;AAAA,QAC3B;AACA,QAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,IAAA,CAAA;AAAA,MACZ;AAAA,IACD,GAAG,CAAC,IAAA,EAAM,gBAAA,EAAkB,YAAA,EAAc,QAAQ,CAAC,CAAA;AAGnD,IAAA,MAAM,IAAA,GAAO,YAAY,YAAY;AACpC,MAAA,IAAI,SAAS,SAAA,EAAW;AACvB,QAAA,IAAI,QAAA,CAAS,iBAAA,IAAsB,QAAA,CAAiB,uBAAA,EAAyB;AAC5E,UAAA,IAAI,SAAS,cAAA,EAAgB;AAC5B,YAAA,MAAM,SAAS,cAAA,EAAe;AAAA,UAC/B,CAAA,MAAA,IAAY,SAAiB,oBAAA,EAAsB;AAClD,YAAA,MAAO,SAAiB,oBAAA,EAAqB;AAAA,UAC9C;AAAA,QACD;AAAA,MACD,CAAA,MAAO;AACN,QAAA,IAAI,CAAC,YAAA,EAAc;AAClB,UAAA,qBAAA,CAAsB,KAAK,CAAA;AAAA,QAC5B;AACA,QAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,KAAA,CAAA;AAAA,MACZ;AAAA,IACD,CAAA,EAAG,CAAC,IAAA,EAAM,YAAA,EAAc,QAAQ,CAAC,CAAA;AAGjC,IAAA,MAAM,MAAA,GAAS,YAAY,YAAY;AACtC,MAAA,IAAI,YAAA,EAAc;AACjB,QAAA,MAAM,IAAA,EAAK;AAAA,MACZ,CAAA,MAAO;AACN,QAAA,MAAM,KAAA,EAAM;AAAA,MACb;AAAA,IACD,CAAA,EAAG,CAAC,YAAA,EAAc,KAAA,EAAO,IAAI,CAAC,CAAA;AAG9B,IAAA,mBAAA;AAAA,MACC,GAAA;AAAA,MACA,OAAO;AAAA,QACN,KAAA;AAAA,QACA,IAAA;AAAA,QACA,MAAA;AAAA,QACA,YAAA;AAAA,QACA,UAAA,EAAY;AAAA,OACb,CAAA;AAAA,MACA,CAAC,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,cAAc,gBAAgB;AAAA,KACrD;AAGA,IAAA,SAAA,CAAU,MAAM;AACf,MAAA,IAAI,SAAS,SAAA,EAAW;AAExB,MAAA,MAAM,yBAAyB,MAAM;AACpC,QAAA,MAAM,cACL,QAAA,CAAS,iBAAA,IACR,SAAiB,uBAAA,IACjB,QAAA,CAAiB,wBACjB,QAAA,CAAiB,mBAAA;AAEnB,QAAA,MAAM,WAAW,gBAAA,EAAiB;AAClC,QAAA,MAAM,WACL,WAAA,KAAgB,IAAA,KACf,WAAA,KAAgB,QAAA,IAAY,aAAa,QAAA,CAAS,eAAA,CAAA;AAEpD,QAAA,IAAI,CAAC,YAAA,EAAc;AAClB,UAAA,qBAAA,CAAsB,QAAQ,CAAA;AAAA,QAC/B;AACA,QAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,QAAA,CAAA;AAAA,MACZ,CAAA;AAEA,MAAA,QAAA,CAAS,gBAAA,CAAiB,oBAAoB,sBAAsB,CAAA;AACpE,MAAA,QAAA,CAAS,gBAAA,CAAiB,0BAA0B,sBAAsB,CAAA;AAC1E,MAAA,QAAA,CAAS,gBAAA,CAAiB,uBAAuB,sBAAsB,CAAA;AACvE,MAAA,QAAA,CAAS,gBAAA,CAAiB,sBAAsB,sBAAsB,CAAA;AAEtE,MAAA,OAAO,MAAM;AACZ,QAAA,QAAA,CAAS,mBAAA,CAAoB,oBAAoB,sBAAsB,CAAA;AACvE,QAAA,QAAA,CAAS,mBAAA,CAAoB,0BAA0B,sBAAsB,CAAA;AAC7E,QAAA,QAAA,CAAS,mBAAA,CAAoB,uBAAuB,sBAAsB,CAAA;AAC1E,QAAA,QAAA,CAAS,mBAAA,CAAoB,sBAAsB,sBAAsB,CAAA;AAAA,MAC1E,CAAA;AAAA,IACD,GAAG,CAAC,IAAA,EAAM,gBAAA,EAAkB,YAAA,EAAc,QAAQ,CAAC,CAAA;AAGnD,IAAA,SAAA,CAAU,MAAM;AACf,MAAA,IAAI,IAAA,KAAS,KAAA,IAAS,CAAC,YAAA,EAAc;AAErC,MAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAqB;AAC3C,QAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACvB,UAAA,IAAA,EAAK;AAAA,QACN;AAAA,MACD,CAAA;AAEA,MAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAChD,MAAA,OAAO,MAAM;AACZ,QAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,MACpD,CAAA;AAAA,IACD,CAAA,EAAG,CAAC,IAAA,EAAM,YAAA,EAAc,IAAI,CAAC,CAAA;AAE7B,IAAA,MAAM,gBAAgB,CAAA,oCAAA,EAAuC,cAAA,CAAe,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAC,CAAA,CAAA;AAC7F,IAAA,MAAM,aAAA,GAAgB,SAAS,KAAA,IAAS,YAAA;AAExC,IAAA,MAAM,gBAAA,GAAmB,SAAA,IAAA,IAAA,GAAA,SAAA,mBAAa,GAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA;AAC1D,IAAA,MAAM,eAAA,GAAkB,QAAA,IAAA,IAAA,GAAA,QAAA,mBAAY,GAAA,CAAC,sBAAA,EAAA,EAAuB,CAAA;AAE5D,IAAA,uBACC,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,GAAA,EAAK,YAAA;AAAA,QACL,SAAA,EAAW,CAAA,yBAAA,EACV,YAAA,GAAe,qCAAA,GAAwC,EACxD,IAAI,aAAA,GAAgB,yCAAA,GAA4C,EAAE,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AAAA,QAC/E,KAAA,EAAO;AAAA,UACN,GAAI,YAAA,GAAe,EAAE,eAAA,EAAiB,SAAA,KAAc,EAAC;AAAA,UACrD,GAAG;AAAA,SACJ;AAAA,QAGC,QAAA,EAAA;AAAA,UAAA,UAAA,oBACA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACA,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAW,uCAAuC,aAAa,CAAA,CAAA;AAAA,cAC/D,OAAA,EAAS,MAAA;AAAA,cACT,KAAA,EAAO,eAAe,gCAAA,GAAe,0BAAA;AAAA,cAEpC,yBAAe,eAAA,GAAkB;AAAA;AAAA,WACnC;AAAA,UAGA,OAAO,QAAA,KAAa,UAAA,GAClB,QAAA,CAAS;AAAA,YACT,YAAA;AAAA,YACA,KAAA;AAAA,YACA,IAAA;AAAA,YACA;AAAA,WACA,CAAA,GACA;AAAA;AAAA;AAAA,KACJ;AAAA,EAEF;AACD,CAAA;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AAEzB,IAAO,kBAAA,GAAQ","file":"chunk-EMT4NUI5.js","sourcesContent":["import React, {\n\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\tuseImperativeHandle,\n\tforwardRef,\n\tReactNode,\n\tCSSProperties,\n} from 'react';\nimport { FullscreenOutlined, FullscreenExitOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface FullscreenRef {\n\t/** 进入全屏 */\n\tenter: () => Promise<void>;\n\t/** 退出全屏 */\n\texit: () => Promise<void>;\n\t/** 切换全屏状态 */\n\ttoggle: () => Promise<void>;\n\t/** 当前是否处于全屏状态 */\n\tisFullscreen: boolean;\n\t/** 当前目标容器 DOM 元素 */\n\tgetElement: () => HTMLElement | null;\n}\n\nexport type FullscreenMode = 'browser' | 'web';\nexport type FullscreenButtonPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';\n\nexport interface FullscreenRenderProps {\n\tisFullscreen: boolean;\n\tenter: () => Promise<void>;\n\texit: () => Promise<void>;\n\ttoggle: () => Promise<void>;\n}\n\nexport interface FullscreenProps {\n\t/** 子元素或 Render Props 函数 */\n\tchildren?: ReactNode | ((props: FullscreenRenderProps) => ReactNode);\n\t/** 全屏模式:'browser' 原生浏览器全屏,'web' 网页内最大化置顶 */\n\tmode?: FullscreenMode;\n\t/** 自定义目标全屏元素(不传时默认为当前包裹的容器元素,传 document.documentElement 时为整页全屏) */\n\ttarget?: HTMLElement | (() => HTMLElement | null) | null;\n\t/** 受控全屏状态 */\n\tfullscreen?: boolean;\n\t/** 默认全屏状态 */\n\tdefaultFullscreen?: boolean;\n\t/** 全屏状态变化回调 */\n\tonChange?: (isFullscreen: boolean) => void;\n\t/** 是否在容器角落展示快速全屏切换悬浮按钮,默认 false */\n\tshowButton?: boolean;\n\t/** 悬浮按钮对齐位置,默认 'top-right' */\n\tbuttonPosition?: FullscreenButtonPosition;\n\t/** 悬浮按钮的自定义 Tooltip 提示或图标 */\n\tenterIcon?: ReactNode;\n\texitIcon?: ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst Fullscreen = forwardRef<FullscreenRef, FullscreenProps>(\n\t(\n\t\t{\n\t\t\tchildren,\n\t\t\tmode = 'browser',\n\t\t\ttarget,\n\t\t\tfullscreen: controlledFullscreen,\n\t\t\tdefaultFullscreen = false,\n\t\t\tonChange,\n\t\t\tshowButton = false,\n\t\t\tbuttonPosition = 'top-right',\n\t\t\tenterIcon,\n\t\t\texitIcon,\n\t\t\tclassName = '',\n\t\t\tstyle,\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst containerRef = useRef<HTMLDivElement>(null);\n\t\tconst [internalFullscreen, setInternalFullscreen] = useState<boolean>(defaultFullscreen);\n\t\tconst isControlled = controlledFullscreen !== undefined;\n\t\tconst isFullscreen = isControlled ? controlledFullscreen : internalFullscreen;\n\n\t\tconst getTargetElement = useCallback((): HTMLElement | null => {\n\t\t\tif (typeof target === 'function') {\n\t\t\t\treturn target();\n\t\t\t}\n\t\t\tif (target) {\n\t\t\t\treturn target;\n\t\t\t}\n\t\t\treturn containerRef.current;\n\t\t}, [target]);\n\n\t\t// 进入全屏\n\t\tconst enter = useCallback(async () => {\n\t\t\tconst el = getTargetElement();\n\t\t\tif (!el) return;\n\n\t\t\tif (mode === 'browser') {\n\t\t\t\tif (el.requestFullscreen) {\n\t\t\t\t\tawait el.requestFullscreen();\n\t\t\t\t} else if ((el as any).webkitRequestFullscreen) {\n\t\t\t\t\tawait (el as any).webkitRequestFullscreen();\n\t\t\t\t} else if ((el as any).msRequestFullscreen) {\n\t\t\t\t\tawait (el as any).msRequestFullscreen();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalFullscreen(true);\n\t\t\t\t}\n\t\t\t\tonChange?.(true);\n\t\t\t}\n\t\t}, [mode, getTargetElement, isControlled, onChange]);\n\n\t\t// 退出全屏\n\t\tconst exit = useCallback(async () => {\n\t\t\tif (mode === 'browser') {\n\t\t\t\tif (document.fullscreenElement || (document as any).webkitFullscreenElement) {\n\t\t\t\t\tif (document.exitFullscreen) {\n\t\t\t\t\t\tawait document.exitFullscreen();\n\t\t\t\t\t} else if ((document as any).webkitExitFullscreen) {\n\t\t\t\t\t\tawait (document as any).webkitExitFullscreen();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalFullscreen(false);\n\t\t\t\t}\n\t\t\t\tonChange?.(false);\n\t\t\t}\n\t\t}, [mode, isControlled, onChange]);\n\n\t\t// 切换全屏\n\t\tconst toggle = useCallback(async () => {\n\t\t\tif (isFullscreen) {\n\t\t\t\tawait exit();\n\t\t\t} else {\n\t\t\t\tawait enter();\n\t\t\t}\n\t\t}, [isFullscreen, enter, exit]);\n\n\t\t// 暴露 Imperative Ref\n\t\tuseImperativeHandle(\n\t\t\tref,\n\t\t\t() => ({\n\t\t\t\tenter,\n\t\t\t\texit,\n\t\t\t\ttoggle,\n\t\t\t\tisFullscreen,\n\t\t\t\tgetElement: getTargetElement,\n\t\t\t}),\n\t\t\t[enter, exit, toggle, isFullscreen, getTargetElement],\n\t\t);\n\n\t\t// 监听浏览器原生全屏事件\n\t\tuseEffect(() => {\n\t\t\tif (mode !== 'browser') return;\n\n\t\t\tconst handleFullscreenChange = () => {\n\t\t\t\tconst currentFsEl =\n\t\t\t\t\tdocument.fullscreenElement ||\n\t\t\t\t\t(document as any).webkitFullscreenElement ||\n\t\t\t\t\t(document as any).mozFullScreenElement ||\n\t\t\t\t\t(document as any).msFullscreenElement;\n\n\t\t\t\tconst targetEl = getTargetElement();\n\t\t\t\tconst isActive =\n\t\t\t\t\tcurrentFsEl !== null &&\n\t\t\t\t\t(currentFsEl === targetEl || targetEl === document.documentElement);\n\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalFullscreen(isActive);\n\t\t\t\t}\n\t\t\t\tonChange?.(isActive);\n\t\t\t};\n\n\t\t\tdocument.addEventListener('fullscreenchange', handleFullscreenChange);\n\t\t\tdocument.addEventListener('webkitfullscreenchange', handleFullscreenChange);\n\t\t\tdocument.addEventListener('mozfullscreenchange', handleFullscreenChange);\n\t\t\tdocument.addEventListener('MSFullscreenChange', handleFullscreenChange);\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('fullscreenchange', handleFullscreenChange);\n\t\t\t\tdocument.removeEventListener('webkitfullscreenchange', handleFullscreenChange);\n\t\t\t\tdocument.removeEventListener('mozfullscreenchange', handleFullscreenChange);\n\t\t\t\tdocument.removeEventListener('MSFullscreenChange', handleFullscreenChange);\n\t\t\t};\n\t\t}, [mode, getTargetElement, isControlled, onChange]);\n\n\t\t// Web 模拟全屏模式下的 ESC 监听\n\t\tuseEffect(() => {\n\t\t\tif (mode !== 'web' || !isFullscreen) return;\n\n\t\t\tconst handleKeyDown = (e: KeyboardEvent) => {\n\t\t\t\tif (e.key === 'Escape') {\n\t\t\t\t\texit();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\twindow.addEventListener('keydown', handleKeyDown);\n\t\t\treturn () => {\n\t\t\t\twindow.removeEventListener('keydown', handleKeyDown);\n\t\t\t};\n\t\t}, [mode, isFullscreen, exit]);\n\n\t\tconst positionClass = `rpc_fullscreen_container_action_btn_${buttonPosition.replace('-', '_')}`;\n\t\tconst isWebFsActive = mode === 'web' && isFullscreen;\n\n\t\tconst currentEnterIcon = enterIcon ?? <FullscreenOutlined />;\n\t\tconst currentExitIcon = exitIcon ?? <FullscreenExitOutlined />;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName={`rpc_fullscreen_container ${\n\t\t\t\t\tisFullscreen ? 'rpc_fullscreen_container_fullscreen' : ''\n\t\t\t\t} ${isWebFsActive ? 'rpc_fullscreen_container_web_fullscreen' : ''} ${className}`}\n\t\t\t\tstyle={{\n\t\t\t\t\t...(isFullscreen ? { backgroundColor: '#ffffff' } : {}),\n\t\t\t\t\t...style,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* 右上角/指定角落的快捷切换按钮 */}\n\t\t\t\t{showButton && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={`rpc_fullscreen_container_action_btn ${positionClass}`}\n\t\t\t\t\t\tonClick={toggle}\n\t\t\t\t\t\ttitle={isFullscreen ? '退出全屏 (ESC)' : '全屏显示'}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isFullscreen ? currentExitIcon : currentEnterIcon}\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\n\t\t\t\t{typeof children === 'function'\n\t\t\t\t\t? children({\n\t\t\t\t\t\t\tisFullscreen,\n\t\t\t\t\t\t\tenter,\n\t\t\t\t\t\t\texit,\n\t\t\t\t\t\t\ttoggle,\n\t\t\t\t\t\t})\n\t\t\t\t\t: children}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nFullscreen.displayName = 'Fullscreen';\n\nexport default Fullscreen;\n"]}
|
|
1
|
+
{"version":3,"sources":["../Fullscreen/index.tsx"],"names":[],"mappings":"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","file":"chunk-G76ELHWZ.js","sourcesContent":["import React, {\n\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\tuseImperativeHandle,\n\tforwardRef,\n\tReactNode,\n\tCSSProperties,\n} from 'react';\nimport { FullscreenOutlined, FullscreenExitOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface FullscreenRef {\n\t/** 进入全屏 */\n\tenter: () => Promise<void>;\n\t/** 退出全屏 */\n\texit: () => Promise<void>;\n\t/** 切换全屏状态 */\n\ttoggle: () => Promise<void>;\n\t/** 当前是否处于全屏状态 */\n\tisFullscreen: boolean;\n\t/** 当前目标容器 DOM 元素 */\n\tgetElement: () => HTMLElement | null;\n}\n\nexport type FullscreenMode = 'browser' | 'web';\nexport type FullscreenButtonPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';\n\nexport interface FullscreenRenderProps {\n\tisFullscreen: boolean;\n\tenter: () => Promise<void>;\n\texit: () => Promise<void>;\n\ttoggle: () => Promise<void>;\n}\n\nexport interface FullscreenProps {\n\t/** 子元素或 Render Props 函数 */\n\tchildren?: ReactNode | ((props: FullscreenRenderProps) => ReactNode);\n\t/** 全屏模式:'browser' 原生浏览器全屏,'web' 网页内最大化置顶 */\n\tmode?: FullscreenMode;\n\t/** 自定义目标全屏元素(不传时默认为当前包裹的容器元素,传 document.documentElement 时为整页全屏) */\n\ttarget?: HTMLElement | (() => HTMLElement | null) | null;\n\t/** 受控全屏状态 */\n\tfullscreen?: boolean;\n\t/** 默认全屏状态 */\n\tdefaultFullscreen?: boolean;\n\t/** 全屏状态变化回调 */\n\tonChange?: (isFullscreen: boolean) => void;\n\t/** 是否在容器角落展示快速全屏切换悬浮按钮,默认 false */\n\tshowButton?: boolean;\n\t/** 悬浮按钮对齐位置,默认 'top-right' */\n\tbuttonPosition?: FullscreenButtonPosition;\n\t/** 悬浮按钮的自定义 Tooltip 提示或图标 */\n\tenterIcon?: ReactNode;\n\texitIcon?: ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst Fullscreen = forwardRef<FullscreenRef, FullscreenProps>(\n\t(\n\t\t{\n\t\t\tchildren,\n\t\t\tmode = 'browser',\n\t\t\ttarget,\n\t\t\tfullscreen: controlledFullscreen,\n\t\t\tdefaultFullscreen = false,\n\t\t\tonChange,\n\t\t\tshowButton = false,\n\t\t\tbuttonPosition = 'top-right',\n\t\t\tenterIcon,\n\t\t\texitIcon,\n\t\t\tclassName = '',\n\t\t\tstyle,\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst containerRef = useRef<HTMLDivElement>(null);\n\t\tconst [internalFullscreen, setInternalFullscreen] = useState<boolean>(defaultFullscreen);\n\t\tconst isControlled = controlledFullscreen !== undefined;\n\t\tconst isFullscreen = isControlled ? controlledFullscreen : internalFullscreen;\n\n\t\tconst getTargetElement = useCallback((): HTMLElement | null => {\n\t\t\tif (typeof target === 'function') {\n\t\t\t\treturn target();\n\t\t\t}\n\t\t\tif (target) {\n\t\t\t\treturn target;\n\t\t\t}\n\t\t\treturn containerRef.current;\n\t\t}, [target]);\n\n\t\t// 进入全屏\n\t\tconst enter = useCallback(async () => {\n\t\t\tconst el = getTargetElement();\n\t\t\tif (!el) return;\n\n\t\t\tif (mode === 'browser') {\n\t\t\t\tif (el.requestFullscreen) {\n\t\t\t\t\tawait el.requestFullscreen();\n\t\t\t\t} else if ((el as any).webkitRequestFullscreen) {\n\t\t\t\t\tawait (el as any).webkitRequestFullscreen();\n\t\t\t\t} else if ((el as any).msRequestFullscreen) {\n\t\t\t\t\tawait (el as any).msRequestFullscreen();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalFullscreen(true);\n\t\t\t\t}\n\t\t\t\tonChange?.(true);\n\t\t\t}\n\t\t}, [mode, getTargetElement, isControlled, onChange]);\n\n\t\t// 退出全屏\n\t\tconst exit = useCallback(async () => {\n\t\t\tif (mode === 'browser') {\n\t\t\t\tif (document.fullscreenElement || (document as any).webkitFullscreenElement) {\n\t\t\t\t\tif (document.exitFullscreen) {\n\t\t\t\t\t\tawait document.exitFullscreen();\n\t\t\t\t\t} else if ((document as any).webkitExitFullscreen) {\n\t\t\t\t\t\tawait (document as any).webkitExitFullscreen();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalFullscreen(false);\n\t\t\t\t}\n\t\t\t\tonChange?.(false);\n\t\t\t}\n\t\t}, [mode, isControlled, onChange]);\n\n\t\t// 切换全屏\n\t\tconst toggle = useCallback(async () => {\n\t\t\tif (isFullscreen) {\n\t\t\t\tawait exit();\n\t\t\t} else {\n\t\t\t\tawait enter();\n\t\t\t}\n\t\t}, [isFullscreen, enter, exit]);\n\n\t\t// 暴露 Imperative Ref\n\t\tuseImperativeHandle(\n\t\t\tref,\n\t\t\t() => ({\n\t\t\t\tenter,\n\t\t\t\texit,\n\t\t\t\ttoggle,\n\t\t\t\tisFullscreen,\n\t\t\t\tgetElement: getTargetElement,\n\t\t\t}),\n\t\t\t[enter, exit, toggle, isFullscreen, getTargetElement],\n\t\t);\n\n\t\t// 监听浏览器原生全屏事件\n\t\tuseEffect(() => {\n\t\t\tif (mode !== 'browser') return;\n\n\t\t\tconst handleFullscreenChange = () => {\n\t\t\t\tconst currentFsEl =\n\t\t\t\t\tdocument.fullscreenElement ||\n\t\t\t\t\t(document as any).webkitFullscreenElement ||\n\t\t\t\t\t(document as any).mozFullScreenElement ||\n\t\t\t\t\t(document as any).msFullscreenElement;\n\n\t\t\t\tconst targetEl = getTargetElement();\n\t\t\t\tconst isActive =\n\t\t\t\t\tcurrentFsEl !== null &&\n\t\t\t\t\t(currentFsEl === targetEl || targetEl === document.documentElement);\n\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalFullscreen(isActive);\n\t\t\t\t}\n\t\t\t\tonChange?.(isActive);\n\t\t\t};\n\n\t\t\tdocument.addEventListener('fullscreenchange', handleFullscreenChange);\n\t\t\tdocument.addEventListener('webkitfullscreenchange', handleFullscreenChange);\n\t\t\tdocument.addEventListener('mozfullscreenchange', handleFullscreenChange);\n\t\t\tdocument.addEventListener('MSFullscreenChange', handleFullscreenChange);\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('fullscreenchange', handleFullscreenChange);\n\t\t\t\tdocument.removeEventListener('webkitfullscreenchange', handleFullscreenChange);\n\t\t\t\tdocument.removeEventListener('mozfullscreenchange', handleFullscreenChange);\n\t\t\t\tdocument.removeEventListener('MSFullscreenChange', handleFullscreenChange);\n\t\t\t};\n\t\t}, [mode, getTargetElement, isControlled, onChange]);\n\n\t\t// Web 模拟全屏模式下的 ESC 监听\n\t\tuseEffect(() => {\n\t\t\tif (mode !== 'web' || !isFullscreen) return;\n\n\t\t\tconst handleKeyDown = (e: KeyboardEvent) => {\n\t\t\t\tif (e.key === 'Escape') {\n\t\t\t\t\texit();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\twindow.addEventListener('keydown', handleKeyDown);\n\t\t\treturn () => {\n\t\t\t\twindow.removeEventListener('keydown', handleKeyDown);\n\t\t\t};\n\t\t}, [mode, isFullscreen, exit]);\n\n\t\tconst positionClass = `rpc_fullscreen_container_action_btn_${buttonPosition.replace('-', '_')}`;\n\t\tconst isWebFsActive = mode === 'web' && isFullscreen;\n\n\t\tconst currentEnterIcon = enterIcon ?? <FullscreenOutlined />;\n\t\tconst currentExitIcon = exitIcon ?? <FullscreenExitOutlined />;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName={`rpc_fullscreen_container ${\n\t\t\t\t\tisFullscreen ? 'rpc_fullscreen_container_fullscreen' : ''\n\t\t\t\t} ${isWebFsActive ? 'rpc_fullscreen_container_web_fullscreen' : ''} ${className}`}\n\t\t\t\tstyle={{\n\t\t\t\t\t...(isFullscreen ? { backgroundColor: '#ffffff' } : {}),\n\t\t\t\t\t...style,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* 右上角/指定角落的快捷切换按钮 */}\n\t\t\t\t{showButton && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={`rpc_fullscreen_container_action_btn ${positionClass}`}\n\t\t\t\t\t\tonClick={toggle}\n\t\t\t\t\t\ttitle={isFullscreen ? '退出全屏 (ESC)' : '全屏显示'}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isFullscreen ? currentExitIcon : currentEnterIcon}\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\n\t\t\t\t{typeof children === 'function'\n\t\t\t\t\t? children({\n\t\t\t\t\t\t\tisFullscreen,\n\t\t\t\t\t\t\tenter,\n\t\t\t\t\t\t\texit,\n\t\t\t\t\t\t\ttoggle,\n\t\t\t\t\t\t})\n\t\t\t\t\t: children}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nFullscreen.displayName = 'Fullscreen';\n\nexport default Fullscreen;\n"]}
|
|
@@ -58,18 +58,10 @@ function PeriodSelect({
|
|
|
58
58
|
showActiveLine ? "rpc_period_select_item_has_active_line" : "",
|
|
59
59
|
isItemDisabled ? "rpc_period_select_item_disabled" : ""
|
|
60
60
|
].filter(Boolean).join(" ");
|
|
61
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
62
|
-
"
|
|
63
|
-
{
|
|
64
|
-
|
|
65
|
-
onClick: () => handleSelect(item),
|
|
66
|
-
children: [
|
|
67
|
-
showActiveLine && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_period_select_active_line" }),
|
|
68
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_period_select_text", children: item.label })
|
|
69
|
-
]
|
|
70
|
-
},
|
|
71
|
-
String(item.value)
|
|
72
|
-
);
|
|
61
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: itemClass, onClick: () => handleSelect(item), children: [
|
|
62
|
+
showActiveLine && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_period_select_active_line" }),
|
|
63
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_period_select_text", children: item.label })
|
|
64
|
+
] }, String(item.value));
|
|
73
65
|
})
|
|
74
66
|
}
|
|
75
67
|
);
|
|
@@ -79,5 +71,5 @@ var PeriodSelect_default = PeriodSelect;
|
|
|
79
71
|
exports.DEFAULT_PERIOD_OPTIONS = DEFAULT_PERIOD_OPTIONS;
|
|
80
72
|
exports.PeriodSelect = PeriodSelect;
|
|
81
73
|
exports.PeriodSelect_default = PeriodSelect_default;
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
83
|
-
//# sourceMappingURL=chunk-
|
|
74
|
+
//# sourceMappingURL=chunk-IHUBENM6.cjs.map
|
|
75
|
+
//# sourceMappingURL=chunk-IHUBENM6.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../PeriodSelect/index.tsx"],"names":["useState","jsx","jsxs"],"mappings":"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","file":"chunk-IHUBENM6.cjs","sourcesContent":["import React, { useState, CSSProperties, ReactNode } from 'react';\nimport './index.less';\n\nexport interface PeriodSelectOption<T = string | number> {\n\t/** 选项展示内容 */\n\tlabel: ReactNode;\n\t/** 选项值 */\n\tvalue: T;\n\t/** 是否禁用当前选项 */\n\tdisabled?: boolean;\n}\n\nexport type PeriodSelectSize = 'small' | 'middle' | 'large';\n\nexport interface PeriodSelectProps<T = string | number> {\n\t/** 选项列表,默认提供【周度、月度、季度、年度】 */\n\toptions?: PeriodSelectOption<T>[];\n\t/** 当前选中值(受控模式) */\n\tvalue?: T;\n\t/** 默认选中值(非受控模式) */\n\tdefaultValue?: T;\n\t/** 切换选项时的回调函数 */\n\tonChange?: (value: T, option: PeriodSelectOption<T>) => void;\n\t/** 尺寸大小,默认为 'middle' */\n\tsize?: PeriodSelectSize;\n\t/** 自定义高亮激活颜色(文字与高亮竖线) */\n\tactiveColor?: string;\n\t/** 是否整体禁用 */\n\tdisabled?: boolean;\n\t/** 是否等宽撑满父容器 */\n\tblock?: boolean;\n\t/** 自定义容器类名 */\n\tclassName?: string;\n\t/** 自定义容器样式 */\n\tstyle?: CSSProperties;\n}\n\n// 默认内置的周期选项(精准匹配周度、月度、季度、年度)\nexport const DEFAULT_PERIOD_OPTIONS: PeriodSelectOption<string>[] = [\n\t{ label: '周度', value: 'week' },\n\t{ label: '月度', value: 'month' },\n\t{ label: '季度', value: 'quarter' },\n\t{ label: '年度', value: 'year' },\n];\n\nexport function PeriodSelect<T = string | number>({\n\toptions = DEFAULT_PERIOD_OPTIONS as unknown as PeriodSelectOption<T>[],\n\tvalue: controlledValue,\n\tdefaultValue,\n\tonChange,\n\tsize = 'middle',\n\tactiveColor,\n\tdisabled = false,\n\tblock = false,\n\tclassName = '',\n\tstyle,\n}: PeriodSelectProps<T>) {\n\tconst initialValue = defaultValue !== undefined ? defaultValue : (options[0]?.value as T);\n\tconst [internalValue, setInternalValue] = useState<T>(initialValue);\n\n\tconst currentValue = controlledValue !== undefined ? controlledValue : internalValue;\n\n\tconst handleSelect = (item: PeriodSelectOption<T>) => {\n\t\tif (disabled || item.disabled) return;\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalValue(item.value);\n\t\t}\n\t\tonChange?.(item.value, item);\n\t};\n\n\tconst containerClass = [\n\t\t'rpc_period_select',\n\t\t`rpc_period_select_${size}`,\n\t\tdisabled ? 'rpc_period_select_disabled' : '',\n\t\tblock ? 'rpc_period_select_block' : '',\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={containerClass}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t...style,\n\t\t\t\t\t...(activeColor ? { '--rpc-period-active-color': activeColor } : {}),\n\t\t\t\t} as CSSProperties\n\t\t\t}\n\t\t>\n\t\t\t{options.map((item, index) => {\n\t\t\t\tconst isActive = currentValue === item.value;\n\t\t\t\tconst isItemDisabled = disabled || Boolean(item.disabled);\n\n\t\t\t\t// 判断是否需要在当前选项左侧展示蓝色高亮竖线\n\t\t\t\t// 精确还原截图:当激活项不是第一项时,其左侧显示一条与主题色一致的竖线\n\t\t\t\tconst showActiveLine = isActive && index > 0;\n\n\t\t\t\tconst itemClass = [\n\t\t\t\t\t'rpc_period_select_item',\n\t\t\t\t\tisActive ? 'rpc_period_select_item_active' : '',\n\t\t\t\t\tshowActiveLine ? 'rpc_period_select_item_has_active_line' : '',\n\t\t\t\t\tisItemDisabled ? 'rpc_period_select_item_disabled' : '',\n\t\t\t\t]\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.join(' ');\n\n\t\t\t\treturn (\n\t\t\t\t\t<div key={String(item.value)} className={itemClass} onClick={() => handleSelect(item)}>\n\t\t\t\t\t\t{showActiveLine && <span className=\"rpc_period_select_active_line\" />}\n\t\t\t\t\t\t<span className=\"rpc_period_select_text\">{item.label}</span>\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 PeriodSelect;\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CopyButton_default } from './chunk-
|
|
2
|
-
import { EyeOutlined, EyeInvisibleOutlined } from './chunk-
|
|
1
|
+
import { CopyButton_default } from './chunk-KJ537QZS.js';
|
|
2
|
+
import { EyeOutlined, EyeInvisibleOutlined } from './chunk-537T6BR3.js';
|
|
3
3
|
import { useState, useMemo } from 'react';
|
|
4
4
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
@@ -77,5 +77,5 @@ var SensitiveMask = ({
|
|
|
77
77
|
var SensitiveMask_default = SensitiveMask;
|
|
78
78
|
|
|
79
79
|
export { SensitiveMask_default, maskSensitiveText };
|
|
80
|
-
//# sourceMappingURL=chunk-
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
80
|
+
//# sourceMappingURL=chunk-J3C46E6G.js.map
|
|
81
|
+
//# sourceMappingURL=chunk-J3C46E6G.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../SensitiveMask/index.tsx"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../SensitiveMask/index.tsx"],"names":[],"mappings":"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","file":"chunk-J3C46E6G.js","sourcesContent":["import React, { useState, useMemo, CSSProperties } from 'react';\nimport { EyeOutlined, EyeInvisibleOutlined } from '../src/icons';\nimport CopyButton from '../CopyButton';\nimport './index.less';\n\nexport type SensitiveType = 'phone' | 'idcard' | 'email' | 'bankcard' | 'custom';\n\nexport interface SensitiveMaskProps {\n\t/** 原始敏感文本 */\n\ttext: string;\n\t/** 脱敏类型:'phone' | 'idcard' | 'email' | 'bankcard' | 'custom',默认为 'phone' */\n\ttype?: SensitiveType;\n\t/** 默认是否脱敏遮蔽,默认为 true */\n\tdefaultMasked?: boolean;\n\t/** 遮罩字符,默认为 '*' */\n\tmaskSymbol?: string;\n\t/** 自定义保留头部明文字符数(仅 type='custom' 有效) */\n\tunmaskedStart?: number;\n\t/** 自定义保留尾部明文字符数(仅 type='custom' 有效) */\n\tunmaskedEnd?: number;\n\t/** 是否支持切换明文/密文查看,默认为 true */\n\ttoggleable?: boolean;\n\t/** 是否支持一键复制,默认为 false */\n\tcopyable?: boolean;\n\t/** 切换明文时的拦截回调(返回 false 可阻止切换,支持异步鉴权) */\n\tonToggle?: (nextMasked: boolean) => boolean | Promise<boolean>;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 格式化脱敏文本\nexport function maskSensitiveText(\n\traw: string,\n\ttype: SensitiveType = 'phone',\n\tmaskSymbol: string = '*',\n\tstartCount?: number,\n\tendCount?: number,\n): string {\n\tif (!raw) return '';\n\n\tswitch (type) {\n\t\tcase 'phone':\n\t\t\tif (raw.length <= 7) return raw;\n\t\t\treturn raw.slice(0, 3) + maskSymbol.repeat(4) + raw.slice(-4);\n\t\tcase 'idcard':\n\t\t\tif (raw.length <= 10) return raw;\n\t\t\treturn raw.slice(0, 6) + maskSymbol.repeat(Math.max(1, raw.length - 10)) + raw.slice(-4);\n\t\tcase 'bankcard':\n\t\t\tif (raw.length <= 8) return raw;\n\t\t\treturn (\n\t\t\t\traw.slice(0, 4) +\n\t\t\t\t' ' +\n\t\t\t\tmaskSymbol.repeat(4) +\n\t\t\t\t' ' +\n\t\t\t\tmaskSymbol.repeat(4) +\n\t\t\t\t' ' +\n\t\t\t\traw.slice(-4)\n\t\t\t);\n\t\tcase 'email': {\n\t\t\tconst atIndex = raw.indexOf('@');\n\t\t\tif (atIndex <= 1) return raw;\n\t\t\tconst name = raw.slice(0, atIndex);\n\t\t\tconst domain = raw.slice(atIndex);\n\t\t\tconst maskedName =\n\t\t\t\tname[0] +\n\t\t\t\tmaskSymbol.repeat(Math.max(1, name.length - 2)) +\n\t\t\t\t(name.length > 2 ? name.slice(-1) : '');\n\t\t\treturn maskedName + domain;\n\t\t}\n\t\tcase 'custom': {\n\t\t\tconst start = startCount !== undefined ? startCount : 2;\n\t\t\tconst end = endCount !== undefined ? endCount : 2;\n\t\t\tif (raw.length <= start + end) return raw;\n\t\t\treturn (\n\t\t\t\traw.slice(0, start) +\n\t\t\t\tmaskSymbol.repeat(Math.max(1, raw.length - start - end)) +\n\t\t\t\traw.slice(-end)\n\t\t\t);\n\t\t}\n\t\tdefault:\n\t\t\treturn raw;\n\t}\n}\n\nconst SensitiveMask: React.FC<SensitiveMaskProps> = ({\n\ttext = '',\n\ttype = 'phone',\n\tdefaultMasked = true,\n\tmaskSymbol = '*',\n\tunmaskedStart,\n\tunmaskedEnd,\n\ttoggleable = true,\n\tcopyable = false,\n\tonToggle,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [masked, setMasked] = useState<boolean>(defaultMasked);\n\n\tconst maskedText = useMemo(() => {\n\t\treturn maskSensitiveText(text, type, maskSymbol, unmaskedStart, unmaskedEnd);\n\t}, [text, type, maskSymbol, unmaskedStart, unmaskedEnd]);\n\n\tconst displayText = masked ? maskedText : text;\n\n\tconst handleToggle = async (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tconst nextState = !masked;\n\t\tif (onToggle) {\n\t\t\tconst allowed = await onToggle(nextState);\n\t\t\tif (allowed === false) return;\n\t\t}\n\t\tsetMasked(nextState);\n\t};\n\n\treturn (\n\t\t<span className={`rpc_sensitive_mask ${className}`} style={style}>\n\t\t\t<span className=\"rpc_sensitive_mask_text\">{displayText}</span>\n\n\t\t\t{toggleable && (\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"rpc_sensitive_mask_action_btn\"\n\t\t\t\t\tonClick={handleToggle}\n\t\t\t\t\ttitle={masked ? '点击查看明文' : '点击隐藏'}\n\t\t\t\t>\n\t\t\t\t\t{masked ? <EyeOutlined /> : <EyeInvisibleOutlined />}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{copyable && <CopyButton mode=\"icon\" text={text} tooltip=\"复制明文\" />}\n\t\t</span>\n\t);\n};\n\nexport default SensitiveMask;\n"]}
|
|
@@ -18,7 +18,10 @@ var CeilingBox = ({
|
|
|
18
18
|
affixedStyle
|
|
19
19
|
}) => {
|
|
20
20
|
const [isAffixed, setIsAffixed] = react.useState(false);
|
|
21
|
-
const [boxRect, setBoxRect] = react.useState({
|
|
21
|
+
const [boxRect, setBoxRect] = react.useState({
|
|
22
|
+
width: 0,
|
|
23
|
+
height: 0
|
|
24
|
+
});
|
|
22
25
|
const placeholderRef = react.useRef(null);
|
|
23
26
|
const contentRef = react.useRef(null);
|
|
24
27
|
const isAffixedRef = react.useRef(false);
|
|
@@ -113,5 +116,5 @@ var CeilingBox = ({
|
|
|
113
116
|
var CeilingBox_default = CeilingBox;
|
|
114
117
|
|
|
115
118
|
exports.CeilingBox_default = CeilingBox_default;
|
|
116
|
-
//# sourceMappingURL=chunk-
|
|
117
|
-
//# sourceMappingURL=chunk-
|
|
119
|
+
//# sourceMappingURL=chunk-JLW5ISIR.cjs.map
|
|
120
|
+
//# sourceMappingURL=chunk-JLW5ISIR.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../CeilingBox/index.tsx"],"names":["useState","useRef","useEffect","jsx"],"mappings":"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","file":"chunk-JLW5ISIR.cjs","sourcesContent":["import React, { useState, useEffect, useRef, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface CeilingBoxProps {\n\t/** 子元素内容,支持普通 ReactNode 或 Render Props 函数接收 isAffixed 状态 */\n\tchildren: ReactNode | ((isAffixed: boolean) => ReactNode);\n\t/** 距离视口/容器顶部的吸顶偏移距离(像素),默认为 0 */\n\toffsetTop?: number;\n\t/** 距离视口/容器底部的吸底偏移距离(像素,传值时开启吸底模式) */\n\toffsetBottom?: number;\n\t/** 监听滚动的目标 DOM 容器,不传时默认监听 window 全局滚动 */\n\ttarget?: () => HTMLElement | Window | null;\n\t/** 吸顶/吸底状态改变时的回调函数 */\n\tonChange?: (isAffixed: boolean) => void;\n\t/** 吸顶时是否自动启用毛玻璃磨砂与精致阴影滤镜,默认为 true */\n\tblur?: boolean;\n\t/** 吸顶/吸底状态下的图层层级 z-index,默认为 1000 */\n\tzIndex?: number;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义行内样式 */\n\tstyle?: CSSProperties;\n\t/** 吸顶激活状态下追加的自定义类名 */\n\taffixedClassName?: string;\n\t/** 吸顶激活状态下追加的自定义行内样式 */\n\taffixedStyle?: CSSProperties;\n}\n\nconst CeilingBox: React.FC<CeilingBoxProps> = ({\n\tchildren,\n\toffsetTop = 0,\n\toffsetBottom,\n\ttarget,\n\tonChange,\n\tblur = true,\n\tzIndex = 1000,\n\tclassName = '',\n\tstyle,\n\taffixedClassName = '',\n\taffixedStyle,\n}) => {\n\tconst [isAffixed, setIsAffixed] = useState<boolean>(false);\n\tconst [boxRect, setBoxRect] = useState<{ width: number; height: number }>({\n\t\twidth: 0,\n\t\theight: 0,\n\t});\n\n\tconst placeholderRef = useRef<HTMLDivElement>(null);\n\tconst contentRef = useRef<HTMLDivElement>(null);\n\tconst isAffixedRef = useRef<boolean>(false);\n\n\tisAffixedRef.current = isAffixed;\n\n\tuseEffect(() => {\n\t\tconst getTargetElement = (): HTMLElement | Window => {\n\t\t\tif (target) {\n\t\t\t\tconst el = target();\n\t\t\t\tif (el) return el;\n\t\t\t}\n\t\t\treturn window;\n\t\t};\n\n\t\tconst handleScroll = () => {\n\t\t\tif (!placeholderRef.current) return;\n\n\t\t\tconst targetEl = getTargetElement();\n\t\t\tconst placeholderRect = placeholderRef.current.getBoundingClientRect();\n\n\t\t\tlet targetTop = 0;\n\t\t\tlet targetBottom = window.innerHeight;\n\n\t\t\tif (targetEl !== window && targetEl instanceof HTMLElement) {\n\t\t\t\tconst containerRect = targetEl.getBoundingClientRect();\n\t\t\t\ttargetTop = containerRect.top;\n\t\t\t\ttargetBottom = containerRect.bottom;\n\t\t\t}\n\n\t\t\tlet shouldAffix = false;\n\n\t\t\tif (offsetBottom !== undefined) {\n\t\t\t\t// 吸底模式\n\t\t\t\tshouldAffix = placeholderRect.bottom >= targetBottom - offsetBottom;\n\t\t\t} else {\n\t\t\t\t// 吸顶模式 (默认)\n\t\t\t\tshouldAffix = placeholderRect.top <= targetTop + offsetTop;\n\t\t\t}\n\n\t\t\tif (shouldAffix !== isAffixedRef.current) {\n\t\t\t\t// 触发吸顶切换前记录原本的宽高\n\t\t\t\tif (shouldAffix && contentRef.current) {\n\t\t\t\t\tconst rect = contentRef.current.getBoundingClientRect();\n\t\t\t\t\tsetBoxRect({ width: rect.width, height: rect.height });\n\t\t\t\t}\n\n\t\t\t\tsetIsAffixed(shouldAffix);\n\t\t\t\tonChange?.(shouldAffix);\n\t\t\t}\n\t\t};\n\n\t\tconst targetNode = getTargetElement();\n\t\ttargetNode.addEventListener('scroll', handleScroll, { passive: true });\n\t\twindow.addEventListener('resize', handleScroll, { passive: true });\n\n\t\t// 初始检查一次\n\t\thandleScroll();\n\n\t\treturn () => {\n\t\t\ttargetNode.removeEventListener('scroll', handleScroll);\n\t\t\twindow.removeEventListener('resize', handleScroll);\n\t\t};\n\t}, [offsetTop, offsetBottom, target, onChange]);\n\n\t// 计算吸顶定位样式\n\tconst computeFixedStyle = (): CSSProperties => {\n\t\tif (!isAffixed) return {};\n\n\t\tconst fixedStyle: CSSProperties = {\n\t\t\tposition: 'fixed',\n\t\t\tzIndex,\n\t\t\twidth: boxRect.width ? `${boxRect.width}px` : '100%',\n\t\t\tboxSizing: 'border-box',\n\t\t};\n\n\t\tif (offsetBottom !== undefined) {\n\t\t\tfixedStyle.bottom = `${offsetBottom}px`;\n\t\t} else {\n\t\t\tfixedStyle.top = `${offsetTop}px`;\n\t\t}\n\n\t\tif (placeholderRef.current) {\n\t\t\tconst rect = placeholderRef.current.getBoundingClientRect();\n\t\t\tfixedStyle.left = `${rect.left}px`;\n\t\t}\n\n\t\treturn fixedStyle;\n\t};\n\n\tconst renderedContent = typeof children === 'function' ? children(isAffixed) : children;\n\n\treturn (\n\t\t<div\n\t\t\tref={placeholderRef}\n\t\t\tclassName={`rpc_ceiling_box_wrapper ${className}`}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\theight: isAffixed && boxRect.height ? `${boxRect.height}px` : undefined,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={contentRef}\n\t\t\t\tclassName={`rpc_ceiling_box ${\n\t\t\t\t\tisAffixed ? 'rpc_ceiling_box_affixed' : ''\n\t\t\t\t} ${isAffixed && blur ? 'rpc_ceiling_box_blur' : ''} ${isAffixed ? affixedClassName : ''}`}\n\t\t\t\tstyle={{\n\t\t\t\t\t...computeFixedStyle(),\n\t\t\t\t\t...(isAffixed ? affixedStyle : {}),\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{renderedContent}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default CeilingBox;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkQMLDK2DL_cjs = require('./chunk-QMLDK2DL.cjs');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
|
|
@@ -76,8 +76,8 @@ var CopyButton = ({
|
|
|
76
76
|
onError == null ? void 0 : onError(err);
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
|
-
const defaultIcon = icon != null ? icon : /* @__PURE__ */ jsxRuntime.jsx(
|
|
80
|
-
const defaultCopiedIcon = copiedIcon != null ? copiedIcon : /* @__PURE__ */ jsxRuntime.jsx(
|
|
79
|
+
const defaultIcon = icon != null ? icon : /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.CopyOutlined, {});
|
|
80
|
+
const defaultCopiedIcon = copiedIcon != null ? copiedIcon : /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.CheckOutlined, { style: { color: "#52c41a" } });
|
|
81
81
|
const currentIcon = isCopied ? defaultCopiedIcon : defaultIcon;
|
|
82
82
|
const currentText = isCopied ? (_a = copiedText != null ? copiedText : children) != null ? _a : "\u5DF2\u590D\u5236" : children != null ? children : mode === "button" ? "\u590D\u5236" : null;
|
|
83
83
|
let tooltipContent = null;
|
|
@@ -123,5 +123,5 @@ var CopyButton = ({
|
|
|
123
123
|
var CopyButton_default = CopyButton;
|
|
124
124
|
|
|
125
125
|
exports.CopyButton_default = CopyButton_default;
|
|
126
|
-
//# sourceMappingURL=chunk-
|
|
127
|
-
//# sourceMappingURL=chunk-
|
|
126
|
+
//# sourceMappingURL=chunk-K4LVWWEE.cjs.map
|
|
127
|
+
//# sourceMappingURL=chunk-K4LVWWEE.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../CopyButton/index.tsx"],"names":["useState","useRef","useEffect","jsx","CopyOutlined","CheckOutlined","jsxs"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../CopyButton/index.tsx"],"names":["useState","useRef","useEffect","jsx","CopyOutlined","CheckOutlined","jsxs"],"mappings":"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","file":"chunk-K4LVWWEE.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\n\t\t? (copiedText ?? children ?? '已复制')\n\t\t: (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\n\t\t\t\t\t\t\t? 'rpc_copy_button_tooltip_visible'\n\t\t\t\t\t\t\t: isHovered\n\t\t\t\t\t\t\t\t? 'rpc_copy_button_tooltip_hover'\n\t\t\t\t\t\t\t\t: ''\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,4 +1,4 @@
|
|
|
1
|
-
import { CopyOutlined, CheckOutlined } from './chunk-
|
|
1
|
+
import { CopyOutlined, CheckOutlined } from './chunk-537T6BR3.js';
|
|
2
2
|
import { useState, useRef, useEffect } from 'react';
|
|
3
3
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -121,5 +121,5 @@ var CopyButton = ({
|
|
|
121
121
|
var CopyButton_default = CopyButton;
|
|
122
122
|
|
|
123
123
|
export { CopyButton_default };
|
|
124
|
-
//# sourceMappingURL=chunk-
|
|
125
|
-
//# sourceMappingURL=chunk-
|
|
124
|
+
//# sourceMappingURL=chunk-KJ537QZS.js.map
|
|
125
|
+
//# sourceMappingURL=chunk-KJ537QZS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../CopyButton/index.tsx"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../CopyButton/index.tsx"],"names":[],"mappings":"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","file":"chunk-KJ537QZS.js","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\n\t\t? (copiedText ?? children ?? '已复制')\n\t\t: (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\n\t\t\t\t\t\t\t? 'rpc_copy_button_tooltip_visible'\n\t\t\t\t\t\t\t: isHovered\n\t\t\t\t\t\t\t\t? 'rpc_copy_button_tooltip_hover'\n\t\t\t\t\t\t\t\t: ''\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,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkQMLDK2DL_cjs = require('./chunk-QMLDK2DL.cjs');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var ReactDOM = require('react-dom');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -90,7 +90,7 @@ var ContextMenu = ({
|
|
|
90
90
|
item.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_context_menu_item_icon", children: item.icon }),
|
|
91
91
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_context_menu_item_label", children: item.label }),
|
|
92
92
|
item.shortcut && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_context_menu_item_shortcut", children: item.shortcut }),
|
|
93
|
-
hasSub && /* @__PURE__ */ jsxRuntime.jsx(
|
|
93
|
+
hasSub && /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.RightOutlined, { className: "rpc_context_menu_item_arrow" }),
|
|
94
94
|
hasSub && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rpc_context_menu_submenu", children: item.children.map((sub) => renderMenuItem(sub)) })
|
|
95
95
|
] }, item.key);
|
|
96
96
|
};
|
|
@@ -127,5 +127,5 @@ var ContextMenu = ({
|
|
|
127
127
|
var ContextMenu_default = ContextMenu;
|
|
128
128
|
|
|
129
129
|
exports.ContextMenu_default = ContextMenu_default;
|
|
130
|
-
//# sourceMappingURL=chunk-
|
|
131
|
-
//# sourceMappingURL=chunk-
|
|
130
|
+
//# sourceMappingURL=chunk-KSXCVQU3.cjs.map
|
|
131
|
+
//# sourceMappingURL=chunk-KSXCVQU3.cjs.map
|