@robot-admin/naive-ui-components 0.8.1 → 0.8.2
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 +279 -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 +2 -2
- package/dist/constants2.d.ts +4 -4
- package/dist/constants3.d.ts +2 -2
- package/dist/constants4.d.ts +6 -6
- package/dist/constants5.d.ts +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.vue.d.ts +2 -2
- package/dist/index10.vue.d.ts +1 -1
- package/dist/index12.vue.d.ts +2 -2
- package/dist/index13.vue.d.ts +3 -3
- package/dist/index14.vue.d.ts +3 -3
- package/dist/index15.vue.d.ts +7 -7
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.ts +5 -5
- package/dist/index2.vue.d.ts +2 -2
- package/dist/index20.vue.d.ts +1 -1
- package/dist/index21.vue.d.ts +3 -3
- package/dist/index22.vue.d.ts +1 -1
- package/dist/index26.vue.d.ts +4 -4
- package/dist/index27.vue.d.ts +2 -2
- package/dist/index28.vue.d.ts +3 -3
- package/dist/index4.vue.d.ts +7 -7
- package/dist/index6.vue.d.ts +3 -3
- package/dist/index8.vue.d.ts +4 -4
- 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/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.ts +3 -3
- package/dist/useCropperCore.d.ts +5 -5
- package/dist/useDraggableLayout.d.ts +5 -5
- package/dist/useDynamicFormState.d.ts +21 -21
- package/dist/useEdgeInteraction.d.ts +3 -3
- package/dist/useFullscreen.d.ts +2 -2
- package/dist/useInfiniteScroll.d.ts +3 -3
- package/dist/useModalEdit.d.ts +1 -1
- package/dist/useQRCode.d.ts +5 -5
- package/dist/useSearchState.d.ts +2 -2
- package/dist/useSignatureHistory.d.ts +5 -5
- package/dist/useSplitResize.d.ts +4 -4
- package/dist/useTimeSelection.d.ts +2 -2
- package/dist/useTreeOperations.d.ts +3 -3
- package/dist/useWorkflowValidation.d.ts +2 -2
- package/package.json +5 -5
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C_FormSearch2.js","names":["bordered","size"],"sources":["../src/components/C_FormSearch/composables/useSearchHistory.ts","../src/components/C_FormSearch/composables/useSearchState.ts","../src/components/C_FormSearch/index.vue","../src/components/C_FormSearch/index.vue","../src/components/C_FormSearch/index.vue"],"sourcesContent":["import { getItem, setItem } from '../../../utils/storage'\r\nimport type { Ref } from 'vue'\r\nimport type { SearchFormItem, SearchFormParams } from '../types'\r\n\r\nexport interface SearchHistoryOptions {\r\n storageKey?: string\r\n maxItems?: number\r\n}\r\n\r\n/**\r\n *\r\n */\r\nexport function useSearchHistory(\r\n fields: Ref<SearchFormItem[]>,\r\n formParams: Ref<SearchFormParams>,\r\n options: SearchHistoryOptions = {}\r\n) {\r\n const { storageKey, maxItems = 5 } = options\r\n const enabled = !!storageKey\r\n\r\n const findField = (prop: string) =>\r\n fields.value.find(item => item.prop === prop)\r\n\r\n const persistToStorage = () => {\r\n if (enabled) setItem(storageKey!, fields.value)\r\n }\r\n\r\n const restoreFromStorage = () => {\r\n if (!enabled) return\r\n const stored = getItem<SearchFormItem[]>(storageKey!)\r\n if (!stored) return\r\n stored.forEach(storedItem => {\r\n const field = findField(storedItem.prop)\r\n if (field && storedItem.hisList) {\r\n field.hisList = storedItem.hisList\r\n }\r\n })\r\n }\r\n\r\n const setAllFieldsFocus = (targetProp?: string) => {\r\n fields.value.forEach(item => {\r\n item.isFocus = !!(item.hisList && item.prop === targetProp)\r\n })\r\n }\r\n\r\n const handleFocus = (prop: string) => {\r\n restoreFromStorage()\r\n setAllFieldsFocus(prop)\r\n }\r\n\r\n const closeAllPanels = () => setAllFieldsFocus()\r\n\r\n const selectHistoryItem = (value: string, prop: string) => {\r\n formParams.value[prop] = value\r\n closeAllPanels()\r\n }\r\n\r\n const deleteHistoryItem = (prop: string, index: number) => {\r\n const field = findField(prop)\r\n if (!field?.hisList) return\r\n field.hisList.splice(index, 1)\r\n if (field.hisList.length === 0) field.isFocus = false\r\n persistToStorage()\r\n }\r\n\r\n const clearAllHistory = (prop: string) => {\r\n const field = findField(prop)\r\n if (!field?.hisList) return\r\n field.hisList = []\r\n field.isFocus = false\r\n persistToStorage()\r\n }\r\n\r\n const pushToHistoryList = (hisList: string[], newValue: string) => {\r\n const idx = hisList.indexOf(newValue)\r\n if (idx > -1) hisList.splice(idx, 1)\r\n hisList.unshift(newValue)\r\n if (hisList.length > maxItems) hisList.length = maxItems\r\n return hisList\r\n }\r\n\r\n const saveCurrentInputs = () => {\r\n if (!enabled) return\r\n Object.keys(formParams.value).forEach(key => {\r\n const val = formParams.value[key]\r\n if (!val) return\r\n const field = findField(key)\r\n if (!field?.hisList) return\r\n const str = String(val).trim()\r\n if (str) pushToHistoryList(field.hisList, str)\r\n })\r\n closeAllPanels()\r\n persistToStorage()\r\n }\r\n\r\n return {\r\n enabled,\r\n handleFocus,\r\n closeAllPanels,\r\n selectHistoryItem,\r\n deleteHistoryItem,\r\n clearAllHistory,\r\n saveCurrentInputs,\r\n restoreFromStorage,\r\n }\r\n}\r\n","import { ref, computed, onMounted } from 'vue'\r\nimport { useMessage } from 'naive-ui'\r\nimport type { SearchFormItem, SearchFormParams, SearchConfig } from '../types'\r\nimport { useSearchHistory, type SearchHistoryOptions } from './useSearchHistory'\r\n\r\ninterface UseSearchStateOptions {\r\n formItemList: SearchFormItem[]\r\n formParams: SearchFormParams\r\n config?: SearchConfig\r\n historyOptions?: SearchHistoryOptions\r\n}\r\n\r\n/**\r\n *\r\n */\r\nexport function useSearchState(\r\n emits: {\r\n (event: 'search', params: SearchFormParams): void\r\n (event: 'reset'): void\r\n (event: 'change-params', params: SearchFormParams): void\r\n },\r\n options: UseSearchStateOptions\r\n) {\r\n const message = useMessage()\r\n const formRef = ref<any>(null)\r\n\r\n const foldThreshold = options.config?.foldThreshold ?? 7\r\n const requireValue = options.config?.requireValue ?? true\r\n\r\n const fields = ref<SearchFormItem[]>([...options.formItemList])\r\n const formParams = ref<SearchFormParams>({ ...options.formParams })\r\n const expanded = ref(false)\r\n const searching = ref(false)\r\n\r\n const history = useSearchHistory(fields, formParams, options.historyOptions)\r\n\r\n const visibleFields = computed(() =>\r\n fields.value.filter(item => item.show !== false)\r\n )\r\n\r\n const hasExpandButton = computed(() => fields.value.length > foldThreshold)\r\n\r\n const isEmpty = (value: any): boolean =>\r\n value === undefined ||\r\n value === null ||\r\n value === '' ||\r\n (Array.isArray(value) && value.length === 0)\r\n\r\n const initialize = () => {\r\n fields.value.forEach((item, index) => {\r\n item.isFocus = false\r\n if (index >= foldThreshold && item.show === undefined) {\r\n item.show = false\r\n }\r\n if (item.type === 'select') {\r\n if (!item.placeholder) item.placeholder = '请选择'\r\n if (formParams.value[item.prop] === undefined) {\r\n formParams.value[item.prop] = null\r\n }\r\n }\r\n })\r\n }\r\n\r\n const searchFn = () => {\r\n if (requireValue) {\r\n const hasValidParams = Object.entries(formParams.value)\r\n .filter(([key]) => key !== 'pageNum' && key !== 'pageSize')\r\n .some(([, value]) => !isEmpty(value))\r\n\r\n if (!hasValidParams) {\r\n message.warning('请输入搜索内容,或选择筛选条件')\r\n return\r\n }\r\n }\r\n history.saveCurrentInputs()\r\n emits('search', formParams.value)\r\n }\r\n\r\n const resetFn = () => {\r\n formRef.value?.restoreValidation()\r\n Object.keys(formParams.value).forEach(key => {\r\n if (key !== 'pageNum' && key !== 'pageSize') {\r\n formParams.value[key] = null\r\n }\r\n })\r\n emits('change-params', formParams.value)\r\n emits('reset')\r\n }\r\n\r\n const toggleFold = () => {\r\n expanded.value = !expanded.value\r\n fields.value.forEach((item, index) => {\r\n if (index >= foldThreshold) item.show = expanded.value\r\n })\r\n }\r\n\r\n const syncFromProps = (\r\n newItems: SearchFormItem[],\r\n newParams: SearchFormParams\r\n ) => {\r\n fields.value = [...newItems]\r\n formParams.value = { ...newParams }\r\n initialize()\r\n }\r\n\r\n onMounted(() => {\r\n initialize()\r\n history.restoreFromStorage()\r\n })\r\n\r\n return {\r\n formRef,\r\n fields,\r\n formParams,\r\n expanded,\r\n searching,\r\n visibleFields,\r\n hasExpandButton,\r\n history,\r\n searchFn,\r\n resetFn,\r\n toggleFold,\r\n syncFromProps,\r\n }\r\n}\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-10\r\n * @Description: 表单搜索组件(薄 UI 壳 — 逻辑由 composable 驱动)\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <NCard\r\n class=\"form-search-card custom-card\"\r\n :bordered=\"bordered\"\r\n >\r\n <NForm\r\n class=\"form-search\"\r\n :model=\"formParams\"\r\n ref=\"formRef\"\r\n :size=\"size\"\r\n >\r\n <div\r\n class=\"form-search-item-box\"\r\n v-for=\"(item, index) of visibleFields\"\r\n :key=\"index\"\r\n >\r\n <NFormItem\r\n class=\"form-item-input\"\r\n v-if=\"item.type !== 'spacer'\"\r\n :path=\"item.prop\"\r\n :show-feedback=\"false\"\r\n :show-label=\"false\"\r\n >\r\n <NInput\r\n v-if=\"item.type === 'input'\"\r\n clearable\r\n v-model:value=\"formParams[item.prop]\"\r\n :placeholder=\"item.placeholder\"\r\n @focus=\"history.handleFocus(item.prop)\"\r\n @blur=\"history.closeAllPanels\"\r\n />\r\n\r\n <div\r\n class=\"input-history\"\r\n v-if=\"item.isFocus\"\r\n @mousedown.prevent\r\n >\r\n <div\r\n class=\"history-item\"\r\n @click=\"history.selectHistoryItem(hisValue, item.prop)\"\r\n v-for=\"(hisValue, hisIndex) of item.hisList\"\r\n :key=\"hisValue\"\r\n >\r\n <span class=\"history-text\">{{ hisValue }}</span>\r\n <NIcon\r\n class=\"delete-icon\"\r\n size=\"14\"\r\n @click.stop=\"history.deleteHistoryItem(item.prop, hisIndex)\"\r\n >\r\n <div class=\"i-mdi:close\" />\r\n </NIcon>\r\n </div>\r\n <div\r\n class=\"history-footer\"\r\n v-if=\"item.hisList && item.hisList.length > 0\"\r\n >\r\n <span\r\n class=\"clear-all\"\r\n @click.stop=\"history.clearAllHistory(item.prop)\"\r\n >\r\n 清空历史记录\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <NSelect\r\n v-if=\"item.type === 'select'\"\r\n v-model:value=\"formParams[item.prop]\"\r\n :placeholder=\"item.placeholder || '请选择'\"\r\n clearable\r\n :options=\"normalizeOptions(item.list) as any\"\r\n />\r\n\r\n <NDatePicker\r\n v-if=\"item.type === 'date-range'\"\r\n type=\"datetimerange\"\r\n v-model:value=\"formParams[item.prop]\"\r\n format=\"yyyy-MM-dd HH:mm\"\r\n value-format=\"yyyy-MM-dd HH:mm\"\r\n start-placeholder=\"开始时间\"\r\n end-placeholder=\"结束时间\"\r\n clearable\r\n />\r\n </NFormItem>\r\n </div>\r\n\r\n <div class=\"form-search-item-box\">\r\n <div class=\"form-item-input\">\r\n <div class=\"button-label-placeholder\"></div>\r\n <NSpace>\r\n <NTooltip trigger=\"hover\">\r\n <template #trigger>\r\n <NButton\r\n type=\"primary\"\r\n @click=\"searchFn\"\r\n :loading=\"searching\"\r\n >\r\n <template #icon>\r\n <div class=\"i-mdi:search w-4 h-4\" />\r\n </template>\r\n </NButton>\r\n </template>\r\n 搜索\r\n </NTooltip>\r\n\r\n <NTooltip trigger=\"hover\">\r\n <template #trigger>\r\n <NButton @click=\"resetFn\">\r\n <template #icon>\r\n <div class=\"i-mdi:refresh w-4 h-4\" />\r\n </template>\r\n </NButton>\r\n </template>\r\n 重置\r\n </NTooltip>\r\n\r\n <NTooltip\r\n v-if=\"hasExpandButton\"\r\n trigger=\"hover\"\r\n >\r\n <template #trigger>\r\n <NButton @click=\"toggleFold\">\r\n <template #icon>\r\n <div\r\n :class=\"\r\n expanded\r\n ? 'i-mdi:chevron-up w-4 h-4'\r\n : 'i-mdi:chevron-down w-4 h-4'\r\n \"\r\n />\r\n </template>\r\n </NButton>\r\n </template>\r\n {{ expanded ? '收起' : '展开' }}\r\n </NTooltip>\r\n </NSpace>\r\n </div>\r\n </div>\r\n </NForm>\r\n </NCard>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { watch } from 'vue'\r\n import {\r\n NCard,\r\n NForm,\r\n NFormItem,\r\n NInput,\r\n NSelect,\r\n NDatePicker,\r\n NSpace,\r\n NButton,\r\n NTooltip,\r\n NIcon,\r\n } from 'naive-ui'\r\n import { useSearchState } from './composables/useSearchState'\r\n import type {\r\n SearchFormItem,\r\n SearchFormParams,\r\n SearchOptionItem,\r\n SearchConfig,\r\n } from './types'\r\n\r\n defineOptions({ name: 'C_FormSearch' })\r\n\r\n interface Props {\r\n bordered?: boolean\r\n formItemList: SearchFormItem[]\r\n formParams: SearchFormParams\r\n formSearchInputHistoryString?: string\r\n size?: 'small' | 'medium' | 'large'\r\n config?: SearchConfig\r\n }\r\n\r\n const props = withDefaults(defineProps<Props>(), {\r\n bordered: true,\r\n formItemList: () => [],\r\n size: 'medium',\r\n })\r\n\r\n const emits = defineEmits<{\r\n search: [params: SearchFormParams]\r\n reset: []\r\n 'change-params': [params: SearchFormParams]\r\n }>()\r\n\r\n const {\r\n formRef,\r\n formParams,\r\n expanded,\r\n searching,\r\n visibleFields,\r\n hasExpandButton,\r\n history,\r\n searchFn,\r\n resetFn,\r\n toggleFold,\r\n syncFromProps,\r\n } = useSearchState(emits, {\r\n formItemList: props.formItemList,\r\n formParams: props.formParams,\r\n config: props.config,\r\n historyOptions: {\r\n storageKey: props.formSearchInputHistoryString,\r\n maxItems: props.config?.historyMaxItems,\r\n },\r\n })\r\n\r\n const normalizeOptions = (list?: SearchOptionItem[]) =>\r\n list?.map(opt => ({\r\n label: opt.label || opt.labelDefault || '',\r\n value:\r\n opt.value !== undefined ? opt.value : opt.label || opt.labelDefault,\r\n }))\r\n\r\n watch(\r\n () => props.formItemList,\r\n newItems => syncFromProps(newItems, props.formParams),\r\n { deep: true }\r\n )\r\n\r\n defineExpose({\r\n formRef,\r\n formParams,\r\n searchFn,\r\n cleanFn: resetFn,\r\n changeFoldState: toggleFold,\r\n })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n @use './index.scss';\r\n</style>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-10\r\n * @Description: 表单搜索组件(薄 UI 壳 — 逻辑由 composable 驱动)\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <NCard\r\n class=\"form-search-card custom-card\"\r\n :bordered=\"bordered\"\r\n >\r\n <NForm\r\n class=\"form-search\"\r\n :model=\"formParams\"\r\n ref=\"formRef\"\r\n :size=\"size\"\r\n >\r\n <div\r\n class=\"form-search-item-box\"\r\n v-for=\"(item, index) of visibleFields\"\r\n :key=\"index\"\r\n >\r\n <NFormItem\r\n class=\"form-item-input\"\r\n v-if=\"item.type !== 'spacer'\"\r\n :path=\"item.prop\"\r\n :show-feedback=\"false\"\r\n :show-label=\"false\"\r\n >\r\n <NInput\r\n v-if=\"item.type === 'input'\"\r\n clearable\r\n v-model:value=\"formParams[item.prop]\"\r\n :placeholder=\"item.placeholder\"\r\n @focus=\"history.handleFocus(item.prop)\"\r\n @blur=\"history.closeAllPanels\"\r\n />\r\n\r\n <div\r\n class=\"input-history\"\r\n v-if=\"item.isFocus\"\r\n @mousedown.prevent\r\n >\r\n <div\r\n class=\"history-item\"\r\n @click=\"history.selectHistoryItem(hisValue, item.prop)\"\r\n v-for=\"(hisValue, hisIndex) of item.hisList\"\r\n :key=\"hisValue\"\r\n >\r\n <span class=\"history-text\">{{ hisValue }}</span>\r\n <NIcon\r\n class=\"delete-icon\"\r\n size=\"14\"\r\n @click.stop=\"history.deleteHistoryItem(item.prop, hisIndex)\"\r\n >\r\n <div class=\"i-mdi:close\" />\r\n </NIcon>\r\n </div>\r\n <div\r\n class=\"history-footer\"\r\n v-if=\"item.hisList && item.hisList.length > 0\"\r\n >\r\n <span\r\n class=\"clear-all\"\r\n @click.stop=\"history.clearAllHistory(item.prop)\"\r\n >\r\n 清空历史记录\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <NSelect\r\n v-if=\"item.type === 'select'\"\r\n v-model:value=\"formParams[item.prop]\"\r\n :placeholder=\"item.placeholder || '请选择'\"\r\n clearable\r\n :options=\"normalizeOptions(item.list) as any\"\r\n />\r\n\r\n <NDatePicker\r\n v-if=\"item.type === 'date-range'\"\r\n type=\"datetimerange\"\r\n v-model:value=\"formParams[item.prop]\"\r\n format=\"yyyy-MM-dd HH:mm\"\r\n value-format=\"yyyy-MM-dd HH:mm\"\r\n start-placeholder=\"开始时间\"\r\n end-placeholder=\"结束时间\"\r\n clearable\r\n />\r\n </NFormItem>\r\n </div>\r\n\r\n <div class=\"form-search-item-box\">\r\n <div class=\"form-item-input\">\r\n <div class=\"button-label-placeholder\"></div>\r\n <NSpace>\r\n <NTooltip trigger=\"hover\">\r\n <template #trigger>\r\n <NButton\r\n type=\"primary\"\r\n @click=\"searchFn\"\r\n :loading=\"searching\"\r\n >\r\n <template #icon>\r\n <div class=\"i-mdi:search w-4 h-4\" />\r\n </template>\r\n </NButton>\r\n </template>\r\n 搜索\r\n </NTooltip>\r\n\r\n <NTooltip trigger=\"hover\">\r\n <template #trigger>\r\n <NButton @click=\"resetFn\">\r\n <template #icon>\r\n <div class=\"i-mdi:refresh w-4 h-4\" />\r\n </template>\r\n </NButton>\r\n </template>\r\n 重置\r\n </NTooltip>\r\n\r\n <NTooltip\r\n v-if=\"hasExpandButton\"\r\n trigger=\"hover\"\r\n >\r\n <template #trigger>\r\n <NButton @click=\"toggleFold\">\r\n <template #icon>\r\n <div\r\n :class=\"\r\n expanded\r\n ? 'i-mdi:chevron-up w-4 h-4'\r\n : 'i-mdi:chevron-down w-4 h-4'\r\n \"\r\n />\r\n </template>\r\n </NButton>\r\n </template>\r\n {{ expanded ? '收起' : '展开' }}\r\n </NTooltip>\r\n </NSpace>\r\n </div>\r\n </div>\r\n </NForm>\r\n </NCard>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { watch } from 'vue'\r\n import {\r\n NCard,\r\n NForm,\r\n NFormItem,\r\n NInput,\r\n NSelect,\r\n NDatePicker,\r\n NSpace,\r\n NButton,\r\n NTooltip,\r\n NIcon,\r\n } from 'naive-ui'\r\n import { useSearchState } from './composables/useSearchState'\r\n import type {\r\n SearchFormItem,\r\n SearchFormParams,\r\n SearchOptionItem,\r\n SearchConfig,\r\n } from './types'\r\n\r\n defineOptions({ name: 'C_FormSearch' })\r\n\r\n interface Props {\r\n bordered?: boolean\r\n formItemList: SearchFormItem[]\r\n formParams: SearchFormParams\r\n formSearchInputHistoryString?: string\r\n size?: 'small' | 'medium' | 'large'\r\n config?: SearchConfig\r\n }\r\n\r\n const props = withDefaults(defineProps<Props>(), {\r\n bordered: true,\r\n formItemList: () => [],\r\n size: 'medium',\r\n })\r\n\r\n const emits = defineEmits<{\r\n search: [params: SearchFormParams]\r\n reset: []\r\n 'change-params': [params: SearchFormParams]\r\n }>()\r\n\r\n const {\r\n formRef,\r\n formParams,\r\n expanded,\r\n searching,\r\n visibleFields,\r\n hasExpandButton,\r\n history,\r\n searchFn,\r\n resetFn,\r\n toggleFold,\r\n syncFromProps,\r\n } = useSearchState(emits, {\r\n formItemList: props.formItemList,\r\n formParams: props.formParams,\r\n config: props.config,\r\n historyOptions: {\r\n storageKey: props.formSearchInputHistoryString,\r\n maxItems: props.config?.historyMaxItems,\r\n },\r\n })\r\n\r\n const normalizeOptions = (list?: SearchOptionItem[]) =>\r\n list?.map(opt => ({\r\n label: opt.label || opt.labelDefault || '',\r\n value:\r\n opt.value !== undefined ? opt.value : opt.label || opt.labelDefault,\r\n }))\r\n\r\n watch(\r\n () => props.formItemList,\r\n newItems => syncFromProps(newItems, props.formParams),\r\n { deep: true }\r\n )\r\n\r\n defineExpose({\r\n formRef,\r\n formParams,\r\n searchFn,\r\n cleanFn: resetFn,\r\n changeFoldState: toggleFold,\r\n })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n @use './index.scss';\r\n</style>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-10\r\n * @Description: 表单搜索组件(薄 UI 壳 — 逻辑由 composable 驱动)\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <NCard\r\n class=\"form-search-card custom-card\"\r\n :bordered=\"bordered\"\r\n >\r\n <NForm\r\n class=\"form-search\"\r\n :model=\"formParams\"\r\n ref=\"formRef\"\r\n :size=\"size\"\r\n >\r\n <div\r\n class=\"form-search-item-box\"\r\n v-for=\"(item, index) of visibleFields\"\r\n :key=\"index\"\r\n >\r\n <NFormItem\r\n class=\"form-item-input\"\r\n v-if=\"item.type !== 'spacer'\"\r\n :path=\"item.prop\"\r\n :show-feedback=\"false\"\r\n :show-label=\"false\"\r\n >\r\n <NInput\r\n v-if=\"item.type === 'input'\"\r\n clearable\r\n v-model:value=\"formParams[item.prop]\"\r\n :placeholder=\"item.placeholder\"\r\n @focus=\"history.handleFocus(item.prop)\"\r\n @blur=\"history.closeAllPanels\"\r\n />\r\n\r\n <div\r\n class=\"input-history\"\r\n v-if=\"item.isFocus\"\r\n @mousedown.prevent\r\n >\r\n <div\r\n class=\"history-item\"\r\n @click=\"history.selectHistoryItem(hisValue, item.prop)\"\r\n v-for=\"(hisValue, hisIndex) of item.hisList\"\r\n :key=\"hisValue\"\r\n >\r\n <span class=\"history-text\">{{ hisValue }}</span>\r\n <NIcon\r\n class=\"delete-icon\"\r\n size=\"14\"\r\n @click.stop=\"history.deleteHistoryItem(item.prop, hisIndex)\"\r\n >\r\n <div class=\"i-mdi:close\" />\r\n </NIcon>\r\n </div>\r\n <div\r\n class=\"history-footer\"\r\n v-if=\"item.hisList && item.hisList.length > 0\"\r\n >\r\n <span\r\n class=\"clear-all\"\r\n @click.stop=\"history.clearAllHistory(item.prop)\"\r\n >\r\n 清空历史记录\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <NSelect\r\n v-if=\"item.type === 'select'\"\r\n v-model:value=\"formParams[item.prop]\"\r\n :placeholder=\"item.placeholder || '请选择'\"\r\n clearable\r\n :options=\"normalizeOptions(item.list) as any\"\r\n />\r\n\r\n <NDatePicker\r\n v-if=\"item.type === 'date-range'\"\r\n type=\"datetimerange\"\r\n v-model:value=\"formParams[item.prop]\"\r\n format=\"yyyy-MM-dd HH:mm\"\r\n value-format=\"yyyy-MM-dd HH:mm\"\r\n start-placeholder=\"开始时间\"\r\n end-placeholder=\"结束时间\"\r\n clearable\r\n />\r\n </NFormItem>\r\n </div>\r\n\r\n <div class=\"form-search-item-box\">\r\n <div class=\"form-item-input\">\r\n <div class=\"button-label-placeholder\"></div>\r\n <NSpace>\r\n <NTooltip trigger=\"hover\">\r\n <template #trigger>\r\n <NButton\r\n type=\"primary\"\r\n @click=\"searchFn\"\r\n :loading=\"searching\"\r\n >\r\n <template #icon>\r\n <div class=\"i-mdi:search w-4 h-4\" />\r\n </template>\r\n </NButton>\r\n </template>\r\n 搜索\r\n </NTooltip>\r\n\r\n <NTooltip trigger=\"hover\">\r\n <template #trigger>\r\n <NButton @click=\"resetFn\">\r\n <template #icon>\r\n <div class=\"i-mdi:refresh w-4 h-4\" />\r\n </template>\r\n </NButton>\r\n </template>\r\n 重置\r\n </NTooltip>\r\n\r\n <NTooltip\r\n v-if=\"hasExpandButton\"\r\n trigger=\"hover\"\r\n >\r\n <template #trigger>\r\n <NButton @click=\"toggleFold\">\r\n <template #icon>\r\n <div\r\n :class=\"\r\n expanded\r\n ? 'i-mdi:chevron-up w-4 h-4'\r\n : 'i-mdi:chevron-down w-4 h-4'\r\n \"\r\n />\r\n </template>\r\n </NButton>\r\n </template>\r\n {{ expanded ? '收起' : '展开' }}\r\n </NTooltip>\r\n </NSpace>\r\n </div>\r\n </div>\r\n </NForm>\r\n </NCard>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { watch } from 'vue'\r\n import {\r\n NCard,\r\n NForm,\r\n NFormItem,\r\n NInput,\r\n NSelect,\r\n NDatePicker,\r\n NSpace,\r\n NButton,\r\n NTooltip,\r\n NIcon,\r\n } from 'naive-ui'\r\n import { useSearchState } from './composables/useSearchState'\r\n import type {\r\n SearchFormItem,\r\n SearchFormParams,\r\n SearchOptionItem,\r\n SearchConfig,\r\n } from './types'\r\n\r\n defineOptions({ name: 'C_FormSearch' })\r\n\r\n interface Props {\r\n bordered?: boolean\r\n formItemList: SearchFormItem[]\r\n formParams: SearchFormParams\r\n formSearchInputHistoryString?: string\r\n size?: 'small' | 'medium' | 'large'\r\n config?: SearchConfig\r\n }\r\n\r\n const props = withDefaults(defineProps<Props>(), {\r\n bordered: true,\r\n formItemList: () => [],\r\n size: 'medium',\r\n })\r\n\r\n const emits = defineEmits<{\r\n search: [params: SearchFormParams]\r\n reset: []\r\n 'change-params': [params: SearchFormParams]\r\n }>()\r\n\r\n const {\r\n formRef,\r\n formParams,\r\n expanded,\r\n searching,\r\n visibleFields,\r\n hasExpandButton,\r\n history,\r\n searchFn,\r\n resetFn,\r\n toggleFold,\r\n syncFromProps,\r\n } = useSearchState(emits, {\r\n formItemList: props.formItemList,\r\n formParams: props.formParams,\r\n config: props.config,\r\n historyOptions: {\r\n storageKey: props.formSearchInputHistoryString,\r\n maxItems: props.config?.historyMaxItems,\r\n },\r\n })\r\n\r\n const normalizeOptions = (list?: SearchOptionItem[]) =>\r\n list?.map(opt => ({\r\n label: opt.label || opt.labelDefault || '',\r\n value:\r\n opt.value !== undefined ? opt.value : opt.label || opt.labelDefault,\r\n }))\r\n\r\n watch(\r\n () => props.formItemList,\r\n newItems => syncFromProps(newItems, props.formParams),\r\n { deep: true }\r\n )\r\n\r\n defineExpose({\r\n formRef,\r\n formParams,\r\n searchFn,\r\n cleanFn: resetFn,\r\n changeFoldState: toggleFold,\r\n })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n @use './index.scss';\r\n</style>\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"C_FormSearch2.js","names":[],"sources":["../src/components/C_FormSearch/composables/useSearchHistory.ts","../src/components/C_FormSearch/composables/useSearchState.ts","../src/components/C_FormSearch/index.vue"],"sourcesContent":["import { getItem, setItem } from '../../../utils/storage'\r\nimport type { Ref } from 'vue'\r\nimport type { SearchFormItem, SearchFormParams } from '../types'\r\n\r\nexport interface SearchHistoryOptions {\r\n storageKey?: string\r\n maxItems?: number\r\n}\r\n\r\n/**\r\n *\r\n */\r\nexport function useSearchHistory(\r\n fields: Ref<SearchFormItem[]>,\r\n formParams: Ref<SearchFormParams>,\r\n options: SearchHistoryOptions = {}\r\n) {\r\n const { storageKey, maxItems = 5 } = options\r\n const enabled = !!storageKey\r\n\r\n const findField = (prop: string) =>\r\n fields.value.find(item => item.prop === prop)\r\n\r\n const persistToStorage = () => {\r\n if (enabled) setItem(storageKey!, fields.value)\r\n }\r\n\r\n const restoreFromStorage = () => {\r\n if (!enabled) return\r\n const stored = getItem<SearchFormItem[]>(storageKey!)\r\n if (!stored) return\r\n stored.forEach(storedItem => {\r\n const field = findField(storedItem.prop)\r\n if (field && storedItem.hisList) {\r\n field.hisList = storedItem.hisList\r\n }\r\n })\r\n }\r\n\r\n const setAllFieldsFocus = (targetProp?: string) => {\r\n fields.value.forEach(item => {\r\n item.isFocus = !!(item.hisList && item.prop === targetProp)\r\n })\r\n }\r\n\r\n const handleFocus = (prop: string) => {\r\n restoreFromStorage()\r\n setAllFieldsFocus(prop)\r\n }\r\n\r\n const closeAllPanels = () => setAllFieldsFocus()\r\n\r\n const selectHistoryItem = (value: string, prop: string) => {\r\n formParams.value[prop] = value\r\n closeAllPanels()\r\n }\r\n\r\n const deleteHistoryItem = (prop: string, index: number) => {\r\n const field = findField(prop)\r\n if (!field?.hisList) return\r\n field.hisList.splice(index, 1)\r\n if (field.hisList.length === 0) field.isFocus = false\r\n persistToStorage()\r\n }\r\n\r\n const clearAllHistory = (prop: string) => {\r\n const field = findField(prop)\r\n if (!field?.hisList) return\r\n field.hisList = []\r\n field.isFocus = false\r\n persistToStorage()\r\n }\r\n\r\n const pushToHistoryList = (hisList: string[], newValue: string) => {\r\n const idx = hisList.indexOf(newValue)\r\n if (idx > -1) hisList.splice(idx, 1)\r\n hisList.unshift(newValue)\r\n if (hisList.length > maxItems) hisList.length = maxItems\r\n return hisList\r\n }\r\n\r\n const saveCurrentInputs = () => {\r\n if (!enabled) return\r\n Object.keys(formParams.value).forEach(key => {\r\n const val = formParams.value[key]\r\n if (!val) return\r\n const field = findField(key)\r\n if (!field?.hisList) return\r\n const str = String(val).trim()\r\n if (str) pushToHistoryList(field.hisList, str)\r\n })\r\n closeAllPanels()\r\n persistToStorage()\r\n }\r\n\r\n return {\r\n enabled,\r\n handleFocus,\r\n closeAllPanels,\r\n selectHistoryItem,\r\n deleteHistoryItem,\r\n clearAllHistory,\r\n saveCurrentInputs,\r\n restoreFromStorage,\r\n }\r\n}\r\n","import { ref, computed, onMounted } from 'vue'\r\nimport { useMessage } from 'naive-ui'\r\nimport type { SearchFormItem, SearchFormParams, SearchConfig } from '../types'\r\nimport { useSearchHistory, type SearchHistoryOptions } from './useSearchHistory'\r\n\r\ninterface UseSearchStateOptions {\r\n formItemList: SearchFormItem[]\r\n formParams: SearchFormParams\r\n config?: SearchConfig\r\n historyOptions?: SearchHistoryOptions\r\n}\r\n\r\n/**\r\n *\r\n */\r\nexport function useSearchState(\r\n emits: {\r\n (event: 'search', params: SearchFormParams): void\r\n (event: 'reset'): void\r\n (event: 'change-params', params: SearchFormParams): void\r\n },\r\n options: UseSearchStateOptions\r\n) {\r\n const message = useMessage()\r\n const formRef = ref<any>(null)\r\n\r\n const foldThreshold = options.config?.foldThreshold ?? 7\r\n const requireValue = options.config?.requireValue ?? true\r\n\r\n const fields = ref<SearchFormItem[]>([...options.formItemList])\r\n const formParams = ref<SearchFormParams>({ ...options.formParams })\r\n const expanded = ref(false)\r\n const searching = ref(false)\r\n\r\n const history = useSearchHistory(fields, formParams, options.historyOptions)\r\n\r\n const visibleFields = computed(() =>\r\n fields.value.filter(item => item.show !== false)\r\n )\r\n\r\n const hasExpandButton = computed(() => fields.value.length > foldThreshold)\r\n\r\n const isEmpty = (value: any): boolean =>\r\n value === undefined ||\r\n value === null ||\r\n value === '' ||\r\n (Array.isArray(value) && value.length === 0)\r\n\r\n const initialize = () => {\r\n fields.value.forEach((item, index) => {\r\n item.isFocus = false\r\n if (index >= foldThreshold && item.show === undefined) {\r\n item.show = false\r\n }\r\n if (item.type === 'select') {\r\n if (!item.placeholder) item.placeholder = '请选择'\r\n if (formParams.value[item.prop] === undefined) {\r\n formParams.value[item.prop] = null\r\n }\r\n }\r\n })\r\n }\r\n\r\n const searchFn = () => {\r\n if (requireValue) {\r\n const hasValidParams = Object.entries(formParams.value)\r\n .filter(([key]) => key !== 'pageNum' && key !== 'pageSize')\r\n .some(([, value]) => !isEmpty(value))\r\n\r\n if (!hasValidParams) {\r\n message.warning('请输入搜索内容,或选择筛选条件')\r\n return\r\n }\r\n }\r\n history.saveCurrentInputs()\r\n emits('search', formParams.value)\r\n }\r\n\r\n const resetFn = () => {\r\n formRef.value?.restoreValidation()\r\n Object.keys(formParams.value).forEach(key => {\r\n if (key !== 'pageNum' && key !== 'pageSize') {\r\n formParams.value[key] = null\r\n }\r\n })\r\n emits('change-params', formParams.value)\r\n emits('reset')\r\n }\r\n\r\n const toggleFold = () => {\r\n expanded.value = !expanded.value\r\n fields.value.forEach((item, index) => {\r\n if (index >= foldThreshold) item.show = expanded.value\r\n })\r\n }\r\n\r\n const syncFromProps = (\r\n newItems: SearchFormItem[],\r\n newParams: SearchFormParams\r\n ) => {\r\n fields.value = [...newItems]\r\n formParams.value = { ...newParams }\r\n initialize()\r\n }\r\n\r\n onMounted(() => {\r\n initialize()\r\n history.restoreFromStorage()\r\n })\r\n\r\n return {\r\n formRef,\r\n fields,\r\n formParams,\r\n expanded,\r\n searching,\r\n visibleFields,\r\n hasExpandButton,\r\n history,\r\n searchFn,\r\n resetFn,\r\n toggleFold,\r\n syncFromProps,\r\n }\r\n}\r\n","<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2025-06-10\n * @Description: 表单搜索组件(薄 UI 壳 — 逻辑由 composable 驱动)\n * @Migration: naive-ui-components 组件库迁移版本\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <NCard\n class=\"form-search-card custom-card\"\n :bordered=\"bordered\"\n >\n <NForm\n class=\"form-search\"\n :model=\"formParams\"\n ref=\"formRef\"\n :size=\"size\"\n >\n <div\n class=\"form-search-item-box\"\n v-for=\"(item, index) of visibleFields\"\n :key=\"index\"\n >\n <NFormItem\n class=\"form-item-input\"\n v-if=\"item.type !== 'spacer'\"\n :path=\"item.prop\"\n :show-feedback=\"false\"\n :show-label=\"false\"\n >\n <NInput\n v-if=\"item.type === 'input'\"\n clearable\n v-model:value=\"formParams[item.prop]\"\n :placeholder=\"item.placeholder\"\n @focus=\"history.handleFocus(item.prop)\"\n @blur=\"history.closeAllPanels\"\n />\n\n <div\n class=\"input-history\"\n v-if=\"item.isFocus\"\n @mousedown.prevent\n >\n <div\n class=\"history-item\"\n @click=\"history.selectHistoryItem(hisValue, item.prop)\"\n v-for=\"(hisValue, hisIndex) of item.hisList\"\n :key=\"hisValue\"\n >\n <span class=\"history-text\">{{ hisValue }}</span>\n <NIcon\n class=\"delete-icon\"\n size=\"14\"\n @click.stop=\"history.deleteHistoryItem(item.prop, hisIndex)\"\n >\n <div class=\"i-mdi:close\" />\n </NIcon>\n </div>\n <div\n class=\"history-footer\"\n v-if=\"item.hisList && item.hisList.length > 0\"\n >\n <span\n class=\"clear-all\"\n @click.stop=\"history.clearAllHistory(item.prop)\"\n >\n 清空历史记录\n </span>\n </div>\n </div>\n\n <NSelect\n v-if=\"item.type === 'select'\"\n v-model:value=\"formParams[item.prop]\"\n :placeholder=\"item.placeholder || '请选择'\"\n clearable\n :options=\"normalizeOptions(item.list) as any\"\n />\n\n <NDatePicker\n v-if=\"item.type === 'date-range'\"\n type=\"datetimerange\"\n v-model:value=\"formParams[item.prop]\"\n format=\"yyyy-MM-dd HH:mm\"\n value-format=\"yyyy-MM-dd HH:mm\"\n start-placeholder=\"开始时间\"\n end-placeholder=\"结束时间\"\n clearable\n />\n </NFormItem>\n </div>\n\n <div class=\"form-search-item-box\">\n <div class=\"form-item-input\">\n <div class=\"button-label-placeholder\"></div>\n <NSpace>\n <NTooltip trigger=\"hover\">\n <template #trigger>\n <NButton\n type=\"primary\"\n @click=\"searchFn\"\n :loading=\"searching\"\n >\n <template #icon>\n <div class=\"i-mdi:search w-4 h-4\" />\n </template>\n </NButton>\n </template>\n 搜索\n </NTooltip>\n\n <NTooltip trigger=\"hover\">\n <template #trigger>\n <NButton @click=\"resetFn\">\n <template #icon>\n <div class=\"i-mdi:refresh w-4 h-4\" />\n </template>\n </NButton>\n </template>\n 重置\n </NTooltip>\n\n <NTooltip\n v-if=\"hasExpandButton\"\n trigger=\"hover\"\n >\n <template #trigger>\n <NButton @click=\"toggleFold\">\n <template #icon>\n <div\n :class=\"\n expanded\n ? 'i-mdi:chevron-up w-4 h-4'\n : 'i-mdi:chevron-down w-4 h-4'\n \"\n />\n </template>\n </NButton>\n </template>\n {{ expanded ? '收起' : '展开' }}\n </NTooltip>\n </NSpace>\n </div>\n </div>\n </NForm>\n </NCard>\n</template>\n\n<script setup lang=\"ts\">\n import { watch } from 'vue'\n import {\n NCard,\n NForm,\n NFormItem,\n NInput,\n NSelect,\n NDatePicker,\n NSpace,\n NButton,\n NTooltip,\n NIcon,\n } from 'naive-ui'\n import { useSearchState } from './composables/useSearchState'\n import type {\n SearchFormItem,\n SearchFormParams,\n SearchOptionItem,\n SearchConfig,\n } from './types'\n\n defineOptions({ name: 'C_FormSearch' })\n\n interface Props {\n bordered?: boolean\n formItemList: SearchFormItem[]\n formParams: SearchFormParams\n formSearchInputHistoryString?: string\n size?: 'small' | 'medium' | 'large'\n config?: SearchConfig\n }\n\n const props = withDefaults(defineProps<Props>(), {\n bordered: true,\n formItemList: () => [],\n size: 'medium',\n })\n\n const emits = defineEmits<{\n search: [params: SearchFormParams]\n reset: []\n 'change-params': [params: SearchFormParams]\n }>()\n\n const {\n formRef,\n formParams,\n expanded,\n searching,\n visibleFields,\n hasExpandButton,\n history,\n searchFn,\n resetFn,\n toggleFold,\n syncFromProps,\n } = useSearchState(emits, {\n formItemList: props.formItemList,\n formParams: props.formParams,\n config: props.config,\n historyOptions: {\n storageKey: props.formSearchInputHistoryString,\n maxItems: props.config?.historyMaxItems,\n },\n })\n\n const normalizeOptions = (list?: SearchOptionItem[]) =>\n list?.map(opt => ({\n label: opt.label || opt.labelDefault || '',\n value:\n opt.value !== undefined ? opt.value : opt.label || opt.labelDefault,\n }))\n\n watch(\n () => props.formItemList,\n newItems => syncFromProps(newItems, props.formParams),\n { deep: true }\n )\n\n defineExpose({\n formRef,\n formParams,\n searchFn,\n cleanFn: resetFn,\n changeFoldState: toggleFold,\n })\n</script>\n\n<style lang=\"scss\" scoped>\n @use './index.scss';\n</style>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C_FormulaEditor-3WG2vtQl.css","names":[],"sources":["../src/components/C_FormulaEditor/components/FormulaInput.vue?vue&type=style&index=0&scoped=9e16f9bd&lang.scss","../src/components/C_FormulaEditor/components/VariablePanel.vue?vue&type=style&index=0&scoped=403349d9&lang.scss","../src/components/C_FormulaEditor/components/VirtualKeyboard.vue?vue&type=style&index=0&scoped=c1d53e69&lang.scss","../src/components/C_FormulaEditor/components/FormulaPreview.vue?vue&type=style&index=0&scoped=e25f0d86&lang.scss","../src/components/C_FormulaEditor/index.vue?vue&type=style&index=0&scoped=34e68236&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled *//* FormulaInput 组件样式 */\n.formula-input[data-v-9e16f9bd] {\n background: var(--c-bg-card);\n transition: background var(--c-transition, 0.2s ease);\n border-bottom: 1px solid var(--c-border);\n /* ─── 校验信息区 ────────────── */\n}\n.formula-input--error[data-v-9e16f9bd] {\n background: color-mix(in srgb, var(--error-color) 3%, var(--c-bg-card));\n}\n.formula-input--disabled[data-v-9e16f9bd] {\n opacity: 0.6;\n pointer-events: none;\n}\n.formula-input__header[data-v-9e16f9bd] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px 0;\n}\n.formula-input__label[data-v-9e16f9bd] {\n font-size: 13px;\n font-weight: 600;\n color: var(--c-text-2);\n}\n.formula-input__clear[data-v-9e16f9bd] {\n font-size: 12px;\n color: var(--c-primary);\n cursor: pointer;\n user-select: none;\n}\n.formula-input__clear[data-v-9e16f9bd]:hover {\n opacity: 0.8;\n}\n.formula-input__editor[data-v-9e16f9bd] {\n min-height: 72px;\n max-height: 180px;\n padding: 8px 16px 12px;\n font-size: 14px;\n line-height: 2;\n color: var(--c-text-1);\n outline: none;\n overflow-y: auto;\n word-break: break-all;\n white-space: pre-wrap;\n /* 变量 chip */\n /* 函数名 */\n /* 运算符 */\n /* 数字 */\n /* 括号 */\n}\n.formula-input__editor[data-v-9e16f9bd]:empty::before {\n content: attr(data-placeholder);\n color: var(--c-text-4);\n pointer-events: none;\n}\n.formula-input__editor[data-v-9e16f9bd] .formula-chip {\n display: inline-flex;\n align-items: center;\n padding: 1px 8px;\n margin: 0 2px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--c-primary) 12%, transparent);\n color: var(--c-primary);\n font-weight: 500;\n font-size: 13px;\n line-height: 22px;\n vertical-align: baseline;\n user-select: none;\n cursor: default;\n}\n.formula-input__editor[data-v-9e16f9bd] .formula-func {\n color: color-mix(in srgb, var(--c-primary) 80%, #8b5cf6);\n font-weight: 600;\n}\n.formula-input__editor[data-v-9e16f9bd] .formula-op {\n color: var(--warning-color, #f0a020);\n font-weight: 600;\n}\n.formula-input__editor[data-v-9e16f9bd] .formula-num {\n color: color-mix(in srgb, var(--success-color, #18a058) 90%, transparent);\n}\n.formula-input__editor[data-v-9e16f9bd] .formula-paren {\n color: var(--c-text-2);\n font-weight: 600;\n}\n.formula-input__error[data-v-9e16f9bd] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 16px 8px;\n font-size: 12px;\n color: var(--error-color);\n}\n.formula-input__validation[data-v-9e16f9bd] {\n padding: 10px 16px 12px;\n border-top: 1px solid var(--c-border);\n min-height: 40px;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.formula-input__validation-label[data-v-9e16f9bd] {\n font-size: 13px;\n font-weight: 600;\n color: var(--c-text-2);\n flex-shrink: 0;\n min-width: 28px;\n}\n.formula-input__validation-hint[data-v-9e16f9bd] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--c-text-4);\n}\n.formula-input__validation-success[data-v-9e16f9bd] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--success-color, #18a058);\n}\n.formula-input__validation-error[data-v-9e16f9bd] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--error-color);\n}","/* unplugin-vue-components disabled *//* VariablePanel 组件样式 */\n.variable-panel[data-v-403349d9] {\n display: flex;\n flex-direction: column;\n background: var(--c-bg-card);\n overflow: hidden;\n height: 100%;\n}\n.variable-panel__tabs[data-v-403349d9] {\n display: flex;\n border-bottom: 1px solid var(--c-border);\n}\n.variable-panel__tab[data-v-403349d9] {\n flex: 1;\n padding: 8px 0;\n text-align: center;\n font-size: 13px;\n font-weight: 500;\n color: var(--c-text-2);\n cursor: pointer;\n transition: all var(--c-transition, 0.2s ease);\n user-select: none;\n}\n.variable-panel__tab[data-v-403349d9]:hover {\n color: var(--c-primary);\n}\n.variable-panel__tab--active[data-v-403349d9] {\n color: var(--c-primary);\n border-bottom: 2px solid var(--c-primary);\n}\n.variable-panel__search[data-v-403349d9] {\n padding: 8px 10px;\n border-bottom: 1px solid var(--c-border);\n}\n.variable-panel__list[data-v-403349d9] {\n flex: 1;\n max-height: 360px;\n padding: 4px 0;\n}\n.variable-panel__group-title[data-v-403349d9] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 10px;\n font-size: 12px;\n font-weight: 600;\n color: var(--c-text-2);\n cursor: pointer;\n user-select: none;\n}\n.variable-panel__group-title[data-v-403349d9]:hover {\n color: var(--c-text-1);\n}\n.variable-panel__items[data-v-403349d9] {\n padding: 0 4px;\n}\n.variable-panel__item[data-v-403349d9] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px 6px 26px;\n font-size: 13px;\n color: var(--c-text-1);\n cursor: pointer;\n border-radius: 4px;\n transition: background 0.15s;\n}\n.variable-panel__item[data-v-403349d9]:hover {\n background: var(--hover-color);\n}\n.variable-panel__item-icon[data-v-403349d9] {\n font-size: 15px;\n color: var(--c-primary);\n flex-shrink: 0;\n}\n.variable-panel__func[data-v-403349d9] {\n padding: 8px 12px;\n cursor: pointer;\n border-radius: 4px;\n margin: 2px 4px;\n transition: background 0.15s;\n}\n.variable-panel__func[data-v-403349d9]:hover {\n background: var(--hover-color);\n}\n.variable-panel__func-name[data-v-403349d9] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n font-weight: 500;\n color: var(--c-text-1);\n}\n.variable-panel__func-badge[data-v-403349d9] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--c-primary) 12%, transparent);\n color: var(--c-primary);\n font-size: 12px;\n font-weight: 700;\n font-style: italic;\n}\n.variable-panel__func-desc[data-v-403349d9] {\n padding-left: 24px;\n font-size: 12px;\n color: var(--c-text-4);\n margin-top: 2px;\n}\n.variable-panel__func-sig[data-v-403349d9] {\n padding-left: 24px;\n font-size: 11px;\n font-family: \"Courier New\", Courier, monospace;\n color: var(--c-text-4);\n margin-top: 2px;\n opacity: 0.7;\n}","/* unplugin-vue-components disabled *//* VirtualKeyboard 组件样式 */\n.vk[data-v-c1d53e69] {\n /* ═══════ 标题行 ═══════ */\n /* ═══════ 键盘主体 ═══════ */\n /* 浅米黄暖色底板,对应参考截图 */\n /* ═══════ 动作行 ═══════ */\n /* ═══════ 经典键帽按键 ═══════ */\n /* 3D 效果核心:border-bottom 加粗 = 键帽厚度,按下时 translateY + 底边归细 */\n}\n.vk__title[data-v-c1d53e69] {\n font-size: 13px;\n font-weight: 500;\n color: var(--c-text-4);\n padding: 0 0 8px;\n letter-spacing: 0.5px;\n}\n.vk__body[data-v-c1d53e69] {\n display: flex;\n gap: 68px;\n padding: 12px;\n border-radius: 8px;\n border: 1px solid rgba(240, 160, 32, 0.2);\n background: rgba(240, 160, 32, 0.06);\n}\n.vk__half[data-v-c1d53e69] {\n display: grid;\n grid-template-columns: repeat(5, 1fr);\n gap: 5px;\n flex: 1;\n /* 数字区:白色底板层区分 */\n}\n.vk__half--nums[data-v-c1d53e69] {\n padding: 6px;\n border-radius: 6px;\n background: var(--c-bg-card);\n border: 1px solid rgba(0, 0, 0, 0.07);\n}\n.vk__actions[data-v-c1d53e69] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n padding: 8px 12px 0;\n}\n.vk__key[data-v-c1d53e69] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 34px;\n min-width: 0;\n padding: 0;\n border-radius: 5px;\n cursor: pointer;\n user-select: none;\n font-size: 14px;\n font-weight: 500;\n color: var(--c-text-1);\n background: var(--c-bg-card);\n /* 立体效果关键:底边用确定 rgba 保证可见 */\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 3px solid rgba(0, 0, 0, 0.18);\n transition: transform 0.06s ease, border-bottom-width 0.06s ease, background 0.1s ease;\n /* 按下:键帽下沉 + 底边归细 */\n /* ─── warning(? : and or)—橙色背景块 ─── */\n /* ─── primary(+ − × ÷)—蓝色文字 + 蓝色底边 ─── */\n /* ─── 动作键(⌫ 清空)─── */\n}\n.vk__key[data-v-c1d53e69]:hover:not(:disabled) {\n background: color-mix(in srgb, var(--c-primary) 6%, var(--c-bg-card));\n border-color: color-mix(in srgb, var(--c-primary) 50%, transparent);\n border-bottom-color: color-mix(in srgb, var(--c-primary) 60%, transparent);\n color: var(--c-primary);\n}\n.vk__key[data-v-c1d53e69]:active:not(:disabled) {\n transform: translateY(2px);\n border-bottom-width: 1px;\n}\n.vk__key[data-v-c1d53e69]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n.vk__key--warning[data-v-c1d53e69] {\n background: rgba(240, 160, 32, 0.12);\n border-color: rgba(240, 160, 32, 0.35);\n border-bottom-color: rgba(240, 160, 32, 0.55);\n color: #d48806;\n font-weight: 700;\n font-size: 15px;\n}\n.vk__key--warning[data-v-c1d53e69]:hover:not(:disabled) {\n background: rgba(240, 160, 32, 0.2);\n border-color: rgba(240, 160, 32, 0.55);\n border-bottom-color: rgba(240, 160, 32, 0.75);\n color: #b8760a;\n}\n.vk__key--primary[data-v-c1d53e69] {\n color: var(--c-primary);\n font-weight: 700;\n font-size: 16px;\n border-color: rgba(32, 128, 240, 0.25);\n border-bottom-color: rgba(32, 128, 240, 0.55);\n}\n.vk__key--primary[data-v-c1d53e69]:hover:not(:disabled) {\n background: rgba(32, 128, 240, 0.06);\n color: var(--c-primary);\n border-color: rgba(32, 128, 240, 0.45);\n border-bottom-color: rgba(32, 128, 240, 0.75);\n}\n.vk__key--action[data-v-c1d53e69] {\n width: 64px;\n height: 34px;\n font-size: 13px;\n color: var(--c-text-2);\n background: color-mix(in srgb, var(--c-text-4) 8%, var(--c-bg-card));\n border-color: rgba(0, 0, 0, 0.1);\n border-bottom-color: rgba(0, 0, 0, 0.15);\n}\n.vk__key--action[data-v-c1d53e69]:hover:not(:disabled) {\n color: var(--error-color);\n border-color: color-mix(in srgb, var(--error-color) 40%, transparent);\n border-bottom-color: color-mix(in srgb, var(--error-color) 55%, transparent);\n}","/* unplugin-vue-components disabled *//* FormulaPreview 组件样式 */\n.formula-preview[data-v-e25f0d86] {\n padding: 12px 16px 14px;\n border-top: 1px solid var(--c-border);\n background: color-mix(in srgb, var(--c-text-2) 2%, var(--c-bg-card));\n}\n.formula-preview__header[data-v-e25f0d86] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n font-size: 13px;\n margin-bottom: 8px;\n color: var(--c-text-2);\n}\n.formula-preview__empty[data-v-e25f0d86] {\n font-size: 12px;\n color: var(--c-text-4);\n padding: 8px 0;\n}\n.formula-preview__vars-title[data-v-e25f0d86] {\n font-size: 11px;\n color: var(--c-text-4);\n margin-bottom: 4px;\n}\n.formula-preview__var-row[data-v-e25f0d86] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n font-size: 12px;\n}\n.formula-preview__var-name[data-v-e25f0d86] {\n color: var(--c-primary);\n font-weight: 500;\n}\n.formula-preview__var-eq[data-v-e25f0d86] {\n color: var(--c-text-4);\n}\n.formula-preview__var-value[data-v-e25f0d86] {\n font-family: \"Courier New\", Courier, monospace;\n color: var(--c-text-1);\n font-weight: 500;\n}\n.formula-preview__result[data-v-e25f0d86] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.formula-preview__result-label[data-v-e25f0d86] {\n font-size: 13px;\n font-weight: 600;\n color: var(--c-text-2);\n}\n.formula-preview__result-value[data-v-e25f0d86] {\n font-size: 18px;\n font-weight: 700;\n font-family: \"Courier New\", Courier, monospace;\n color: var(--c-primary);\n}\n.formula-preview__result-error[data-v-e25f0d86] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--error-color);\n}\n.formula-preview__result-empty[data-v-e25f0d86] {\n font-size: 14px;\n color: var(--c-text-4);\n}","/* unplugin-vue-components disabled *//* C_FormulaEditor 主组件样式 */\n.c-formula[data-v-34e68236] {\n display: flex;\n flex-direction: column;\n border-radius: 12px;\n border: 1px solid var(--c-border);\n background: var(--c-bg-card);\n overflow: hidden;\n /* ═══════ 标题行 ═══════ */\n /* ═══════ 主内容 ═══════ */\n}\n.c-formula__title-row[data-v-34e68236] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 18px;\n border-bottom: 1px solid var(--c-border);\n}\n.c-formula__title[data-v-34e68236] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n font-size: 15px;\n color: var(--c-text-1);\n}\n.c-formula__body[data-v-34e68236] {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.c-formula__sidebar[data-v-34e68236] {\n width: 210px;\n flex-shrink: 0;\n border-right: 1px solid var(--c-border);\n}\n.c-formula__main[data-v-34e68236] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.c-formula__keyboard[data-v-34e68236] {\n padding: 14px 18px;\n border-top: 1px solid var(--c-border);\n}\n\n/* ═══════ 响应式 ═══════ */\n@media (max-width: 768px) {\n.c-formula__body[data-v-34e68236] {\n flex-direction: column;\n}\n.c-formula__sidebar[data-v-34e68236] {\n width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--c-border);\n}\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;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;ACjIA;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;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;ACvHA;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;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;ACxHA;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;ACtEA;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;AACA;AACA;AACA;AACA;AACA;AACA"}
|
|
1
|
+
{"version":3,"file":"C_FormulaEditor-CJk3SSUJ.css","names":[],"sources":["../src/components/C_FormulaEditor/components/FormulaInput.vue?vue&type=style&index=0&scoped=9b778f9a&lang.scss","../src/components/C_FormulaEditor/components/VariablePanel.vue?vue&type=style&index=0&scoped=0b433f5b&lang.scss","../src/components/C_FormulaEditor/components/VirtualKeyboard.vue?vue&type=style&index=0&scoped=81b1ad30&lang.scss","../src/components/C_FormulaEditor/components/FormulaPreview.vue?vue&type=style&index=0&scoped=c62881ef&lang.scss","../src/components/C_FormulaEditor/index.vue?vue&type=style&index=0&scoped=e876d2fd&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled *//* FormulaInput 组件样式 */\n.formula-input[data-v-9b778f9a] {\n background: var(--c-bg-card);\n transition: background var(--c-transition, 0.2s ease);\n border-bottom: 1px solid var(--c-border);\n /* ─── 校验信息区 ────────────── */\n}\n.formula-input--error[data-v-9b778f9a] {\n background: color-mix(in srgb, var(--error-color) 3%, var(--c-bg-card));\n}\n.formula-input--disabled[data-v-9b778f9a] {\n opacity: 0.6;\n pointer-events: none;\n}\n.formula-input__header[data-v-9b778f9a] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px 0;\n}\n.formula-input__label[data-v-9b778f9a] {\n font-size: 13px;\n font-weight: 600;\n color: var(--c-text-2);\n}\n.formula-input__clear[data-v-9b778f9a] {\n font-size: 12px;\n color: var(--c-primary);\n cursor: pointer;\n user-select: none;\n}\n.formula-input__clear[data-v-9b778f9a]:hover {\n opacity: 0.8;\n}\n.formula-input__editor[data-v-9b778f9a] {\n min-height: 72px;\n max-height: 180px;\n padding: 8px 16px 12px;\n font-size: 14px;\n line-height: 2;\n color: var(--c-text-1);\n outline: none;\n overflow-y: auto;\n word-break: break-all;\n white-space: pre-wrap;\n /* 变量 chip */\n /* 函数名 */\n /* 运算符 */\n /* 数字 */\n /* 括号 */\n}\n.formula-input__editor[data-v-9b778f9a]:empty::before {\n content: attr(data-placeholder);\n color: var(--c-text-4);\n pointer-events: none;\n}\n.formula-input__editor[data-v-9b778f9a] .formula-chip {\n display: inline-flex;\n align-items: center;\n padding: 1px 8px;\n margin: 0 2px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--c-primary) 12%, transparent);\n color: var(--c-primary);\n font-weight: 500;\n font-size: 13px;\n line-height: 22px;\n vertical-align: baseline;\n user-select: none;\n cursor: default;\n}\n.formula-input__editor[data-v-9b778f9a] .formula-func {\n color: color-mix(in srgb, var(--c-primary) 80%, #8b5cf6);\n font-weight: 600;\n}\n.formula-input__editor[data-v-9b778f9a] .formula-op {\n color: var(--warning-color, #f0a020);\n font-weight: 600;\n}\n.formula-input__editor[data-v-9b778f9a] .formula-num {\n color: color-mix(in srgb, var(--success-color, #18a058) 90%, transparent);\n}\n.formula-input__editor[data-v-9b778f9a] .formula-paren {\n color: var(--c-text-2);\n font-weight: 600;\n}\n.formula-input__error[data-v-9b778f9a] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 16px 8px;\n font-size: 12px;\n color: var(--error-color);\n}\n.formula-input__validation[data-v-9b778f9a] {\n padding: 10px 16px 12px;\n border-top: 1px solid var(--c-border);\n min-height: 40px;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.formula-input__validation-label[data-v-9b778f9a] {\n font-size: 13px;\n font-weight: 600;\n color: var(--c-text-2);\n flex-shrink: 0;\n min-width: 28px;\n}\n.formula-input__validation-hint[data-v-9b778f9a] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--c-text-4);\n}\n.formula-input__validation-success[data-v-9b778f9a] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--success-color, #18a058);\n}\n.formula-input__validation-error[data-v-9b778f9a] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--error-color);\n}","/* unplugin-vue-components disabled *//* VariablePanel 组件样式 */\n.variable-panel[data-v-0b433f5b] {\n display: flex;\n flex-direction: column;\n background: var(--c-bg-card);\n overflow: hidden;\n height: 100%;\n}\n.variable-panel__tabs[data-v-0b433f5b] {\n display: flex;\n border-bottom: 1px solid var(--c-border);\n}\n.variable-panel__tab[data-v-0b433f5b] {\n flex: 1;\n padding: 8px 0;\n text-align: center;\n font-size: 13px;\n font-weight: 500;\n color: var(--c-text-2);\n cursor: pointer;\n transition: all var(--c-transition, 0.2s ease);\n user-select: none;\n}\n.variable-panel__tab[data-v-0b433f5b]:hover {\n color: var(--c-primary);\n}\n.variable-panel__tab--active[data-v-0b433f5b] {\n color: var(--c-primary);\n border-bottom: 2px solid var(--c-primary);\n}\n.variable-panel__search[data-v-0b433f5b] {\n padding: 8px 10px;\n border-bottom: 1px solid var(--c-border);\n}\n.variable-panel__list[data-v-0b433f5b] {\n flex: 1;\n max-height: 360px;\n padding: 4px 0;\n}\n.variable-panel__group-title[data-v-0b433f5b] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 10px;\n font-size: 12px;\n font-weight: 600;\n color: var(--c-text-2);\n cursor: pointer;\n user-select: none;\n}\n.variable-panel__group-title[data-v-0b433f5b]:hover {\n color: var(--c-text-1);\n}\n.variable-panel__items[data-v-0b433f5b] {\n padding: 0 4px;\n}\n.variable-panel__item[data-v-0b433f5b] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px 6px 26px;\n font-size: 13px;\n color: var(--c-text-1);\n cursor: pointer;\n border-radius: 4px;\n transition: background 0.15s;\n}\n.variable-panel__item[data-v-0b433f5b]:hover {\n background: var(--hover-color);\n}\n.variable-panel__item-icon[data-v-0b433f5b] {\n font-size: 15px;\n color: var(--c-primary);\n flex-shrink: 0;\n}\n.variable-panel__func[data-v-0b433f5b] {\n padding: 8px 12px;\n cursor: pointer;\n border-radius: 4px;\n margin: 2px 4px;\n transition: background 0.15s;\n}\n.variable-panel__func[data-v-0b433f5b]:hover {\n background: var(--hover-color);\n}\n.variable-panel__func-name[data-v-0b433f5b] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n font-weight: 500;\n color: var(--c-text-1);\n}\n.variable-panel__func-badge[data-v-0b433f5b] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--c-primary) 12%, transparent);\n color: var(--c-primary);\n font-size: 12px;\n font-weight: 700;\n font-style: italic;\n}\n.variable-panel__func-desc[data-v-0b433f5b] {\n padding-left: 24px;\n font-size: 12px;\n color: var(--c-text-4);\n margin-top: 2px;\n}\n.variable-panel__func-sig[data-v-0b433f5b] {\n padding-left: 24px;\n font-size: 11px;\n font-family: \"Courier New\", Courier, monospace;\n color: var(--c-text-4);\n margin-top: 2px;\n opacity: 0.7;\n}","/* unplugin-vue-components disabled *//* VirtualKeyboard 组件样式 */\n.vk[data-v-81b1ad30] {\n /* ═══════ 标题行 ═══════ */\n /* ═══════ 键盘主体 ═══════ */\n /* 浅米黄暖色底板,对应参考截图 */\n /* ═══════ 动作行 ═══════ */\n /* ═══════ 经典键帽按键 ═══════ */\n /* 3D 效果核心:border-bottom 加粗 = 键帽厚度,按下时 translateY + 底边归细 */\n}\n.vk__title[data-v-81b1ad30] {\n font-size: 13px;\n font-weight: 500;\n color: var(--c-text-4);\n padding: 0 0 8px;\n letter-spacing: 0.5px;\n}\n.vk__body[data-v-81b1ad30] {\n display: flex;\n gap: 68px;\n padding: 12px;\n border-radius: 8px;\n border: 1px solid rgba(240, 160, 32, 0.2);\n background: rgba(240, 160, 32, 0.06);\n}\n.vk__half[data-v-81b1ad30] {\n display: grid;\n grid-template-columns: repeat(5, 1fr);\n gap: 5px;\n flex: 1;\n /* 数字区:白色底板层区分 */\n}\n.vk__half--nums[data-v-81b1ad30] {\n padding: 6px;\n border-radius: 6px;\n background: var(--c-bg-card);\n border: 1px solid rgba(0, 0, 0, 0.07);\n}\n.vk__actions[data-v-81b1ad30] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n padding: 8px 12px 0;\n}\n.vk__key[data-v-81b1ad30] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 34px;\n min-width: 0;\n padding: 0;\n border-radius: 5px;\n cursor: pointer;\n user-select: none;\n font-size: 14px;\n font-weight: 500;\n color: var(--c-text-1);\n background: var(--c-bg-card);\n /* 立体效果关键:底边用确定 rgba 保证可见 */\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 3px solid rgba(0, 0, 0, 0.18);\n transition: transform 0.06s ease, border-bottom-width 0.06s ease, background 0.1s ease;\n /* 按下:键帽下沉 + 底边归细 */\n /* ─── warning(? : and or)—橙色背景块 ─── */\n /* ─── primary(+ − × ÷)—蓝色文字 + 蓝色底边 ─── */\n /* ─── 动作键(⌫ 清空)─── */\n}\n.vk__key[data-v-81b1ad30]:hover:not(:disabled) {\n background: color-mix(in srgb, var(--c-primary) 6%, var(--c-bg-card));\n border-color: color-mix(in srgb, var(--c-primary) 50%, transparent);\n border-bottom-color: color-mix(in srgb, var(--c-primary) 60%, transparent);\n color: var(--c-primary);\n}\n.vk__key[data-v-81b1ad30]:active:not(:disabled) {\n transform: translateY(2px);\n border-bottom-width: 1px;\n}\n.vk__key[data-v-81b1ad30]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n.vk__key--warning[data-v-81b1ad30] {\n background: rgba(240, 160, 32, 0.12);\n border-color: rgba(240, 160, 32, 0.35);\n border-bottom-color: rgba(240, 160, 32, 0.55);\n color: #d48806;\n font-weight: 700;\n font-size: 15px;\n}\n.vk__key--warning[data-v-81b1ad30]:hover:not(:disabled) {\n background: rgba(240, 160, 32, 0.2);\n border-color: rgba(240, 160, 32, 0.55);\n border-bottom-color: rgba(240, 160, 32, 0.75);\n color: #b8760a;\n}\n.vk__key--primary[data-v-81b1ad30] {\n color: var(--c-primary);\n font-weight: 700;\n font-size: 16px;\n border-color: rgba(32, 128, 240, 0.25);\n border-bottom-color: rgba(32, 128, 240, 0.55);\n}\n.vk__key--primary[data-v-81b1ad30]:hover:not(:disabled) {\n background: rgba(32, 128, 240, 0.06);\n color: var(--c-primary);\n border-color: rgba(32, 128, 240, 0.45);\n border-bottom-color: rgba(32, 128, 240, 0.75);\n}\n.vk__key--action[data-v-81b1ad30] {\n width: 64px;\n height: 34px;\n font-size: 13px;\n color: var(--c-text-2);\n background: color-mix(in srgb, var(--c-text-4) 8%, var(--c-bg-card));\n border-color: rgba(0, 0, 0, 0.1);\n border-bottom-color: rgba(0, 0, 0, 0.15);\n}\n.vk__key--action[data-v-81b1ad30]:hover:not(:disabled) {\n color: var(--error-color);\n border-color: color-mix(in srgb, var(--error-color) 40%, transparent);\n border-bottom-color: color-mix(in srgb, var(--error-color) 55%, transparent);\n}","/* unplugin-vue-components disabled *//* FormulaPreview 组件样式 */\n.formula-preview[data-v-c62881ef] {\n padding: 12px 16px 14px;\n border-top: 1px solid var(--c-border);\n background: color-mix(in srgb, var(--c-text-2) 2%, var(--c-bg-card));\n}\n.formula-preview__header[data-v-c62881ef] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n font-size: 13px;\n margin-bottom: 8px;\n color: var(--c-text-2);\n}\n.formula-preview__empty[data-v-c62881ef] {\n font-size: 12px;\n color: var(--c-text-4);\n padding: 8px 0;\n}\n.formula-preview__vars-title[data-v-c62881ef] {\n font-size: 11px;\n color: var(--c-text-4);\n margin-bottom: 4px;\n}\n.formula-preview__var-row[data-v-c62881ef] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n font-size: 12px;\n}\n.formula-preview__var-name[data-v-c62881ef] {\n color: var(--c-primary);\n font-weight: 500;\n}\n.formula-preview__var-eq[data-v-c62881ef] {\n color: var(--c-text-4);\n}\n.formula-preview__var-value[data-v-c62881ef] {\n font-family: \"Courier New\", Courier, monospace;\n color: var(--c-text-1);\n font-weight: 500;\n}\n.formula-preview__result[data-v-c62881ef] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.formula-preview__result-label[data-v-c62881ef] {\n font-size: 13px;\n font-weight: 600;\n color: var(--c-text-2);\n}\n.formula-preview__result-value[data-v-c62881ef] {\n font-size: 18px;\n font-weight: 700;\n font-family: \"Courier New\", Courier, monospace;\n color: var(--c-primary);\n}\n.formula-preview__result-error[data-v-c62881ef] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--error-color);\n}\n.formula-preview__result-empty[data-v-c62881ef] {\n font-size: 14px;\n color: var(--c-text-4);\n}","/* unplugin-vue-components disabled *//* C_FormulaEditor 主组件样式 */\n.c-formula[data-v-e876d2fd] {\n display: flex;\n flex-direction: column;\n border-radius: 12px;\n border: 1px solid var(--c-border);\n background: var(--c-bg-card);\n overflow: hidden;\n /* ═══════ 标题行 ═══════ */\n /* ═══════ 主内容 ═══════ */\n}\n.c-formula__title-row[data-v-e876d2fd] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 18px;\n border-bottom: 1px solid var(--c-border);\n}\n.c-formula__title[data-v-e876d2fd] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n font-size: 15px;\n color: var(--c-text-1);\n}\n.c-formula__body[data-v-e876d2fd] {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.c-formula__sidebar[data-v-e876d2fd] {\n width: 210px;\n flex-shrink: 0;\n border-right: 1px solid var(--c-border);\n}\n.c-formula__main[data-v-e876d2fd] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.c-formula__keyboard[data-v-e876d2fd] {\n padding: 14px 18px;\n border-top: 1px solid var(--c-border);\n}\n\n/* ═══════ 响应式 ═══════ */\n@media (max-width: 768px) {\n.c-formula__body[data-v-e876d2fd] {\n flex-direction: column;\n}\n.c-formula__sidebar[data-v-e876d2fd] {\n width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--c-border);\n}\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;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;ACjIA;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;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;ACvHA;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;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;ACxHA;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;ACtEA;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;AACA;AACA;AACA;AACA;AACA;AACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C_FormulaEditor-Cm0CokN5.css","names":[],"sources":["../src/components/C_FormulaEditor/components/FormulaInput.vue?vue&type=style&index=0&scoped=9e16f9bd&lang.scss","../src/components/C_FormulaEditor/components/VariablePanel.vue?vue&type=style&index=0&scoped=403349d9&lang.scss","../src/components/C_FormulaEditor/components/VirtualKeyboard.vue?vue&type=style&index=0&scoped=c1d53e69&lang.scss","../src/components/C_FormulaEditor/components/FormulaPreview.vue?vue&type=style&index=0&scoped=e25f0d86&lang.scss","../src/components/C_FormulaEditor/index.vue?vue&type=style&index=0&scoped=34e68236&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled *//* FormulaInput 组件样式 */\n.formula-input[data-v-9e16f9bd] {\n background: var(--c-bg-card);\n transition: background var(--c-transition, 0.2s ease);\n border-bottom: 1px solid var(--c-border);\n /* ─── 校验信息区 ────────────── */\n}\n.formula-input--error[data-v-9e16f9bd] {\n background: color-mix(in srgb, var(--error-color) 3%, var(--c-bg-card));\n}\n.formula-input--disabled[data-v-9e16f9bd] {\n opacity: 0.6;\n pointer-events: none;\n}\n.formula-input__header[data-v-9e16f9bd] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px 0;\n}\n.formula-input__label[data-v-9e16f9bd] {\n font-size: 13px;\n font-weight: 600;\n color: var(--c-text-2);\n}\n.formula-input__clear[data-v-9e16f9bd] {\n font-size: 12px;\n color: var(--c-primary);\n cursor: pointer;\n user-select: none;\n}\n.formula-input__clear[data-v-9e16f9bd]:hover {\n opacity: 0.8;\n}\n.formula-input__editor[data-v-9e16f9bd] {\n min-height: 72px;\n max-height: 180px;\n padding: 8px 16px 12px;\n font-size: 14px;\n line-height: 2;\n color: var(--c-text-1);\n outline: none;\n overflow-y: auto;\n word-break: break-all;\n white-space: pre-wrap;\n /* 变量 chip */\n /* 函数名 */\n /* 运算符 */\n /* 数字 */\n /* 括号 */\n}\n.formula-input__editor[data-v-9e16f9bd]:empty::before {\n content: attr(data-placeholder);\n color: var(--c-text-4);\n pointer-events: none;\n}\n.formula-input__editor[data-v-9e16f9bd] .formula-chip {\n display: inline-flex;\n align-items: center;\n padding: 1px 8px;\n margin: 0 2px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--c-primary) 12%, transparent);\n color: var(--c-primary);\n font-weight: 500;\n font-size: 13px;\n line-height: 22px;\n vertical-align: baseline;\n user-select: none;\n cursor: default;\n}\n.formula-input__editor[data-v-9e16f9bd] .formula-func {\n color: color-mix(in srgb, var(--c-primary) 80%, #8b5cf6);\n font-weight: 600;\n}\n.formula-input__editor[data-v-9e16f9bd] .formula-op {\n color: var(--warning-color, #f0a020);\n font-weight: 600;\n}\n.formula-input__editor[data-v-9e16f9bd] .formula-num {\n color: color-mix(in srgb, var(--success-color, #18a058) 90%, transparent);\n}\n.formula-input__editor[data-v-9e16f9bd] .formula-paren {\n color: var(--c-text-2);\n font-weight: 600;\n}\n.formula-input__error[data-v-9e16f9bd] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 16px 8px;\n font-size: 12px;\n color: var(--error-color);\n}\n.formula-input__validation[data-v-9e16f9bd] {\n padding: 10px 16px 12px;\n border-top: 1px solid var(--c-border);\n min-height: 40px;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.formula-input__validation-label[data-v-9e16f9bd] {\n font-size: 13px;\n font-weight: 600;\n color: var(--c-text-2);\n flex-shrink: 0;\n min-width: 28px;\n}\n.formula-input__validation-hint[data-v-9e16f9bd] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--c-text-4);\n}\n.formula-input__validation-success[data-v-9e16f9bd] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--success-color, #18a058);\n}\n.formula-input__validation-error[data-v-9e16f9bd] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--error-color);\n}","/* unplugin-vue-components disabled *//* VariablePanel 组件样式 */\n.variable-panel[data-v-403349d9] {\n display: flex;\n flex-direction: column;\n background: var(--c-bg-card);\n overflow: hidden;\n height: 100%;\n}\n.variable-panel__tabs[data-v-403349d9] {\n display: flex;\n border-bottom: 1px solid var(--c-border);\n}\n.variable-panel__tab[data-v-403349d9] {\n flex: 1;\n padding: 8px 0;\n text-align: center;\n font-size: 13px;\n font-weight: 500;\n color: var(--c-text-2);\n cursor: pointer;\n transition: all var(--c-transition, 0.2s ease);\n user-select: none;\n}\n.variable-panel__tab[data-v-403349d9]:hover {\n color: var(--c-primary);\n}\n.variable-panel__tab--active[data-v-403349d9] {\n color: var(--c-primary);\n border-bottom: 2px solid var(--c-primary);\n}\n.variable-panel__search[data-v-403349d9] {\n padding: 8px 10px;\n border-bottom: 1px solid var(--c-border);\n}\n.variable-panel__list[data-v-403349d9] {\n flex: 1;\n max-height: 360px;\n padding: 4px 0;\n}\n.variable-panel__group-title[data-v-403349d9] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 10px;\n font-size: 12px;\n font-weight: 600;\n color: var(--c-text-2);\n cursor: pointer;\n user-select: none;\n}\n.variable-panel__group-title[data-v-403349d9]:hover {\n color: var(--c-text-1);\n}\n.variable-panel__items[data-v-403349d9] {\n padding: 0 4px;\n}\n.variable-panel__item[data-v-403349d9] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px 6px 26px;\n font-size: 13px;\n color: var(--c-text-1);\n cursor: pointer;\n border-radius: 4px;\n transition: background 0.15s;\n}\n.variable-panel__item[data-v-403349d9]:hover {\n background: var(--hover-color);\n}\n.variable-panel__item-icon[data-v-403349d9] {\n font-size: 15px;\n color: var(--c-primary);\n flex-shrink: 0;\n}\n.variable-panel__func[data-v-403349d9] {\n padding: 8px 12px;\n cursor: pointer;\n border-radius: 4px;\n margin: 2px 4px;\n transition: background 0.15s;\n}\n.variable-panel__func[data-v-403349d9]:hover {\n background: var(--hover-color);\n}\n.variable-panel__func-name[data-v-403349d9] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n font-weight: 500;\n color: var(--c-text-1);\n}\n.variable-panel__func-badge[data-v-403349d9] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--c-primary) 12%, transparent);\n color: var(--c-primary);\n font-size: 12px;\n font-weight: 700;\n font-style: italic;\n}\n.variable-panel__func-desc[data-v-403349d9] {\n padding-left: 24px;\n font-size: 12px;\n color: var(--c-text-4);\n margin-top: 2px;\n}\n.variable-panel__func-sig[data-v-403349d9] {\n padding-left: 24px;\n font-size: 11px;\n font-family: \"Courier New\", Courier, monospace;\n color: var(--c-text-4);\n margin-top: 2px;\n opacity: 0.7;\n}","/* unplugin-vue-components disabled *//* VirtualKeyboard 组件样式 */\n.vk[data-v-c1d53e69] {\n /* ═══════ 标题行 ═══════ */\n /* ═══════ 键盘主体 ═══════ */\n /* 浅米黄暖色底板,对应参考截图 */\n /* ═══════ 动作行 ═══════ */\n /* ═══════ 经典键帽按键 ═══════ */\n /* 3D 效果核心:border-bottom 加粗 = 键帽厚度,按下时 translateY + 底边归细 */\n}\n.vk__title[data-v-c1d53e69] {\n font-size: 13px;\n font-weight: 500;\n color: var(--c-text-4);\n padding: 0 0 8px;\n letter-spacing: 0.5px;\n}\n.vk__body[data-v-c1d53e69] {\n display: flex;\n gap: 68px;\n padding: 12px;\n border-radius: 8px;\n border: 1px solid rgba(240, 160, 32, 0.2);\n background: rgba(240, 160, 32, 0.06);\n}\n.vk__half[data-v-c1d53e69] {\n display: grid;\n grid-template-columns: repeat(5, 1fr);\n gap: 5px;\n flex: 1;\n /* 数字区:白色底板层区分 */\n}\n.vk__half--nums[data-v-c1d53e69] {\n padding: 6px;\n border-radius: 6px;\n background: var(--c-bg-card);\n border: 1px solid rgba(0, 0, 0, 0.07);\n}\n.vk__actions[data-v-c1d53e69] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n padding: 8px 12px 0;\n}\n.vk__key[data-v-c1d53e69] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 34px;\n min-width: 0;\n padding: 0;\n border-radius: 5px;\n cursor: pointer;\n user-select: none;\n font-size: 14px;\n font-weight: 500;\n color: var(--c-text-1);\n background: var(--c-bg-card);\n /* 立体效果关键:底边用确定 rgba 保证可见 */\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 3px solid rgba(0, 0, 0, 0.18);\n transition: transform 0.06s ease, border-bottom-width 0.06s ease, background 0.1s ease;\n /* 按下:键帽下沉 + 底边归细 */\n /* ─── warning(? : and or)—橙色背景块 ─── */\n /* ─── primary(+ − × ÷)—蓝色文字 + 蓝色底边 ─── */\n /* ─── 动作键(⌫ 清空)─── */\n}\n.vk__key[data-v-c1d53e69]:hover:not(:disabled) {\n background: color-mix(in srgb, var(--c-primary) 6%, var(--c-bg-card));\n border-color: color-mix(in srgb, var(--c-primary) 50%, transparent);\n border-bottom-color: color-mix(in srgb, var(--c-primary) 60%, transparent);\n color: var(--c-primary);\n}\n.vk__key[data-v-c1d53e69]:active:not(:disabled) {\n transform: translateY(2px);\n border-bottom-width: 1px;\n}\n.vk__key[data-v-c1d53e69]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n.vk__key--warning[data-v-c1d53e69] {\n background: rgba(240, 160, 32, 0.12);\n border-color: rgba(240, 160, 32, 0.35);\n border-bottom-color: rgba(240, 160, 32, 0.55);\n color: #d48806;\n font-weight: 700;\n font-size: 15px;\n}\n.vk__key--warning[data-v-c1d53e69]:hover:not(:disabled) {\n background: rgba(240, 160, 32, 0.2);\n border-color: rgba(240, 160, 32, 0.55);\n border-bottom-color: rgba(240, 160, 32, 0.75);\n color: #b8760a;\n}\n.vk__key--primary[data-v-c1d53e69] {\n color: var(--c-primary);\n font-weight: 700;\n font-size: 16px;\n border-color: rgba(32, 128, 240, 0.25);\n border-bottom-color: rgba(32, 128, 240, 0.55);\n}\n.vk__key--primary[data-v-c1d53e69]:hover:not(:disabled) {\n background: rgba(32, 128, 240, 0.06);\n color: var(--c-primary);\n border-color: rgba(32, 128, 240, 0.45);\n border-bottom-color: rgba(32, 128, 240, 0.75);\n}\n.vk__key--action[data-v-c1d53e69] {\n width: 64px;\n height: 34px;\n font-size: 13px;\n color: var(--c-text-2);\n background: color-mix(in srgb, var(--c-text-4) 8%, var(--c-bg-card));\n border-color: rgba(0, 0, 0, 0.1);\n border-bottom-color: rgba(0, 0, 0, 0.15);\n}\n.vk__key--action[data-v-c1d53e69]:hover:not(:disabled) {\n color: var(--error-color);\n border-color: color-mix(in srgb, var(--error-color) 40%, transparent);\n border-bottom-color: color-mix(in srgb, var(--error-color) 55%, transparent);\n}","/* unplugin-vue-components disabled *//* FormulaPreview 组件样式 */\n.formula-preview[data-v-e25f0d86] {\n padding: 12px 16px 14px;\n border-top: 1px solid var(--c-border);\n background: color-mix(in srgb, var(--c-text-2) 2%, var(--c-bg-card));\n}\n.formula-preview__header[data-v-e25f0d86] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n font-size: 13px;\n margin-bottom: 8px;\n color: var(--c-text-2);\n}\n.formula-preview__empty[data-v-e25f0d86] {\n font-size: 12px;\n color: var(--c-text-4);\n padding: 8px 0;\n}\n.formula-preview__vars-title[data-v-e25f0d86] {\n font-size: 11px;\n color: var(--c-text-4);\n margin-bottom: 4px;\n}\n.formula-preview__var-row[data-v-e25f0d86] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n font-size: 12px;\n}\n.formula-preview__var-name[data-v-e25f0d86] {\n color: var(--c-primary);\n font-weight: 500;\n}\n.formula-preview__var-eq[data-v-e25f0d86] {\n color: var(--c-text-4);\n}\n.formula-preview__var-value[data-v-e25f0d86] {\n font-family: \"Courier New\", Courier, monospace;\n color: var(--c-text-1);\n font-weight: 500;\n}\n.formula-preview__result[data-v-e25f0d86] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.formula-preview__result-label[data-v-e25f0d86] {\n font-size: 13px;\n font-weight: 600;\n color: var(--c-text-2);\n}\n.formula-preview__result-value[data-v-e25f0d86] {\n font-size: 18px;\n font-weight: 700;\n font-family: \"Courier New\", Courier, monospace;\n color: var(--c-primary);\n}\n.formula-preview__result-error[data-v-e25f0d86] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--error-color);\n}\n.formula-preview__result-empty[data-v-e25f0d86] {\n font-size: 14px;\n color: var(--c-text-4);\n}","/* unplugin-vue-components disabled *//* C_FormulaEditor 主组件样式 */\n.c-formula[data-v-34e68236] {\n display: flex;\n flex-direction: column;\n border-radius: 12px;\n border: 1px solid var(--c-border);\n background: var(--c-bg-card);\n overflow: hidden;\n /* ═══════ 标题行 ═══════ */\n /* ═══════ 主内容 ═══════ */\n}\n.c-formula__title-row[data-v-34e68236] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 18px;\n border-bottom: 1px solid var(--c-border);\n}\n.c-formula__title[data-v-34e68236] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n font-size: 15px;\n color: var(--c-text-1);\n}\n.c-formula__body[data-v-34e68236] {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.c-formula__sidebar[data-v-34e68236] {\n width: 210px;\n flex-shrink: 0;\n border-right: 1px solid var(--c-border);\n}\n.c-formula__main[data-v-34e68236] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.c-formula__keyboard[data-v-34e68236] {\n padding: 14px 18px;\n border-top: 1px solid var(--c-border);\n}\n\n/* ═══════ 响应式 ═══════ */\n@media (max-width: 768px) {\n.c-formula__body[data-v-34e68236] {\n flex-direction: column;\n}\n.c-formula__sidebar[data-v-34e68236] {\n width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--c-border);\n}\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;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;ACjIA;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;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;ACvHA;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;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;ACxHA;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;ACtEA;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;AACA;AACA;AACA;AACA;AACA;AACA"}
|
|
1
|
+
{"version":3,"file":"C_FormulaEditor-Cy7mjfVO.css","names":[],"sources":["../src/components/C_FormulaEditor/components/FormulaInput.vue?vue&type=style&index=0&scoped=9b778f9a&lang.scss","../src/components/C_FormulaEditor/components/VariablePanel.vue?vue&type=style&index=0&scoped=0b433f5b&lang.scss","../src/components/C_FormulaEditor/components/VirtualKeyboard.vue?vue&type=style&index=0&scoped=81b1ad30&lang.scss","../src/components/C_FormulaEditor/components/FormulaPreview.vue?vue&type=style&index=0&scoped=c62881ef&lang.scss","../src/components/C_FormulaEditor/index.vue?vue&type=style&index=0&scoped=e876d2fd&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled *//* FormulaInput 组件样式 */\n.formula-input[data-v-9b778f9a] {\n background: var(--c-bg-card);\n transition: background var(--c-transition, 0.2s ease);\n border-bottom: 1px solid var(--c-border);\n /* ─── 校验信息区 ────────────── */\n}\n.formula-input--error[data-v-9b778f9a] {\n background: color-mix(in srgb, var(--error-color) 3%, var(--c-bg-card));\n}\n.formula-input--disabled[data-v-9b778f9a] {\n opacity: 0.6;\n pointer-events: none;\n}\n.formula-input__header[data-v-9b778f9a] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px 0;\n}\n.formula-input__label[data-v-9b778f9a] {\n font-size: 13px;\n font-weight: 600;\n color: var(--c-text-2);\n}\n.formula-input__clear[data-v-9b778f9a] {\n font-size: 12px;\n color: var(--c-primary);\n cursor: pointer;\n user-select: none;\n}\n.formula-input__clear[data-v-9b778f9a]:hover {\n opacity: 0.8;\n}\n.formula-input__editor[data-v-9b778f9a] {\n min-height: 72px;\n max-height: 180px;\n padding: 8px 16px 12px;\n font-size: 14px;\n line-height: 2;\n color: var(--c-text-1);\n outline: none;\n overflow-y: auto;\n word-break: break-all;\n white-space: pre-wrap;\n /* 变量 chip */\n /* 函数名 */\n /* 运算符 */\n /* 数字 */\n /* 括号 */\n}\n.formula-input__editor[data-v-9b778f9a]:empty::before {\n content: attr(data-placeholder);\n color: var(--c-text-4);\n pointer-events: none;\n}\n.formula-input__editor[data-v-9b778f9a] .formula-chip {\n display: inline-flex;\n align-items: center;\n padding: 1px 8px;\n margin: 0 2px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--c-primary) 12%, transparent);\n color: var(--c-primary);\n font-weight: 500;\n font-size: 13px;\n line-height: 22px;\n vertical-align: baseline;\n user-select: none;\n cursor: default;\n}\n.formula-input__editor[data-v-9b778f9a] .formula-func {\n color: color-mix(in srgb, var(--c-primary) 80%, #8b5cf6);\n font-weight: 600;\n}\n.formula-input__editor[data-v-9b778f9a] .formula-op {\n color: var(--warning-color, #f0a020);\n font-weight: 600;\n}\n.formula-input__editor[data-v-9b778f9a] .formula-num {\n color: color-mix(in srgb, var(--success-color, #18a058) 90%, transparent);\n}\n.formula-input__editor[data-v-9b778f9a] .formula-paren {\n color: var(--c-text-2);\n font-weight: 600;\n}\n.formula-input__error[data-v-9b778f9a] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 16px 8px;\n font-size: 12px;\n color: var(--error-color);\n}\n.formula-input__validation[data-v-9b778f9a] {\n padding: 10px 16px 12px;\n border-top: 1px solid var(--c-border);\n min-height: 40px;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.formula-input__validation-label[data-v-9b778f9a] {\n font-size: 13px;\n font-weight: 600;\n color: var(--c-text-2);\n flex-shrink: 0;\n min-width: 28px;\n}\n.formula-input__validation-hint[data-v-9b778f9a] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--c-text-4);\n}\n.formula-input__validation-success[data-v-9b778f9a] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--success-color, #18a058);\n}\n.formula-input__validation-error[data-v-9b778f9a] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--error-color);\n}","/* unplugin-vue-components disabled *//* VariablePanel 组件样式 */\n.variable-panel[data-v-0b433f5b] {\n display: flex;\n flex-direction: column;\n background: var(--c-bg-card);\n overflow: hidden;\n height: 100%;\n}\n.variable-panel__tabs[data-v-0b433f5b] {\n display: flex;\n border-bottom: 1px solid var(--c-border);\n}\n.variable-panel__tab[data-v-0b433f5b] {\n flex: 1;\n padding: 8px 0;\n text-align: center;\n font-size: 13px;\n font-weight: 500;\n color: var(--c-text-2);\n cursor: pointer;\n transition: all var(--c-transition, 0.2s ease);\n user-select: none;\n}\n.variable-panel__tab[data-v-0b433f5b]:hover {\n color: var(--c-primary);\n}\n.variable-panel__tab--active[data-v-0b433f5b] {\n color: var(--c-primary);\n border-bottom: 2px solid var(--c-primary);\n}\n.variable-panel__search[data-v-0b433f5b] {\n padding: 8px 10px;\n border-bottom: 1px solid var(--c-border);\n}\n.variable-panel__list[data-v-0b433f5b] {\n flex: 1;\n max-height: 360px;\n padding: 4px 0;\n}\n.variable-panel__group-title[data-v-0b433f5b] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 10px;\n font-size: 12px;\n font-weight: 600;\n color: var(--c-text-2);\n cursor: pointer;\n user-select: none;\n}\n.variable-panel__group-title[data-v-0b433f5b]:hover {\n color: var(--c-text-1);\n}\n.variable-panel__items[data-v-0b433f5b] {\n padding: 0 4px;\n}\n.variable-panel__item[data-v-0b433f5b] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px 6px 26px;\n font-size: 13px;\n color: var(--c-text-1);\n cursor: pointer;\n border-radius: 4px;\n transition: background 0.15s;\n}\n.variable-panel__item[data-v-0b433f5b]:hover {\n background: var(--hover-color);\n}\n.variable-panel__item-icon[data-v-0b433f5b] {\n font-size: 15px;\n color: var(--c-primary);\n flex-shrink: 0;\n}\n.variable-panel__func[data-v-0b433f5b] {\n padding: 8px 12px;\n cursor: pointer;\n border-radius: 4px;\n margin: 2px 4px;\n transition: background 0.15s;\n}\n.variable-panel__func[data-v-0b433f5b]:hover {\n background: var(--hover-color);\n}\n.variable-panel__func-name[data-v-0b433f5b] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n font-weight: 500;\n color: var(--c-text-1);\n}\n.variable-panel__func-badge[data-v-0b433f5b] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--c-primary) 12%, transparent);\n color: var(--c-primary);\n font-size: 12px;\n font-weight: 700;\n font-style: italic;\n}\n.variable-panel__func-desc[data-v-0b433f5b] {\n padding-left: 24px;\n font-size: 12px;\n color: var(--c-text-4);\n margin-top: 2px;\n}\n.variable-panel__func-sig[data-v-0b433f5b] {\n padding-left: 24px;\n font-size: 11px;\n font-family: \"Courier New\", Courier, monospace;\n color: var(--c-text-4);\n margin-top: 2px;\n opacity: 0.7;\n}","/* unplugin-vue-components disabled *//* VirtualKeyboard 组件样式 */\n.vk[data-v-81b1ad30] {\n /* ═══════ 标题行 ═══════ */\n /* ═══════ 键盘主体 ═══════ */\n /* 浅米黄暖色底板,对应参考截图 */\n /* ═══════ 动作行 ═══════ */\n /* ═══════ 经典键帽按键 ═══════ */\n /* 3D 效果核心:border-bottom 加粗 = 键帽厚度,按下时 translateY + 底边归细 */\n}\n.vk__title[data-v-81b1ad30] {\n font-size: 13px;\n font-weight: 500;\n color: var(--c-text-4);\n padding: 0 0 8px;\n letter-spacing: 0.5px;\n}\n.vk__body[data-v-81b1ad30] {\n display: flex;\n gap: 68px;\n padding: 12px;\n border-radius: 8px;\n border: 1px solid rgba(240, 160, 32, 0.2);\n background: rgba(240, 160, 32, 0.06);\n}\n.vk__half[data-v-81b1ad30] {\n display: grid;\n grid-template-columns: repeat(5, 1fr);\n gap: 5px;\n flex: 1;\n /* 数字区:白色底板层区分 */\n}\n.vk__half--nums[data-v-81b1ad30] {\n padding: 6px;\n border-radius: 6px;\n background: var(--c-bg-card);\n border: 1px solid rgba(0, 0, 0, 0.07);\n}\n.vk__actions[data-v-81b1ad30] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n padding: 8px 12px 0;\n}\n.vk__key[data-v-81b1ad30] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 34px;\n min-width: 0;\n padding: 0;\n border-radius: 5px;\n cursor: pointer;\n user-select: none;\n font-size: 14px;\n font-weight: 500;\n color: var(--c-text-1);\n background: var(--c-bg-card);\n /* 立体效果关键:底边用确定 rgba 保证可见 */\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 3px solid rgba(0, 0, 0, 0.18);\n transition: transform 0.06s ease, border-bottom-width 0.06s ease, background 0.1s ease;\n /* 按下:键帽下沉 + 底边归细 */\n /* ─── warning(? : and or)—橙色背景块 ─── */\n /* ─── primary(+ − × ÷)—蓝色文字 + 蓝色底边 ─── */\n /* ─── 动作键(⌫ 清空)─── */\n}\n.vk__key[data-v-81b1ad30]:hover:not(:disabled) {\n background: color-mix(in srgb, var(--c-primary) 6%, var(--c-bg-card));\n border-color: color-mix(in srgb, var(--c-primary) 50%, transparent);\n border-bottom-color: color-mix(in srgb, var(--c-primary) 60%, transparent);\n color: var(--c-primary);\n}\n.vk__key[data-v-81b1ad30]:active:not(:disabled) {\n transform: translateY(2px);\n border-bottom-width: 1px;\n}\n.vk__key[data-v-81b1ad30]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n.vk__key--warning[data-v-81b1ad30] {\n background: rgba(240, 160, 32, 0.12);\n border-color: rgba(240, 160, 32, 0.35);\n border-bottom-color: rgba(240, 160, 32, 0.55);\n color: #d48806;\n font-weight: 700;\n font-size: 15px;\n}\n.vk__key--warning[data-v-81b1ad30]:hover:not(:disabled) {\n background: rgba(240, 160, 32, 0.2);\n border-color: rgba(240, 160, 32, 0.55);\n border-bottom-color: rgba(240, 160, 32, 0.75);\n color: #b8760a;\n}\n.vk__key--primary[data-v-81b1ad30] {\n color: var(--c-primary);\n font-weight: 700;\n font-size: 16px;\n border-color: rgba(32, 128, 240, 0.25);\n border-bottom-color: rgba(32, 128, 240, 0.55);\n}\n.vk__key--primary[data-v-81b1ad30]:hover:not(:disabled) {\n background: rgba(32, 128, 240, 0.06);\n color: var(--c-primary);\n border-color: rgba(32, 128, 240, 0.45);\n border-bottom-color: rgba(32, 128, 240, 0.75);\n}\n.vk__key--action[data-v-81b1ad30] {\n width: 64px;\n height: 34px;\n font-size: 13px;\n color: var(--c-text-2);\n background: color-mix(in srgb, var(--c-text-4) 8%, var(--c-bg-card));\n border-color: rgba(0, 0, 0, 0.1);\n border-bottom-color: rgba(0, 0, 0, 0.15);\n}\n.vk__key--action[data-v-81b1ad30]:hover:not(:disabled) {\n color: var(--error-color);\n border-color: color-mix(in srgb, var(--error-color) 40%, transparent);\n border-bottom-color: color-mix(in srgb, var(--error-color) 55%, transparent);\n}","/* unplugin-vue-components disabled *//* FormulaPreview 组件样式 */\n.formula-preview[data-v-c62881ef] {\n padding: 12px 16px 14px;\n border-top: 1px solid var(--c-border);\n background: color-mix(in srgb, var(--c-text-2) 2%, var(--c-bg-card));\n}\n.formula-preview__header[data-v-c62881ef] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n font-size: 13px;\n margin-bottom: 8px;\n color: var(--c-text-2);\n}\n.formula-preview__empty[data-v-c62881ef] {\n font-size: 12px;\n color: var(--c-text-4);\n padding: 8px 0;\n}\n.formula-preview__vars-title[data-v-c62881ef] {\n font-size: 11px;\n color: var(--c-text-4);\n margin-bottom: 4px;\n}\n.formula-preview__var-row[data-v-c62881ef] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n font-size: 12px;\n}\n.formula-preview__var-name[data-v-c62881ef] {\n color: var(--c-primary);\n font-weight: 500;\n}\n.formula-preview__var-eq[data-v-c62881ef] {\n color: var(--c-text-4);\n}\n.formula-preview__var-value[data-v-c62881ef] {\n font-family: \"Courier New\", Courier, monospace;\n color: var(--c-text-1);\n font-weight: 500;\n}\n.formula-preview__result[data-v-c62881ef] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.formula-preview__result-label[data-v-c62881ef] {\n font-size: 13px;\n font-weight: 600;\n color: var(--c-text-2);\n}\n.formula-preview__result-value[data-v-c62881ef] {\n font-size: 18px;\n font-weight: 700;\n font-family: \"Courier New\", Courier, monospace;\n color: var(--c-primary);\n}\n.formula-preview__result-error[data-v-c62881ef] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--error-color);\n}\n.formula-preview__result-empty[data-v-c62881ef] {\n font-size: 14px;\n color: var(--c-text-4);\n}","/* unplugin-vue-components disabled *//* C_FormulaEditor 主组件样式 */\n.c-formula[data-v-e876d2fd] {\n display: flex;\n flex-direction: column;\n border-radius: 12px;\n border: 1px solid var(--c-border);\n background: var(--c-bg-card);\n overflow: hidden;\n /* ═══════ 标题行 ═══════ */\n /* ═══════ 主内容 ═══════ */\n}\n.c-formula__title-row[data-v-e876d2fd] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 18px;\n border-bottom: 1px solid var(--c-border);\n}\n.c-formula__title[data-v-e876d2fd] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n font-size: 15px;\n color: var(--c-text-1);\n}\n.c-formula__body[data-v-e876d2fd] {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.c-formula__sidebar[data-v-e876d2fd] {\n width: 210px;\n flex-shrink: 0;\n border-right: 1px solid var(--c-border);\n}\n.c-formula__main[data-v-e876d2fd] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.c-formula__keyboard[data-v-e876d2fd] {\n padding: 14px 18px;\n border-top: 1px solid var(--c-border);\n}\n\n/* ═══════ 响应式 ═══════ */\n@media (max-width: 768px) {\n.c-formula__body[data-v-e876d2fd] {\n flex-direction: column;\n}\n.c-formula__sidebar[data-v-e876d2fd] {\n width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--c-border);\n}\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;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;ACjIA;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;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;ACvHA;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;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;ACxHA;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;ACtEA;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;AACA;AACA;AACA;AACA;AACA;AACA"}
|
package/dist/C_FormulaEditor.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`})
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./C_FormulaEditor.js`);exports.ACTION_KEYS=e.i,exports.C_FormulaEditor=e.t,exports.DEFAULT_FUNCTIONS=e.a,exports.NUMBER_KEYS=e.o,exports.OPERATORS=e.s,exports.OPERATOR_KEYS=e.c,exports.SPACED_OPERATORS=e.l,exports.useFormulaEvaluator=e.n,exports.useFormulaParser=e.r;
|