@robot-admin/naive-ui-components 0.8.1 → 0.9.0
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 +294 -279
- package/dist/C_ActionBar-DYG0Yf3A.css.map +1 -0
- package/dist/C_ActionBar-MAjRhqcI.css.map +1 -0
- package/dist/C_ActionBar.cjs +1 -1
- package/dist/C_ActionBar.css +47 -47
- package/dist/C_ActionBar.js +1 -1
- package/dist/C_ActionBar.js.map +1 -1
- package/dist/C_ActionBar2.js +1 -1
- package/dist/C_ActionBar2.js.map +1 -1
- package/dist/{C_AntV-A3NXx_sF.css.map → C_AntV-BY8jqqmi.css.map} +1 -1
- package/dist/{C_AntV-D2Zp2qQF.css.map → C_AntV-BbkHc-_a.css.map} +1 -1
- package/dist/C_AntV.cjs +1 -1
- package/dist/C_AntV.css +78 -78
- package/dist/C_AntV.js +1 -1
- package/dist/C_AntV.js.map +1 -1
- package/dist/C_AntV2.js +3 -3
- package/dist/C_AntV2.js.map +1 -1
- package/dist/{C_AudioPlayer-CXl4yP_m.css.map → C_AudioPlayer-DKRIGhi7.css.map} +1 -1
- package/dist/{C_AudioPlayer-CcBtt71m.css.map → C_AudioPlayer-DlB6eNsa.css.map} +1 -1
- package/dist/C_AudioPlayer.cjs +1 -1
- package/dist/C_AudioPlayer.css +47 -47
- package/dist/C_AudioPlayer.js +1 -1
- package/dist/C_AudioPlayer.js.map +1 -1
- package/dist/C_AudioPlayer2.js +1 -1
- package/dist/C_AudioPlayer2.js.map +1 -1
- package/dist/{C_AvatarGroup-CtPhfH9h.css.map → C_AvatarGroup-D02zci-i.css.map} +1 -1
- package/dist/{C_AvatarGroup-M1dNPH3E.css.map → C_AvatarGroup-DatHaUlY.css.map} +1 -1
- package/dist/C_AvatarGroup.css +21 -21
- package/dist/C_AvatarGroup.js.map +1 -1
- package/dist/C_AvatarGroup2.js +1 -1
- package/dist/C_AvatarGroup2.js.map +1 -1
- package/dist/{C_Barcode-DjTmDkbQ.css.map → C_Barcode-DYDRDe2O.css.map} +1 -1
- package/dist/{C_Barcode-Do1Ozsmh.css.map → C_Barcode-muJdc_O4.css.map} +1 -1
- package/dist/C_Barcode.css +7 -7
- package/dist/C_Barcode.js.map +1 -1
- package/dist/C_Barcode2.js +1 -1
- package/dist/C_Barcode2.js.map +1 -1
- package/dist/C_Breadcrumb.cjs +1 -1
- package/dist/C_Breadcrumb.js +1 -1
- package/dist/C_Breadcrumb.js.map +1 -1
- package/dist/C_Breadcrumb2.js +1 -1
- package/dist/C_Breadcrumb2.js.map +1 -1
- package/dist/{C_Captcha-CZmAETly.css.map → C_Captcha-9_hk6VmY.css.map} +1 -1
- package/dist/{C_Captcha-Ccq3DMrR.css.map → C_Captcha-MtASlJ0f.css.map} +1 -1
- package/dist/C_Captcha.css +19 -19
- package/dist/C_Captcha.js.map +1 -1
- package/dist/C_Captcha2.js +1 -1
- package/dist/C_Captcha2.js.map +1 -1
- package/dist/C_Cascade.js.map +1 -1
- package/dist/C_Cascade2.js +1 -1
- package/dist/C_Cascade2.js.map +1 -1
- package/dist/{C_Chat-CJ8KESTM.css.map → C_Chat-Csjz_BFw.css.map} +1 -1
- package/dist/{C_Chat-DzV4AFLd.css.map → C_Chat-DO1ZBA_0.css.map} +1 -1
- package/dist/C_Chat.cjs +1 -1
- package/dist/C_Chat.css +65 -65
- package/dist/C_Chat.js +1 -1
- package/dist/C_Chat.js.map +1 -1
- package/dist/C_Chat2.js +1 -1
- package/dist/C_Chat2.js.map +1 -1
- package/dist/{C_City-Cv5BESaN.css.map → C_City-Bam08Qv3.css.map} +1 -1
- package/dist/{C_City-DNKv4MpH.css.map → C_City-Bb3W-KaN.css.map} +1 -1
- package/dist/C_City.css +29 -29
- package/dist/C_City.js.map +1 -1
- package/dist/C_City2.js +1 -1
- package/dist/C_City2.js.map +1 -1
- package/dist/C_Code-BFi5xxnM.css.map +1 -0
- package/dist/C_Code-CZ7yfnri.css.map +1 -0
- package/dist/C_Code.cjs +1 -1
- package/dist/C_Code.css +3 -3
- package/dist/C_Code.js +1 -1
- package/dist/C_Code.js.map +1 -1
- package/dist/C_Code2.js +1 -1
- package/dist/C_Code2.js.map +1 -1
- package/dist/{C_CollapsePanel-CedsEM0N.css.map → C_CollapsePanel-CWkFCqNQ.css.map} +1 -1
- package/dist/{C_CollapsePanel-BkOivqn3.css.map → C_CollapsePanel-pcVJA_4z.css.map} +1 -1
- package/dist/C_CollapsePanel.cjs +1 -1
- package/dist/C_CollapsePanel.css +35 -35
- package/dist/C_CollapsePanel.js +1 -1
- package/dist/C_CollapsePanel.js.map +1 -1
- package/dist/C_CollapsePanel2.js +1 -1
- package/dist/C_CollapsePanel2.js.map +1 -1
- package/dist/{C_ContextMenu-CCsCeI39.css.map → C_ContextMenu-B3Cgz_wJ.css.map} +1 -1
- package/dist/{C_ContextMenu-DOTBeltf.css.map → C_ContextMenu-u1LixF3_.css.map} +1 -1
- package/dist/C_ContextMenu.cjs +1 -1
- package/dist/C_ContextMenu.css +17 -17
- package/dist/C_ContextMenu.js +1 -1
- package/dist/C_ContextMenu.js.map +1 -1
- package/dist/C_ContextMenu2.js +1 -1
- package/dist/C_ContextMenu2.js.map +1 -1
- package/dist/{C_Cron-C0-8b5af.css.map → C_Cron-Civir5-I.css.map} +1 -1
- package/dist/{C_Cron-DqHQ92LN.css.map → C_Cron-iw3qpMsy.css.map} +1 -1
- package/dist/C_Cron.cjs +1 -1
- package/dist/C_Cron.css +37 -37
- package/dist/C_Cron.js +1 -1
- package/dist/C_Cron.js.map +1 -1
- package/dist/C_Cron2.js +1 -1
- package/dist/C_Cron2.js.map +1 -1
- package/dist/C_Date.js.map +1 -1
- package/dist/C_Date2.js +1 -1
- package/dist/C_Date2.js.map +1 -1
- package/dist/{C_Draggable-Bq6o0qXn.css.map → C_Draggable-BCjIvIwT.css.map} +1 -1
- package/dist/{C_Draggable-r6nhx3yM.css.map → C_Draggable-DwkSlCOS.css.map} +1 -1
- package/dist/C_Draggable.css +46 -46
- package/dist/C_Draggable.js.map +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_Draggable2.js.map +1 -1
- package/dist/C_Editor-BfjjYQ9B.css.map +1 -0
- package/dist/C_Editor-Do2StvoJ.css.map +1 -0
- package/dist/C_Editor.css +55 -55
- package/dist/C_Editor.js.map +1 -1
- package/dist/C_Editor2.js +1 -1
- package/dist/C_Editor2.js.map +1 -1
- package/dist/{C_FilePreview-BVarVvnD.css.map → C_FilePreview-BhcbiXsV.css.map} +1 -1
- package/dist/{C_FilePreview-DHGlV4OR.css.map → C_FilePreview-DJudcIbW.css.map} +1 -1
- package/dist/C_FilePreview.cjs +1 -1
- package/dist/C_FilePreview.css +91 -91
- package/dist/C_FilePreview.js +1 -1
- package/dist/C_FilePreview.js.map +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_FilePreview2.js.map +1 -1
- package/dist/{C_Form-BciQUPpS.css.map → C_Form-BtcAPIRi.css.map} +1 -1
- package/dist/{C_Form-CKHvXL3O.css.map → C_Form-D_gwQ7hC.css.map} +1 -1
- package/dist/C_Form.cjs +1 -1
- package/dist/C_Form.css +222 -222
- package/dist/C_Form.js +1 -1
- package/dist/C_Form.js.map +1 -1
- package/dist/C_Form2.js +1 -1
- package/dist/C_Form2.js.map +1 -1
- package/dist/{C_FormSearch-Bmd2CmG6.css.map → C_FormSearch-Bi4XYjjk.css.map} +1 -1
- package/dist/{C_FormSearch-DBNtnjaL.css.map → C_FormSearch-DUGOoX0u.css.map} +1 -1
- package/dist/C_FormSearch.css +45 -45
- package/dist/C_FormSearch.js.map +1 -1
- package/dist/C_FormSearch2.js +1 -1
- package/dist/C_FormSearch2.js.map +1 -1
- package/dist/{C_FormulaEditor-3WG2vtQl.css.map → C_FormulaEditor-CJk3SSUJ.css.map} +1 -1
- package/dist/{C_FormulaEditor-Cm0CokN5.css.map → C_FormulaEditor-Cy7mjfVO.css.map} +1 -1
- package/dist/C_FormulaEditor.cjs +1 -1
- package/dist/C_FormulaEditor.css +78 -78
- package/dist/C_FormulaEditor.js +1 -1
- package/dist/C_FormulaEditor.js.map +1 -1
- package/dist/C_FormulaEditor2.js +1 -1
- package/dist/C_FormulaEditor2.js.map +1 -1
- package/dist/C_FullCalendar-BQA0OjGB.css.map +1 -0
- package/dist/C_FullCalendar-ChJUosAi.css.map +1 -0
- package/dist/C_FullCalendar.css +3 -3
- package/dist/C_FullCalendar.js.map +1 -1
- package/dist/C_FullCalendar2.js +1 -1
- package/dist/C_FullCalendar2.js.map +1 -1
- package/dist/C_GlobalSearch.js.map +1 -1
- package/dist/C_GlobalSearch2.js.map +1 -1
- package/dist/C_Guide.cjs +1 -1
- package/dist/C_Guide.js +1 -1
- package/dist/C_Guide.js.map +1 -1
- package/dist/C_Guide2.js +1 -1
- package/dist/C_Guide2.js.map +1 -1
- package/dist/C_Icon.js.map +1 -1
- package/dist/C_Icon2.js +1 -1
- package/dist/C_Icon2.js.map +1 -1
- package/dist/{C_ImageCropper-D3L2-J_J.css.map → C_ImageCropper-BqZpkZfU.css.map} +1 -1
- package/dist/{C_ImageCropper-DrmUlaLi.css.map → C_ImageCropper-CylwGuzS.css.map} +1 -1
- package/dist/C_ImageCropper.cjs +1 -1
- package/dist/C_ImageCropper.css +10 -10
- package/dist/C_ImageCropper.js +1 -1
- package/dist/C_ImageCropper.js.map +1 -1
- package/dist/C_ImageCropper2.js +1 -1
- package/dist/C_ImageCropper2.js.map +1 -1
- package/dist/C_Language.cjs +1 -1
- package/dist/C_Language.js +1 -1
- package/dist/C_Language.js.map +1 -1
- package/dist/C_Language2.js +1 -1
- package/dist/C_Language2.js.map +1 -1
- package/dist/{C_Login-Cst_W1XC.css.map → C_Login-BkdnkBKX.css.map} +1 -1
- package/dist/{C_Login-DWZ_6K1x.css.map → C_Login-VkMM6OJ2.css.map} +1 -1
- package/dist/C_Login.cjs +1 -1
- package/dist/C_Login.css +72 -72
- package/dist/C_Login.js +1 -1
- package/dist/C_Login.js.map +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Login2.js.map +1 -1
- package/dist/{C_Map-BCJmDnJT.css.map → C_Map-DNnBcY70.css.map} +1 -1
- package/dist/{C_Map-WUMXSAfy.css.map → C_Map-LEXIx6zM.css.map} +1 -1
- package/dist/C_Map.css +4 -4
- package/dist/C_Map.js.map +1 -1
- package/dist/C_Map2.js +1 -1
- package/dist/C_Map2.js.map +1 -1
- package/dist/{C_Markdown-7J0uPEuk.css.map → C_Markdown-DwmI0_0Q.css.map} +1 -1
- package/dist/{C_Markdown-C7Lg0_9z.css.map → C_Markdown-k0794RW0.css.map} +1 -1
- package/dist/C_Markdown.css +33 -33
- package/dist/C_Markdown.js.map +1 -1
- package/dist/C_Markdown2.js +1 -1
- package/dist/C_Markdown2.js.map +1 -1
- package/dist/C_Menu.js.map +1 -1
- package/dist/C_Menu2.js +1 -1
- package/dist/C_Menu2.js.map +1 -1
- package/dist/C_NotificationCenter.cjs +1 -1
- package/dist/C_NotificationCenter.js +1 -1
- package/dist/C_NotificationCenter.js.map +1 -1
- package/dist/C_NotificationCenter2.js +1 -1
- package/dist/C_NotificationCenter2.js.map +1 -1
- package/dist/C_OrgChart.js.map +1 -1
- package/dist/C_OrgChart2.js +1 -1
- package/dist/C_OrgChart2.js.map +1 -1
- package/dist/C_Progress.js.map +1 -1
- package/dist/C_Progress2.js +1 -1
- package/dist/C_Progress2.js.map +1 -1
- package/dist/{C_QRCode-DMxSyogU.css.map → C_QRCode-CFNTda_1.css.map} +1 -1
- package/dist/{C_QRCode-G7fiAkm4.css.map → C_QRCode-CmWr9lK-.css.map} +1 -1
- package/dist/C_QRCode.css +9 -9
- package/dist/C_QRCode.js.map +1 -1
- package/dist/C_QRCode2.js +1 -1
- package/dist/C_QRCode2.js.map +1 -1
- package/dist/{C_Signature-BJMvVPWT.css.map → C_Signature-BDx4ctsE.css.map} +1 -1
- package/dist/{C_Signature-BJUHx2BF.css.map → C_Signature-Bz_uNbwv.css.map} +1 -1
- package/dist/C_Signature.cjs +1 -1
- package/dist/C_Signature.css +15 -15
- package/dist/C_Signature.js +1 -1
- package/dist/C_Signature.js.map +1 -1
- package/dist/C_Signature2.js +1 -1
- package/dist/C_Signature2.js.map +1 -1
- package/dist/C_Skeleton.js.map +1 -1
- package/dist/C_Skeleton2.js +1 -1
- package/dist/C_Skeleton2.js.map +1 -1
- package/dist/{C_SplitPane-Br2eK8IG.css.map → C_SplitPane-BOwr1C7K.css.map} +1 -1
- package/dist/{C_SplitPane-DuyzUhKB.css.map → C_SplitPane-N-a_D-7F.css.map} +1 -1
- package/dist/C_SplitPane.cjs +1 -1
- package/dist/C_SplitPane.css +31 -31
- package/dist/C_SplitPane.js +1 -1
- package/dist/C_SplitPane.js.map +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_SplitPane2.js.map +1 -1
- package/dist/C_Steps-Bk1krgiR.css.map +1 -0
- package/dist/C_Steps-Dn2CMpy1.css.map +1 -0
- package/dist/C_Steps.css +38 -38
- package/dist/C_Steps.js.map +1 -1
- package/dist/C_Steps2.js +1 -1
- package/dist/C_Steps2.js.map +1 -1
- package/dist/C_Table.cjs +1 -1
- package/dist/C_Table.js +1 -1
- package/dist/C_Table.js.map +1 -1
- package/dist/C_Table2.js +2 -2
- package/dist/C_Table2.js.map +1 -1
- package/dist/{C_TagsView-BsutyC3U.css.map → C_TagsView-DX3LecK1.css.map} +1 -1
- package/dist/{C_TagsView-Crm7yWg9.css.map → C_TagsView-DqOTa8bL.css.map} +1 -1
- package/dist/C_TagsView.cjs +1 -1
- package/dist/C_TagsView.css +36 -36
- package/dist/C_TagsView.js +1 -1
- package/dist/C_TagsView.js.map +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_TagsView2.js.map +1 -1
- package/dist/C_Theme.cjs +1 -1
- package/dist/C_Theme.js +1 -1
- package/dist/C_Theme.js.map +1 -1
- package/dist/C_Theme2.js +1 -1
- package/dist/C_Theme2.js.map +1 -1
- package/dist/C_Time-BzyQVvTS.css.map +1 -0
- package/dist/C_Time-DmpKLQHc.css.map +1 -0
- package/dist/C_Time.css +5 -5
- package/dist/C_Time.js.map +1 -1
- package/dist/C_Time2.js +1 -1
- package/dist/C_Time2.js.map +1 -1
- package/dist/{C_Timeline-DG70WtJP.css.map → C_Timeline-BKkimrZx.css.map} +1 -1
- package/dist/{C_Timeline-Dzxmmdjg.css.map → C_Timeline-DTuSCX6p.css.map} +1 -1
- package/dist/C_Timeline.cjs +1 -1
- package/dist/C_Timeline.css +45 -45
- package/dist/C_Timeline.js +1 -1
- package/dist/C_Timeline.js.map +1 -1
- package/dist/C_Timeline2.js +1 -1
- package/dist/C_Timeline2.js.map +1 -1
- package/dist/{C_Transfer-CCEqnC-v.css.map → C_Transfer-BOB6OBqS.css.map} +1 -1
- package/dist/{C_Transfer-CStPm4NP.css.map → C_Transfer-Dpq7ezWC.css.map} +1 -1
- package/dist/C_Transfer.cjs +1 -1
- package/dist/C_Transfer.css +31 -31
- package/dist/C_Transfer.js +1 -1
- package/dist/C_Transfer.js.map +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Transfer2.js.map +1 -1
- package/dist/{C_Tree-B-Le4hjQ.css.map → C_Tree-D98nX9qT.css.map} +1 -1
- package/dist/{C_Tree-DnGc_MPb.css.map → C_Tree-ulfm7b-P.css.map} +1 -1
- package/dist/C_Tree.cjs +1 -1
- package/dist/C_Tree.css +33 -33
- package/dist/C_Tree.js +1 -1
- package/dist/C_Tree.js.map +1 -1
- package/dist/C_Tree2.js +1 -1
- package/dist/C_Tree2.js.map +1 -1
- package/dist/{C_Upload-CFAxVGVz.css.map → C_Upload-BR9fg5r4.css.map} +1 -1
- package/dist/{C_Upload-D8_QeSV0.css.map → C_Upload-CPqf74Ea.css.map} +1 -1
- package/dist/C_Upload.cjs +1 -1
- package/dist/C_Upload.css +4 -4
- package/dist/C_Upload.js +1 -1
- package/dist/C_Upload.js.map +1 -1
- package/dist/C_Upload2.js +2 -2
- package/dist/C_Upload2.js.map +1 -1
- package/dist/{C_VideoPlayer-Cdgv4Zq0.css.map → C_VideoPlayer-4J96tKfK.css.map} +1 -1
- package/dist/{C_VideoPlayer-rm0MODUv.css.map → C_VideoPlayer-D35seHkm.css.map} +1 -1
- package/dist/C_VideoPlayer.css +13 -13
- package/dist/C_VideoPlayer.js.map +1 -1
- package/dist/C_VideoPlayer2.js +3 -3
- package/dist/C_VideoPlayer2.js.map +1 -1
- package/dist/{C_VtableGantt-BpY-Rng3.css.map → C_VtableGantt-C2lxFmWg.css.map} +1 -1
- package/dist/{C_VtableGantt-DB87-jdS.css.map → C_VtableGantt-Dwnkw_WL.css.map} +1 -1
- package/dist/C_VtableGantt.cjs +1 -1
- package/dist/C_VtableGantt.css +15 -15
- package/dist/C_VtableGantt.js +1 -1
- package/dist/C_VtableGantt.js.map +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/C_VtableGantt2.js.map +1 -1
- package/dist/C_WaterFall.js.map +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WaterFall2.js.map +1 -1
- package/dist/{C_WorkFlow-7F6op6qN.css.map → C_WorkFlow-2hJfvvTK.css.map} +1 -1
- package/dist/{C_WorkFlow-Cy3HWA6A.css.map → C_WorkFlow-DHoNjl8-.css.map} +1 -1
- package/dist/C_WorkFlow.cjs +1 -1
- package/dist/C_WorkFlow.css +108 -108
- package/dist/C_WorkFlow.js +1 -1
- package/dist/C_WorkFlow.js.map +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/C_WorkFlow2.js.map +1 -1
- package/dist/constants.d.ts +3 -3
- package/dist/constants2.d.ts +4 -4
- package/dist/constants3.d.ts +3 -3
- package/dist/constants4.d.ts +4 -4
- package/dist/constants5.d.ts +2 -2
- package/dist/data.d.ts +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.vue.d.ts +1 -1
- package/dist/index10.vue.d.ts +1 -1
- package/dist/index11.vue.d.ts +4 -4
- package/dist/index12.vue.d.ts +1 -1
- package/dist/index13.vue.d.ts +2 -2
- package/dist/index14.vue.d.ts +3 -3
- package/dist/index15.vue.d.ts +3 -3
- package/dist/index16.vue.d.ts +2 -2
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.ts +5 -5
- package/dist/index2.vue.d.ts +1 -1
- package/dist/index20.vue.d.ts +1 -1
- package/dist/index22.vue.d.ts +1 -1
- package/dist/index23.vue.d.ts +2 -2
- package/dist/index24.vue.d.ts +1 -1
- package/dist/index26.vue.d.ts +3 -3
- package/dist/index27.vue.d.ts +2 -2
- package/dist/index28.vue.d.ts +3 -3
- package/dist/index3.vue.d.ts +3 -3
- package/dist/index4.vue.d.ts +2 -2
- package/dist/index6.vue.d.ts +6 -6
- package/dist/index7.vue.d.ts +2 -2
- package/dist/index8.vue.d.ts +1 -1
- package/dist/index9.vue.d.ts +2 -2
- package/dist/menuAdapter.js.map +1 -1
- package/dist/resolver.cjs.map +1 -1
- package/dist/resolver.js.map +1 -1
- package/dist/style.css +1483 -1483
- package/dist/themes/glass-morphism.css +1 -0
- package/dist/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.ts +1 -1
- package/dist/useCropperCore.d.ts +2 -2
- package/dist/useDraggableLayout.d.ts +4 -4
- package/dist/useDynamicFormState.d.ts +21 -21
- package/dist/useEdgeInteraction.d.ts +2 -2
- package/dist/useModalEdit.d.ts +1 -1
- package/dist/useQRCode.d.ts +3 -3
- package/dist/useSearchState.d.ts +2 -2
- package/dist/useSignatureHistory.d.ts +4 -4
- package/dist/useSplitResize.d.ts +2 -2
- package/dist/useTimeSelection.d.ts +2 -2
- package/dist/useTreeOperations.d.ts +3 -3
- package/dist/useWorkflowValidation.d.ts +6 -6
- package/package.json +11 -8
- package/dist/C_ActionBar-jZPsiXtT.css.map +0 -1
- package/dist/C_ActionBar-nnfbZCea.css.map +0 -1
- package/dist/C_Code-DPZlNSxL.css.map +0 -1
- package/dist/C_Code-avZjAnHD.css.map +0 -1
- package/dist/C_Editor-C49qURgb.css.map +0 -1
- package/dist/C_Editor-DuxBD9Qg.css.map +0 -1
- package/dist/C_FullCalendar-1U4VlG7X.css.map +0 -1
- package/dist/C_FullCalendar-DLUdCtqf.css.map +0 -1
- package/dist/C_Steps-BHYNJI1l.css.map +0 -1
- package/dist/C_Steps-DY7vl-4I.css.map +0 -1
- package/dist/C_Time-Bd_e1YDN.css.map +0 -1
- package/dist/C_Time-CKb_fwdm.css.map +0 -1
package/dist/C_Code2.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Transition as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,inject as d,nextTick as f,normalizeStyle as p,onMounted as m,onUnmounted as h,openBlock as g,ref as _,resolveComponent as v,toDisplayString as y,watch as b,withCtx as x}from"vue";const S={class:`c-code-wrapper`},C={key:0,class:`c-code-header`},w={class:`c-code-title`},T={class:`c-code-actions`},E={class:`c-code-content`},D={key:0,class:`floating-copy-btn`},O={key:0,class:`c-code-loading`},k={class:`ml-2`},A={class:`fullscreen-content`},j={class:`fullscreen-header`},M={class:`fullscreen-title`},N={class:`fullscreen-body`};var P=t(u({name:`CCode`,__name:`index`,props:{code:{default:``},language:{default:`text`},title:{},showHeader:{type:Boolean,default:!0},showLineNumbers:{type:Boolean,default:!0},wordWrap:{type:Boolean,default:!1},trim:{type:Boolean,default:!0},showFullscreen:{type:Boolean,default:!1},maxHeight:{},autoLoadLanguage:{type:Boolean,default:!0}},emits:[`copy`,`click`,`fullscreen`],setup(t,{expose:u,emit:P}){let F=t,I=P,L=d(`highlightManager`,null),R=_(!1),z=_(!1),B=_(!1),V=_(!1),H=r(()=>{try{return L?.getHljs?.()||null}catch(e){return console.warn(`Highlight.js not available:`,e),null}}),U=r(()=>({javascript:`mdi:language-javascript`,typescript:`mdi:language-typescript`,python:`mdi:language-python`,html:`mdi:language-html5`,css:`mdi:language-css3`,vue:`mdi:vuejs`,react:`mdi:react`,json:`mdi:code-json`,java:`mdi:language-java`,cpp:`mdi:language-cpp`,go:`mdi:language-go`,rust:`mdi:language-rust`,php:`mdi:language-php`,csharp:`mdi:language-csharp`,sql:`mdi:database`,yaml:`mdi:file-code`,xml:`mdi:xml`,markdown:`mdi:language-markdown`,bash:`mdi:bash`,shell:`mdi:console`,powershell:`mdi:powershell`,swift:`mdi:language-swift`,kotlin:`mdi:language-kotlin`,ruby:`mdi:language-ruby`})[F.language.toLowerCase()]||`mdi:code-braces`),W=r(()=>F.maxHeight?{maxHeight:typeof F.maxHeight==`number`?`${F.maxHeight}px`:F.maxHeight}:{});b(()=>F.language,async e=>{if(!(!F.autoLoadLanguage||e===`text`||!L)&&!(L.getLoadedLanguages?.()||[]).includes(e)){B.value=!0;try{await L.loadLanguage?.(e),await f()}catch(t){console.warn(`Failed to load language: ${e}`,t)}finally{B.value=!1}}},{immediate:!0});async function G(){if(!R.value){R.value=!0;try{await navigator.clipboard.writeText(F.code),I(`copy`,F.code)}catch(e){console.error(`Copy failed:`,e)}finally{R.value=!1}}}function K(){z.value=!z.value,I(`fullscreen`,z.value)}function q(e){return{javascript:`JavaScript`,typescript:`TypeScript`,python:`Python`,java:`Java`,cpp:`C++`,csharp:`C#`,php:`PHP`,go:`Go`,rust:`Rust`,html:`HTML`,css:`CSS`,json:`JSON`,bash:`Bash`,shell:`Shell`,yaml:`YAML`,xml:`XML`,markdown:`Markdown`,sql:`SQL`,powershell:`PowerShell`,swift:`Swift`,kotlin:`Kotlin`,ruby:`Ruby`,vue:`Vue`,react:`React`}[e.toLowerCase()]||e.toUpperCase()}function J(e){e.key===`Escape`&&z.value&&K()}return m(()=>{document.addEventListener(`keydown`,J)}),h(()=>{document.removeEventListener(`keydown`,J)}),u({copyCode:G,toggleFullscreen:K}),(t,r)=>{let u=v(`NButton`),d=v(`NTooltip`),f=v(`NCode`),m=v(`NSpin`),h=v(`NModal`);return g(),o(`div`,S,[a(` 代码标题栏 `),t.showHeader?(g(),o(`div`,C,[s(`div`,w,[U.value?(g(),i(e,{key:0,name:U.value,size:16,class:`mr-2`},null,8,[`name`])):a(`v-if`,!0),s(`span`,null,y(t.title||q(t.language)),1)]),s(`div`,T,[l(d,{trigger:`hover`},{trigger:x(()=>[l(u,{size:`tiny`,quaternary:``,onClick:G,loading:R.value},{icon:x(()=>[l(e,{name:R.value?`mdi:loading`:`mdi:content-copy`,loading:R.value},null,8,[`name`,`loading`])]),_:1},8,[`loading`])]),default:x(()=>[r[4]||=c(` 复制代码 `,-1)]),_:1,__:[4]}),t.showFullscreen?(g(),i(d,{key:0,trigger:`hover`},{trigger:x(()=>[l(u,{size:`tiny`,quaternary:``,onClick:K},{icon:x(()=>[l(e,{name:z.value?`mdi:fullscreen-exit`:`mdi:fullscreen`},null,8,[`name`])]),_:1})]),default:x(()=>[c(` `+y(z.value?`退出全屏`:`全屏查看`),1)]),_:1})):a(`v-if`,!0)])])):a(`v-if`,!0),a(` 代码内容区域 `),s(`div`,E,[s(`div`,{class:`code-wrapper`,onMouseenter:r[1]||=e=>V.value=!0,onMouseleave:r[2]||=e=>V.value=!1},[(g(),i(f,{key:`code-${t.language}-${t.code.length}`,code:t.code,language:t.language,hljs:H.value,"show-line-numbers":t.showLineNumbers,"word-wrap":t.wordWrap,trim:t.trim,style:p(W.value),onClick:r[0]||=e=>I(`click`,e)},null,8,[`code`,`language`,`hljs`,`show-line-numbers`,`word-wrap`,`trim`,`style`])),a(` 悬浮复制按钮 `),l(n,{name:`fade`},{default:x(()=>[V.value&&!t.showHeader?(g(),o(`div`,D,[l(d,{trigger:`hover`},{trigger:x(()=>[l(u,{size:`small`,quaternary:``,onClick:G,loading:R.value,class:`copy-floating`},{icon:x(()=>[l(e,{name:R.value?`mdi:loading`:`mdi:content-copy`,loading:R.value},null,8,[`name`,`loading`])]),_:1},8,[`loading`])]),default:x(()=>[r[5]||=c(` 复制代码 `,-1)]),_:1,__:[5]})])):a(`v-if`,!0)]),_:1})],32),a(` 语言加载状态 `),B.value?(g(),o(`div`,O,[l(m,{size:`small`}),s(`span`,k,`正在加载 `+y(t.language)+` 语言包...`,1)])):a(`v-if`,!0)]),a(` 全屏模态框 `),l(h,{show:z.value,"onUpdate:show":r[3]||=e=>z.value=e,"mask-closable":!1,"show-icon":!1,bordered:!1,style:{width:`100vw`,height:`100vh`,margin:`0`,padding:`0`}},{default:x(()=>[s(`div`,A,[s(`div`,j,[s(`div`,M,[U.value?(g(),i(e,{key:0,name:U.value,size:16,class:`mr-2`},null,8,[`name`])):a(`v-if`,!0),s(`span`,null,y(t.title||q(t.language)),1)]),l(u,{size:`small`,quaternary:``,onClick:K},{icon:x(()=>[l(e,{name:`mdi:close`})]),_:1})]),s(`div`,N,[(g(),i(f,{key:`fullscreen-code-${t.language}-${t.code.length}`,code:t.code,language:t.language,hljs:H.value,"show-line-numbers":t.showLineNumbers,"word-wrap":t.wordWrap,trim:t.trim},null,8,[`code`,`language`,`hljs`,`show-line-numbers`,`word-wrap`,`trim`]))])])]),_:1},8,[`show`])])}}}),[[`__scopeId`,`data-v-bc1cd0d6`]]);export{P as t};
|
|
2
2
|
//# sourceMappingURL=C_Code2.js.map
|
package/dist/C_Code2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C_Code2.js","names":["showHeader","title","language","showFullscreen","code","showLineNumbers","wordWrap","trim"],"sources":["../src/components/C_Code/index.vue","../src/components/C_Code/index.vue","../src/components/C_Code/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-19\r\n * @Description: 全局代码高亮组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"c-code-wrapper\">\r\n <!-- 代码标题栏 -->\r\n <div v-if=\"showHeader\" class=\"c-code-header\">\r\n <div class=\"c-code-title\">\r\n <C_Icon\r\n v-if=\"languageIcon\"\r\n :name=\"languageIcon\"\r\n :size=\"16\"\r\n class=\"mr-2\"\r\n />\r\n <span>{{ title || getLanguageTitle(language) }}</span>\r\n </div>\r\n <div class=\"c-code-actions\">\r\n <NTooltip trigger=\"hover\">\r\n <template #trigger>\r\n <NButton\r\n size=\"tiny\"\r\n quaternary\r\n @click=\"copyCode\"\r\n :loading=\"copying\"\r\n >\r\n <template #icon>\r\n <C_Icon\r\n :name=\"copying ? 'mdi:loading' : 'mdi:content-copy'\"\r\n :loading=\"copying\"\r\n />\r\n </template>\r\n </NButton>\r\n </template>\r\n 复制代码\r\n </NTooltip>\r\n\r\n <NTooltip v-if=\"showFullscreen\" trigger=\"hover\">\r\n <template #trigger>\r\n <NButton size=\"tiny\" quaternary @click=\"toggleFullscreen\">\r\n <template #icon>\r\n <C_Icon\r\n :name=\"\r\n isFullscreen ? 'mdi:fullscreen-exit' : 'mdi:fullscreen'\r\n \"\r\n />\r\n </template>\r\n </NButton>\r\n </template>\r\n {{ isFullscreen ? \"退出全屏\" : \"全屏查看\" }}\r\n </NTooltip>\r\n </div>\r\n </div>\r\n\r\n <!-- 代码内容区域 -->\r\n <div class=\"c-code-content\">\r\n <div\r\n class=\"code-wrapper\"\r\n @mouseenter=\"showFloatingCopy = true\"\r\n @mouseleave=\"showFloatingCopy = false\"\r\n >\r\n <NCode\r\n :key=\"`code-${language}-${code.length}`\"\r\n :code=\"code\"\r\n :language=\"language\"\r\n :hljs=\"hljs\"\r\n :show-line-numbers=\"showLineNumbers\"\r\n :word-wrap=\"wordWrap\"\r\n :trim=\"trim\"\r\n :style=\"codeStyle\"\r\n @click=\"emit('click', $event)\"\r\n />\r\n\r\n <!-- 悬浮复制按钮 -->\r\n <Transition name=\"fade\">\r\n <div v-if=\"showFloatingCopy && !showHeader\" class=\"floating-copy-btn\">\r\n <NTooltip trigger=\"hover\">\r\n <template #trigger>\r\n <NButton\r\n size=\"small\"\r\n quaternary\r\n @click=\"copyCode\"\r\n :loading=\"copying\"\r\n class=\"copy-floating\"\r\n >\r\n <template #icon>\r\n <C_Icon\r\n :name=\"copying ? 'mdi:loading' : 'mdi:content-copy'\"\r\n :loading=\"copying\"\r\n />\r\n </template>\r\n </NButton>\r\n </template>\r\n 复制代码\r\n </NTooltip>\r\n </div>\r\n </Transition>\r\n </div>\r\n\r\n <!-- 语言加载状态 -->\r\n <div v-if=\"languageLoading\" class=\"c-code-loading\">\r\n <NSpin size=\"small\" />\r\n <span class=\"ml-2\">正在加载 {{ language }} 语言包...</span>\r\n </div>\r\n </div>\r\n\r\n <!-- 全屏模态框 -->\r\n <NModal\r\n v-model:show=\"isFullscreen\"\r\n :mask-closable=\"false\"\r\n :show-icon=\"false\"\r\n :bordered=\"false\"\r\n style=\"width: 100vw; height: 100vh; margin: 0; padding: 0\"\r\n >\r\n <div class=\"fullscreen-content\">\r\n <div class=\"fullscreen-header\">\r\n <div class=\"fullscreen-title\">\r\n <C_Icon\r\n v-if=\"languageIcon\"\r\n :name=\"languageIcon\"\r\n :size=\"16\"\r\n class=\"mr-2\"\r\n />\r\n <span>{{ title || getLanguageTitle(language) }}</span>\r\n </div>\r\n <NButton size=\"small\" quaternary @click=\"toggleFullscreen\">\r\n <template #icon>\r\n <C_Icon name=\"mdi:close\" />\r\n </template>\r\n </NButton>\r\n </div>\r\n <div class=\"fullscreen-body\">\r\n <NCode\r\n :key=\"`fullscreen-code-${language}-${code.length}`\"\r\n :code=\"code\"\r\n :language=\"language\"\r\n :hljs=\"hljs\"\r\n :show-line-numbers=\"showLineNumbers\"\r\n :word-wrap=\"wordWrap\"\r\n :trim=\"trim\"\r\n />\r\n </div>\r\n </div>\r\n </NModal>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport {\r\n ref,\r\n computed,\r\n watch,\r\n onMounted,\r\n onUnmounted,\r\n nextTick,\r\n inject,\r\n} from \"vue\";\r\nimport C_Icon from \"../C_Icon/index.vue\";\r\n\r\n// 直接在组件内定义 HighlightManager 接口,避免导入错误\r\ninterface HighlightManager {\r\n getHljs?: () => any;\r\n loadLanguage?: (language: string) => Promise<void>;\r\n getLoadedLanguages?: () => string[];\r\n}\r\n\r\n// 组件名称定义\r\ndefineOptions({\r\n name: \"CCode\",\r\n});\r\n\r\ninterface Props {\r\n code: string;\r\n language?: string;\r\n title?: string;\r\n showHeader?: boolean;\r\n showLineNumbers?: boolean;\r\n wordWrap?: boolean;\r\n trim?: boolean;\r\n showFullscreen?: boolean;\r\n maxHeight?: string | number;\r\n autoLoadLanguage?: boolean;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n code: \"\",\r\n language: \"text\",\r\n showHeader: true,\r\n showLineNumbers: true,\r\n wordWrap: false,\r\n trim: true,\r\n showFullscreen: false,\r\n autoLoadLanguage: true,\r\n});\r\n\r\nconst emit = defineEmits<{\r\n copy: [code: string];\r\n click: [event: MouseEvent];\r\n fullscreen: [isFullscreen: boolean];\r\n}>();\r\n\r\n// 尝试获取 highlight 实例(如果用户安装了插件)\r\nconst highlightManager = inject<HighlightManager | null>(\r\n \"highlightManager\",\r\n null,\r\n);\r\n\r\nconst copying = ref(false);\r\nconst isFullscreen = ref(false);\r\nconst languageLoading = ref(false);\r\nconst showFloatingCopy = ref(false);\r\n\r\n// 安全地获取 hljs 实例\r\nconst hljs = computed(() => {\r\n try {\r\n return highlightManager?.getHljs?.() || null;\r\n } catch (error) {\r\n console.warn(\"Highlight.js not available:\", error);\r\n return null;\r\n }\r\n});\r\n\r\n// 语言图标映射(使用标准的 MDI 图标名称)\r\nconst languageIcon = computed(() => {\r\n const iconMap: Record<string, string> = {\r\n javascript: \"mdi:language-javascript\",\r\n typescript: \"mdi:language-typescript\",\r\n python: \"mdi:language-python\",\r\n html: \"mdi:language-html5\",\r\n css: \"mdi:language-css3\",\r\n vue: \"mdi:vuejs\",\r\n react: \"mdi:react\",\r\n json: \"mdi:code-json\",\r\n java: \"mdi:language-java\",\r\n cpp: \"mdi:language-cpp\",\r\n go: \"mdi:language-go\",\r\n rust: \"mdi:language-rust\",\r\n php: \"mdi:language-php\",\r\n csharp: \"mdi:language-csharp\",\r\n sql: \"mdi:database\",\r\n yaml: \"mdi:file-code\",\r\n xml: \"mdi:xml\",\r\n markdown: \"mdi:language-markdown\",\r\n bash: \"mdi:bash\",\r\n shell: \"mdi:console\",\r\n powershell: \"mdi:powershell\",\r\n swift: \"mdi:language-swift\",\r\n kotlin: \"mdi:language-kotlin\",\r\n ruby: \"mdi:language-ruby\",\r\n };\r\n return iconMap[props.language.toLowerCase()] || \"mdi:code-braces\";\r\n});\r\n\r\n// 代码样式\r\nconst codeStyle = computed(() => {\r\n if (!props.maxHeight) return {};\r\n return {\r\n maxHeight:\r\n typeof props.maxHeight === \"number\"\r\n ? `${props.maxHeight}px`\r\n : props.maxHeight,\r\n };\r\n});\r\n\r\n// 自动加载语言包\r\nwatch(\r\n () => props.language,\r\n async (newLanguage) => {\r\n if (!props.autoLoadLanguage || newLanguage === \"text\" || !highlightManager)\r\n return;\r\n\r\n const loadedLanguages = highlightManager.getLoadedLanguages?.() || [];\r\n if (loadedLanguages.includes(newLanguage)) return;\r\n\r\n languageLoading.value = true;\r\n try {\r\n await highlightManager.loadLanguage?.(newLanguage);\r\n await nextTick();\r\n } catch (error) {\r\n console.warn(`Failed to load language: ${newLanguage}`, error);\r\n } finally {\r\n languageLoading.value = false;\r\n }\r\n },\r\n { immediate: true },\r\n);\r\n\r\n/**\r\n * 复制代码到剪贴板\r\n */\r\nasync function copyCode() {\r\n if (copying.value) return;\r\n copying.value = true;\r\n\r\n try {\r\n await navigator.clipboard.writeText(props.code);\r\n emit(\"copy\", props.code);\r\n } catch (error) {\r\n console.error(\"Copy failed:\", error);\r\n } finally {\r\n copying.value = false;\r\n }\r\n}\r\n\r\n/**\r\n * 切换全屏显示状态\r\n */\r\nfunction toggleFullscreen() {\r\n isFullscreen.value = !isFullscreen.value;\r\n emit(\"fullscreen\", isFullscreen.value);\r\n}\r\n\r\n/**\r\n * 获取编程语言的显示标题\r\n */\r\nfunction getLanguageTitle(lang: string): string {\r\n const titleMap: Record<string, string> = {\r\n javascript: \"JavaScript\",\r\n typescript: \"TypeScript\",\r\n python: \"Python\",\r\n java: \"Java\",\r\n cpp: \"C++\",\r\n csharp: \"C#\",\r\n php: \"PHP\",\r\n go: \"Go\",\r\n rust: \"Rust\",\r\n html: \"HTML\",\r\n css: \"CSS\",\r\n json: \"JSON\",\r\n bash: \"Bash\",\r\n shell: \"Shell\",\r\n yaml: \"YAML\",\r\n xml: \"XML\",\r\n markdown: \"Markdown\",\r\n sql: \"SQL\",\r\n powershell: \"PowerShell\",\r\n swift: \"Swift\",\r\n kotlin: \"Kotlin\",\r\n ruby: \"Ruby\",\r\n vue: \"Vue\",\r\n react: \"React\",\r\n };\r\n return titleMap[lang.toLowerCase()] || lang.toUpperCase();\r\n}\r\n\r\n/**\r\n * 处理ESC键退出全屏\r\n */\r\nfunction handleEscapeKey(event: KeyboardEvent) {\r\n if (event.key === \"Escape\" && isFullscreen.value) {\r\n toggleFullscreen();\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n document.addEventListener(\"keydown\", handleEscapeKey);\r\n});\r\n\r\nonUnmounted(() => {\r\n document.removeEventListener(\"keydown\", handleEscapeKey);\r\n});\r\n\r\ndefineExpose({\r\n copyCode,\r\n toggleFullscreen,\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.mr-2 {\r\n margin-right: 0.5rem;\r\n}\r\n\r\n.ml-2 {\r\n margin-left: 0.5rem;\r\n}\r\n</style>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-19\r\n * @Description: 全局代码高亮组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"c-code-wrapper\">\r\n <!-- 代码标题栏 -->\r\n <div v-if=\"showHeader\" class=\"c-code-header\">\r\n <div class=\"c-code-title\">\r\n <C_Icon\r\n v-if=\"languageIcon\"\r\n :name=\"languageIcon\"\r\n :size=\"16\"\r\n class=\"mr-2\"\r\n />\r\n <span>{{ title || getLanguageTitle(language) }}</span>\r\n </div>\r\n <div class=\"c-code-actions\">\r\n <NTooltip trigger=\"hover\">\r\n <template #trigger>\r\n <NButton\r\n size=\"tiny\"\r\n quaternary\r\n @click=\"copyCode\"\r\n :loading=\"copying\"\r\n >\r\n <template #icon>\r\n <C_Icon\r\n :name=\"copying ? 'mdi:loading' : 'mdi:content-copy'\"\r\n :loading=\"copying\"\r\n />\r\n </template>\r\n </NButton>\r\n </template>\r\n 复制代码\r\n </NTooltip>\r\n\r\n <NTooltip v-if=\"showFullscreen\" trigger=\"hover\">\r\n <template #trigger>\r\n <NButton size=\"tiny\" quaternary @click=\"toggleFullscreen\">\r\n <template #icon>\r\n <C_Icon\r\n :name=\"\r\n isFullscreen ? 'mdi:fullscreen-exit' : 'mdi:fullscreen'\r\n \"\r\n />\r\n </template>\r\n </NButton>\r\n </template>\r\n {{ isFullscreen ? \"退出全屏\" : \"全屏查看\" }}\r\n </NTooltip>\r\n </div>\r\n </div>\r\n\r\n <!-- 代码内容区域 -->\r\n <div class=\"c-code-content\">\r\n <div\r\n class=\"code-wrapper\"\r\n @mouseenter=\"showFloatingCopy = true\"\r\n @mouseleave=\"showFloatingCopy = false\"\r\n >\r\n <NCode\r\n :key=\"`code-${language}-${code.length}`\"\r\n :code=\"code\"\r\n :language=\"language\"\r\n :hljs=\"hljs\"\r\n :show-line-numbers=\"showLineNumbers\"\r\n :word-wrap=\"wordWrap\"\r\n :trim=\"trim\"\r\n :style=\"codeStyle\"\r\n @click=\"emit('click', $event)\"\r\n />\r\n\r\n <!-- 悬浮复制按钮 -->\r\n <Transition name=\"fade\">\r\n <div v-if=\"showFloatingCopy && !showHeader\" class=\"floating-copy-btn\">\r\n <NTooltip trigger=\"hover\">\r\n <template #trigger>\r\n <NButton\r\n size=\"small\"\r\n quaternary\r\n @click=\"copyCode\"\r\n :loading=\"copying\"\r\n class=\"copy-floating\"\r\n >\r\n <template #icon>\r\n <C_Icon\r\n :name=\"copying ? 'mdi:loading' : 'mdi:content-copy'\"\r\n :loading=\"copying\"\r\n />\r\n </template>\r\n </NButton>\r\n </template>\r\n 复制代码\r\n </NTooltip>\r\n </div>\r\n </Transition>\r\n </div>\r\n\r\n <!-- 语言加载状态 -->\r\n <div v-if=\"languageLoading\" class=\"c-code-loading\">\r\n <NSpin size=\"small\" />\r\n <span class=\"ml-2\">正在加载 {{ language }} 语言包...</span>\r\n </div>\r\n </div>\r\n\r\n <!-- 全屏模态框 -->\r\n <NModal\r\n v-model:show=\"isFullscreen\"\r\n :mask-closable=\"false\"\r\n :show-icon=\"false\"\r\n :bordered=\"false\"\r\n style=\"width: 100vw; height: 100vh; margin: 0; padding: 0\"\r\n >\r\n <div class=\"fullscreen-content\">\r\n <div class=\"fullscreen-header\">\r\n <div class=\"fullscreen-title\">\r\n <C_Icon\r\n v-if=\"languageIcon\"\r\n :name=\"languageIcon\"\r\n :size=\"16\"\r\n class=\"mr-2\"\r\n />\r\n <span>{{ title || getLanguageTitle(language) }}</span>\r\n </div>\r\n <NButton size=\"small\" quaternary @click=\"toggleFullscreen\">\r\n <template #icon>\r\n <C_Icon name=\"mdi:close\" />\r\n </template>\r\n </NButton>\r\n </div>\r\n <div class=\"fullscreen-body\">\r\n <NCode\r\n :key=\"`fullscreen-code-${language}-${code.length}`\"\r\n :code=\"code\"\r\n :language=\"language\"\r\n :hljs=\"hljs\"\r\n :show-line-numbers=\"showLineNumbers\"\r\n :word-wrap=\"wordWrap\"\r\n :trim=\"trim\"\r\n />\r\n </div>\r\n </div>\r\n </NModal>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport {\r\n ref,\r\n computed,\r\n watch,\r\n onMounted,\r\n onUnmounted,\r\n nextTick,\r\n inject,\r\n} from \"vue\";\r\nimport C_Icon from \"../C_Icon/index.vue\";\r\n\r\n// 直接在组件内定义 HighlightManager 接口,避免导入错误\r\ninterface HighlightManager {\r\n getHljs?: () => any;\r\n loadLanguage?: (language: string) => Promise<void>;\r\n getLoadedLanguages?: () => string[];\r\n}\r\n\r\n// 组件名称定义\r\ndefineOptions({\r\n name: \"CCode\",\r\n});\r\n\r\ninterface Props {\r\n code: string;\r\n language?: string;\r\n title?: string;\r\n showHeader?: boolean;\r\n showLineNumbers?: boolean;\r\n wordWrap?: boolean;\r\n trim?: boolean;\r\n showFullscreen?: boolean;\r\n maxHeight?: string | number;\r\n autoLoadLanguage?: boolean;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n code: \"\",\r\n language: \"text\",\r\n showHeader: true,\r\n showLineNumbers: true,\r\n wordWrap: false,\r\n trim: true,\r\n showFullscreen: false,\r\n autoLoadLanguage: true,\r\n});\r\n\r\nconst emit = defineEmits<{\r\n copy: [code: string];\r\n click: [event: MouseEvent];\r\n fullscreen: [isFullscreen: boolean];\r\n}>();\r\n\r\n// 尝试获取 highlight 实例(如果用户安装了插件)\r\nconst highlightManager = inject<HighlightManager | null>(\r\n \"highlightManager\",\r\n null,\r\n);\r\n\r\nconst copying = ref(false);\r\nconst isFullscreen = ref(false);\r\nconst languageLoading = ref(false);\r\nconst showFloatingCopy = ref(false);\r\n\r\n// 安全地获取 hljs 实例\r\nconst hljs = computed(() => {\r\n try {\r\n return highlightManager?.getHljs?.() || null;\r\n } catch (error) {\r\n console.warn(\"Highlight.js not available:\", error);\r\n return null;\r\n }\r\n});\r\n\r\n// 语言图标映射(使用标准的 MDI 图标名称)\r\nconst languageIcon = computed(() => {\r\n const iconMap: Record<string, string> = {\r\n javascript: \"mdi:language-javascript\",\r\n typescript: \"mdi:language-typescript\",\r\n python: \"mdi:language-python\",\r\n html: \"mdi:language-html5\",\r\n css: \"mdi:language-css3\",\r\n vue: \"mdi:vuejs\",\r\n react: \"mdi:react\",\r\n json: \"mdi:code-json\",\r\n java: \"mdi:language-java\",\r\n cpp: \"mdi:language-cpp\",\r\n go: \"mdi:language-go\",\r\n rust: \"mdi:language-rust\",\r\n php: \"mdi:language-php\",\r\n csharp: \"mdi:language-csharp\",\r\n sql: \"mdi:database\",\r\n yaml: \"mdi:file-code\",\r\n xml: \"mdi:xml\",\r\n markdown: \"mdi:language-markdown\",\r\n bash: \"mdi:bash\",\r\n shell: \"mdi:console\",\r\n powershell: \"mdi:powershell\",\r\n swift: \"mdi:language-swift\",\r\n kotlin: \"mdi:language-kotlin\",\r\n ruby: \"mdi:language-ruby\",\r\n };\r\n return iconMap[props.language.toLowerCase()] || \"mdi:code-braces\";\r\n});\r\n\r\n// 代码样式\r\nconst codeStyle = computed(() => {\r\n if (!props.maxHeight) return {};\r\n return {\r\n maxHeight:\r\n typeof props.maxHeight === \"number\"\r\n ? `${props.maxHeight}px`\r\n : props.maxHeight,\r\n };\r\n});\r\n\r\n// 自动加载语言包\r\nwatch(\r\n () => props.language,\r\n async (newLanguage) => {\r\n if (!props.autoLoadLanguage || newLanguage === \"text\" || !highlightManager)\r\n return;\r\n\r\n const loadedLanguages = highlightManager.getLoadedLanguages?.() || [];\r\n if (loadedLanguages.includes(newLanguage)) return;\r\n\r\n languageLoading.value = true;\r\n try {\r\n await highlightManager.loadLanguage?.(newLanguage);\r\n await nextTick();\r\n } catch (error) {\r\n console.warn(`Failed to load language: ${newLanguage}`, error);\r\n } finally {\r\n languageLoading.value = false;\r\n }\r\n },\r\n { immediate: true },\r\n);\r\n\r\n/**\r\n * 复制代码到剪贴板\r\n */\r\nasync function copyCode() {\r\n if (copying.value) return;\r\n copying.value = true;\r\n\r\n try {\r\n await navigator.clipboard.writeText(props.code);\r\n emit(\"copy\", props.code);\r\n } catch (error) {\r\n console.error(\"Copy failed:\", error);\r\n } finally {\r\n copying.value = false;\r\n }\r\n}\r\n\r\n/**\r\n * 切换全屏显示状态\r\n */\r\nfunction toggleFullscreen() {\r\n isFullscreen.value = !isFullscreen.value;\r\n emit(\"fullscreen\", isFullscreen.value);\r\n}\r\n\r\n/**\r\n * 获取编程语言的显示标题\r\n */\r\nfunction getLanguageTitle(lang: string): string {\r\n const titleMap: Record<string, string> = {\r\n javascript: \"JavaScript\",\r\n typescript: \"TypeScript\",\r\n python: \"Python\",\r\n java: \"Java\",\r\n cpp: \"C++\",\r\n csharp: \"C#\",\r\n php: \"PHP\",\r\n go: \"Go\",\r\n rust: \"Rust\",\r\n html: \"HTML\",\r\n css: \"CSS\",\r\n json: \"JSON\",\r\n bash: \"Bash\",\r\n shell: \"Shell\",\r\n yaml: \"YAML\",\r\n xml: \"XML\",\r\n markdown: \"Markdown\",\r\n sql: \"SQL\",\r\n powershell: \"PowerShell\",\r\n swift: \"Swift\",\r\n kotlin: \"Kotlin\",\r\n ruby: \"Ruby\",\r\n vue: \"Vue\",\r\n react: \"React\",\r\n };\r\n return titleMap[lang.toLowerCase()] || lang.toUpperCase();\r\n}\r\n\r\n/**\r\n * 处理ESC键退出全屏\r\n */\r\nfunction handleEscapeKey(event: KeyboardEvent) {\r\n if (event.key === \"Escape\" && isFullscreen.value) {\r\n toggleFullscreen();\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n document.addEventListener(\"keydown\", handleEscapeKey);\r\n});\r\n\r\nonUnmounted(() => {\r\n document.removeEventListener(\"keydown\", handleEscapeKey);\r\n});\r\n\r\ndefineExpose({\r\n copyCode,\r\n toggleFullscreen,\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.mr-2 {\r\n margin-right: 0.5rem;\r\n}\r\n\r\n.ml-2 {\r\n margin-left: 0.5rem;\r\n}\r\n</style>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-19\r\n * @Description: 全局代码高亮组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"c-code-wrapper\">\r\n <!-- 代码标题栏 -->\r\n <div v-if=\"showHeader\" class=\"c-code-header\">\r\n <div class=\"c-code-title\">\r\n <C_Icon\r\n v-if=\"languageIcon\"\r\n :name=\"languageIcon\"\r\n :size=\"16\"\r\n class=\"mr-2\"\r\n />\r\n <span>{{ title || getLanguageTitle(language) }}</span>\r\n </div>\r\n <div class=\"c-code-actions\">\r\n <NTooltip trigger=\"hover\">\r\n <template #trigger>\r\n <NButton\r\n size=\"tiny\"\r\n quaternary\r\n @click=\"copyCode\"\r\n :loading=\"copying\"\r\n >\r\n <template #icon>\r\n <C_Icon\r\n :name=\"copying ? 'mdi:loading' : 'mdi:content-copy'\"\r\n :loading=\"copying\"\r\n />\r\n </template>\r\n </NButton>\r\n </template>\r\n 复制代码\r\n </NTooltip>\r\n\r\n <NTooltip v-if=\"showFullscreen\" trigger=\"hover\">\r\n <template #trigger>\r\n <NButton size=\"tiny\" quaternary @click=\"toggleFullscreen\">\r\n <template #icon>\r\n <C_Icon\r\n :name=\"\r\n isFullscreen ? 'mdi:fullscreen-exit' : 'mdi:fullscreen'\r\n \"\r\n />\r\n </template>\r\n </NButton>\r\n </template>\r\n {{ isFullscreen ? \"退出全屏\" : \"全屏查看\" }}\r\n </NTooltip>\r\n </div>\r\n </div>\r\n\r\n <!-- 代码内容区域 -->\r\n <div class=\"c-code-content\">\r\n <div\r\n class=\"code-wrapper\"\r\n @mouseenter=\"showFloatingCopy = true\"\r\n @mouseleave=\"showFloatingCopy = false\"\r\n >\r\n <NCode\r\n :key=\"`code-${language}-${code.length}`\"\r\n :code=\"code\"\r\n :language=\"language\"\r\n :hljs=\"hljs\"\r\n :show-line-numbers=\"showLineNumbers\"\r\n :word-wrap=\"wordWrap\"\r\n :trim=\"trim\"\r\n :style=\"codeStyle\"\r\n @click=\"emit('click', $event)\"\r\n />\r\n\r\n <!-- 悬浮复制按钮 -->\r\n <Transition name=\"fade\">\r\n <div v-if=\"showFloatingCopy && !showHeader\" class=\"floating-copy-btn\">\r\n <NTooltip trigger=\"hover\">\r\n <template #trigger>\r\n <NButton\r\n size=\"small\"\r\n quaternary\r\n @click=\"copyCode\"\r\n :loading=\"copying\"\r\n class=\"copy-floating\"\r\n >\r\n <template #icon>\r\n <C_Icon\r\n :name=\"copying ? 'mdi:loading' : 'mdi:content-copy'\"\r\n :loading=\"copying\"\r\n />\r\n </template>\r\n </NButton>\r\n </template>\r\n 复制代码\r\n </NTooltip>\r\n </div>\r\n </Transition>\r\n </div>\r\n\r\n <!-- 语言加载状态 -->\r\n <div v-if=\"languageLoading\" class=\"c-code-loading\">\r\n <NSpin size=\"small\" />\r\n <span class=\"ml-2\">正在加载 {{ language }} 语言包...</span>\r\n </div>\r\n </div>\r\n\r\n <!-- 全屏模态框 -->\r\n <NModal\r\n v-model:show=\"isFullscreen\"\r\n :mask-closable=\"false\"\r\n :show-icon=\"false\"\r\n :bordered=\"false\"\r\n style=\"width: 100vw; height: 100vh; margin: 0; padding: 0\"\r\n >\r\n <div class=\"fullscreen-content\">\r\n <div class=\"fullscreen-header\">\r\n <div class=\"fullscreen-title\">\r\n <C_Icon\r\n v-if=\"languageIcon\"\r\n :name=\"languageIcon\"\r\n :size=\"16\"\r\n class=\"mr-2\"\r\n />\r\n <span>{{ title || getLanguageTitle(language) }}</span>\r\n </div>\r\n <NButton size=\"small\" quaternary @click=\"toggleFullscreen\">\r\n <template #icon>\r\n <C_Icon name=\"mdi:close\" />\r\n </template>\r\n </NButton>\r\n </div>\r\n <div class=\"fullscreen-body\">\r\n <NCode\r\n :key=\"`fullscreen-code-${language}-${code.length}`\"\r\n :code=\"code\"\r\n :language=\"language\"\r\n :hljs=\"hljs\"\r\n :show-line-numbers=\"showLineNumbers\"\r\n :word-wrap=\"wordWrap\"\r\n :trim=\"trim\"\r\n />\r\n </div>\r\n </div>\r\n </NModal>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport {\r\n ref,\r\n computed,\r\n watch,\r\n onMounted,\r\n onUnmounted,\r\n nextTick,\r\n inject,\r\n} from \"vue\";\r\nimport C_Icon from \"../C_Icon/index.vue\";\r\n\r\n// 直接在组件内定义 HighlightManager 接口,避免导入错误\r\ninterface HighlightManager {\r\n getHljs?: () => any;\r\n loadLanguage?: (language: string) => Promise<void>;\r\n getLoadedLanguages?: () => string[];\r\n}\r\n\r\n// 组件名称定义\r\ndefineOptions({\r\n name: \"CCode\",\r\n});\r\n\r\ninterface Props {\r\n code: string;\r\n language?: string;\r\n title?: string;\r\n showHeader?: boolean;\r\n showLineNumbers?: boolean;\r\n wordWrap?: boolean;\r\n trim?: boolean;\r\n showFullscreen?: boolean;\r\n maxHeight?: string | number;\r\n autoLoadLanguage?: boolean;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n code: \"\",\r\n language: \"text\",\r\n showHeader: true,\r\n showLineNumbers: true,\r\n wordWrap: false,\r\n trim: true,\r\n showFullscreen: false,\r\n autoLoadLanguage: true,\r\n});\r\n\r\nconst emit = defineEmits<{\r\n copy: [code: string];\r\n click: [event: MouseEvent];\r\n fullscreen: [isFullscreen: boolean];\r\n}>();\r\n\r\n// 尝试获取 highlight 实例(如果用户安装了插件)\r\nconst highlightManager = inject<HighlightManager | null>(\r\n \"highlightManager\",\r\n null,\r\n);\r\n\r\nconst copying = ref(false);\r\nconst isFullscreen = ref(false);\r\nconst languageLoading = ref(false);\r\nconst showFloatingCopy = ref(false);\r\n\r\n// 安全地获取 hljs 实例\r\nconst hljs = computed(() => {\r\n try {\r\n return highlightManager?.getHljs?.() || null;\r\n } catch (error) {\r\n console.warn(\"Highlight.js not available:\", error);\r\n return null;\r\n }\r\n});\r\n\r\n// 语言图标映射(使用标准的 MDI 图标名称)\r\nconst languageIcon = computed(() => {\r\n const iconMap: Record<string, string> = {\r\n javascript: \"mdi:language-javascript\",\r\n typescript: \"mdi:language-typescript\",\r\n python: \"mdi:language-python\",\r\n html: \"mdi:language-html5\",\r\n css: \"mdi:language-css3\",\r\n vue: \"mdi:vuejs\",\r\n react: \"mdi:react\",\r\n json: \"mdi:code-json\",\r\n java: \"mdi:language-java\",\r\n cpp: \"mdi:language-cpp\",\r\n go: \"mdi:language-go\",\r\n rust: \"mdi:language-rust\",\r\n php: \"mdi:language-php\",\r\n csharp: \"mdi:language-csharp\",\r\n sql: \"mdi:database\",\r\n yaml: \"mdi:file-code\",\r\n xml: \"mdi:xml\",\r\n markdown: \"mdi:language-markdown\",\r\n bash: \"mdi:bash\",\r\n shell: \"mdi:console\",\r\n powershell: \"mdi:powershell\",\r\n swift: \"mdi:language-swift\",\r\n kotlin: \"mdi:language-kotlin\",\r\n ruby: \"mdi:language-ruby\",\r\n };\r\n return iconMap[props.language.toLowerCase()] || \"mdi:code-braces\";\r\n});\r\n\r\n// 代码样式\r\nconst codeStyle = computed(() => {\r\n if (!props.maxHeight) return {};\r\n return {\r\n maxHeight:\r\n typeof props.maxHeight === \"number\"\r\n ? `${props.maxHeight}px`\r\n : props.maxHeight,\r\n };\r\n});\r\n\r\n// 自动加载语言包\r\nwatch(\r\n () => props.language,\r\n async (newLanguage) => {\r\n if (!props.autoLoadLanguage || newLanguage === \"text\" || !highlightManager)\r\n return;\r\n\r\n const loadedLanguages = highlightManager.getLoadedLanguages?.() || [];\r\n if (loadedLanguages.includes(newLanguage)) return;\r\n\r\n languageLoading.value = true;\r\n try {\r\n await highlightManager.loadLanguage?.(newLanguage);\r\n await nextTick();\r\n } catch (error) {\r\n console.warn(`Failed to load language: ${newLanguage}`, error);\r\n } finally {\r\n languageLoading.value = false;\r\n }\r\n },\r\n { immediate: true },\r\n);\r\n\r\n/**\r\n * 复制代码到剪贴板\r\n */\r\nasync function copyCode() {\r\n if (copying.value) return;\r\n copying.value = true;\r\n\r\n try {\r\n await navigator.clipboard.writeText(props.code);\r\n emit(\"copy\", props.code);\r\n } catch (error) {\r\n console.error(\"Copy failed:\", error);\r\n } finally {\r\n copying.value = false;\r\n }\r\n}\r\n\r\n/**\r\n * 切换全屏显示状态\r\n */\r\nfunction toggleFullscreen() {\r\n isFullscreen.value = !isFullscreen.value;\r\n emit(\"fullscreen\", isFullscreen.value);\r\n}\r\n\r\n/**\r\n * 获取编程语言的显示标题\r\n */\r\nfunction getLanguageTitle(lang: string): string {\r\n const titleMap: Record<string, string> = {\r\n javascript: \"JavaScript\",\r\n typescript: \"TypeScript\",\r\n python: \"Python\",\r\n java: \"Java\",\r\n cpp: \"C++\",\r\n csharp: \"C#\",\r\n php: \"PHP\",\r\n go: \"Go\",\r\n rust: \"Rust\",\r\n html: \"HTML\",\r\n css: \"CSS\",\r\n json: \"JSON\",\r\n bash: \"Bash\",\r\n shell: \"Shell\",\r\n yaml: \"YAML\",\r\n xml: \"XML\",\r\n markdown: \"Markdown\",\r\n sql: \"SQL\",\r\n powershell: \"PowerShell\",\r\n swift: \"Swift\",\r\n kotlin: \"Kotlin\",\r\n ruby: \"Ruby\",\r\n vue: \"Vue\",\r\n react: \"React\",\r\n };\r\n return titleMap[lang.toLowerCase()] || lang.toUpperCase();\r\n}\r\n\r\n/**\r\n * 处理ESC键退出全屏\r\n */\r\nfunction handleEscapeKey(event: KeyboardEvent) {\r\n if (event.key === \"Escape\" && isFullscreen.value) {\r\n toggleFullscreen();\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n document.addEventListener(\"keydown\", handleEscapeKey);\r\n});\r\n\r\nonUnmounted(() => {\r\n document.removeEventListener(\"keydown\", handleEscapeKey);\r\n});\r\n\r\ndefineExpose({\r\n copyCode,\r\n toggleFullscreen,\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.mr-2 {\r\n margin-right: 0.5rem;\r\n}\r\n\r\n.ml-2 {\r\n margin-left: 0.5rem;\r\n}\r\n</style>\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"C_Code2.js","names":[],"sources":["../src/components/C_Code/index.vue"],"sourcesContent":["<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2025-06-19\n * @Description: 全局代码高亮组件\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div class=\"c-code-wrapper\">\n <!-- 代码标题栏 -->\n <div v-if=\"showHeader\" class=\"c-code-header\">\n <div class=\"c-code-title\">\n <C_Icon\n v-if=\"languageIcon\"\n :name=\"languageIcon\"\n :size=\"16\"\n class=\"mr-2\"\n />\n <span>{{ title || getLanguageTitle(language) }}</span>\n </div>\n <div class=\"c-code-actions\">\n <NTooltip trigger=\"hover\">\n <template #trigger>\n <NButton\n size=\"tiny\"\n quaternary\n @click=\"copyCode\"\n :loading=\"copying\"\n >\n <template #icon>\n <C_Icon\n :name=\"copying ? 'mdi:loading' : 'mdi:content-copy'\"\n :loading=\"copying\"\n />\n </template>\n </NButton>\n </template>\n 复制代码\n </NTooltip>\n\n <NTooltip v-if=\"showFullscreen\" trigger=\"hover\">\n <template #trigger>\n <NButton size=\"tiny\" quaternary @click=\"toggleFullscreen\">\n <template #icon>\n <C_Icon\n :name=\"\n isFullscreen ? 'mdi:fullscreen-exit' : 'mdi:fullscreen'\n \"\n />\n </template>\n </NButton>\n </template>\n {{ isFullscreen ? \"退出全屏\" : \"全屏查看\" }}\n </NTooltip>\n </div>\n </div>\n\n <!-- 代码内容区域 -->\n <div class=\"c-code-content\">\n <div\n class=\"code-wrapper\"\n @mouseenter=\"showFloatingCopy = true\"\n @mouseleave=\"showFloatingCopy = false\"\n >\n <NCode\n :key=\"`code-${language}-${code.length}`\"\n :code=\"code\"\n :language=\"language\"\n :hljs=\"hljs\"\n :show-line-numbers=\"showLineNumbers\"\n :word-wrap=\"wordWrap\"\n :trim=\"trim\"\n :style=\"codeStyle\"\n @click=\"emit('click', $event)\"\n />\n\n <!-- 悬浮复制按钮 -->\n <Transition name=\"fade\">\n <div v-if=\"showFloatingCopy && !showHeader\" class=\"floating-copy-btn\">\n <NTooltip trigger=\"hover\">\n <template #trigger>\n <NButton\n size=\"small\"\n quaternary\n @click=\"copyCode\"\n :loading=\"copying\"\n class=\"copy-floating\"\n >\n <template #icon>\n <C_Icon\n :name=\"copying ? 'mdi:loading' : 'mdi:content-copy'\"\n :loading=\"copying\"\n />\n </template>\n </NButton>\n </template>\n 复制代码\n </NTooltip>\n </div>\n </Transition>\n </div>\n\n <!-- 语言加载状态 -->\n <div v-if=\"languageLoading\" class=\"c-code-loading\">\n <NSpin size=\"small\" />\n <span class=\"ml-2\">正在加载 {{ language }} 语言包...</span>\n </div>\n </div>\n\n <!-- 全屏模态框 -->\n <NModal\n v-model:show=\"isFullscreen\"\n :mask-closable=\"false\"\n :show-icon=\"false\"\n :bordered=\"false\"\n style=\"width: 100vw; height: 100vh; margin: 0; padding: 0\"\n >\n <div class=\"fullscreen-content\">\n <div class=\"fullscreen-header\">\n <div class=\"fullscreen-title\">\n <C_Icon\n v-if=\"languageIcon\"\n :name=\"languageIcon\"\n :size=\"16\"\n class=\"mr-2\"\n />\n <span>{{ title || getLanguageTitle(language) }}</span>\n </div>\n <NButton size=\"small\" quaternary @click=\"toggleFullscreen\">\n <template #icon>\n <C_Icon name=\"mdi:close\" />\n </template>\n </NButton>\n </div>\n <div class=\"fullscreen-body\">\n <NCode\n :key=\"`fullscreen-code-${language}-${code.length}`\"\n :code=\"code\"\n :language=\"language\"\n :hljs=\"hljs\"\n :show-line-numbers=\"showLineNumbers\"\n :word-wrap=\"wordWrap\"\n :trim=\"trim\"\n />\n </div>\n </div>\n </NModal>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n ref,\n computed,\n watch,\n onMounted,\n onUnmounted,\n nextTick,\n inject,\n} from \"vue\";\nimport C_Icon from \"../C_Icon/index.vue\";\n\n// 直接在组件内定义 HighlightManager 接口,避免导入错误\ninterface HighlightManager {\n getHljs?: () => any;\n loadLanguage?: (language: string) => Promise<void>;\n getLoadedLanguages?: () => string[];\n}\n\n// 组件名称定义\ndefineOptions({\n name: \"CCode\",\n});\n\ninterface Props {\n code: string;\n language?: string;\n title?: string;\n showHeader?: boolean;\n showLineNumbers?: boolean;\n wordWrap?: boolean;\n trim?: boolean;\n showFullscreen?: boolean;\n maxHeight?: string | number;\n autoLoadLanguage?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n code: \"\",\n language: \"text\",\n showHeader: true,\n showLineNumbers: true,\n wordWrap: false,\n trim: true,\n showFullscreen: false,\n autoLoadLanguage: true,\n});\n\nconst emit = defineEmits<{\n copy: [code: string];\n click: [event: MouseEvent];\n fullscreen: [isFullscreen: boolean];\n}>();\n\n// 尝试获取 highlight 实例(如果用户安装了插件)\nconst highlightManager = inject<HighlightManager | null>(\n \"highlightManager\",\n null,\n);\n\nconst copying = ref(false);\nconst isFullscreen = ref(false);\nconst languageLoading = ref(false);\nconst showFloatingCopy = ref(false);\n\n// 安全地获取 hljs 实例\nconst hljs = computed(() => {\n try {\n return highlightManager?.getHljs?.() || null;\n } catch (error) {\n console.warn(\"Highlight.js not available:\", error);\n return null;\n }\n});\n\n// 语言图标映射(使用标准的 MDI 图标名称)\nconst languageIcon = computed(() => {\n const iconMap: Record<string, string> = {\n javascript: \"mdi:language-javascript\",\n typescript: \"mdi:language-typescript\",\n python: \"mdi:language-python\",\n html: \"mdi:language-html5\",\n css: \"mdi:language-css3\",\n vue: \"mdi:vuejs\",\n react: \"mdi:react\",\n json: \"mdi:code-json\",\n java: \"mdi:language-java\",\n cpp: \"mdi:language-cpp\",\n go: \"mdi:language-go\",\n rust: \"mdi:language-rust\",\n php: \"mdi:language-php\",\n csharp: \"mdi:language-csharp\",\n sql: \"mdi:database\",\n yaml: \"mdi:file-code\",\n xml: \"mdi:xml\",\n markdown: \"mdi:language-markdown\",\n bash: \"mdi:bash\",\n shell: \"mdi:console\",\n powershell: \"mdi:powershell\",\n swift: \"mdi:language-swift\",\n kotlin: \"mdi:language-kotlin\",\n ruby: \"mdi:language-ruby\",\n };\n return iconMap[props.language.toLowerCase()] || \"mdi:code-braces\";\n});\n\n// 代码样式\nconst codeStyle = computed(() => {\n if (!props.maxHeight) return {};\n return {\n maxHeight:\n typeof props.maxHeight === \"number\"\n ? `${props.maxHeight}px`\n : props.maxHeight,\n };\n});\n\n// 自动加载语言包\nwatch(\n () => props.language,\n async (newLanguage) => {\n if (!props.autoLoadLanguage || newLanguage === \"text\" || !highlightManager)\n return;\n\n const loadedLanguages = highlightManager.getLoadedLanguages?.() || [];\n if (loadedLanguages.includes(newLanguage)) return;\n\n languageLoading.value = true;\n try {\n await highlightManager.loadLanguage?.(newLanguage);\n await nextTick();\n } catch (error) {\n console.warn(`Failed to load language: ${newLanguage}`, error);\n } finally {\n languageLoading.value = false;\n }\n },\n { immediate: true },\n);\n\n/**\n * 复制代码到剪贴板\n */\nasync function copyCode() {\n if (copying.value) return;\n copying.value = true;\n\n try {\n await navigator.clipboard.writeText(props.code);\n emit(\"copy\", props.code);\n } catch (error) {\n console.error(\"Copy failed:\", error);\n } finally {\n copying.value = false;\n }\n}\n\n/**\n * 切换全屏显示状态\n */\nfunction toggleFullscreen() {\n isFullscreen.value = !isFullscreen.value;\n emit(\"fullscreen\", isFullscreen.value);\n}\n\n/**\n * 获取编程语言的显示标题\n */\nfunction getLanguageTitle(lang: string): string {\n const titleMap: Record<string, string> = {\n javascript: \"JavaScript\",\n typescript: \"TypeScript\",\n python: \"Python\",\n java: \"Java\",\n cpp: \"C++\",\n csharp: \"C#\",\n php: \"PHP\",\n go: \"Go\",\n rust: \"Rust\",\n html: \"HTML\",\n css: \"CSS\",\n json: \"JSON\",\n bash: \"Bash\",\n shell: \"Shell\",\n yaml: \"YAML\",\n xml: \"XML\",\n markdown: \"Markdown\",\n sql: \"SQL\",\n powershell: \"PowerShell\",\n swift: \"Swift\",\n kotlin: \"Kotlin\",\n ruby: \"Ruby\",\n vue: \"Vue\",\n react: \"React\",\n };\n return titleMap[lang.toLowerCase()] || lang.toUpperCase();\n}\n\n/**\n * 处理ESC键退出全屏\n */\nfunction handleEscapeKey(event: KeyboardEvent) {\n if (event.key === \"Escape\" && isFullscreen.value) {\n toggleFullscreen();\n }\n}\n\nonMounted(() => {\n document.addEventListener(\"keydown\", handleEscapeKey);\n});\n\nonUnmounted(() => {\n document.removeEventListener(\"keydown\", handleEscapeKey);\n});\n\ndefineExpose({\n copyCode,\n toggleFullscreen,\n});\n</script>\n\n<style lang=\"scss\" scoped>\n.mr-2 {\n margin-right: 0.5rem;\n}\n\n.ml-2 {\n margin-left: 0.5rem;\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C_CollapsePanel-
|
|
1
|
+
{"version":3,"file":"C_CollapsePanel-CWkFCqNQ.css","names":[],"sources":["../src/components/C_CollapsePanel/index.vue?vue&type=style&index=0&scoped=4e11a983&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled *//* ─── 变量 ───────────────────────────────────────── */\n/* ─── 容器 ───────────────────────────────────────── */\n.c-collapse-panel[data-v-4e11a983] {\n width: 100%;\n /* ── default 变体 ────────────────────────────── */\n /* ── card 变体 ───────────────────────────────── */\n /* ── ghost 变体(无边框极简) ──────────────────── */\n /* ── bordered 修饰符 ─────────────────────────── */\n /* ── 图标右侧模式 ────────────────────────────── */\n}\n.c-collapse-panel--default .collapse-item[data-v-4e11a983] {\n border-bottom: 1px solid var(--c-border, #e1e4e8);\n}\n.c-collapse-panel--default .collapse-item[data-v-4e11a983]:last-child {\n border-bottom: none;\n}\n.c-collapse-panel--card[data-v-4e11a983] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.c-collapse-panel--card .collapse-item[data-v-4e11a983] {\n border: 1px solid var(--c-border, #e1e4e8);\n border-radius: 8px;\n background: var(--c-bg-card, #fff);\n transition: box-shadow 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.c-collapse-panel--card .collapse-item--active[data-v-4e11a983] {\n box-shadow: 0 1px 6px rgba(0, 0, 0, 0.08);\n}\n.c-collapse-panel--card .collapse-item[data-v-4e11a983]:hover:not(.collapse-item--disabled) {\n border-color: var(--c-primary, #409eff);\n}\n.c-collapse-panel--ghost .collapse-item__header[data-v-4e11a983] {\n background: transparent;\n}\n.c-collapse-panel--ghost .collapse-item__header[data-v-4e11a983]:hover {\n background: var(--c-bg-card, #fff);\n}\n.c-collapse-panel--ghost .collapse-item__content[data-v-4e11a983] {\n padding-left: 28px;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default[data-v-4e11a983] {\n border: 1px solid var(--c-border, #e1e4e8);\n border-radius: 8px;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:first-child .collapse-item__header[data-v-4e11a983] {\n border-radius: 8px 8px 0 0;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item[data-v-4e11a983]:last-child {\n border-bottom: none;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:last-child .collapse-item__header[data-v-4e11a983] {\n border-radius: 0 0 8px 8px;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:last-child.collapse-item--active .collapse-item__header[data-v-4e11a983] {\n border-radius: 0;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:only-child .collapse-item__header[data-v-4e11a983] {\n border-radius: 8px;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:only-child.collapse-item--active .collapse-item__header[data-v-4e11a983] {\n border-radius: 8px 8px 0 0;\n}\n.c-collapse-panel--icon-right .collapse-item__header[data-v-4e11a983] {\n flex-direction: row-reverse;\n}\n.c-collapse-panel--icon-right .collapse-item__arrow[data-v-4e11a983] {\n margin-left: auto;\n margin-right: 0;\n}\n.c-collapse-panel--icon-right .collapse-item__title-area[data-v-4e11a983] {\n margin-left: 0;\n}\n\n/* ─── 面板项 ─────────────────────────────────────── */\n.collapse-item--disabled .collapse-item__header[data-v-4e11a983] {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* ─── 面板头部 ───────────────────────────────────── */\n.collapse-item__header[data-v-4e11a983] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n cursor: pointer;\n user-select: none;\n background: transparent;\n transition: background-color 0.15s ease;\n outline: none;\n}\n.collapse-item__header[data-v-4e11a983]:hover:not([aria-disabled=true]) {\n background: var(--c-bg-hover, rgba(0, 0, 0, 0.04));\n}\n.collapse-item__header[data-v-4e11a983]:focus-visible {\n outline: 2px solid var(--c-primary, #409eff);\n outline-offset: -2px;\n border-radius: 4px;\n}\n\n/* ─── 展开箭头 ───────────────────────────────────── */\n.collapse-item__arrow[data-v-4e11a983] {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n font-size: 16px;\n color: var(--c-text-3, #999);\n transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.collapse-item__arrow--expanded[data-v-4e11a983] {\n transform: rotate(90deg);\n}\n\n/* ─── 标题区域 ───────────────────────────────────── */\n.collapse-item__title-area[data-v-4e11a983] {\n flex: 1;\n min-width: 0;\n}\n.collapse-item__title-group[data-v-4e11a983] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.collapse-item__icon[data-v-4e11a983] {\n flex-shrink: 0;\n font-size: 18px;\n color: var(--c-primary, #409eff);\n}\n.collapse-item__title[data-v-4e11a983] {\n font-size: 14px;\n font-weight: 600;\n color: var(--c-text-1, #333);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.collapse-item__subtitle[data-v-4e11a983] {\n font-size: 12px;\n color: var(--c-text-4, #ccc);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── 头部右侧操作区 ────────────────────────────── */\n.collapse-item__extra[data-v-4e11a983] {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n margin-left: auto;\n}\n\n/* ─── 内容区域 ───────────────────────────────────── */\n.collapse-item__content-wrapper[data-v-4e11a983] {\n transition: height 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: height;\n}\n.collapse-item__content[data-v-4e11a983] {\n padding: 0 16px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: var(--c-text-2, #666);\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C_CollapsePanel-
|
|
1
|
+
{"version":3,"file":"C_CollapsePanel-pcVJA_4z.css","names":[],"sources":["../src/components/C_CollapsePanel/index.vue?vue&type=style&index=0&scoped=4e11a983&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled *//* ─── 变量 ───────────────────────────────────────── */\n/* ─── 容器 ───────────────────────────────────────── */\n.c-collapse-panel[data-v-4e11a983] {\n width: 100%;\n /* ── default 变体 ────────────────────────────── */\n /* ── card 变体 ───────────────────────────────── */\n /* ── ghost 变体(无边框极简) ──────────────────── */\n /* ── bordered 修饰符 ─────────────────────────── */\n /* ── 图标右侧模式 ────────────────────────────── */\n}\n.c-collapse-panel--default .collapse-item[data-v-4e11a983] {\n border-bottom: 1px solid var(--c-border, #e1e4e8);\n}\n.c-collapse-panel--default .collapse-item[data-v-4e11a983]:last-child {\n border-bottom: none;\n}\n.c-collapse-panel--card[data-v-4e11a983] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.c-collapse-panel--card .collapse-item[data-v-4e11a983] {\n border: 1px solid var(--c-border, #e1e4e8);\n border-radius: 8px;\n background: var(--c-bg-card, #fff);\n transition: box-shadow 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.c-collapse-panel--card .collapse-item--active[data-v-4e11a983] {\n box-shadow: 0 1px 6px rgba(0, 0, 0, 0.08);\n}\n.c-collapse-panel--card .collapse-item[data-v-4e11a983]:hover:not(.collapse-item--disabled) {\n border-color: var(--c-primary, #409eff);\n}\n.c-collapse-panel--ghost .collapse-item__header[data-v-4e11a983] {\n background: transparent;\n}\n.c-collapse-panel--ghost .collapse-item__header[data-v-4e11a983]:hover {\n background: var(--c-bg-card, #fff);\n}\n.c-collapse-panel--ghost .collapse-item__content[data-v-4e11a983] {\n padding-left: 28px;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default[data-v-4e11a983] {\n border: 1px solid var(--c-border, #e1e4e8);\n border-radius: 8px;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:first-child .collapse-item__header[data-v-4e11a983] {\n border-radius: 8px 8px 0 0;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item[data-v-4e11a983]:last-child {\n border-bottom: none;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:last-child .collapse-item__header[data-v-4e11a983] {\n border-radius: 0 0 8px 8px;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:last-child.collapse-item--active .collapse-item__header[data-v-4e11a983] {\n border-radius: 0;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:only-child .collapse-item__header[data-v-4e11a983] {\n border-radius: 8px;\n}\n.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:only-child.collapse-item--active .collapse-item__header[data-v-4e11a983] {\n border-radius: 8px 8px 0 0;\n}\n.c-collapse-panel--icon-right .collapse-item__header[data-v-4e11a983] {\n flex-direction: row-reverse;\n}\n.c-collapse-panel--icon-right .collapse-item__arrow[data-v-4e11a983] {\n margin-left: auto;\n margin-right: 0;\n}\n.c-collapse-panel--icon-right .collapse-item__title-area[data-v-4e11a983] {\n margin-left: 0;\n}\n\n/* ─── 面板项 ─────────────────────────────────────── */\n.collapse-item--disabled .collapse-item__header[data-v-4e11a983] {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* ─── 面板头部 ───────────────────────────────────── */\n.collapse-item__header[data-v-4e11a983] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n cursor: pointer;\n user-select: none;\n background: transparent;\n transition: background-color 0.15s ease;\n outline: none;\n}\n.collapse-item__header[data-v-4e11a983]:hover:not([aria-disabled=true]) {\n background: var(--c-bg-hover, rgba(0, 0, 0, 0.04));\n}\n.collapse-item__header[data-v-4e11a983]:focus-visible {\n outline: 2px solid var(--c-primary, #409eff);\n outline-offset: -2px;\n border-radius: 4px;\n}\n\n/* ─── 展开箭头 ───────────────────────────────────── */\n.collapse-item__arrow[data-v-4e11a983] {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n font-size: 16px;\n color: var(--c-text-3, #999);\n transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.collapse-item__arrow--expanded[data-v-4e11a983] {\n transform: rotate(90deg);\n}\n\n/* ─── 标题区域 ───────────────────────────────────── */\n.collapse-item__title-area[data-v-4e11a983] {\n flex: 1;\n min-width: 0;\n}\n.collapse-item__title-group[data-v-4e11a983] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.collapse-item__icon[data-v-4e11a983] {\n flex-shrink: 0;\n font-size: 18px;\n color: var(--c-primary, #409eff);\n}\n.collapse-item__title[data-v-4e11a983] {\n font-size: 14px;\n font-weight: 600;\n color: var(--c-text-1, #333);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.collapse-item__subtitle[data-v-4e11a983] {\n font-size: 12px;\n color: var(--c-text-4, #ccc);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── 头部右侧操作区 ────────────────────────────── */\n.collapse-item__extra[data-v-4e11a983] {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n margin-left: auto;\n}\n\n/* ─── 内容区域 ───────────────────────────────────── */\n.collapse-item__content-wrapper[data-v-4e11a983] {\n transition: height 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: height;\n}\n.collapse-item__content[data-v-4e11a983] {\n padding: 0 16px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: var(--c-text-2, #666);\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
|
package/dist/C_CollapsePanel.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`})
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./C_CollapsePanel.js`);exports.C_CollapsePanel=e.t,exports.useCollapsePanel=e.n;
|
package/dist/C_CollapsePanel.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* unplugin-vue-components disabled *//* ─── 变量 ───────────────────────────────────────── */
|
|
2
2
|
/* ─── 容器 ───────────────────────────────────────── */
|
|
3
|
-
.c-collapse-panel[data-v-
|
|
3
|
+
.c-collapse-panel[data-v-4e11a983] {
|
|
4
4
|
width: 100%;
|
|
5
5
|
/* ── default 变体 ────────────────────────────── */
|
|
6
6
|
/* ── card 变体 ───────────────────────────────── */
|
|
@@ -8,79 +8,79 @@
|
|
|
8
8
|
/* ── bordered 修饰符 ─────────────────────────── */
|
|
9
9
|
/* ── 图标右侧模式 ────────────────────────────── */
|
|
10
10
|
}
|
|
11
|
-
.c-collapse-panel--default .collapse-item[data-v-
|
|
11
|
+
.c-collapse-panel--default .collapse-item[data-v-4e11a983] {
|
|
12
12
|
border-bottom: 1px solid var(--c-border, #e1e4e8);
|
|
13
13
|
}
|
|
14
|
-
.c-collapse-panel--default .collapse-item[data-v-
|
|
14
|
+
.c-collapse-panel--default .collapse-item[data-v-4e11a983]:last-child {
|
|
15
15
|
border-bottom: none;
|
|
16
16
|
}
|
|
17
|
-
.c-collapse-panel--card[data-v-
|
|
17
|
+
.c-collapse-panel--card[data-v-4e11a983] {
|
|
18
18
|
display: flex;
|
|
19
19
|
flex-direction: column;
|
|
20
20
|
gap: 8px;
|
|
21
21
|
}
|
|
22
|
-
.c-collapse-panel--card .collapse-item[data-v-
|
|
22
|
+
.c-collapse-panel--card .collapse-item[data-v-4e11a983] {
|
|
23
23
|
border: 1px solid var(--c-border, #e1e4e8);
|
|
24
24
|
border-radius: 8px;
|
|
25
25
|
background: var(--c-bg-card, #fff);
|
|
26
26
|
transition: box-shadow 0.25s cubic-bezier(0.4, 0, 0.2, 1);
|
|
27
27
|
}
|
|
28
|
-
.c-collapse-panel--card .collapse-item--active[data-v-
|
|
28
|
+
.c-collapse-panel--card .collapse-item--active[data-v-4e11a983] {
|
|
29
29
|
box-shadow: 0 1px 6px rgba(0, 0, 0, 0.08);
|
|
30
30
|
}
|
|
31
|
-
.c-collapse-panel--card .collapse-item[data-v-
|
|
31
|
+
.c-collapse-panel--card .collapse-item[data-v-4e11a983]:hover:not(.collapse-item--disabled) {
|
|
32
32
|
border-color: var(--c-primary, #409eff);
|
|
33
33
|
}
|
|
34
|
-
.c-collapse-panel--ghost .collapse-item__header[data-v-
|
|
34
|
+
.c-collapse-panel--ghost .collapse-item__header[data-v-4e11a983] {
|
|
35
35
|
background: transparent;
|
|
36
36
|
}
|
|
37
|
-
.c-collapse-panel--ghost .collapse-item__header[data-v-
|
|
37
|
+
.c-collapse-panel--ghost .collapse-item__header[data-v-4e11a983]:hover {
|
|
38
38
|
background: var(--c-bg-card, #fff);
|
|
39
39
|
}
|
|
40
|
-
.c-collapse-panel--ghost .collapse-item__content[data-v-
|
|
40
|
+
.c-collapse-panel--ghost .collapse-item__content[data-v-4e11a983] {
|
|
41
41
|
padding-left: 28px;
|
|
42
42
|
}
|
|
43
|
-
.c-collapse-panel--bordered.c-collapse-panel--default[data-v-
|
|
43
|
+
.c-collapse-panel--bordered.c-collapse-panel--default[data-v-4e11a983] {
|
|
44
44
|
border: 1px solid var(--c-border, #e1e4e8);
|
|
45
45
|
border-radius: 8px;
|
|
46
46
|
}
|
|
47
|
-
.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:first-child .collapse-item__header[data-v-
|
|
47
|
+
.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:first-child .collapse-item__header[data-v-4e11a983] {
|
|
48
48
|
border-radius: 8px 8px 0 0;
|
|
49
49
|
}
|
|
50
|
-
.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item[data-v-
|
|
50
|
+
.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item[data-v-4e11a983]:last-child {
|
|
51
51
|
border-bottom: none;
|
|
52
52
|
}
|
|
53
|
-
.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:last-child .collapse-item__header[data-v-
|
|
53
|
+
.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:last-child .collapse-item__header[data-v-4e11a983] {
|
|
54
54
|
border-radius: 0 0 8px 8px;
|
|
55
55
|
}
|
|
56
|
-
.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:last-child.collapse-item--active .collapse-item__header[data-v-
|
|
56
|
+
.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:last-child.collapse-item--active .collapse-item__header[data-v-4e11a983] {
|
|
57
57
|
border-radius: 0;
|
|
58
58
|
}
|
|
59
|
-
.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:only-child .collapse-item__header[data-v-
|
|
59
|
+
.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:only-child .collapse-item__header[data-v-4e11a983] {
|
|
60
60
|
border-radius: 8px;
|
|
61
61
|
}
|
|
62
|
-
.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:only-child.collapse-item--active .collapse-item__header[data-v-
|
|
62
|
+
.c-collapse-panel--bordered.c-collapse-panel--default .collapse-item:only-child.collapse-item--active .collapse-item__header[data-v-4e11a983] {
|
|
63
63
|
border-radius: 8px 8px 0 0;
|
|
64
64
|
}
|
|
65
|
-
.c-collapse-panel--icon-right .collapse-item__header[data-v-
|
|
65
|
+
.c-collapse-panel--icon-right .collapse-item__header[data-v-4e11a983] {
|
|
66
66
|
flex-direction: row-reverse;
|
|
67
67
|
}
|
|
68
|
-
.c-collapse-panel--icon-right .collapse-item__arrow[data-v-
|
|
68
|
+
.c-collapse-panel--icon-right .collapse-item__arrow[data-v-4e11a983] {
|
|
69
69
|
margin-left: auto;
|
|
70
70
|
margin-right: 0;
|
|
71
71
|
}
|
|
72
|
-
.c-collapse-panel--icon-right .collapse-item__title-area[data-v-
|
|
72
|
+
.c-collapse-panel--icon-right .collapse-item__title-area[data-v-4e11a983] {
|
|
73
73
|
margin-left: 0;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
/* ─── 面板项 ─────────────────────────────────────── */
|
|
77
|
-
.collapse-item--disabled .collapse-item__header[data-v-
|
|
77
|
+
.collapse-item--disabled .collapse-item__header[data-v-4e11a983] {
|
|
78
78
|
cursor: not-allowed;
|
|
79
79
|
opacity: 0.5;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
/* ─── 面板头部 ───────────────────────────────────── */
|
|
83
|
-
.collapse-item__header[data-v-
|
|
83
|
+
.collapse-item__header[data-v-4e11a983] {
|
|
84
84
|
display: flex;
|
|
85
85
|
align-items: center;
|
|
86
86
|
gap: 8px;
|
|
@@ -91,17 +91,17 @@
|
|
|
91
91
|
transition: background-color 0.15s ease;
|
|
92
92
|
outline: none;
|
|
93
93
|
}
|
|
94
|
-
.collapse-item__header[data-v-
|
|
94
|
+
.collapse-item__header[data-v-4e11a983]:hover:not([aria-disabled=true]) {
|
|
95
95
|
background: var(--c-bg-hover, rgba(0, 0, 0, 0.04));
|
|
96
96
|
}
|
|
97
|
-
.collapse-item__header[data-v-
|
|
97
|
+
.collapse-item__header[data-v-4e11a983]:focus-visible {
|
|
98
98
|
outline: 2px solid var(--c-primary, #409eff);
|
|
99
99
|
outline-offset: -2px;
|
|
100
100
|
border-radius: 4px;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
/* ─── 展开箭头 ───────────────────────────────────── */
|
|
104
|
-
.collapse-item__arrow[data-v-
|
|
104
|
+
.collapse-item__arrow[data-v-4e11a983] {
|
|
105
105
|
display: flex;
|
|
106
106
|
align-items: center;
|
|
107
107
|
justify-content: center;
|
|
@@ -112,26 +112,26 @@
|
|
|
112
112
|
color: var(--c-text-3, #999);
|
|
113
113
|
transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
|
|
114
114
|
}
|
|
115
|
-
.collapse-item__arrow--expanded[data-v-
|
|
115
|
+
.collapse-item__arrow--expanded[data-v-4e11a983] {
|
|
116
116
|
transform: rotate(90deg);
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
/* ─── 标题区域 ───────────────────────────────────── */
|
|
120
|
-
.collapse-item__title-area[data-v-
|
|
120
|
+
.collapse-item__title-area[data-v-4e11a983] {
|
|
121
121
|
flex: 1;
|
|
122
122
|
min-width: 0;
|
|
123
123
|
}
|
|
124
|
-
.collapse-item__title-group[data-v-
|
|
124
|
+
.collapse-item__title-group[data-v-4e11a983] {
|
|
125
125
|
display: flex;
|
|
126
126
|
align-items: center;
|
|
127
127
|
gap: 8px;
|
|
128
128
|
}
|
|
129
|
-
.collapse-item__icon[data-v-
|
|
129
|
+
.collapse-item__icon[data-v-4e11a983] {
|
|
130
130
|
flex-shrink: 0;
|
|
131
131
|
font-size: 18px;
|
|
132
132
|
color: var(--c-primary, #409eff);
|
|
133
133
|
}
|
|
134
|
-
.collapse-item__title[data-v-
|
|
134
|
+
.collapse-item__title[data-v-4e11a983] {
|
|
135
135
|
font-size: 14px;
|
|
136
136
|
font-weight: 600;
|
|
137
137
|
color: var(--c-text-1, #333);
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
overflow: hidden;
|
|
140
140
|
text-overflow: ellipsis;
|
|
141
141
|
}
|
|
142
|
-
.collapse-item__subtitle[data-v-
|
|
142
|
+
.collapse-item__subtitle[data-v-4e11a983] {
|
|
143
143
|
font-size: 12px;
|
|
144
144
|
color: var(--c-text-4, #ccc);
|
|
145
145
|
white-space: nowrap;
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
/* ─── 头部右侧操作区 ────────────────────────────── */
|
|
151
|
-
.collapse-item__extra[data-v-
|
|
151
|
+
.collapse-item__extra[data-v-4e11a983] {
|
|
152
152
|
flex-shrink: 0;
|
|
153
153
|
display: flex;
|
|
154
154
|
align-items: center;
|
|
@@ -157,15 +157,15 @@
|
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
/* ─── 内容区域 ───────────────────────────────────── */
|
|
160
|
-
.collapse-item__content-wrapper[data-v-
|
|
160
|
+
.collapse-item__content-wrapper[data-v-4e11a983] {
|
|
161
161
|
transition: height 0.25s cubic-bezier(0.4, 0, 0.2, 1);
|
|
162
162
|
will-change: height;
|
|
163
163
|
}
|
|
164
|
-
.collapse-item__content[data-v-
|
|
164
|
+
.collapse-item__content[data-v-4e11a983] {
|
|
165
165
|
padding: 0 16px 16px;
|
|
166
166
|
font-size: 14px;
|
|
167
167
|
line-height: 1.6;
|
|
168
168
|
color: var(--c-text-2, #666);
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
-
/*# sourceMappingURL=C_CollapsePanel-
|
|
171
|
+
/*# sourceMappingURL=C_CollapsePanel-CWkFCqNQ.css.map*/
|
package/dist/C_CollapsePanel.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{n as e,t}from"./C_CollapsePanel2.js";export{t as C_CollapsePanel,e as useCollapsePanel};
|