@cldemo/ui-kit 1.0.5 → 1.0.7
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/package.json +2 -2
- package/buildLibs/all/index.cjs +0 -99
- package/buildLibs/all/index.cjs.map +0 -1
- package/buildLibs/all/index.d.ts +0 -83
- package/buildLibs/all/index.js +0 -168
- package/buildLibs/all/index.js.map +0 -1
- package/buildLibs/common/Element/Event/drag.d.ts +0 -24
- package/buildLibs/common/Element/Event/index.d.ts +0 -9
- package/buildLibs/common/Element/Event/resize.d.ts +0 -20
- package/buildLibs/common/Element/index.d.ts +0 -104
- package/buildLibs/common/Element_Event_drag-DeZYlveu.js +0 -430
- package/buildLibs/common/Element_Event_drag-DeZYlveu.js.map +0 -1
- package/buildLibs/common/Element_Event_drag-L_ZT9whD.cjs +0 -3
- package/buildLibs/common/Element_Event_drag-L_ZT9whD.cjs.map +0 -1
- package/buildLibs/common/Element_Event_resize-DA_sUt40.cjs +0 -2
- package/buildLibs/common/Element_Event_resize-DA_sUt40.cjs.map +0 -1
- package/buildLibs/common/Element_Event_resize-DqH_UT2k.js +0 -49
- package/buildLibs/common/Element_Event_resize-DqH_UT2k.js.map +0 -1
- package/buildLibs/common/Tools/animateEasing.d.ts +0 -27
- package/buildLibs/common/Tools/cookie.d.ts +0 -8
- package/buildLibs/common/Tools/delayFun.d.ts +0 -9
- package/buildLibs/common/Tools/index.d.ts +0 -15
- package/buildLibs/common/Tools/localStorage.d.ts +0 -9
- package/buildLibs/common/Tools/number.d.ts +0 -8
- package/buildLibs/common/Tools_animateEasing-C6TmrmvZ.cjs +0 -2
- package/buildLibs/common/Tools_animateEasing-C6TmrmvZ.cjs.map +0 -1
- package/buildLibs/common/Tools_animateEasing-D0lY_Vn8.js +0 -50
- package/buildLibs/common/Tools_animateEasing-D0lY_Vn8.js.map +0 -1
- package/buildLibs/common/Tools_cookie-CCTgXZb7.cjs +0 -2
- package/buildLibs/common/Tools_cookie-CCTgXZb7.cjs.map +0 -1
- package/buildLibs/common/Tools_cookie-DKctMXdK.js +0 -31
- package/buildLibs/common/Tools_cookie-DKctMXdK.js.map +0 -1
- package/buildLibs/common/Tools_delayFun-CA1ktv1L.js +0 -21
- package/buildLibs/common/Tools_delayFun-CA1ktv1L.js.map +0 -1
- package/buildLibs/common/Tools_delayFun-DYTkzlXE.cjs +0 -2
- package/buildLibs/common/Tools_delayFun-DYTkzlXE.cjs.map +0 -1
- package/buildLibs/common/Tools_localStorage-Cbecy4gj.cjs +0 -2
- package/buildLibs/common/Tools_localStorage-Cbecy4gj.cjs.map +0 -1
- package/buildLibs/common/Tools_localStorage-DVvhtzhL.js +0 -48
- package/buildLibs/common/Tools_localStorage-DVvhtzhL.js.map +0 -1
- package/buildLibs/common/Tools_number-Bh6hGO5U.cjs +0 -2
- package/buildLibs/common/Tools_number-Bh6hGO5U.cjs.map +0 -1
- package/buildLibs/common/Tools_number-C_MjN473.js +0 -22
- package/buildLibs/common/Tools_number-C_MjN473.js.map +0 -1
- package/buildLibs/common/axios-DZoeNi6y.cjs +0 -2
- package/buildLibs/common/axios-DZoeNi6y.cjs.map +0 -1
- package/buildLibs/common/axios-DqkFEq4Y.js +0 -242
- package/buildLibs/common/axios-DqkFEq4Y.js.map +0 -1
- package/buildLibs/common/axios.d.ts +0 -28
- package/buildLibs/common/base-PQGakkrl.js +0 -808
- package/buildLibs/common/base-PQGakkrl.js.map +0 -1
- package/buildLibs/common/base-iCmnU-fv.cjs +0 -2
- package/buildLibs/common/base-iCmnU-fv.cjs.map +0 -1
- package/buildLibs/common/base.d.ts +0 -222
- package/buildLibs/common/day-BzMalBXj.cjs +0 -2
- package/buildLibs/common/day-BzMalBXj.cjs.map +0 -1
- package/buildLibs/common/day-Dm_AnEZp.js +0 -75
- package/buildLibs/common/day-Dm_AnEZp.js.map +0 -1
- package/buildLibs/common/day.d.ts +0 -25
- package/buildLibs/common/echart-BtfUJ8lE.js +0 -498
- package/buildLibs/common/echart-BtfUJ8lE.js.map +0 -1
- package/buildLibs/common/echart-Cs3rQ-e9.cjs +0 -2
- package/buildLibs/common/echart-Cs3rQ-e9.cjs.map +0 -1
- package/buildLibs/common/echart.d.ts +0 -82
- package/buildLibs/common/i18n/en.d.ts +0 -111
- package/buildLibs/common/i18n/index.d.ts +0 -25
- package/buildLibs/common/i18n/zh_CN.d.ts +0 -111
- package/buildLibs/common/i18n_en-BHhFEbi6.js +0 -114
- package/buildLibs/common/i18n_en-BHhFEbi6.js.map +0 -1
- package/buildLibs/common/i18n_en-D-5antzy.cjs +0 -2
- package/buildLibs/common/i18n_en-D-5antzy.cjs.map +0 -1
- package/buildLibs/common/i18n_zh_CN-COzQ8Los.js +0 -114
- package/buildLibs/common/i18n_zh_CN-COzQ8Los.js.map +0 -1
- package/buildLibs/common/i18n_zh_CN-DTZIQXOQ.cjs +0 -2
- package/buildLibs/common/i18n_zh_CN-DTZIQXOQ.cjs.map +0 -1
- package/buildLibs/common/index.cjs +0 -2
- package/buildLibs/common/index.cjs.map +0 -1
- package/buildLibs/common/index.d.ts +0 -10
- package/buildLibs/common/index.js +0 -124
- package/buildLibs/common/index.js.map +0 -1
- package/buildLibs/common/promise-BtoePzHD.cjs +0 -2
- package/buildLibs/common/promise-BtoePzHD.cjs.map +0 -1
- package/buildLibs/common/promise-CPiVqqqL.js +0 -44
- package/buildLibs/common/promise-CPiVqqqL.js.map +0 -1
- package/buildLibs/common/promise.d.ts +0 -14
- package/buildLibs/common/tooltip-De0atcAJ.js +0 -215
- package/buildLibs/common/tooltip-De0atcAJ.js.map +0 -1
- package/buildLibs/common/tooltip-Dj_ol2ax.cjs +0 -2
- package/buildLibs/common/tooltip-Dj_ol2ax.cjs.map +0 -1
- package/buildLibs/common/tooltip.d.ts +0 -37
- package/buildLibs/mobile/index.cjs +0 -56
- package/buildLibs/mobile/index.cjs.map +0 -1
- package/buildLibs/mobile/index.d.ts +0 -47
- package/buildLibs/mobile/index.js +0 -96
- package/buildLibs/mobile/index.js.map +0 -1
- package/buildLibs/resolver/index.cjs +0 -2
- package/buildLibs/resolver/index.cjs.map +0 -1
- package/buildLibs/resolver/index.js +0 -82
- package/buildLibs/resolver/index.js.map +0 -1
- package/buildLibs/resolver/resolver.d.ts +0 -7
- package/buildLibs/utils/Element/ClAnchorNav.cjs +0 -2
- package/buildLibs/utils/Element/ClAnchorNav.cjs.map +0 -1
- package/buildLibs/utils/Element/ClAnchorNav.css +0 -1
- package/buildLibs/utils/Element/ClAnchorNav.d.ts +0 -3
- package/buildLibs/utils/Element/ClAnchorNav.js +0 -55
- package/buildLibs/utils/Element/ClAnchorNav.js.map +0 -1
- package/buildLibs/utils/Element/ClBadge.cjs +0 -2
- package/buildLibs/utils/Element/ClBadge.cjs.map +0 -1
- package/buildLibs/utils/Element/ClBadge.d.ts +0 -3
- package/buildLibs/utils/Element/ClBadge.js +0 -5
- package/buildLibs/utils/Element/ClBadge.js.map +0 -1
- package/buildLibs/utils/Element/ClButton.cjs +0 -2
- package/buildLibs/utils/Element/ClButton.cjs.map +0 -1
- package/buildLibs/utils/Element/ClButton.css +0 -1
- package/buildLibs/utils/Element/ClButton.d.ts +0 -3
- package/buildLibs/utils/Element/ClButton.js +0 -226
- package/buildLibs/utils/Element/ClButton.js.map +0 -1
- package/buildLibs/utils/Element/ClCheckbox.cjs +0 -2
- package/buildLibs/utils/Element/ClCheckbox.cjs.map +0 -1
- package/buildLibs/utils/Element/ClCheckbox.d.ts +0 -3
- package/buildLibs/utils/Element/ClCheckbox.js +0 -205
- package/buildLibs/utils/Element/ClCheckbox.js.map +0 -1
- package/buildLibs/utils/Element/ClCheckboxOne.d.ts +0 -3
- package/buildLibs/utils/Element/ClClipboard.cjs +0 -2
- package/buildLibs/utils/Element/ClClipboard.cjs.map +0 -1
- package/buildLibs/utils/Element/ClClipboard.d.ts +0 -3
- package/buildLibs/utils/Element/ClClipboard.js +0 -5
- package/buildLibs/utils/Element/ClClipboard.js.map +0 -1
- package/buildLibs/utils/Element/ClCountup.cjs +0 -2
- package/buildLibs/utils/Element/ClCountup.cjs.map +0 -1
- package/buildLibs/utils/Element/ClCountup.d.ts +0 -3
- package/buildLibs/utils/Element/ClCountup.js +0 -56
- package/buildLibs/utils/Element/ClCountup.js.map +0 -1
- package/buildLibs/utils/Element/ClCropper.cjs +0 -2
- package/buildLibs/utils/Element/ClCropper.cjs.map +0 -1
- package/buildLibs/utils/Element/ClCropper.d.ts +0 -3
- package/buildLibs/utils/Element/ClCropper.js +0 -5
- package/buildLibs/utils/Element/ClCropper.js.map +0 -1
- package/buildLibs/utils/Element/ClCropperPreview.css +0 -1
- package/buildLibs/utils/Element/ClDarg.cjs +0 -7
- package/buildLibs/utils/Element/ClDarg.cjs.map +0 -1
- package/buildLibs/utils/Element/ClDarg.css +0 -1
- package/buildLibs/utils/Element/ClDarg.d.ts +0 -3
- package/buildLibs/utils/Element/ClDarg.js +0 -1554
- package/buildLibs/utils/Element/ClDarg.js.map +0 -1
- package/buildLibs/utils/Element/ClEllipsis.cjs +0 -2
- package/buildLibs/utils/Element/ClEllipsis.cjs.map +0 -1
- package/buildLibs/utils/Element/ClEllipsis.css +0 -1
- package/buildLibs/utils/Element/ClEllipsis.d.ts +0 -3
- package/buildLibs/utils/Element/ClEllipsis.js +0 -99
- package/buildLibs/utils/Element/ClEllipsis.js.map +0 -1
- package/buildLibs/utils/Element/ClForm.cjs +0 -2
- package/buildLibs/utils/Element/ClForm.cjs.map +0 -1
- package/buildLibs/utils/Element/ClForm.css +0 -1
- package/buildLibs/utils/Element/ClForm.d.ts +0 -3
- package/buildLibs/utils/Element/ClForm.js +0 -139
- package/buildLibs/utils/Element/ClForm.js.map +0 -1
- package/buildLibs/utils/Element/ClFormGroup.cjs +0 -2
- package/buildLibs/utils/Element/ClFormGroup.cjs.map +0 -1
- package/buildLibs/utils/Element/ClFormGroup.css +0 -1
- package/buildLibs/utils/Element/ClFormGroup.d.ts +0 -3
- package/buildLibs/utils/Element/ClFormGroup.js +0 -76
- package/buildLibs/utils/Element/ClFormGroup.js.map +0 -1
- package/buildLibs/utils/Element/ClFormValidate.d.ts +0 -3
- package/buildLibs/utils/Element/ClIconFont.cjs +0 -2
- package/buildLibs/utils/Element/ClIconFont.cjs.map +0 -1
- package/buildLibs/utils/Element/ClIconFont.d.ts +0 -3
- package/buildLibs/utils/Element/ClIconFont.js +0 -5
- package/buildLibs/utils/Element/ClIconFont.js.map +0 -1
- package/buildLibs/utils/Element/ClImage.cjs +0 -2
- package/buildLibs/utils/Element/ClImage.cjs.map +0 -1
- package/buildLibs/utils/Element/ClImage.css +0 -1
- package/buildLibs/utils/Element/ClImage.d.ts +0 -3
- package/buildLibs/utils/Element/ClImage.js +0 -195
- package/buildLibs/utils/Element/ClImage.js.map +0 -1
- package/buildLibs/utils/Element/ClInput.cjs +0 -2
- package/buildLibs/utils/Element/ClInput.cjs.map +0 -1
- package/buildLibs/utils/Element/ClInput.d.ts +0 -3
- package/buildLibs/utils/Element/ClInput.js +0 -5
- package/buildLibs/utils/Element/ClInput.js.map +0 -1
- package/buildLibs/utils/Element/ClInputCaptcha.cjs +0 -2
- package/buildLibs/utils/Element/ClInputCaptcha.cjs.map +0 -1
- package/buildLibs/utils/Element/ClInputCaptcha.css +0 -1
- package/buildLibs/utils/Element/ClInputCaptcha.d.ts +0 -3
- package/buildLibs/utils/Element/ClInputCaptcha.js +0 -111
- package/buildLibs/utils/Element/ClInputCaptcha.js.map +0 -1
- package/buildLibs/utils/Element/ClInputNumber.cjs +0 -2
- package/buildLibs/utils/Element/ClInputNumber.cjs.map +0 -1
- package/buildLibs/utils/Element/ClInputNumber.d.ts +0 -3
- package/buildLibs/utils/Element/ClInputNumber.js +0 -5
- package/buildLibs/utils/Element/ClInputNumber.js.map +0 -1
- package/buildLibs/utils/Element/ClInputSearch.cjs +0 -2
- package/buildLibs/utils/Element/ClInputSearch.cjs.map +0 -1
- package/buildLibs/utils/Element/ClInputSearch.d.ts +0 -3
- package/buildLibs/utils/Element/ClInputSearch.js +0 -5
- package/buildLibs/utils/Element/ClInputSearch.js.map +0 -1
- package/buildLibs/utils/Element/ClInputTag.css +0 -1
- package/buildLibs/utils/Element/ClInputTextarea.cjs +0 -2
- package/buildLibs/utils/Element/ClInputTextarea.cjs.map +0 -1
- package/buildLibs/utils/Element/ClInputTextarea.d.ts +0 -3
- package/buildLibs/utils/Element/ClInputTextarea.js +0 -5
- package/buildLibs/utils/Element/ClInputTextarea.js.map +0 -1
- package/buildLibs/utils/Element/ClInputnumberButton.d.ts +0 -3
- package/buildLibs/utils/Element/ClLink.cjs +0 -2
- package/buildLibs/utils/Element/ClLink.cjs.map +0 -1
- package/buildLibs/utils/Element/ClLink.d.ts +0 -3
- package/buildLibs/utils/Element/ClLink.js +0 -5
- package/buildLibs/utils/Element/ClLink.js.map +0 -1
- package/buildLibs/utils/Element/ClLoad.cjs +0 -2
- package/buildLibs/utils/Element/ClLoad.cjs.map +0 -1
- package/buildLibs/utils/Element/ClLoad.d.ts +0 -3
- package/buildLibs/utils/Element/ClLoad.js +0 -5
- package/buildLibs/utils/Element/ClLoad.js.map +0 -1
- package/buildLibs/utils/Element/ClLoadFullCenter.d.ts +0 -3
- package/buildLibs/utils/Element/ClLoadIng.d.ts +0 -3
- package/buildLibs/utils/Element/ClLoadScreen.cjs +0 -2
- package/buildLibs/utils/Element/ClLoadScreen.cjs.map +0 -1
- package/buildLibs/utils/Element/ClLoadScreen.d.ts +0 -3
- package/buildLibs/utils/Element/ClLoadScreen.js +0 -5
- package/buildLibs/utils/Element/ClLoadScreen.js.map +0 -1
- package/buildLibs/utils/Element/ClLoadWarp.d.ts +0 -3
- package/buildLibs/utils/Element/ClModal.cjs +0 -2
- package/buildLibs/utils/Element/ClModal.cjs.map +0 -1
- package/buildLibs/utils/Element/ClModal.d.ts +0 -3
- package/buildLibs/utils/Element/ClModal.js +0 -5
- package/buildLibs/utils/Element/ClModal.js.map +0 -1
- package/buildLibs/utils/Element/ClProgress.cjs +0 -2
- package/buildLibs/utils/Element/ClProgress.cjs.map +0 -1
- package/buildLibs/utils/Element/ClProgress.css +0 -1
- package/buildLibs/utils/Element/ClProgress.d.ts +0 -3
- package/buildLibs/utils/Element/ClProgress.js +0 -219
- package/buildLibs/utils/Element/ClProgress.js.map +0 -1
- package/buildLibs/utils/Element/ClRadio.cjs +0 -2
- package/buildLibs/utils/Element/ClRadio.cjs.map +0 -1
- package/buildLibs/utils/Element/ClRadio.d.ts +0 -3
- package/buildLibs/utils/Element/ClRadio.js +0 -176
- package/buildLibs/utils/Element/ClRadio.js.map +0 -1
- package/buildLibs/utils/Element/ClRadioOne.d.ts +0 -3
- package/buildLibs/utils/Element/ClSlider.cjs +0 -2
- package/buildLibs/utils/Element/ClSlider.cjs.map +0 -1
- package/buildLibs/utils/Element/ClSlider.css +0 -1
- package/buildLibs/utils/Element/ClSlider.d.ts +0 -3
- package/buildLibs/utils/Element/ClSlider.js +0 -721
- package/buildLibs/utils/Element/ClSlider.js.map +0 -1
- package/buildLibs/utils/Element/ClSwitchery.cjs +0 -2
- package/buildLibs/utils/Element/ClSwitchery.cjs.map +0 -1
- package/buildLibs/utils/Element/ClSwitchery.css +0 -1
- package/buildLibs/utils/Element/ClSwitchery.d.ts +0 -3
- package/buildLibs/utils/Element/ClSwitchery.js +0 -429
- package/buildLibs/utils/Element/ClSwitchery.js.map +0 -1
- package/buildLibs/utils/Element/ClTags.cjs +0 -2
- package/buildLibs/utils/Element/ClTags.cjs.map +0 -1
- package/buildLibs/utils/Element/ClTags.d.ts +0 -3
- package/buildLibs/utils/Element/ClTags.js +0 -5
- package/buildLibs/utils/Element/ClTags.js.map +0 -1
- package/buildLibs/utils/Element/ClTransitionSlideupdown.d.ts +0 -3
- package/buildLibs/utils/Element/ClWaterfall.cjs +0 -2
- package/buildLibs/utils/Element/ClWaterfall.cjs.map +0 -1
- package/buildLibs/utils/Element/ClWaterfall.css +0 -1
- package/buildLibs/utils/Element/ClWaterfall.d.ts +0 -3
- package/buildLibs/utils/Element/ClWaterfall.js +0 -167
- package/buildLibs/utils/Element/ClWaterfall.js.map +0 -1
- package/buildLibs/utils/Element/ClWaterfallImage.d.ts +0 -3
- package/buildLibs/utils/Element/__provide__/Clipboard.cjs +0 -2
- package/buildLibs/utils/Element/__provide__/Clipboard.cjs.map +0 -1
- package/buildLibs/utils/Element/__provide__/Clipboard.d.ts +0 -2
- package/buildLibs/utils/Element/__provide__/Clipboard.js +0 -62
- package/buildLibs/utils/Element/__provide__/Clipboard.js.map +0 -1
- package/buildLibs/utils/Element/__provide__/LoadScreen.cjs +0 -2
- package/buildLibs/utils/Element/__provide__/LoadScreen.cjs.map +0 -1
- package/buildLibs/utils/Element/__provide__/LoadScreen.d.ts +0 -2
- package/buildLibs/utils/Element/__provide__/LoadScreen.js +0 -17
- package/buildLibs/utils/Element/__provide__/LoadScreen.js.map +0 -1
- package/buildLibs/utils/Element/__provide__/languagePack.cjs +0 -2
- package/buildLibs/utils/Element/__provide__/languagePack.cjs.map +0 -1
- package/buildLibs/utils/Element/__provide__/languagePack.d.ts +0 -2
- package/buildLibs/utils/Element/__provide__/languagePack.js +0 -29
- package/buildLibs/utils/Element/__provide__/languagePack.js.map +0 -1
- package/buildLibs/utils/Mobile/ClCell.cjs +0 -2
- package/buildLibs/utils/Mobile/ClCell.cjs.map +0 -1
- package/buildLibs/utils/Mobile/ClCell.css +0 -1
- package/buildLibs/utils/Mobile/ClCell.d.ts +0 -3
- package/buildLibs/utils/Mobile/ClCell.js +0 -130
- package/buildLibs/utils/Mobile/ClCell.js.map +0 -1
- package/buildLibs/utils/Mobile/ClPullToRefresh.cjs +0 -2
- package/buildLibs/utils/Mobile/ClPullToRefresh.cjs.map +0 -1
- package/buildLibs/utils/Mobile/ClPullToRefresh.css +0 -1
- package/buildLibs/utils/Mobile/ClPullToRefresh.d.ts +0 -3
- package/buildLibs/utils/Mobile/ClPullToRefresh.js +0 -195
- package/buildLibs/utils/Mobile/ClPullToRefresh.js.map +0 -1
- package/buildLibs/utils/Shared/Alert.css +0 -1
- package/buildLibs/utils/Shared/Base.css +0 -1
- package/buildLibs/utils/Shared/Base.vue_vue_type_script_setup_true_lang-C_-WLPmH.js +0 -2
- package/buildLibs/utils/Shared/Base.vue_vue_type_script_setup_true_lang-C_-WLPmH.js.map +0 -1
- package/buildLibs/utils/Shared/Base.vue_vue_type_script_setup_true_lang-Duh9tbur.js +0 -354
- package/buildLibs/utils/Shared/Base.vue_vue_type_script_setup_true_lang-Duh9tbur.js.map +0 -1
- package/buildLibs/utils/Shared/BaseTransition.css +0 -1
- package/buildLibs/utils/Shared/BaseTransition.vue_vue_type_script_setup_true_lang-DEXehdBc.js +0 -2
- package/buildLibs/utils/Shared/BaseTransition.vue_vue_type_script_setup_true_lang-DEXehdBc.js.map +0 -1
- package/buildLibs/utils/Shared/BaseTransition.vue_vue_type_script_setup_true_lang-DLAYzSgX.js +0 -121
- package/buildLibs/utils/Shared/BaseTransition.vue_vue_type_script_setup_true_lang-DLAYzSgX.js.map +0 -1
- package/buildLibs/utils/Shared/Highlight.css +0 -1
- package/buildLibs/utils/Shared/Index.css +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-AhjUdZHr.js +0 -233
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-AhjUdZHr.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-B3Jxjv3S.js +0 -75
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-B3Jxjv3S.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BSTGdmJD.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BSTGdmJD.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BWdaQyLA.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BWdaQyLA.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BYmK-TqX.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BYmK-TqX.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-B_jfFc6B.js +0 -143
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-B_jfFc6B.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BjRPiJPA.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BjRPiJPA.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Bv5Aqano.js +0 -24
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Bv5Aqano.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BvGrVSSF.js +0 -1146
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BvGrVSSF.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BxtgFrvB.js +0 -336
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-BxtgFrvB.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C1ANWb2_.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C1ANWb2_.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C4XFCLbD.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C4XFCLbD.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C4rRquU-.js +0 -165
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C4rRquU-.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CIdipm_Z.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CIdipm_Z.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CNa69faz.js +0 -168
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CNa69faz.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CPWxeZzn.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CPWxeZzn.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CVPvV5cZ.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CVPvV5cZ.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CejRfZxl.js +0 -70
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CejRfZxl.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Cjhn8JLr.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Cjhn8JLr.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Cuv5NgcY.js +0 -84
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Cuv5NgcY.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-D5cJAhwe.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-D5cJAhwe.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DKAxas3I.js +0 -98
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DKAxas3I.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DWw1B8Z2.js +0 -342
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DWw1B8Z2.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Da4Z8GsB.js +0 -166
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Da4Z8GsB.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Dd2V82en.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Dd2V82en.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DfYsa_hk.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DfYsa_hk.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DlCXpiu6.js +0 -384
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DlCXpiu6.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DpxHzkjC.js +0 -462
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DpxHzkjC.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Ds2Q0eNQ.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-Ds2Q0eNQ.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DxWcQL_8.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DxWcQL_8.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-HDdyVujM.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-HDdyVujM.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-SO7WBNgE.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-SO7WBNgE.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-_Zu2nb2q.js +0 -593
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-_Zu2nb2q.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-gzy5AIqr.js +0 -54
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-gzy5AIqr.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-inXYfqWx.js +0 -144
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-inXYfqWx.js.map +0 -1
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-p08PZCov.js +0 -2
- package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-p08PZCov.js.map +0 -1
- package/buildLibs/utils/Shared/Index10.css +0 -1
- package/buildLibs/utils/Shared/Index11.css +0 -1
- package/buildLibs/utils/Shared/Index12.css +0 -1
- package/buildLibs/utils/Shared/Index13.css +0 -1
- package/buildLibs/utils/Shared/Index14.css +0 -1
- package/buildLibs/utils/Shared/Index15.css +0 -1
- package/buildLibs/utils/Shared/Index16.css +0 -1
- package/buildLibs/utils/Shared/Index17.css +0 -1
- package/buildLibs/utils/Shared/Index18.css +0 -1
- package/buildLibs/utils/Shared/Index19.css +0 -1
- package/buildLibs/utils/Shared/Index2.css +0 -1
- package/buildLibs/utils/Shared/Index3.css +0 -1
- package/buildLibs/utils/Shared/Index4.css +0 -1
- package/buildLibs/utils/Shared/Index5.css +0 -1
- package/buildLibs/utils/Shared/Index6.css +0 -1
- package/buildLibs/utils/Shared/Index7.css +0 -1
- package/buildLibs/utils/Shared/Index8.css +0 -1
- package/buildLibs/utils/Shared/Index9.css +0 -1
- package/buildLibs/utils/Shared/Ing-C_3NkQxd.js +0 -43
- package/buildLibs/utils/Shared/Ing-C_3NkQxd.js.map +0 -1
- package/buildLibs/utils/Shared/Ing-D_cd5IxY.js +0 -2
- package/buildLibs/utils/Shared/Ing-D_cd5IxY.js.map +0 -1
- package/buildLibs/utils/Shared/Ing.css +0 -1
- package/buildLibs/utils/Shared/List.vue_vue_type_script_setup_true_lang-Dr6PppOP.js +0 -2
- package/buildLibs/utils/Shared/List.vue_vue_type_script_setup_true_lang-Dr6PppOP.js.map +0 -1
- package/buildLibs/utils/Shared/List.vue_vue_type_script_setup_true_lang-DzmylhZ6.js +0 -141
- package/buildLibs/utils/Shared/List.vue_vue_type_script_setup_true_lang-DzmylhZ6.js.map +0 -1
- package/buildLibs/utils/Shared/Notify.css +0 -1
- package/buildLibs/utils/Shared/One.vue_vue_type_script_setup_true_lang-BuNRS-9u.js +0 -87
- package/buildLibs/utils/Shared/One.vue_vue_type_script_setup_true_lang-BuNRS-9u.js.map +0 -1
- package/buildLibs/utils/Shared/One.vue_vue_type_script_setup_true_lang-E9U8wdGT.js +0 -2
- package/buildLibs/utils/Shared/One.vue_vue_type_script_setup_true_lang-E9U8wdGT.js.map +0 -1
- package/buildLibs/utils/Shared/Popup.vue_vue_type_script_setup_true_lang-CbaTn8Yz.js +0 -109
- package/buildLibs/utils/Shared/Popup.vue_vue_type_script_setup_true_lang-CbaTn8Yz.js.map +0 -1
- package/buildLibs/utils/Shared/Popup.vue_vue_type_script_setup_true_lang-D6uynoJZ.js +0 -2
- package/buildLibs/utils/Shared/Popup.vue_vue_type_script_setup_true_lang-D6uynoJZ.js.map +0 -1
- package/buildLibs/utils/Shared/Tooltip.css +0 -1
- package/buildLibs/utils/Shared/Waves.css +0 -7
- package/buildLibs/utils/Shared/_plugin-vue_export-helper-BHFhmbuH.js +0 -2
- package/buildLibs/utils/Shared/_plugin-vue_export-helper-BHFhmbuH.js.map +0 -1
- package/buildLibs/utils/Shared/_plugin-vue_export-helper-CHgC5LLL.js +0 -10
- package/buildLibs/utils/Shared/_plugin-vue_export-helper-CHgC5LLL.js.map +0 -1
- package/buildLibs/utils/Shared/base-PQGakkrl.js +0 -808
- package/buildLibs/utils/Shared/base-PQGakkrl.js.map +0 -1
- package/buildLibs/utils/Shared/base-iCmnU-fv.js +0 -2
- package/buildLibs/utils/Shared/base-iCmnU-fv.js.map +0 -1
- package/buildLibs/utils/Shared/day-Bz9LfelO.js +0 -75
- package/buildLibs/utils/Shared/day-Bz9LfelO.js.map +0 -1
- package/buildLibs/utils/Shared/day-CvcvgKjb.js +0 -2
- package/buildLibs/utils/Shared/day-CvcvgKjb.js.map +0 -1
- package/buildLibs/utils/Shared/drag-CzE5R222.js +0 -2
- package/buildLibs/utils/Shared/drag-CzE5R222.js.map +0 -1
- package/buildLibs/utils/Shared/drag-CzfhSB0g.js +0 -42
- package/buildLibs/utils/Shared/drag-CzfhSB0g.js.map +0 -1
- package/buildLibs/utils/Shared/index-BnerInzC.js +0 -432
- package/buildLibs/utils/Shared/index-BnerInzC.js.map +0 -1
- package/buildLibs/utils/Shared/index-C1R9HAvS.js +0 -320
- package/buildLibs/utils/Shared/index-C1R9HAvS.js.map +0 -1
- package/buildLibs/utils/Shared/index-CVBh8iTg.js +0 -2
- package/buildLibs/utils/Shared/index-CVBh8iTg.js.map +0 -1
- package/buildLibs/utils/Shared/index-Ul6uY51t.js +0 -3
- package/buildLibs/utils/Shared/index-Ul6uY51t.js.map +0 -1
- package/buildLibs/utils/Shared/language-D6gRWx8H.js +0 -2
- package/buildLibs/utils/Shared/language-D6gRWx8H.js.map +0 -1
- package/buildLibs/utils/Shared/language-DxTlvFs2.js +0 -18
- package/buildLibs/utils/Shared/language-DxTlvFs2.js.map +0 -1
- package/buildLibs/utils/Shared/resize-COkswDOq.js +0 -2
- package/buildLibs/utils/Shared/resize-COkswDOq.js.map +0 -1
- package/buildLibs/utils/Shared/resize-kOWxHVSP.js +0 -54
- package/buildLibs/utils/Shared/resize-kOWxHVSP.js.map +0 -1
- package/buildLibs/utils/Shared/vue-virtual-scroller.css +0 -1
- package/buildLibs/utils/Web/ClBreadcrumb.cjs +0 -2
- package/buildLibs/utils/Web/ClBreadcrumb.cjs.map +0 -1
- package/buildLibs/utils/Web/ClBreadcrumb.css +0 -1
- package/buildLibs/utils/Web/ClBreadcrumb.d.ts +0 -3
- package/buildLibs/utils/Web/ClBreadcrumb.js +0 -82
- package/buildLibs/utils/Web/ClBreadcrumb.js.map +0 -1
- package/buildLibs/utils/Web/ClCalendar.cjs +0 -2
- package/buildLibs/utils/Web/ClCalendar.cjs.map +0 -1
- package/buildLibs/utils/Web/ClCalendar.css +0 -1
- package/buildLibs/utils/Web/ClCalendar.d.ts +0 -3
- package/buildLibs/utils/Web/ClCalendar.js +0 -179
- package/buildLibs/utils/Web/ClCalendar.js.map +0 -1
- package/buildLibs/utils/Web/ClCard.cjs +0 -2
- package/buildLibs/utils/Web/ClCard.cjs.map +0 -1
- package/buildLibs/utils/Web/ClCard.d.ts +0 -3
- package/buildLibs/utils/Web/ClCard.js +0 -5
- package/buildLibs/utils/Web/ClCard.js.map +0 -1
- package/buildLibs/utils/Web/ClCardLegend.cjs +0 -2
- package/buildLibs/utils/Web/ClCardLegend.cjs.map +0 -1
- package/buildLibs/utils/Web/ClCardLegend.css +0 -1
- package/buildLibs/utils/Web/ClCardLegend.d.ts +0 -3
- package/buildLibs/utils/Web/ClCardLegend.js +0 -128
- package/buildLibs/utils/Web/ClCardLegend.js.map +0 -1
- package/buildLibs/utils/Web/ClCollapse.cjs +0 -2
- package/buildLibs/utils/Web/ClCollapse.cjs.map +0 -1
- package/buildLibs/utils/Web/ClCollapse.css +0 -1
- package/buildLibs/utils/Web/ClCollapse.d.ts +0 -3
- package/buildLibs/utils/Web/ClCollapse.js +0 -111
- package/buildLibs/utils/Web/ClCollapse.js.map +0 -1
- package/buildLibs/utils/Web/ClColorpicker.cjs +0 -2
- package/buildLibs/utils/Web/ClColorpicker.cjs.map +0 -1
- package/buildLibs/utils/Web/ClColorpicker.css +0 -1
- package/buildLibs/utils/Web/ClColorpicker.d.ts +0 -3
- package/buildLibs/utils/Web/ClColorpicker.js +0 -1130
- package/buildLibs/utils/Web/ClColorpicker.js.map +0 -1
- package/buildLibs/utils/Web/ClCropperPreview.cjs +0 -2
- package/buildLibs/utils/Web/ClCropperPreview.cjs.map +0 -1
- package/buildLibs/utils/Web/ClCropperPreview.d.ts +0 -3
- package/buildLibs/utils/Web/ClCropperPreview.js +0 -175
- package/buildLibs/utils/Web/ClCropperPreview.js.map +0 -1
- package/buildLibs/utils/Web/ClDatetime.cjs +0 -2
- package/buildLibs/utils/Web/ClDatetime.cjs.map +0 -1
- package/buildLibs/utils/Web/ClDatetime.css +0 -1
- package/buildLibs/utils/Web/ClDatetime.d.ts +0 -3
- package/buildLibs/utils/Web/ClDatetime.js +0 -2002
- package/buildLibs/utils/Web/ClDatetime.js.map +0 -1
- package/buildLibs/utils/Web/ClDropdownmenu.cjs +0 -2
- package/buildLibs/utils/Web/ClDropdownmenu.cjs.map +0 -1
- package/buildLibs/utils/Web/ClDropdownmenu.css +0 -1
- package/buildLibs/utils/Web/ClDropdownmenu.d.ts +0 -3
- package/buildLibs/utils/Web/ClDropdownmenu.js +0 -75
- package/buildLibs/utils/Web/ClDropdownmenu.js.map +0 -1
- package/buildLibs/utils/Web/ClDropdownmenuItem.d.ts +0 -3
- package/buildLibs/utils/Web/ClDropdownpopup.cjs +0 -2
- package/buildLibs/utils/Web/ClDropdownpopup.cjs.map +0 -1
- package/buildLibs/utils/Web/ClDropdownpopup.css +0 -1
- package/buildLibs/utils/Web/ClDropdownpopup.d.ts +0 -3
- package/buildLibs/utils/Web/ClDropdownpopup.js +0 -89
- package/buildLibs/utils/Web/ClDropdownpopup.js.map +0 -1
- package/buildLibs/utils/Web/ClEcharts.cjs +0 -2
- package/buildLibs/utils/Web/ClEcharts.cjs.map +0 -1
- package/buildLibs/utils/Web/ClEcharts.css +0 -1
- package/buildLibs/utils/Web/ClEcharts.d.ts +0 -3
- package/buildLibs/utils/Web/ClEcharts.js +0 -297
- package/buildLibs/utils/Web/ClEcharts.js.map +0 -1
- package/buildLibs/utils/Web/ClFileupload.cjs +0 -2
- package/buildLibs/utils/Web/ClFileupload.cjs.map +0 -1
- package/buildLibs/utils/Web/ClFileupload.d.ts +0 -3
- package/buildLibs/utils/Web/ClFileupload.js +0 -5
- package/buildLibs/utils/Web/ClFileupload.js.map +0 -1
- package/buildLibs/utils/Web/ClInputTag.cjs +0 -6
- package/buildLibs/utils/Web/ClInputTag.cjs.map +0 -1
- package/buildLibs/utils/Web/ClInputTag.d.ts +0 -3
- package/buildLibs/utils/Web/ClInputTag.js +0 -854
- package/buildLibs/utils/Web/ClInputTag.js.map +0 -1
- package/buildLibs/utils/Web/ClPaginate.cjs +0 -2
- package/buildLibs/utils/Web/ClPaginate.cjs.map +0 -1
- package/buildLibs/utils/Web/ClPaginate.css +0 -1
- package/buildLibs/utils/Web/ClPaginate.d.ts +0 -3
- package/buildLibs/utils/Web/ClPaginate.js +0 -167
- package/buildLibs/utils/Web/ClPaginate.js.map +0 -1
- package/buildLibs/utils/Web/ClPortlet.cjs +0 -2
- package/buildLibs/utils/Web/ClPortlet.cjs.map +0 -1
- package/buildLibs/utils/Web/ClPortlet.css +0 -1
- package/buildLibs/utils/Web/ClPortlet.d.ts +0 -3
- package/buildLibs/utils/Web/ClPortlet.js +0 -47
- package/buildLibs/utils/Web/ClPortlet.js.map +0 -1
- package/buildLibs/utils/Web/ClPreview.cjs +0 -2
- package/buildLibs/utils/Web/ClPreview.cjs.map +0 -1
- package/buildLibs/utils/Web/ClPreview.js +0 -5
- package/buildLibs/utils/Web/ClPreview.js.map +0 -1
- package/buildLibs/utils/Web/ClPreviewexample.cjs +0 -2
- package/buildLibs/utils/Web/ClPreviewexample.cjs.map +0 -1
- package/buildLibs/utils/Web/ClPreviewexample.d.ts +0 -3
- package/buildLibs/utils/Web/ClPreviewexample.js +0 -5
- package/buildLibs/utils/Web/ClPreviewexample.js.map +0 -1
- package/buildLibs/utils/Web/ClScrollXFence.cjs +0 -2
- package/buildLibs/utils/Web/ClScrollXFence.cjs.map +0 -1
- package/buildLibs/utils/Web/ClScrollXFence.css +0 -1
- package/buildLibs/utils/Web/ClScrollXFence.d.ts +0 -3
- package/buildLibs/utils/Web/ClScrollXFence.js +0 -107
- package/buildLibs/utils/Web/ClScrollXFence.js.map +0 -1
- package/buildLibs/utils/Web/ClSelect.cjs +0 -2
- package/buildLibs/utils/Web/ClSelect.cjs.map +0 -1
- package/buildLibs/utils/Web/ClSelect.d.ts +0 -3
- package/buildLibs/utils/Web/ClSelect.js +0 -5
- package/buildLibs/utils/Web/ClSelect.js.map +0 -1
- package/buildLibs/utils/Web/ClSelectCascade.cjs +0 -2
- package/buildLibs/utils/Web/ClSelectCascade.cjs.map +0 -1
- package/buildLibs/utils/Web/ClSelectCascade.css +0 -1
- package/buildLibs/utils/Web/ClSelectCascade.d.ts +0 -3
- package/buildLibs/utils/Web/ClSelectCascade.js +0 -222
- package/buildLibs/utils/Web/ClSelectCascade.js.map +0 -1
- package/buildLibs/utils/Web/ClSelectTag.cjs +0 -2
- package/buildLibs/utils/Web/ClSelectTag.cjs.map +0 -1
- package/buildLibs/utils/Web/ClSelectTag.css +0 -1
- package/buildLibs/utils/Web/ClSelectTag.d.ts +0 -3
- package/buildLibs/utils/Web/ClSelectTag.js +0 -249
- package/buildLibs/utils/Web/ClSelectTag.js.map +0 -1
- package/buildLibs/utils/Web/ClSelectTree.cjs +0 -2
- package/buildLibs/utils/Web/ClSelectTree.cjs.map +0 -1
- package/buildLibs/utils/Web/ClSelectTree.css +0 -1
- package/buildLibs/utils/Web/ClSelectTree.d.ts +0 -3
- package/buildLibs/utils/Web/ClSelectTree.js +0 -190
- package/buildLibs/utils/Web/ClSelectTree.js.map +0 -1
- package/buildLibs/utils/Web/ClSelectmove.cjs +0 -2
- package/buildLibs/utils/Web/ClSelectmove.cjs.map +0 -1
- package/buildLibs/utils/Web/ClSelectmove.css +0 -1
- package/buildLibs/utils/Web/ClSelectmove.d.ts +0 -3
- package/buildLibs/utils/Web/ClSelectmove.js +0 -1090
- package/buildLibs/utils/Web/ClSelectmove.js.map +0 -1
- package/buildLibs/utils/Web/ClSidemenu.cjs +0 -2
- package/buildLibs/utils/Web/ClSidemenu.cjs.map +0 -1
- package/buildLibs/utils/Web/ClSidemenu.css +0 -1
- package/buildLibs/utils/Web/ClSidemenu.d.ts +0 -3
- package/buildLibs/utils/Web/ClSidemenu.js +0 -190
- package/buildLibs/utils/Web/ClSidemenu.js.map +0 -1
- package/buildLibs/utils/Web/ClTable.cjs +0 -2
- package/buildLibs/utils/Web/ClTable.cjs.map +0 -1
- package/buildLibs/utils/Web/ClTable.css +0 -1
- package/buildLibs/utils/Web/ClTable.d.ts +0 -3
- package/buildLibs/utils/Web/ClTable.js +0 -1914
- package/buildLibs/utils/Web/ClTable.js.map +0 -1
- package/buildLibs/utils/Web/ClTabs.cjs +0 -2
- package/buildLibs/utils/Web/ClTabs.cjs.map +0 -1
- package/buildLibs/utils/Web/ClTabs.css +0 -1
- package/buildLibs/utils/Web/ClTabs.d.ts +0 -3
- package/buildLibs/utils/Web/ClTabs.js +0 -276
- package/buildLibs/utils/Web/ClTabs.js.map +0 -1
- package/buildLibs/utils/Web/ClTree.cjs +0 -2
- package/buildLibs/utils/Web/ClTree.cjs.map +0 -1
- package/buildLibs/utils/Web/ClTree.css +0 -1
- package/buildLibs/utils/Web/ClTree.d.ts +0 -3
- package/buildLibs/utils/Web/ClTree.js +0 -416
- package/buildLibs/utils/Web/ClTree.js.map +0 -1
- package/buildLibs/utils/Web/ClWeekhour.cjs +0 -2
- package/buildLibs/utils/Web/ClWeekhour.cjs.map +0 -1
- package/buildLibs/utils/Web/ClWeekhour.css +0 -1
- package/buildLibs/utils/Web/ClWeekhour.d.ts +0 -3
- package/buildLibs/utils/Web/ClWeekhour.js +0 -679
- package/buildLibs/utils/Web/ClWeekhour.js.map +0 -1
- package/buildLibs/utils/Web/ClXeditable.cjs +0 -2
- package/buildLibs/utils/Web/ClXeditable.cjs.map +0 -1
- package/buildLibs/utils/Web/ClXeditable.css +0 -1
- package/buildLibs/utils/Web/ClXeditable.d.ts +0 -3
- package/buildLibs/utils/Web/ClXeditable.js +0 -593
- package/buildLibs/utils/Web/ClXeditable.js.map +0 -1
- package/buildLibs/utils/Web/__directive__/Highlight.cjs +0 -4
- package/buildLibs/utils/Web/__directive__/Highlight.cjs.map +0 -1
- package/buildLibs/utils/Web/__directive__/Highlight.d.ts +0 -2
- package/buildLibs/utils/Web/__directive__/Highlight.js +0 -3625
- package/buildLibs/utils/Web/__directive__/Highlight.js.map +0 -1
- package/buildLibs/utils/Web/__directive__/Tooltip.cjs +0 -2
- package/buildLibs/utils/Web/__directive__/Tooltip.cjs.map +0 -1
- package/buildLibs/utils/Web/__directive__/Tooltip.d.ts +0 -2
- package/buildLibs/utils/Web/__directive__/Tooltip.js +0 -356
- package/buildLibs/utils/Web/__directive__/Tooltip.js.map +0 -1
- package/buildLibs/utils/Web/__directive__/Waves.cjs +0 -9
- package/buildLibs/utils/Web/__directive__/Waves.cjs.map +0 -1
- package/buildLibs/utils/Web/__directive__/Waves.d.ts +0 -2
- package/buildLibs/utils/Web/__directive__/Waves.js +0 -256
- package/buildLibs/utils/Web/__directive__/Waves.js.map +0 -1
- package/buildLibs/utils/Web/__provide__/Alert.cjs +0 -2
- package/buildLibs/utils/Web/__provide__/Alert.cjs.map +0 -1
- package/buildLibs/utils/Web/__provide__/Alert.d.ts +0 -2
- package/buildLibs/utils/Web/__provide__/Alert.js +0 -236
- package/buildLibs/utils/Web/__provide__/Alert.js.map +0 -1
- package/buildLibs/utils/Web/__provide__/Notify.cjs +0 -2
- package/buildLibs/utils/Web/__provide__/Notify.cjs.map +0 -1
- package/buildLibs/utils/Web/__provide__/Notify.d.ts +0 -2
- package/buildLibs/utils/Web/__provide__/Notify.js +0 -235
- package/buildLibs/utils/Web/__provide__/Notify.js.map +0 -1
- package/buildLibs/utils/Web/__provide__/Preview.cjs +0 -2
- package/buildLibs/utils/Web/__provide__/Preview.cjs.map +0 -1
- package/buildLibs/utils/Web/__provide__/Preview.d.ts +0 -2
- package/buildLibs/utils/Web/__provide__/Preview.js +0 -26
- package/buildLibs/utils/Web/__provide__/Preview.js.map +0 -1
- package/buildLibs/web/index.cjs +0 -97
- package/buildLibs/web/index.cjs.map +0 -1
- package/buildLibs/web/index.d.ts +0 -81
- package/buildLibs/web/index.js +0 -164
- package/buildLibs/web/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/libs/Common/base.ts","../../src/libs/Common/promise.ts","../../src/libs/Common/Element/index.ts","../../src/libs/Element/Input/Index.vue","../../src/libs/Element/Load/RotaryLine.vue","../../src/libs/Element/Load/CircleBubble.vue","../../src/libs/Element/Load/CircleNotch.vue","../../src/libs/Element/Load/BallColor4.vue","../../src/libs/Element/Load/Index.vue","../../src/libs/Web/Waves/waves.js","../../src/libs/Web/Waves/index.ts","../../src/libs/Element/Button/Index.vue","../../src/libs/Element/Link/Index.vue","../../src/libs/Element/IconFont/Index.vue","../../src/libs/Element/Modal/BaseTransition.vue","../../src/libs/Element/Modal/Index.vue","../../src/libs/Element/Load/FullCenter.vue","../../src/libs/Element/Load/Ing.vue","../../src/libs/Element/Load/Warp.vue","../../src/libs/Common/tooltip.ts","../../src/libs/Web/Tooltip/index.ts","../../src/libs/Element/Radio/Index.vue","../../src/libs/Element/Radio/One.vue","../../src/libs/Element/CheckBox/Index.vue","../../src/libs/Element/CheckBox/One.vue","../../src/libs/Element/Badge/Index.vue","../../src/libs/Element/CountUp/Index.vue","../../src/libs/Element/Cropper/Base.vue","../../src/libs/Element/Cropper/Index.vue","../../src/libs/Element/Darg/Sortable.js","../../src/libs/Element/Darg/Index.vue","../../src/libs/Element/Ellipsis/Index.vue","../../src/libs/Common/Tools/delayFun.ts","../../src/libs/Common/Tools/animateEasing.ts","../../src/libs/Element/Form/Index.vue","../../src/libs/Common/day.ts","../../src/libs/Common/i18n/zh_CN.ts","../../src/libs/Common/i18n/en.ts","../../src/libs/Common/i18n/index.ts","../../src/libs/Use/language.ts","../../src/libs/Element/Form/Validate.vue","../../src/libs/Element/LazyImage/lazy.ts","../../src/libs/Element/LazyImage/use.ts","../../src/libs/Element/Image/Index.vue","../../src/libs/Element/InputCaptcha/Index.vue","../../src/libs/Common/Element/Event/drag.ts","../../src/libs/Common/Element/Event/resize.ts","../../src/libs/Element/InputNumber/Button.vue","../../src/libs/Element/InputNumber/Index.vue","../../src/libs/Element/InputSearch/Index.vue","../../src/libs/Element/Transition/SlideUpDown.vue","../../src/libs/Common/axios.ts","../../src/libs/Element/Switchery/Index.vue","../../src/libs/Element/Clipboard/index.ts","../../src/libs/Element/LanguagePack/index.ts","../../src/libs/Mobile/PullToRefresh/Index.vue","../../src/libs/Mobile/Cell/Index.vue","../../src/libs/Element/LoadScreen/Index.vue","../../src/libs/Element/Progress/Index.vue","../../src/libs/Element/Slider/Bar.vue","../../src/libs/Element/Slider/Button.vue","../../src/libs/Element/Slider/Dot.vue","../../src/libs/Element/Slider/Index.vue","../../src/libs/Element/FormGroup/Index.vue","../../src/libs/Element/AnchorNav/Index.vue","../../src/libs/Element/InputTextarea/Index.vue","../../src/libs/Element/Tags/Index.vue","../../src/libs/Element/Waterfall/Index.vue","../../src/libs/Element/Waterfall/Image.vue","../../src/libs/Element/Clipboard/Index.vue","../../src/libs/Element/LoadScreen/index.ts","../../src/libs/Element/componentsInstalls.ts","../../src/libs/Mobile/componentsInstalls.ts","../../src/libs/Mobile/installs.ts"],"sourcesContent":["// Format handler registry — registered by day.ts to avoid circular import\nconst _formatHandlers: Record<string, (value: any, format: string) => any> = {}\n\nexport function registerFormatHandler(type: string, handler: (value: any, format: string) => any) {\n _formatHandlers[type] = handler\n}\n\nclass CommonBase {\n // constructor() {}\n /**\n * 获取 typeof 类型\n * @param value\n * @returns {string}\n */\n static getTypeof(value: any): string {\n return typeof value;\n }\n private static _toStringCall(value: any): string {\n return Object.prototype.toString.call(value);\n }\n\n static isUndefined(value: any): boolean {\n return this.getTypeof(value) === \"undefined\" || value === null;\n }\n\n static isBoolean(value: any): boolean {\n return this.getTypeof(value) === \"boolean\";\n }\n\n static isString(value: any): boolean {\n return this.getTypeof(value) === \"string\";\n }\n\n static isFunction(value: any): boolean {\n return this.getTypeof(value) === \"function\" && this._toStringCall(value) === \"[object Function]\";\n }\n\n static isObject(value: any): boolean {\n return !this.isUndefined(value) && this.getTypeof(value) === \"object\";\n }\n static isBlob(value: any): boolean {\n return this._toStringCall(value) === \"[object Blob]\";\n }\n static isFile(value: any): boolean {\n return this._toStringCall(value) === \"[object File]\";\n }\n\n static isNumber(value: any): boolean {\n let b = false;\n if (this.isString(value)) {\n return (/^(-)?(([1-9]\\d*)|0)(\\.\\d+)?$/).test(value);\n } else if (this.getTypeof(value) === \"number\") {\n b = true;\n }\n return b;\n }\n\n static isInt(value: number): boolean {\n let check = true;\n if (!this.isEmpty(value)) {\n const reg: any = /^[1-9]\\d*$|^0$/;\n check = reg.test(value.toString());\n }\n return check;\n }\n static isHtml(value: string): boolean {\n return (/^<([a-z][a-z0-9]*)\\b[^>]*>(.*?)<\\/\\1>$/i).test(value);\n }\n static isJson(value: any): boolean {\n let check = false;\n if (this.isString(value)) {\n try {\n const obj = JSON.parse(value);\n if (this.isObject(obj)) {\n check = true;\n }\n } catch (e) { }\n } else if (this.isObject(value)) {\n check = true;\n }\n return check;\n }\n\n static isWindow(obj: any): boolean {\n return !this.isUndefined(obj) && obj === obj.window;\n }\n\n private static _isEmptyObject(value: any): boolean {\n return this.isUndefined(value) ? true : Object.keys(value).length === 0;\n }\n\n static isArray(value: any): boolean {\n return Array.isArray(value) && this._toStringCall(value) === \"[object Array]\";\n }\n static isLocationLngLat(value: any) {\n let b = false;\n if (!this.isEmpty(value)) {\n let arr: any;\n if (this.isString(value)) {\n arr = value.split(\",\");\n } else if (this.isArray(value)) {\n arr = value;\n } else {\n arr = [];\n }\n if (arr.length === 2) {\n const lng = arr[0];\n const lat = arr[1];\n const lngRegex = /^-?(180(\\.0+)?|1[0-7]?\\d?(\\.\\d+)?|[1-9]?\\d?(\\.\\d+)?)$/;\n const latRegex = /^-?(90(\\.0+)?|[1-8]?\\d?(\\.\\d+)?)$/;\n b = lngRegex.test(lng) && latRegex.test(lat);\n }\n }\n return b;\n }\n\n static isEmpty(value: any, def?: any): boolean {\n let b = this.isUndefined(value);\n if (!b) {\n const objType: string = this.getTypeof(value);\n if (this.isString(value)) {\n b = this.trim(value).length === 0;\n } else if (this.isArray(value)) {\n b = value.length === 0;\n } else if (objType === \"object\") {\n if (this.isFile(value)) {\n b = false;\n } else {\n b = this._isEmptyObject(value);\n }\n }\n if (!b && !this.isUndefined(def)) {\n let strValue = value;\n if (this.isNumber(value)) {\n strValue = strValue.toString();\n }\n let strDef = def;\n if (this.isNumber(def)) {\n strDef = strDef.toString();\n }\n b = this.isEqual(strValue, strDef);\n }\n }\n return b;\n }\n\n static isEqual(value1: any, value2: any): boolean {\n return Object.is(value1, value2);\n }\n\n static isEqualArr(arr1: any[], arr2: any[], isInOrder = false): boolean {\n let b = false;\n const isEmpty1 = this.isEmpty(arr1);\n const isEmpty2 = this.isEmpty(arr2);\n if (isEmpty1 && isEmpty2) {\n b = true;\n } else {\n if (arr1.length === arr2.length) {\n b = true;\n if (isInOrder) {\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i].toString() !== arr2[i].toString()) {\n b = false;\n break;\n }\n }\n } else {\n const json2 = this.getArrConvertJson(arr2);\n for (let i = 0; i < arr1.length; i++) {\n if (!this.isExistJsonKey(json2, arr1[i].toString())) {\n b = false;\n break;\n }\n }\n }\n } else {\n b = false;\n }\n }\n return b;\n }\n\n static isEqualList(list1: any[], list2: any[], key = [\"id\"]): boolean {\n let b = false;\n const isEmpty1 = this.isEmpty(list1);\n const isEmpty2 = this.isEmpty(list2);\n if (isEmpty1 && isEmpty2) {\n b = true;\n } else {\n if (list1.length === list2.length) {\n const arr1: string[] = list1.map(info1 => {\n return key.map((k) => info1[k].toString()).join(\",\");\n });\n b = true;\n list2.some((info2: any) => {\n const k2 = key.map((k) => info2[k].toString()).join(\",\");\n if (!this.isExistValue(arr1, k2)) {\n b = false;\n return true;\n }\n });\n } else {\n b = false;\n }\n }\n return b;\n }\n\n /**\n * 数组1是否包含数组2\n * @param arr1\n * @param arr2\n */\n static isContainArr(arr1: any[], arr2: any[]): boolean {\n let b = false;\n const isEmpty1 = this.isEmpty(arr1);\n const isEmpty2 = this.isEmpty(arr2);\n if (isEmpty1 && isEmpty2) {\n b = true;\n } else {\n if (arr1.length >= arr2.length) {\n b = true;\n arr2.some((v: string) => {\n if (!this.isExistValue(arr1, v)) {\n b = false;\n return true;\n }\n });\n } else {\n b = false;\n }\n }\n return b;\n }\n\n /**\n * 是否存在 大量循环时误用(慢)\n * @param value\n * @param key\n * @returns\n */\n static isExistValue(value: any, key: string): boolean {\n if (this.isUndefined(value)) {\n return false;\n }\n if (value.includes) {\n return value.includes(key);\n }\n return value.indexOf(key) > -1;\n }\n\n /**\n * 是否存在(专用json)\n * @param json\n * @param key\n * @returns\n */\n static isExistJsonKey(json: any, key: string): boolean {\n if (this.isUndefined(json)) {\n return false;\n }\n return Object.prototype.hasOwnProperty.call(json, key);\n }\n /**\n * 操作系统类型 仅浏览器端使用\n * @returns \n */\n static osType() {\n const ua = navigator.userAgent,\n //isWindowsPhone = /(?:Windows Phone)/.test(ua),\n //isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone,\n isAndroid = /(?:Android)/.test(ua),\n isFireFox = /(?:Firefox)/.test(ua),\n //isChrome = /(?:Chrome|CriOS)/.test(ua),\n isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua)),\n isIOS = /(?:iPhone)/.test(ua) && !isTablet,\n isPc = !isIOS && !isAndroid; //&& !isSymbian;\n return {\n isTablet: isTablet,\n isIOS: isIOS,\n isAndroid: isAndroid,\n isMobile: isIOS || isAndroid,\n isPc: isPc,\n };\n }\n /**\n * 移除空格\n * @param value\n * @returns {string}\n */\n static trim(value: any): any {\n if (this.isUndefined(value)) return value;\n const newValue: string = value.toString();\n if (newValue.trim) {\n return newValue.trim();\n }\n return newValue.replace(/^\\s+|\\s+$/gm, \"\");\n }\n\n static split(str: string, sign = \",\"): string[] {\n let newValue: string[];\n if (this.isEmpty(str)) {\n newValue = [];\n } else {\n let newStr = str;\n if (sign === \",\") {\n newStr = newStr.replace(/,/g, \",\");\n }\n newValue = newStr.toString().split(sign);\n }\n return newValue;\n }\n static kebabCase(value: string): string {\n const result = value.replace(/([A-Z])/g, \" $1\").trim();\n return result.split(\" \").join(\"-\").toLowerCase();\n }\n /**\n * 获取字节长度\n * @param {string} str\n * @returns {number}\n */\n static getByteLen(str: string): number {\n let len = 0;\n for (let i = 0; i < str.length; i += 1) {\n const si = str.charAt(i);\n if (si.match(/[^\\x00-\\xff]/ig) !== null) { // eslint-disable-line\n len += 3;\n } else {\n len += 1;\n }\n }\n return len;\n }\n\n /**\n * 复制json\n * @param json {Object}\n * @returns\n */\n static getJsonClone(json: any, isDeep = false, opt: any = {}): any {\n if (isDeep) {\n return this._getJsonCloneDeep(json, opt);\n } else {\n const exclude = this.isUndefined(opt.exclude) ? [] : opt.exclude;\n if (exclude.length === 0) {\n return this.getJsonMerge(json);\n } else {\n const clone: any = {};\n Object.keys(json).forEach((key: any) => {\n if (!this.isExistValue(exclude, key)) {\n clone[key] = json[key];\n }\n });\n return clone;\n }\n }\n }\n\n /**\n * 复制json 深拷贝\n * @param json\n * @returns\n */\n private static _getJsonCloneDeep(json: any, opt: any = {}): any {\n const newJson: any = this.isArray(json) ? [] : {};\n const exclude = this.isUndefined(opt.exclude) ? [] : opt.exclude;\n Object.keys(json).forEach((key: any) => {\n const isCheckExclude = exclude.length === 0 || !this.isExistValue(exclude, key);\n if (isCheckExclude) {\n const value = json[key];\n if (this.isUndefined(value) || !this.isObject(value)) {\n if (this.isArray(value)) {\n newJson[key] = this.getListClone(value, true);\n } else {\n newJson[key] = value;\n }\n } else {\n newJson[key] = this._getJsonCloneDeep(value);\n }\n }\n });\n return newJson;\n }\n\n static getJsonCloneByKeyArr(sourceJson: any, keyArr: string[]): any {\n const tempFormValue: any = {};\n keyArr.forEach(k => {\n const v = sourceJson[k];\n tempFormValue[k] = this.isUndefined(v)\n ? \"\"\n : (this.isObject(v) ? this.getJsonClone(v) : v);\n });\n return tempFormValue;\n }\n\n static getJsonCloneByKeyJson(sourceJson: any, keyJson: any): any {\n const keyArr: string[] = Object.keys(keyJson);\n return this.getJsonCloneByKeyArr(sourceJson, keyArr);\n }\n\n static getJsonCloneByRemoveArr(sourceJson: any, removeArr: string[]): any {\n const temp: any = {};\n if (removeArr.length === 0) {\n return sourceJson;\n }\n Object.keys(sourceJson).forEach((k) => {\n if (!this.isExistValue(removeArr, k)) {\n temp[k] = sourceJson[k];\n }\n });\n return temp;\n }\n\n static getJsonMerge(...target: any): any {\n return Object.assign({}, ...target);\n }\n static getJsonReversal(json: any): any {\n const newJson: any = {};\n Object.keys(json).forEach((k: string) => {\n newJson[json[k]] = k;\n });\n return newJson;\n }\n\n\n static getJsonMergeDeep(...target: any): any {\n const newJson = {};\n const len = target.length;\n for (let i = 0; i < len; i++) {\n this._mergeJsonDeep(newJson, target[i] || {});\n }\n return newJson;\n }\n\n private static _mergeJsonDeep(json1: any, json2: any) {\n Object.keys(json2).forEach((k: any) => {\n const value = json2[k];\n if (this.isUndefined(value)) {\n json1[k] = value;\n } else {\n if (this.isArray(value)) {\n json1[k] = this.getListClone(value, true);\n } else if (this.isObject(value) && this.isExistJsonKey(json1, k)) {\n this._mergeJsonDeep(json1[k], value);\n } else {\n json1[k] = value;\n }\n }\n });\n }\n\n static getJsonMap(json: any, map: any, isDef = false): any {\n const newJson: any = {};\n if (!this.isEmpty(json) && !this._isEmptyObject(map)) {\n for (const [k, v] of Object.entries(map)) {\n let strValue = (v as string).toString();\n let valueType = \"\";\n if (strValue.indexOf(\"|\") > -1) {\n const arrValue = strValue.split(\"|\");\n strValue = arrValue[0];\n valueType = arrValue[1];\n }\n if (strValue.indexOf(\".\") > -1) {\n const arrTemp: string[] = this.split(strValue, \".\");\n let tempValue: any = this.getJsonClone(json, true);\n arrTemp.forEach((vi: string, i: number) => {\n const tt = tempValue[vi];\n const isE = this.isEmpty(tt);\n if (i === arrTemp.length - 1) {\n if (this.isUndefined(tt)) {\n tempValue = isDef ? \"\" : tt;\n } else {\n if (isE) {\n tempValue = \"\";\n } else {\n if (valueType && valueType.length > 0) {\n tempValue = this.isEmpty(tt) ? \"\" : this.getValueByFormat(tt, valueType);\n } else {\n tempValue = tt;\n }\n }\n }\n } else {\n tempValue = isE ? {} : tt;\n }\n });\n newJson[k] = this.isString(tempValue) ? this.trim(tempValue) : tempValue;\n } else {\n if (this.isExistJsonKey(json, strValue)) {\n const value: any = json[strValue];\n let tempValue;\n if (this.isUndefined(value)) {\n tempValue = isDef ? \"\" : value;\n } else {\n if (valueType && valueType.length > 0) {\n tempValue = this.isEmpty(value) ? \"\" : this.getValueByFormat(value, valueType);\n } else {\n tempValue = value;\n }\n }\n newJson[k] = this.isString(tempValue) ? this.trim(tempValue) : tempValue;\n } else {\n if (isDef) {\n newJson[k] = \"\";\n }\n }\n }\n }\n }\n return newJson;\n }\n\n static getJsonByList(list: any, key?: string, isFormat = false): any {\n const json: any = {};\n if (!this.isEmpty(list)) {\n const newKey = key && !this.isEmpty(key) ? key : \"id\";\n list.forEach((info: any) => {\n let k = \"\";\n if (isFormat) {\n if (key) {\n k = this.convertStringFormat(key, info);\n }\n } else {\n k = this.isExistJsonKey(info, newKey) ? info[newKey].toString() : \"\";\n }\n if (k.length > 0) {\n json[k] = this.getJsonClone(info);\n }\n });\n }\n return json;\n }\n static getJsonByArr(arr: string[]): any {\n const json: any = {};\n if (!this.isEmpty(arr)) {\n arr.forEach((k: string) => {\n json[k] = k;\n });\n }\n return json;\n }\n static getGroupByList(list: any, key: string): any {\n const json: any = {};\n if (!this.isEmpty(list)) {\n list.forEach((info: any) => {\n const k = this.isExistJsonKey(info, key) ? info[key].toString() : \"\";\n if (k.length > 0) {\n if (!this.isExistJsonKey(json, k)) {\n json[k] = [];\n }\n json[k].push(this.getJsonClone(info));\n }\n });\n }\n return json;\n }\n\n static getJsonByBlob(blob: any): any {\n return new Promise((resolve, reject) => {\n const reader: any = new FileReader();\n reader.onload = () => {\n try {\n const json = JSON.parse(reader.result);\n resolve(json);\n } catch (error) {\n reject(error);\n }\n };\n reader.onerror = reject;\n reader.readAsText(blob);\n });\n }\n static getBase64ByFile(files: any): any {\n return new Promise((resolve) => {\n if (files.length > 0) {\n const file = files[0];\n if (file instanceof File) {\n const reader = new FileReader();\n reader.onload = (e: any) => {\n resolve(e.target.result);\n };\n reader.readAsDataURL(file);\n } else {\n resolve(\"\");\n }\n } else {\n resolve(\"\");\n }\n });\n }\n /**\n * 获取list 层级结构\n * @param {any[]} list\n * @returns {any}\n */\n static getTreeList(list: any[]): any {\n let tree: any[] = [];\n const topId: string[] = [];\n // const lastChildId: string[] = [];\n const json: any = {};\n const group: any = {};\n if (!this.isEmpty(list)) {\n list.forEach((info: any) => {\n const id = info.id.toString();\n const pId = info.parentId.toString();\n if (pId === \"0\") {\n topId.push(id);\n }\n json[id] = info;\n\n if (!this.isExistJsonKey(group, pId)) {\n group[pId] = [];\n }\n group[pId].push(info);\n });\n topId.forEach((tId: string) => {\n tree = tree.concat(this._recursionChild(tId, group, json));\n });\n }\n return { tree, group, json, list };\n }\n\n static getTreeLastParent(id: string, json: any, isShowSelf = true): any {\n let list = [];\n if (this.isExistJsonKey(json, id)) {\n list = this._recursionParent(id, json);\n if (!isShowSelf) {\n list.splice(0, 1);\n }\n list.reverse();\n }\n return list;\n }\n\n private static _recursionChild(id: string, group: any, json: any): any[] {\n const list: any[] = [];\n const pInfo: any = this.getJsonClone(json[id]);\n if (this.isExistJsonKey(group, id)) {\n pInfo.list = [];\n const data: any[] = group[id];\n data.forEach((info: any) => {\n const cId = info.id.toString();\n pInfo.list = pInfo.list.concat(this._recursionChild(cId, group, json));\n });\n }\n list.push(pInfo);\n return list;\n }\n\n private static _recursionParent(id: string, json: any): any[] {\n let list: any[] = [];\n if (this.isExistJsonKey(json, id)) {\n const info = json[id];\n const pId = info.parentId.toString();\n list.push(info);\n list = list.concat(this._recursionParent(pId, json));\n }\n return list;\n }\n /**\n * 获取list tree转list\n * @param tree \n * @param opt \n * @returns \n */\n static getListByTree(tree: any, opt: any = {}): any {\n const idKey: string = this.isEmpty(opt.idKey) ? \"id\" : opt.idKey;\n const cKey: string = this.isEmpty(opt.cKey) ? \"list\" : opt.cKey;\n const pKey: string = this.isEmpty(opt.pKey) ? \"parentId\" : opt.pKey;\n const topPV: string = this.isEmpty(opt.topPV) ? \"0\" : opt.topPV;\n const list = this._recursionListByTree(tree, topPV, { idKey, cKey, pKey });\n return list;\n }\n private static _recursionListByTree(tree: any[], pId: string, opt: any): any[] {\n const list: any[] = [];\n tree.forEach((info: any) => {\n const temp = this.getJsonClone(info, false, { exclude: [opt.cKey] });\n temp[opt.pKey] = pId;\n const isUndefinedCKey = this.isUndefined(info[opt.cKey]);\n temp.isLastLevel = isUndefinedCKey;\n list.push(temp);\n if (!isUndefinedCKey) {\n const tempList = this._recursionListByTree(info[opt.cKey], temp[opt.idKey], opt);\n list.push(...tempList);\n }\n });\n return list;\n }\n /**\n * 复制list\n * @param list\n */\n static getListClone(list: any, isDeep = false): any {\n if (this.isEmpty(list)) {\n return [];\n }\n return list.map((info: any) => {\n if (this.isObject(info)) {\n return this.getJsonClone(info, isDeep);\n } else {\n return info;\n }\n });\n }\n\n /**\n * list 合并\n * @param newList 新\n * @param oldList 旧\n * @param key id\n * @returns list\n */\n static getListMergeDeep(newList: any[], oldList: any[], key = \"id\"): any {\n const list: any = [];\n if (newList.length > 0) {\n const oldJson = this.getJsonByList(oldList, key);\n newList.forEach((info: any) => {\n let initJson = {};\n let idKey = info[key];\n if (!this.isEmpty(idKey)) {\n idKey = idKey.toString();\n initJson = this.isExistJsonKey(oldJson, idKey) ? oldJson[idKey] : {};\n }\n const newInfo = this.getJsonMergeDeep(initJson, info);\n list.push(newInfo);\n });\n }\n return list;\n }\n\n static getRecursionParentList(json: any, pId: [string, number], pKey = \"parentId\"): any {\n let result: any = [];\n const strPId = pId.toString();\n if (strPId !== \"0\" && this.isExistJsonKey(json, strPId)) {\n const tempInfo = json[strPId];\n result.push(tempInfo);\n const newStrPid = tempInfo[pKey].toString();\n const tempResult: any = this.getRecursionParentList(json, newStrPid);\n if (!this.isEmpty(tempResult)) {\n result = result.concat(tempResult);\n }\n }\n return result;\n }\n static getListExistValue(list: any, value: string, key = \"id\"): any {\n let newInfo: any;\n let inx = -1;\n if (!this.isEmpty(list)) {\n list.forEach((info: any, i: number) => {\n if (this.isExistJsonKey(info, key)) {\n if (info[key].toString() === value.toString()) {\n newInfo = this.getJsonClone(info);\n inx = i;\n }\n }\n });\n }\n return inx === -1 ? null : { info: newInfo, inx };\n }\n /**\n * 复制数组\n * @param arr\n * @returns {Array}\n */\n static getArrClone(arr: any): any {\n return this.isEmpty(arr) ? [] : arr.map((a: any) => a);\n }\n\n static getArrByList(list: any[], key = \"id\") {\n const arr: any = [];\n if (!this.isEmpty(list)) {\n list.forEach((info: any) => {\n if (this.isExistJsonKey(info, key)) {\n arr.push(info[key]);\n }\n });\n }\n return arr;\n }\n\n\n static getArrRemoveById(arr: any, ids: any): string[] {\n if (this.isEmpty(ids)) {\n return arr;\n }\n const newArr: string[] = [];\n const arrParam = this.isArray(ids) ? ids : this.split(ids.toString());\n const jsonParam = this.getArrConvertJson(arrParam);\n arr.forEach((id: string) => {\n const isExist = this.isExistJsonKey(jsonParam, id.toString());\n if (!isExist) {\n newArr.push(id);\n }\n });\n return newArr;\n }\n\n static getArrByMinMax(min = 1, max: number): number[] {\n const arr: number[] = [];\n for (let i = min; i <= max; i += 1) {\n arr.push(i);\n }\n return arr;\n }\n\n /**\n * 数组去重\n * @param arr \n * @returns \n */\n static getArrUnique(arr: any): any {\n const result = [];\n if (arr.length > 0) {\n const hash: any = {};\n let elem = null;\n for (let i = 0; i < arr.length; i += 1) {\n elem = arr[i];\n if (elem !== null && !hash[elem]) {\n result.push(elem);\n hash[elem] = true;\n }\n }\n }\n return result;\n }\n\n static getArrConvertJson(arr: any[]): any {\n const tempFormValue: any = {};\n arr.forEach(a => {\n tempFormValue[a.toString()] = true;\n });\n return tempFormValue;\n }\n\n // //数组排序\n static getArrAsc(arr: any, type: string): any[] {\n let funAsc;\n switch (type) {\n case \"date\":\n funAsc = (a: any, b: any) => { return Date.parse(a) - Date.parse(b); };\n break;\n case \"number\":\n funAsc = (a: number, b: number) => { return a - b; };\n break;\n default: {\n funAsc = (a: string, b: string) => { return this._arrSortString(a.toString(), b.toString()); };\n }\n }\n return arr.sort(funAsc);\n }\n\n static getArrDesc(arr: any, type: string): any[] {\n let funDesc;\n switch (type) {\n case \"date\":\n funDesc = (a: any, b: any) => { return Date.parse(b) - Date.parse(a); };\n break;\n case \"number\":\n funDesc = (a: number, b: number) => { return b - a; };\n break;\n default: {\n funDesc = (a: string, b: string) => { return this._arrSortString(b.toString(), a.toString()); };\n }\n }\n return arr.sort(funDesc);\n }\n\n private static _arrSortString(s1: string, s2: string): number {\n let res = 0;\n for (let i = 0; ; i++) {\n if (!s1[i] || !s2[i]) {\n res = s1.length - s2.length;\n break;\n }\n const char1 = s1[i];\n const char1Type = this._getChartType(char1);\n const char2 = s2[i];\n const char2Type = this._getChartType(char2);\n // 类型相同的逐个比较字符\n if (char1Type[0] === char2Type[0]) {\n if (char1 === char2) {\n continue;\n } else {\n if (char1Type[0] === \"zh\") {\n res = char1.localeCompare(char2);\n } else if (char1Type[0] === \"en\") {\n res = char1.charCodeAt(0) - char2.charCodeAt(0);\n } else {\n res = (char1 as any) - (char2 as any);\n }\n break;\n }\n } else {\n // 类型不同的,直接用返回的数字相减\n res = char1Type[1] - char2Type[1];\n break;\n }\n }\n return res;\n }\n\n private static _getChartType(char: string): [string, number] {\n // 数字,大写字母,小写字母,中文,其他\n if (/^[0-9]$/.test(char)) {\n return [\"number\", 100];\n }\n if (/^[a-zA-Z]$/.test(char)) {\n return [\"en\", 200];\n }\n if (/^[\\u4e00-\\u9fa5]$/.test(char)) {\n return [\"zh\", 300];\n }\n return [\"others\", 999];\n }\n\n static getZeroCount(len: number): string {\n if (len <= 0) { return \"\"; }\n const zero = [];\n for (let i = 0; i < len; i += 1) {\n zero.push(\"0\");\n }\n return zero.join(\"\");\n }\n\n /** 补全零 */\n static getFillZero(value: any, len = 2, around = \"l\"): string {\n const zero = this.getZeroCount(len);\n const strValue = this.isEmpty(value) ? \"\" : value.toString();\n let temp = \"\";\n let result = \"\";\n if (around === \"l\") {\n temp = zero + strValue;\n result = temp.substring(temp.length - len);\n } else {\n temp = strValue.toString() + zero;\n result = temp.substring(0, len);\n }\n return result;\n }\n\n /**\n * 获取随机数\n * @param {number} len\n * @returns {any}\n */\n static getRandom(len = 3): string {\n const lens = len > 0 ? len : 1;\n let r = Math.random();\n r = Math.ceil(r * (10 ** (lens - 1)));\n return this.getFillZero(r, len, \"r\");\n }\n\n /**\n * 指定范围获取随机数\n * @param {number} min\n * @param {number} max\n * @returns {number}\n */\n static getRandomRange(min: number, max: number, isRound = true): number {\n const range = max - min;\n const rand = Math.random();\n return min + (isRound ? Math.round(range * rand) : (range * rand));\n }\n /**\n * 验证码\n */\n static getCaptcha(len = 6) {\n const digits = \"0123456789\";\n let captcha = \"\";\n for (let i = 0; i < len; i++) {\n captcha += digits.charAt(Math.floor(Math.random() * digits.length));\n }\n return captcha;\n }\n /**\n * 字符串格式化(int float2)\n * @param value\n * @param type num int float float2 float3 date dateTime time string intArray\n */\n static getValueByFormat(value: any, type: string, extInfo: any = {}): string {\n let newValue: any;\n switch (type) {\n case \"num\":\n case \"int\":\n case \"float\":\n case \"float2\":\n case \"float3\":\n case \"number\": {\n if (this.isNumber(value)) {\n if (this.isEmpty(value)) {\n const isEmptyDefault = this.isBoolean(extInfo.isEmptyDefault) ? extInfo.isEmptyDefault : true;\n newValue = isEmptyDefault ? \"0\" : value;\n } else {\n let useValue = value.toString();\n useValue = this.isExistValue(useValue, \",\") ? this.removeReplace(useValue) : useValue;\n if (type === \"number\") {\n newValue = Number(useValue);\n } else {\n let fixedNum = 0;\n if (type === \"num\") {\n fixedNum = this.isExistValue(useValue, \".\") ? 2 : 0;\n } else if (type === \"int\") {\n fixedNum = 0;\n } else if (type === \"float\") {\n if (this.isNumber(extInfo.decimalNum)) {\n fixedNum = parseInt(extInfo.decimalNum);\n }\n } else if (type === \"float2\") {\n fixedNum = 2;\n } else if (type === \"float3\") {\n fixedNum = 3;\n }\n const isRounding = this.isBoolean(extInfo.isRounding) ? extInfo.isRounding : true;\n if (isRounding) {\n newValue = parseFloat(useValue).toFixed(fixedNum);\n } else {\n if (fixedNum > 0) {\n const temp = useValue.split(\".\");\n const len = temp[1].length;\n newValue = temp[0] + \".\" + temp[1].substring(0, len > fixedNum ? fixedNum : len);\n } else {\n newValue = parseInt(useValue).toString();\n }\n }\n newValue = Number(newValue).toFixed(fixedNum);\n const isThousands = this.isBoolean(extInfo.isThousands) ? extInfo.isThousands : true;\n if (isThousands) {\n newValue = this.getFormatThousands(newValue);\n }\n }\n }\n } else {\n newValue = value;\n }\n break;\n }\n case \"date\":\n case \"dateTime\":\n case \"time\": {\n if (this.isEmpty(value)) {\n newValue = value;\n } else {\n let newFormat = \"\";\n if (this.isEmpty(extInfo.dateFormat)) {\n if (type === \"dateTime\") {\n newFormat = \"YYYY-MM-DD HH:mm:ss\";\n } else if (type === \"time\") {\n newFormat = \"HH:mm:ss\";\n } else {\n newFormat = \"YYYY-MM-DD\";\n }\n } else {\n newFormat = extInfo.dateFormat;\n }\n const handler = _formatHandlers[type]\n if (handler) {\n newValue = handler(value, newFormat)\n } else {\n newValue = value\n }\n }\n break;\n }\n case \"string\":\n newValue = value.toString();\n break;\n case \"intArray\":\n newValue = value.split(\",\").map((id: string) => parseInt(id));\n break;\n default:\n newValue = value;\n }\n return newValue;\n }\n\n /**\n * 小时格式\n * @param start 开始\n * @param end 结束\n * @returns 格式: 01:00-02:59\n */\n static getHourInterval(start: any, end: any = \"\"): string {\n const newE = this.isEmpty(end) ? start : end;\n return `${this.getFillZero(start)}:00-${this.getFillZero(newE)}:59`;\n }\n\n /** 转化千分位 */\n static getFormatThousands(value: any): string {\n if (!this.isNumber(value)) {\n return \"\";\n }\n const arrNum = this.split(value.toString(), \".\");\n return arrNum[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, \"$1,\") + (arrNum.length > 1 ? (`.${arrNum[1]}`) : \"\");\n }\n\n /**\n * 指定位 数字加一,位之后零补充\n * @param value 值\n * @param opt inxPos(第几位 默认第二位) isCeil(最后数字是否ceil) isRounding(是否四舍五入,优先isCeil) isEndFive (最后数字是否5/0)\n * @returns\n */\n static getNumCeil(value: any, opt: any = {}): number {\n /* if (inxPos <= 0) {\n return Math.ceil(value);\n } */\n if (!this.isNumber(value)) {\n return 0;\n }\n const numValue = Number(value);\n const isMinus = numValue < 0;\n const absValue = Math.abs(numValue);\n if (absValue === 0) {\n return 0;\n }\n const isLess1 = absValue < 1;\n let zeroLenL = 0;\n let strValue = absValue.toString();\n let indexDot = -1;\n if (isLess1) {\n indexDot = -1;\n if (absValue > 0) {\n const tempLess1 = strValue.split(\".\")[1];\n strValue = Number(tempLess1).toString();\n zeroLenL = tempLess1.length - strValue.length;\n }\n } else {\n zeroLenL = 0;\n indexDot = strValue.indexOf(\".\");\n if (indexDot > -1) {\n strValue = strValue.replace(\".\", \"\");\n }\n }\n\n const isCeil = this.isBoolean(opt.isCeil) ? opt.isCeil : true;\n const inxPos = this.isUndefined(opt.inxPos) ? 2 : parseInt(opt.inxPos);\n const isEndFive = this.isBoolean(opt.isEndFive) ? opt.isEndFive : false;\n const isRounding = this.isBoolean(opt.isRounding) ? opt.isRounding : false;\n\n // 拆分\n let l;\n let r = \"\";\n if (inxPos < strValue.length) {\n l = strValue.substring(0, inxPos);\n r = strValue.substring(inxPos);\n } else {\n l = strValue;\n }\n\n /// 左\n let newL = \"\";\n const strL = isCeil || (isRounding && r.length > 0 && parseInt(r.substring(0, 1)) >= 5)\n ? (parseInt(l) + 1).toString()\n : parseInt(l).toString();\n const lastL = parseInt(strL.substring(strL.length - 1));\n if (isEndFive) {\n // 四舍六入五保留\n if (lastL === 5 || lastL === 0) {\n newL = strL;\n } else {\n const f = parseInt(strL.substring(0, inxPos - 1));\n if (lastL > 5) {\n newL = `${f + 1}0`;\n } else if (lastL < 5) {\n newL = `${f}5`;\n }\n if (strL.length > inxPos && newL.length === inxPos) {\n newL = `${newL}0`;\n }\n }\n } else {\n newL = strL;\n }\n\n /// 右\n let newR = \"\";\n let zeroLenR = 0;\n if (indexDot === -1) {\n zeroLenR = r.length;\n } else {\n if (indexDot < inxPos) {\n zeroLenR = 0;\n newL = (Number(newL) / ((inxPos - indexDot) * 10)).toString();\n } else if (indexDot > inxPos) {\n zeroLenR = indexDot - inxPos;\n }\n }\n newR = this.getZeroCount(zeroLenR);\n\n if (isLess1) {\n const zeroL = this.getZeroCount(zeroLenL);\n newL = `0.${zeroL}${newL}`;\n }\n const newValue = newL + newR;\n\n return Number(newValue) * (isMinus ? -1 : 1);\n }\n\n static removeReplace(value: any, key = \",\") {\n if (this.isUndefined(value)) {\n return \"\";\n }\n const reg = new RegExp(`[${key}]`, \"g\");\n return value.toString().replace(reg, \"\");\n }\n\n /**\n * 转换空为零\n * @param json \n * @param mapKey \n * @param optExt \n * @returns \n */\n static conversionEmptyZero(json: any, mapKey: string[], optExt?: any) {\n const newJson = json;\n if (!this.isEmpty(mapKey)) {\n let defEmpty: any = 0;\n let defUndefined: any = 0;\n if (optExt) {\n let newOptExt: any = {};\n if (this.isString(optExt)) {\n newOptExt.emptyDef = optExt;\n } else if (this.isObject(optExt)) {\n newOptExt = optExt;\n }\n const isEmptyExtUndefinedDef = this.isEmpty(newOptExt.undefinedDef);\n if (!isEmptyExtUndefinedDef) {\n defUndefined = newOptExt.undefinedDef;\n }\n if (!this.isEmpty(newOptExt.emptyDef)) {\n defEmpty = newOptExt.emptyDef;\n if (isEmptyExtUndefinedDef) {\n defUndefined = newOptExt.emptyDef;\n }\n }\n }\n mapKey.forEach((k: string) => {\n if (this.isEmpty(json[k])) {\n if (this.isUndefined(json[k])) {\n newJson[k] = defUndefined;\n } else {\n newJson[k] = defEmpty;\n }\n }\n });\n }\n return newJson;\n }\n /**\n * 转换百分比\n * @param {any} json\n * @param {string[]} mapKey\n */\n static conversionPercentage(json: any, mapKey: string[], isMultiply = true) {\n const newJson = json;\n if (!this.isEmpty(mapKey)) {\n mapKey.forEach((k: string) => {\n const v = json[k];\n if (this.isEmpty(v)) {\n newJson[k] = 0;\n } else {\n if (this.isNumber(v)) {\n newJson[k] = isMultiply\n ? v * 100\n : v / 100;\n } else {\n newJson[k] = v;\n }\n }\n });\n }\n return newJson;\n }\n\n /**\n * 转换格式化的字符串\n * @param {string} strFormat\n * @param {any} json\n * @returns {string}\n */\n static convertStringFormat(strFormat: string, json: any): string {\n let newStr = strFormat;\n if (!this.isEmpty(json)) {\n newStr = strFormat.replace(/[$]{[^}]+}/g, ($1) => {\n const k = $1.replace(\"${\", \"\").replace(\"}\", \"\");\n return this.isExistJsonKey(json, k) ? json[k] : $1;\n });\n }\n return newStr;\n }\n\n static getQueryString(url: string, name: string): string {\n const reg: any = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, \"i\");\n const r: any = url.substring(url.indexOf(\"?\") + 1).match(reg);\n if (r !== null) return decodeURI(r[2]);\n return \"\";\n }\n\n static getQueryStringByHash(name: string): string {\n return this.getQueryString(window.location.hash, name);\n }\n\n static encodeHTML(source: string) {\n return String(source)\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n }\n static removeHTMLTags(str: string) {\n return str.replace(/<[^>]*>/g, \"\");\n }\n\n static requestAnimationFrame(nextCb: any) {\n const rAF = window.requestAnimationFrame\n || (window as any).webkitRequestAnimationFrame\n || (window as any).mozRequestAnimationFrame\n || (window as any).oRequestAnimationFrame\n || (window as any).msRequestAnimationFrame;\n if (rAF) {\n return rAF.call(window, nextCb);\n }\n return window.setTimeout(nextCb, 1000 / 60);\n }\n\n static cancelAnimationFrame(handle: any) {\n const cAF = window.cancelAnimationFrame\n || (window as any).webkitCancelAnimationFrame\n || (window as any).mozCancelAnimationFrame\n || (window as any).oCancelAnimationFrame\n || (window as any).msCancelAnimationFrame;\n if (cAF) {\n cAF.call(window, handle);\n } else {\n window.clearTimeout(handle);\n }\n }\n}\nexport default CommonBase;\n","import CommonBase from \"./base\";\nclass PromiseCommit {\n promise(result: any) {\n return new Promise((resolve) => {\n resolve(result);\n });\n }\n\n promiseFun(callback: any) {\n return new Promise((resolve) => {\n if (callback) {\n callback(resolve);\n }\n });\n }\n\n resolve(result: any) {\n return Promise.resolve(result);\n }\n\n all(promises: any) {\n return Promise.all(promises);\n }\n\n allByJson(promises: { [key: string]: Promise<any> }): Promise<{ result: Record<string, any>; errors: Record<string, any> }> {\n return new Promise((resolve) => {\n if (CommonBase.isEmpty(promises)) {\n return resolve({ result: {}, errors: {} });\n }\n let count = 0;\n const keyArr = Object.keys(promises);\n const keyLen = keyArr.length;\n const result: any = {};\n const errors: any = {};\n const run = (key: string) => {\n Promise.resolve(promises[key]).then(\n (res) => {\n count += 1;\n result[key] = res;\n if (count === keyLen) {\n resolve({ result, errors });\n }\n },\n (err) => {\n count += 1;\n errors[key] = err;\n if (count === keyLen) {\n resolve({ result, errors });\n }\n });\n };\n keyArr.forEach((k) => {\n run(k);\n });\n });\n }\n}\nexport default new PromiseCommit();\n","import CommonBase from \"../base\";\nimport CommonPromise from \"../promise\";\nclass Element {\n _elCanvasTextWidth: any;\n constructor() {\n this._elCanvasTextWidth = null;\n }\n\n private _getArrClassBySplit(cls: string) {\n return cls.split(\" \").filter((c) => !CommonBase.isEmpty(c));\n }\n\n private _getClasssByReal(classs: any[string], exist: any) {\n return classs.filter((cls: string) => !CommonBase.isExistValue(exist, cls) && !CommonBase.isEmpty(cls));\n }\n\n onListener(element: any, eventName: string, eventFun: any, useCapture = false) {\n if (element && eventName && eventFun) {\n element.addEventListener(eventName, eventFun, useCapture);\n }\n }\n\n offListener(element: any, eventName: string, eventFun: any, useCapture = false) {\n if (element && eventName && eventFun) {\n element.removeEventListener(eventName, eventFun, useCapture);\n }\n }\n\n getTextWidth(text: string, font = \"normal 12px Microsoft YaHei\"): number {\n if (!this._elCanvasTextWidth) {\n this._elCanvasTextWidth = document.createElement(\"canvas\");\n }\n const context: any = this._elCanvasTextWidth.getContext(\"2d\");\n context.font = font;\n return context.measureText(text).width;\n }\n\n /** 添加class */\n getAddClass(...classs: any) {\n let result: any = [];\n classs.forEach((cls: any) => {\n if (CommonBase.isString(cls)) {\n const tempCls = this._getArrClassBySplit(cls);\n result = result.concat(this._getClasssByReal(tempCls, result));\n } else if (CommonBase.isArray(cls)) {\n result = result.concat(this._getClasssByReal(cls, result));\n } else if (CommonBase.isObject(cls)) {\n for (const [k, v] of Object.entries(cls)) {\n if (CommonBase.isExistJsonKey(cls, k) && v) {\n result.push(k);\n } else {\n result = result.filter((c: string) => c !== k || (c === k && v));\n }\n }\n }\n });\n return result.join(\" \");\n }\n\n /** 移除class */\n getRemoveClass(classTotal: string, classs: string) {\n const arrRemove: string[] = this._getArrClassBySplit(classs);\n const result: string[] = this._getArrClassBySplit(classTotal).filter((cls) => !CommonBase.isExistValue(arrRemove, cls));\n return result.join(\" \");\n }\n checkHasClass(classTotal: string, className: string) {\n const arrTotal = this._getArrClassBySplit(classTotal);\n const arrCls = this._getArrClassBySplit(className);\n return CommonBase.isContainArr(arrTotal, arrCls);\n }\n\n /** 指定元素距离窗口信息 */\n private _getBoundingClientRect(el: any) {\n const rect = CommonBase.isUndefined(el.getBoundingClientRect) ? {} : el.getBoundingClientRect();\n const box = {\n width: rect.width || 0,\n height: rect.height || 0,\n top: rect.top || 0,\n right: 0,\n bottom: 0,\n left: rect.left || 0,\n x: rect.left || 0,\n y: rect.top || 0,\n };\n const winHeight = this.getWinHeight();\n const winWidth = this.getWinWidth();\n box.right = winWidth - rect.right || 0;\n box.bottom = winHeight - rect.bottom || 0;\n return box;\n }\n\n /* _getWindow(el: any) {\n if (CommonBase.isWindow(el)) {\n return el;\n }\n return el.nodeType === 9 ? (el.defaultView || el.parentWindow) : false;\n } */\n\n private _getWindow(el: any) {\n if (el && el.toString() !== \"[object Window]\") {\n const ownerDocument = el.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n return el;\n }\n\n isElementHtml(el: any) {\n const OwnElement = this._getWindow(el).HTMLElement;\n return el instanceof OwnElement || el instanceof HTMLElement;\n }\n\n isElementBody(el: any) {\n return CommonBase.isUndefined(el)\n ? false\n : this.isElementHtml(el) && el.tagName.toLocaleLowerCase() === \"body\";\n }\n\n getWinScrollTop() {\n return document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset;\n }\n getWinWidth() {\n return document.documentElement.clientWidth || document.body.clientWidth || window.innerWidth;\n }\n getWinHeight() {\n return document.documentElement.clientHeight || document.body.clientHeight || window.innerHeight;\n }\n /**\n * 获取元素的css\n * @param el\n * @returns\n */\n getStyle(el: any) {\n if (window.getComputedStyle) {\n return window.getComputedStyle(el, null);\n }\n return el.currentStyle;\n }\n\n private _isElementScroll(element: any) {\n const sty = this.getStyle(element);\n const overflow = sty.overflow;\n const overflowX = sty.overflowX;\n const overflowY = sty.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n }\n\n isHidden(element: any) {\n const sty = this.getStyle(element);\n const display = sty.display;\n return display === \"none\";\n }\n\n isHiddenParent(element: any) {\n let isHide = false;\n let current = element;\n let isStop = false;\n while (current && current.nodeType !== 9 && !isStop) {\n if (current.nodeType === 1) {\n isStop = this.isHidden(current);\n if (isStop) {\n isHide = true;\n }\n }\n current = current.parentNode;\n }\n return isHide;\n }\n\n /**\n * 获取上级元素,并检查parent包含el且parent非body\n * @param el 指定元素\n * @param parent 指定上级,可为string[#(id),.(class),tagName] || element; 为空时默认el.parentNode\n * @returns parentElement。当检查parentElement为body或者parent不包含el时,返回null\n */\n getParentCheckBody(el: any, parent: any, isCheckContains = true) {\n let newParentEl: any = null;\n if (parent) {\n if (CommonBase.isString(parent)) {\n if (parent.toLocaleLowerCase() !== \"body\") {\n newParentEl = this.getParent(el, parent);\n }\n } else {\n if (!this.isElementBody(parent)) {\n if (isCheckContains) {\n if (parent.contains(el)) {\n newParentEl = parent;\n }\n } else {\n newParentEl = parent;\n }\n }\n }\n } else {\n if (!this.isElementBody(el.parentNode)) {\n newParentEl = el.parentNode;\n }\n }\n return newParentEl;\n }\n\n /**\n * 获取上级元素\n * @param el 指定元素\n * @param parentAttr 指定上级,可为string[#(id),.(class),tagName]; 为空时默认el.parentNode\n * @param elUpperLimit 非必传,设置该参数时,如果在parentAttr参数之前匹配上设置值 则直接返回\n * @param isLimitReturnSelf 截止到elUpperLimit时 未匹配上parentAttr 是否返回 elUpperLimit\n * @returns parentElement\n */\n getParent(el: any, parentAttr: any, elUpperLimit?: any, isLimitReturnSelf = true) {\n const isEmpty: boolean = CommonBase.isEmpty(parentAttr);\n if (isEmpty) {\n return el.parentNode;\n }\n let pEl = null;\n const isLimit = !CommonBase.isUndefined(elUpperLimit);\n const check: any = this._checkElementByAttr(el, parentAttr);\n if (!check) {\n let current = el.parentNode;\n let isStop = false;\n while (current && current.nodeType !== 9 && !isStop) {\n if (current.nodeType === 1) {\n isStop = this._checkElementByAttr(current, parentAttr);\n if (isStop) {\n pEl = current;\n } else {\n if (isLimit) {\n isStop = current === elUpperLimit;\n if (isStop) {\n if (isLimitReturnSelf) {\n pEl = current;\n }\n }\n }\n }\n }\n current = current.parentNode;\n }\n } else {\n pEl = el;\n }\n return pEl;\n }\n\n /**\n * 获取所有上级元素\n * @param el 指定元素\n * @param parentAttr 指定上级,可为string[#(id),.(class),tagName]; 为空时默认el.parentNode\n * @returns list[parentElement]\n */\n getParentList(el: any, parentAttr: any) {\n const newAttr = CommonBase.isEmpty(parentAttr) ? \"body\" : parentAttr;\n return this._recursionParents(el, newAttr);\n }\n\n private _recursionParents(el: any, parentAttr: any): any[] {\n const list: any[] = [];\n if (this._checkElementByAttr(el, parentAttr)) {\n list.push(el);\n } else {\n if (el.parentNode && el.parentElement && !this.isElementBody(el.parentElement)) {\n list.push(el.parentNode);\n const temp = this._recursionParents(el.parentNode, parentAttr);\n list.push(...temp);\n }\n }\n return list;\n }\n\n getParentScrollList(el: any, parentAttr: any, isContainsSelf = true) {\n const scrollList: any[] = [];\n const pList = this.getParentList(el, parentAttr);\n pList.forEach((pEl: any) => {\n if (this._isElementScroll(pEl)) {\n if (isContainsSelf) {\n scrollList.push(pEl);\n } else {\n if (!this._checkElementByAttr(pEl, parentAttr)) {\n scrollList.push(pEl);\n }\n }\n }\n });\n return scrollList;\n }\n\n /**\n * 根据attr检查元素信息\n * @param el\n * @param attr\n * @returns true/false\n */\n private _checkElementByAttr(el: any, attr: any) {\n let check = false;\n if (!CommonBase.isEmpty(attr)) {\n if (CommonBase.isString(attr)) {\n const pre = attr.substr(0, 1);\n const compare = attr.substring(1);\n switch (pre) {\n case \"#\":\n check = el.id === compare;\n break;\n case \".\":\n check = CommonBase.isString(el.className) ? CommonBase.isExistValue(el.className.split(\" \"), compare) : false;\n break;\n default:\n check = el.tagName.toLocaleLowerCase() === attr;\n }\n } else {\n if (this.isElementHtml(attr)) {\n check = el === attr;\n }\n }\n }\n return check;\n }\n\n /**\n * 获取元素到窗体 偏移量\n * @param el 指定元素\n * @param viewEl 指定窗体,为空时默认window\n * @returns json { top,left }\n */\n getOffset(el: any, viewEl: any = null) {\n const box = this.getPositionView(el, viewEl);\n if (box.viewEl) {\n return {\n top: box.top + box.viewEl.scrollTop - box.viewEl.clientTop,\n left: box.left + box.viewEl.scrollLeft - box.viewEl.clientLeft,\n };\n } else {\n const doc = el && el.ownerDocument;\n const docEl = doc.documentElement;\n const winEl = this._getWindow(docEl);\n return {\n top: (box.top + (winEl.pageYOffset || docEl.scrollTop)) - (docEl.clientTop || 0),\n left: (box.left + (winEl.pageXOffset || docEl.scrollLeft)) - (docEl.clientLeft || 0),\n };\n }\n }\n\n /**\n * 获取元素相对指定容器的相对偏移\n * @param el 指定元素\n * @param viewEl 指定容器,为空时默认window\n * @returns json {top,left,viewEl}\n */\n getPositionView(el: any, viewEl: any = null) {\n const box: any = { top: 0, left: 0, viewEl: null };\n if (!this.isElementHtml(el)) {\n return box;\n }\n const tempBox = this._getBoundingClientRect(el);\n box.top = tempBox.top;\n box.right = tempBox.right;\n box.bottom = tempBox.bottom;\n box.left = tempBox.left;\n box.width = tempBox.width;\n box.height = tempBox.height;\n\n const viewBox = { top: 0, right: 0, bottom: 0, left: 0 };\n const newViewEl: any = CommonBase.isUndefined(viewEl) ? null : this.getParentCheckBody(el, viewEl, true);\n if (newViewEl) {\n const tempViewBox: any = this._getBoundingClientRect(newViewEl);\n viewBox.top = tempViewBox.top;\n viewBox.right = tempViewBox.right;\n viewBox.bottom = tempViewBox.bottom;\n viewBox.left = tempViewBox.left;\n box.viewWidth = tempViewBox.width;\n box.viewHeight = tempViewBox.height;\n\n box.top = tempBox.top - (viewBox.top < 0 ? 0 : viewBox.top);\n box.right = tempBox.right - (viewBox.right < 0 ? 0 : viewBox.right);\n box.bottom = tempBox.bottom - (viewBox.bottom < 0 ? 0 : viewBox.bottom);\n box.left = tempBox.left - (viewBox.left < 0 ? 0 : viewBox.left);\n\n box.elViewBox = {\n top: tempBox.top - viewBox.top,\n right: tempBox.right - viewBox.right,\n bottom: tempBox.bottom - viewBox.bottom,\n left: tempBox.left - viewBox.left,\n };\n }\n box.viewEl = newViewEl;\n return box;\n }\n\n /**\n * 获取元素相对指定容器的相对偏移\n * @param el 指定元素\n * @param parentAttr 指定窗体,为空时默认parentNode\n * @returns json\n */\n getPosition(el: any, parentAttr: any = null) {\n const parentEl: any = CommonBase.isUndefined(parentAttr) ? el.parentNode : parentAttr;\n return this.getPositionView(el, parentEl);\n }\n getElementIndex(el: any) {\n const prevAll = this.getPrevAll(el);\n return prevAll.length;\n }\n getPrev(el: any) {\n if (!CommonBase.isUndefined(el.previousElementSibling)) {\n return el.previousElementSibling;\n } else {\n let newEl: any = el.previousSibling;\n while (newEl && newEl.nodeType !== 1) {\n newEl = newEl.previousSibling;\n }\n return newEl;\n }\n\n }\n getPrevAll(el: any) {\n const arrEl: any = [];\n let prevEl: any = this.getPrev(el);\n while (prevEl) {\n arrEl.push(prevEl);\n prevEl = this.getPrev(prevEl);\n }\n return arrEl.reverse();\n }\n getNext(el: any) {\n if (!CommonBase.isUndefined(el.nextElementSibling)) {\n return el.nextElementSibling;\n } else {\n let newEl: any = el.nextSibling;\n while (newEl && newEl.nodeType !== 1) {\n newEl = newEl.nextSibling;\n }\n return newEl;\n }\n }\n\n insertAfter(targetEl: any, newEl: any) {\n const parentEl: any = targetEl.parentNode;\n if (parentEl.lastChild == targetEl) {// eslint-disable-line\n parentEl.appendChild(newEl);\n } else {\n parentEl.insertBefore(newEl, targetEl.nextSibling);\n }\n }\n\n getFocusSelection(targetEl: any) {\n const position: any = {};\n if (CommonBase.isUndefined(targetEl.selectionStart)) {\n targetEl.focus();\n // @ts-ignore\n const select: any = document.selection.createRange();\n position.length = select.text.length;\n select.moveStart(\"character\", -targetEl.value.length);\n position.end = select.text.length;\n position.start = position.end - position.length;\n } else {\n position.start = targetEl.selectionStart;\n position.end = targetEl.selectionEnd;\n position.length = position.end - position.start;\n }\n return position;\n }\n\n setFocusSelection(el: any, start: number, end: number) {\n if (CommonBase.isUndefined(el.selectionStart)) {\n el.focus();\n const r = el.createTextRange();\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n r.select();\n } else {\n el.selectionStart = start;\n el.selectionEnd = end;\n }\n }\n\n /* checkHoverInControl(controlEl, hoverInfo) {\n\n } */\n\n calculationDropdownPosition(controlEl: any, textEl: any, dropDownEl: any, arrowEl: any, containerEl: any) {\n const newContainerEl: any = containerEl ? this.getParentCheckBody(controlEl, containerEl) : null;\n const isAppendWindow = CommonBase.isUndefined(newContainerEl); // 检查是否以窗体为显示容器\n\n const textWidth = textEl.offsetWidth;\n const textHeight = textEl.offsetHeight;\n\n const dropDownWidth = dropDownEl.offsetWidth;\n const dropDownHeight = dropDownEl.offsetHeight;\n\n let arrowWidth = 0;\n let arrowHeight = 0;\n if (!CommonBase.isUndefined(arrowEl)) {\n arrowWidth = arrowEl.offsetWidth;\n arrowHeight = arrowEl.offsetHeight;\n }\n const arrowWidthHalf = (arrowWidth) / 2;\n\n const winHeight = this.getWinHeight();\n const winWidth = this.getWinWidth();\n\n let containerWidth = 0; // 容器 宽度\n let containerHeight = 0; // 容器 高度\n // let containerScrollTop = 0; // 容器 Scroll Top\n let containerScrollWidth = 0; // 容器 Scroll 宽度\n\n let controlOffset: any = { top: 0, left: 0 }; // 组件 位置 top,lef\n let controlPosView: any = { top: 0, left: 0 }; // 组件 相对位置 top,lef\n if (isAppendWindow) {\n containerWidth = winWidth;\n containerHeight = winHeight;\n // containerScrollTop = this.getWinScrollTop();\n containerScrollWidth = containerWidth - document.body.clientWidth;\n\n controlOffset = this.getOffset(controlEl);// boyd位置\n controlPosView = this.getPositionView(controlEl);// 相对window窗口位置\n } else {\n containerWidth = newContainerEl.clientWidth;\n containerHeight = newContainerEl.clientHeight;\n // containerScrollTop = this.getWinScrollTop();\n containerScrollWidth = newContainerEl.offsetWidth - containerWidth;\n\n controlOffset = this.getOffset(controlEl, newContainerEl);// 距containerEl位置\n controlPosView = this.getPositionView(controlEl, newContainerEl);// 相对controlEl窗口位置\n }\n\n const controlViewTop = controlPosView.top; /// 组件到窗体顶部的距离\n const controlDropDownTotalWidth = dropDownWidth + arrowWidth; // dropDown加箭头的总宽度\n const controlDropDownTotalHeight = dropDownHeight + arrowHeight; // dropDown加箭头的总高度\n const controlTotalHeight = textHeight + controlDropDownTotalHeight; /// 组件加dropDown加箭头的总高度\n\n const json: any = {\n winWidth,\n winHeight,\n containerWidth,\n containerHeight,\n controlOffset,\n controlPosView,\n textWidth,\n textHeight,\n dropDownWidth,\n dropDownHeight,\n arrowWidth,\n arrowHeight,\n };\n\n let posDown = \"down\";\n if (controlViewTop + controlTotalHeight > containerHeight) { /// 总体高度超过容器高度\n if (controlViewTop > controlDropDownTotalHeight) { /// 组件到视图顶部的距离大于dropDown高度\n posDown = \"up\";\n } else {\n if (controlOffset.top > controlDropDownTotalHeight) { /// 组件到顶部的距离大于dropDown高度\n posDown = \"up\";\n }\n }\n }\n json.dropDownPosDown = posDown;\n\n let posUp = \"up\";\n if (controlViewTop < controlDropDownTotalHeight) { /// 组件到视图顶部的距离小于dropDown高度\n if (controlOffset.top < controlDropDownTotalHeight) {\n posUp = \"down\";\n }\n }\n json.dropDownPosUp = posUp;\n\n let posLeft = \"left\";\n if (controlPosView.left < controlDropDownTotalWidth) { /// 组件到视图左侧的距离小于dropDown宽度时\n if (controlOffset.right >= controlDropDownTotalHeight) {\n posLeft = \"right\";\n }\n }\n json.dropDownPosLeft = posLeft;\n\n const posRight = \"right\";\n if (controlPosView.right < controlDropDownTotalWidth) { /// 组件到视图右侧的距离小于dropDown宽度时\n if (controlOffset.left >= controlDropDownTotalHeight) {\n posLeft = \"left\";\n }\n }\n json.dropDownPosRight = posRight;\n\n\n /// arrow left / right / center\n let arrowPosLeft = \"left\";\n if (containerWidth - controlOffset.left < dropDownWidth) {\n arrowPosLeft = controlOffset.left + textWidth >= dropDownWidth ? \"right\" : \"left\";\n }\n json.arrowPosLeft = arrowPosLeft;\n\n let arrowPosRight = \"right\";\n if (controlOffset.left + textWidth < dropDownWidth) {\n arrowPosRight = containerWidth - controlOffset.left >= dropDownWidth ? \"left\" : \"right\";\n }\n json.arrowPosRight = arrowPosRight;\n\n // 居中时,计算dropDown和arrow偏移量 \n let arrowPosCenterLR = \"center\";\n if ((controlOffset.left + textWidth) < (dropDownWidth / 2 - textWidth / 2)) {\n arrowPosCenterLR = controlOffset.left > (dropDownWidth / 2 - textWidth / 2) ? \"right\" : \"left\";\n }\n json.arrowPosCenterLR = arrowPosCenterLR;\n\n const arrowPosCenterLRInfo = {\n dropDownLeft: 0,\n arrowLeft: 0,\n };\n const textOffset = this.getOffset(textEl);\n const textOffsetControl = this.getOffset(textEl, controlEl);\n const textWidthHalf = textWidth / 2;\n const textOffsetLeft = textOffset.left - 5; // 5px 不靠边\n const textOffsetRight = containerWidth - textOffsetLeft - textWidth - 10 - (containerScrollWidth); // 不靠边 滚动条\n\n //const centerDropDownLeft = dropDownWidth / 2 - textWidthHalf;\n const centerDropDownLeft = dropDownEl.clientWidth / 2 - textWidthHalf;\n\n const centerDiffLeft = centerDropDownLeft - textOffsetLeft;\n const centerDiffRight = centerDropDownLeft - textOffsetRight;\n\n if (centerDiffLeft <= 0 && centerDiffRight <= 0) {\n arrowPosCenterLRInfo.dropDownLeft = (centerDropDownLeft - textOffsetControl.left) * -1;\n arrowPosCenterLRInfo.arrowLeft = centerDropDownLeft + textWidthHalf - arrowWidthHalf - 1;\n } else {\n if (centerDiffLeft > 0) {\n arrowPosCenterLRInfo.dropDownLeft = textOffsetLeft * -1;\n arrowPosCenterLRInfo.arrowLeft = textOffsetLeft + textWidthHalf - arrowWidthHalf;\n } else if (centerDiffRight > 0) {\n arrowPosCenterLRInfo.dropDownLeft = (centerDropDownLeft + centerDiffRight) * -1;\n arrowPosCenterLRInfo.arrowLeft = centerDropDownLeft + centerDiffRight + textWidthHalf - arrowWidthHalf;\n }\n }\n json.arrowPosCenterLRInfo = arrowPosCenterLRInfo;\n\n /// arrow top / bottom / center\n //const arrowPosTop = \"top\";\n /* if (containerHeight - controlViewTop) {\n\n }\n\n if (containerWidth - controlOffset.left < dropDownWidth) {\n arrowPosTop = controlOffset.left + textWidth >= dropDownWidth ? \"right\" : \"left\";\n } */\n //// todo\n json.arrowPosTop = \"top\";\n json.arrowPosBottom = \"bottom\";\n json.arrowPosCenterTB = \"center\";\n /* let posDown = \"down\";\n if (controlViewTop + controlTotalHeight > containerHeight) { /// 总体高度超过容器高度\n if (controlViewTop > controlDropDownTotalHeight) { /// 组件到视图顶部的距离大于dropDown高度\n posDown = \"up\";\n } else {\n if (controlOffset.top > controlDropDownTotalHeight) { /// 组件到顶部的距离大于dropDown高度\n posDown = \"up\";\n }\n }\n }\n json.dropDownPosDown = posDown; */\n\n\n return json;\n }\n\n getElementData(json: any) {\n const data: any = {};\n if (!CommonBase.isEmpty(json)) {\n for (const [k, v] of Object.entries(json)) {\n const temp = k.split(\"-\");\n const arr: string[] = [];\n temp.forEach((n: string, i: number) => {\n if (i > 0) {\n const newKey = n.toLowerCase();\n if (i === 1) {\n arr.push(newKey);\n } else {\n arr.push(newKey.replace(newKey[0], newKey[0].toUpperCase()));\n }\n }\n });\n if (arr.length > 0) {\n data[arr.join(\"\")] = v;\n }\n }\n }\n return data;\n }\n async getTextDataByFile(files: any) {\n const list: any = [];\n if (!CommonBase.isEmpty(files)) {\n for (let fi = 0; fi < files.length; fi++) {\n const listOne: any = await this._getTextDataFileOne(files[fi]);\n list.push(...listOne);\n }\n }\n return list;\n }\n private _getTextDataFileOne(file: any) {\n return CommonPromise.promiseFun((resolve: any) => {\n const reader = new FileReader();\n reader.readAsText(file, \"utf-8\");\n reader.onload = (e: any) => {\n const list: string[] = [];\n e.target.result.split(\"\\n\").forEach((t: string) => {\n const newTxt = CommonBase.trim(t);\n if (!CommonBase.isEmpty(newTxt)) {\n list.push(newTxt);\n }\n });\n resolve(list);\n };\n });\n }\n\n getClientXY(e: Event | MouseEvent | TouchEvent) {\n let clientX: number;\n let clientY: number;\n if (e.type === \"touchend\") {\n clientY = (e as TouchEvent).changedTouches[0].clientY;\n clientX = (e as TouchEvent).changedTouches[0].clientX;\n } else if (e.type.startsWith(\"touch\")) {\n clientY = (e as TouchEvent).touches[0].clientY;\n clientX = (e as TouchEvent).touches[0].clientX;\n } else {\n clientY = (e as MouseEvent).clientY;\n clientX = (e as MouseEvent).clientX;\n }\n return {\n clientX,\n clientY,\n };\n }\n}\nexport default new Element();\n","<template>\n <div :class=\"clsParent\" :style=\"styParent\">\n <div :class=\"clsGroup\">\n <div v-if=\"optIsGroupPrepend\" class=\"input-group-prepend\"><span class=\"input-group-text\">\n <slot name=\"prepend\"></slot>\n </span>\n </div>\n <div :class=\"clsContainer\">\n <input ref=\"refElInput\" :type=\"optInputType\" :name=\"optElName\" class=\"form-control container-border\"\n autocomplete=\"off\" v-model=\"optTextValue\" :placeholder=\"placeholder\" :disabled=\"disabled\"\n :readonly=\"isReadonly\" @input=\"onInputText\" @keydown=\"onKeydown\" @keyup=\"onKeyup\"\n @focus=\"onInputFocus\" @blur=\"onInputBlur\" />\n <i v-if=\"optIsShowClean\" class=\"input-clear-icon clIconFont clIcon-close-circle-fill\"\n @click.stop=\"onClear\"></i>\n <i v-if=\"isPassword\" :class=\"clsPasswordIcon\" @click=\"onShowPasswordValue\"></i>\n </div>\n <div v-if=\"optIsGroupAppend\" class=\"input-group-append\"><span class=\"input-group-text\">\n <slot name=\"append\"></slot>\n </span>\n </div>\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport './Index.css'\nimport '../../CommonCss/Input.css'\nimport { watch, nextTick, onMounted, computed, ref, useSlots } from \"vue\";\nimport CommonBase from \"../../Common/base\";\nimport CommonElement from \"../../Common/Element/index\";\n\ndefineOptions({\n name: 'ClInput'\n})\n\nconst props = defineProps({\n theme: {\n type: String,\n default: 'default',\n validator: (value: string) => {\n return ['default', 'icon', 'bottomLine'].indexOf(value) !== -1\n }\n },\n value: {\n type: [String, Number],\n default: ''\n },\n inputType: {\n type: String,\n default: ''\n },\n className: {\n type: String,\n default: ''\n },\n width: {\n type: String,\n default: ''\n },\n name: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n isReadonly: {\n type: Boolean,\n default: false\n },\n isClean: {\n type: Boolean,\n default: true\n },\n isNumber: {\n type: Boolean,\n default: false\n },\n decimal: {\n type: Number,\n default: 0\n },\n isThousand: {\n type: Boolean,\n default: true\n },\n isImmediateThousand: {\n type: Boolean,\n default: true\n },\n isPassword: {\n type: Boolean,\n default: false\n },\n changDelayTime: {\n type: Number,\n default: 200\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update:value', value: any): void\n (e: 'onChange', value: any): void\n (e: 'onFocus', value: any): void\n (e: 'onBlur', value: any): void\n (e: 'onChangeBlur', value: any): void\n (e: 'onKeyupEnter', value: any): void\n (e: 'onClear'): void\n (e: 'onInit'): void\n (e: 'onKeydown', event: any): void\n (e: 'onKeyup', event: any): void\n (e: 'onChangeDelay', value: string): void\n}>()\n\nconst slots = useSlots()\n\nconst refElInput = ref<HTMLInputElement | null>(null)\n\nconst optIsFocusIng = ref(false)\nconst optIsShowPassword = ref(false)\nconst optTextValue = ref(props.value)\nconst optLastValueChange = ref(props.value)\nconst optLastValueFocus = ref(props.value)\nconst _pageData = {\n prevDelayValue: props.value,\n valueDelayRun: false,\n}\n\nconst optInputType = computed(() => {\n let temp = \"text\"\n const { inputType, isNumber, isPassword } = props\n if (inputType) {\n temp = inputType\n } else {\n if (isNumber) {\n } else if (isPassword) {\n temp = optIsShowPassword.value ? \"text\" : \"password\"\n }\n }\n return temp\n})\n\nconst optElName = computed(() => {\n let name = props.name\n if (CommonBase.isEmpty(name)) {\n name = `input_${CommonBase.getRandom(8)}`\n }\n return name\n})\n\nconst optIsGroupPrepend = computed(() => {\n return !CommonBase.isUndefined(slots.prepend)\n})\n\nconst optIsGroupAppend = computed(() => {\n return !CommonBase.isUndefined(slots.append)\n})\n\nconst optIsShowClean = computed(() => {\n return props.isClean && !props.disabled && !CommonBase.isEmpty(optTextValue.value)\n})\n\nconst clsParent = computed(() => {\n const clsTemp: any = {\n \"panel-input\": true,\n \"box-width\": true,\n \"input-disabled\": props.disabled,\n \"input-readonly\": props.isReadonly,\n }\n if (props.className&&!CommonBase.isEmpty(props.className)) {\n props.className.split(\" \").forEach((cls: string) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n\n if (!CommonBase.isEmpty(props.theme, \"default\")) {\n clsTemp[`input-${props.theme}`] = true\n }\n return clsTemp\n})\n\nconst styParent = computed(() => {\n const sty: any = {}\n if (!CommonBase.isEmpty(props.width)) {\n sty.width = props.width\n }\n return sty\n})\n\nconst clsContainer = computed(() => {\n const cls = {\n \"input-container\": true,\n \"input-clean\": props.isClean,\n \"input-password\": props.isPassword,\n }\n return cls\n})\n\nconst clsGroup = computed(() => {\n const cls: any = {}\n if (optIsGroupPrepend.value || optIsGroupAppend.value) {\n cls[\"input-group\"] = true\n cls[\"input-group-focus\"] = optIsFocusIng.value\n }\n cls[\"input-valueEntry\"] = !CommonBase.isEmpty(optTextValue.value)\n return cls\n})\n\nconst clsPasswordIcon = computed(() => {\n return {\n \"input-password-icon\": true,\n clIconFont: true,\n \"clIcon-eye-no\": !optIsShowPassword.value,\n \"clIcon-eye\": optIsShowPassword.value,\n }\n})\n\nlet _valueTimerDelay: any\nconst _emitChangeDelay = (value: string) => {\n if (_valueTimerDelay) {\n clearTimeout(_valueTimerDelay)\n _valueTimerDelay = null\n }\n _pageData.valueDelayRun = true\n _valueTimerDelay = setTimeout(() => {\n _pageData.valueDelayRun = false\n if (_pageData.prevDelayValue !== value) {\n _pageData.prevDelayValue = value\n emit(\"onChangeDelay\", value)\n }\n }, props.changDelayTime)\n}\n\nconst _emitChange = (value: string) => {\n if (value !== optLastValueChange.value) {\n optLastValueChange.value = value\n const useValue = _convertUseValue(value)\n emit(\"update:value\", useValue)\n emit(\"onChange\", useValue)\n _emitChangeDelay(useValue)\n }\n}\n\nconst _emitFocus = (value: any) => {\n optIsFocusIng.value = true\n optLastValueFocus.value = value\n emit(\"onFocus\", value)\n}\n\nconst _emitBlur = (value: any) => {\n optIsFocusIng.value = false\n emit(\"onBlur\", value)\n if (value !== optLastValueFocus.value) {\n optLastValueFocus.value = value\n emit(\"onChangeBlur\", value)\n }\n}\n\nconst _emitKeyupEnter = (value: any) => {\n emit(\"onKeyupEnter\", value)\n}\n\nconst _emitKeydown = (e: any) => {\n emit(\"onKeydown\", e)\n}\n\nconst _emitKeyup = (e: any) => {\n emit(\"onKeyup\", e)\n}\n\nconst _emitClear = () => {\n emit(\"onClear\")\n}\n\nconst _emitInit = () => {\n nextTick(() => {\n emit(\"onInit\")\n })\n}\n\nconst _checkValueNumber = (value: string) => {\n let check = CommonBase.isNumber(value)\n if (!check) {\n if ((+value).toString() !== \"NaN\") {\n const arrNum = value.split(\".\")\n if (arrNum.length === 2) {\n check = CommonBase.isNumber(arrNum[0]) && (CommonBase.isEmpty(arrNum[1]) || CommonBase.isNumber(arrNum[1]))\n }\n } else if (value === \"-\") {\n check = true\n }\n }\n return check\n}\n\nconst _convertValue = (value: any, prevValue: any, isTofixed = true, isThousand = true) => {\n let newValue = value\n if (props.isNumber) {\n let tempValue = CommonBase.removeReplace(value)\n if (tempValue.length > 0) {\n const check = _checkValueNumber(tempValue)\n if (check) {\n if (isThousand) {\n if (tempValue !== \"-\") {\n const { decimal } = props\n if (isTofixed && decimal !== 0) {\n tempValue =\n decimal === -1\n ? parseFloat(tempValue).toString()\n : parseFloat(tempValue).toFixed(decimal)\n }\n const arrNum = tempValue.split(\".\")\n if (arrNum.length > 0) {\n tempValue = props.isThousand ? CommonBase.getFormatThousands(arrNum[0]) : arrNum[0]\n }\n\n if (arrNum.length === 2 && decimal !== 0) {\n const decimalValue = decimal === -1 ? arrNum[1] : arrNum[1].substr(0, decimal)\n tempValue += `.${decimalValue}`\n }\n }\n }\n } else {\n tempValue = prevValue\n }\n } else {\n tempValue = \"\"\n }\n newValue = tempValue\n }\n return newValue\n}\n\nconst _getFocusIndexByLeftValue = (showValue: string, leftValue: string) => {\n const arrLeft = leftValue.split(\"\")\n const regLeft = new RegExp(`^${arrLeft.join(\".*?\")}`)\n const newLeft: any = showValue.match(regLeft)\n let focusIdx\n if (!CommonBase.isUndefined(newLeft)) {\n focusIdx = newLeft[0].length\n }\n return focusIdx\n}\n\nconst _setFocusSelection = (el: any, inputValue: string, showValue: string) => {\n const focusInfo = CommonElement.getFocusSelection(el)\n let inputValueLeft = inputValue.substring(0, focusInfo.start)\n inputValueLeft = CommonBase.removeReplace(inputValueLeft)\n const inputValueRight = inputValue.substring(focusInfo.start)\n let checkLeftNum = _checkValueNumber(inputValueLeft)\n if (inputValueLeft.indexOf(\".\") > -1 && inputValueRight.indexOf(\".\") > -1) {\n checkLeftNum = false\n }\n let focusIdx = focusInfo.start\n if (checkLeftNum) {\n focusIdx = _getFocusIndexByLeftValue(showValue, inputValueLeft)\n } else {\n focusIdx = showValue.lastIndexOf(inputValueRight)\n }\n if (CommonBase.isUndefined(focusIdx) || focusIdx > showValue.length) {\n focusIdx = showValue.length\n }\n nextTick(() => {\n CommonElement.setFocusSelection(el, focusIdx, focusIdx)\n })\n}\n\nconst _getTextValue = () => {\n const textValue = optTextValue.value\n if (textValue && !CommonBase.isEmpty(textValue)) {\n let newTextValue: any = textValue.toString()\n if (props.isNumber) {\n const { decimal } = props\n newTextValue = CommonBase.removeReplace(newTextValue)\n\n if (decimal !== 0) {\n newTextValue =\n decimal === -1\n ? parseFloat(newTextValue).toString()\n : parseFloat(newTextValue).toFixed(decimal)\n }\n const arrNum: string[] = newTextValue.split(\".\")\n if (arrNum.length > 0) {\n arrNum[0] = props.isThousand ? CommonBase.getFormatThousands(arrNum[0]) : arrNum[0]\n }\n if (decimal === 0) {\n newTextValue = arrNum[0]\n } else {\n if (arrNum.length === 2) {\n arrNum[1] = decimal === -1 ? arrNum[1] : CommonBase.getFillZero(arrNum[1], decimal, \"r\")\n newTextValue = arrNum.join(\".\")\n } else {\n newTextValue = arrNum[0]\n }\n }\n }\n return newTextValue\n } else {\n return textValue\n }\n}\n\nconst _convertUseValue = (value: any) => {\n let newUserValue = \"\"\n if (!CommonBase.isEmpty(value)) {\n newUserValue = value.toString()\n if (props.isNumber) {\n if (newUserValue !== \"-\") {\n const { decimal } = props\n const arrNum = newUserValue.split(\".\")\n let tempValue = \"\"\n if (arrNum.length > 0) {\n tempValue = CommonBase.removeReplace(arrNum[0])\n }\n if (arrNum.length === 2 && decimal !== 0) {\n let decimalValue = \"\"\n if (decimal === -1) {\n decimalValue = arrNum[1]\n } else {\n decimalValue = arrNum.length === 2 ? arrNum[1] : \"\"\n decimalValue = CommonBase.getFillZero(decimalValue, decimal, \"r\")\n }\n tempValue += `.${decimalValue}`\n }\n newUserValue = tempValue\n }\n }\n }\n return newUserValue\n}\n\nconst _focus = () => {\n refElInput.value?.focus()\n}\n\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue && newValue !== optTextValue.value) {\n let isRun = true\n if (props.isNumber) {\n const tempNewValue = CommonBase.removeReplace(newValue)\n const tempTextValue = CommonBase.removeReplace(optTextValue.value)\n const isEmptyNew = CommonBase.isEmpty(tempNewValue)\n const isEmptyText = CommonBase.isEmpty(tempTextValue)\n if (isEmptyNew && isEmptyText) {\n isRun = false\n } else {\n if (!isEmptyNew && !isEmptyText) {\n isRun = Number(tempNewValue) !== Number(tempTextValue)\n }\n }\n }\n if (isRun) {\n const value = _convertValue(newValue, oldValue)\n optTextValue.value = value\n optLastValueChange.value = value\n if (!_pageData.valueDelayRun) {\n _pageData.prevDelayValue = newValue\n }\n }\n }\n },\n)\n\nwatch([() => props.isNumber, () => props.decimal, () => props.isThousand], () => {\n const newShowText = _convertValue(optTextValue.value, \"\")\n optTextValue.value = newShowText\n _emitChange(newShowText)\n})\n\nconst _initMain = () => {\n if (!CommonBase.isEmpty(props.value)) {\n const v = _convertValue(props.value, props.value)\n optTextValue.value = v\n optLastValueChange.value = v\n }\n _emitInit()\n}\n\nonMounted(() => {\n _initMain()\n})\n\nconst onInputText = (e: any) => {\n const value = e.target.value\n const newValue = _convertValue(value, optLastValueChange.value, false, props.isImmediateThousand)\n if (props.isNumber) {\n optTextValue.value = newValue\n _setFocusSelection(e.target, value, newValue)\n }\n _emitChange(newValue)\n}\n\nconst onKeydown = (e: any) => {\n _emitKeydown(e)\n}\n\nconst onKeyup = (e: any) => {\n e.preventDefault()\n e.stopPropagation()\n const keyCode = e.keyCode\n if (!CommonBase.isUndefined(keyCode) && keyCode.toString() === \"13\") {\n const useValue = _convertUseValue(e.target.value)\n _emitKeyupEnter(useValue)\n } else {\n _emitKeyup(e)\n }\n}\n\nconst onInputFocus = () => {\n const value = _getTextValue()\n optTextValue.value = value\n optLastValueChange.value = value\n const useValue = _convertUseValue(value)\n _emitFocus(useValue)\n}\n\nconst onInputBlur = () => {\n const value = _getTextValue()\n optTextValue.value = value\n optLastValueChange.value = value\n const useValue = _convertUseValue(value)\n _emitBlur(useValue)\n}\n\nconst onClear = () => {\n optTextValue.value = \"\"\n _emitChange(\"\")\n _emitClear()\n _focus()\n}\n\nconst onShowPasswordValue = () => {\n optIsShowPassword.value = !optIsShowPassword.value\n}\n\nconst getValue = () => {\n return _convertUseValue(optTextValue.value)\n}\n\nconst getValueData = () => {\n return { value: getValue(), show: optTextValue.value }\n}\n\nconst setValue = (value: any) => {\n const newValue = CommonBase.isEmpty(value) ? \"\" : _convertValue(value, \"\")\n optTextValue.value = newValue\n optLastValueChange.value = newValue\n}\n\nconst focus = () => {\n _focus()\n}\n\nexport interface ClInputExpose {\n getValue: () => any\n getValueData: () => { value: any; show: any }\n setValue: (value: any) => void\n focus: () => void\n}\n\ndefineExpose({\n getValue,\n getValueData,\n setValue,\n focus,\n})\n</script>\n<style scoped></style>\n","<template>\n <div class=\"load-rotaryLine-container\">\n <div class=\"rotary-line rotary-line-1\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-2\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-3\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-4\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-5\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-6\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-7\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-8\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-9\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-10\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-11\">\n <div></div>\n </div>\n <div class=\"rotary-line rotary-line-12\">\n <div></div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n// defineOptions\ndefineOptions({ name: 'ClLoadRotaryLine' })\n</script>\n","<template>\n <div class=\"load-circleBubble-container\">\n <div class=\"circleBubble-container circleBubble-container1\">\n <div class=\"circleBubble-item circleBubble-item1\"></div>\n <div class=\"circleBubble-item circleBubble-item2\"></div>\n <div class=\"circleBubble-item circleBubble-item3\"></div>\n <div class=\"circleBubble-item circleBubble-item4\"></div>\n </div>\n <div class=\"circleBubble-container circleBubble-container2\">\n <div class=\"circleBubble-item circleBubble-item1\"></div>\n <div class=\"circleBubble-item circleBubble-item2\"></div>\n <div class=\"circleBubble-item circleBubble-item3\"></div>\n <div class=\"circleBubble-item circleBubble-item4\"></div>\n </div>\n <div class=\"circleBubble-container circleBubble-container3\">\n <div class=\"circleBubble-item circleBubble-item1\"></div>\n <div class=\"circleBubble-item circleBubble-item2\"></div>\n <div class=\"circleBubble-item circleBubble-item3\"></div>\n <div class=\"circleBubble-item circleBubble-item4\"></div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n// defineOptions\ndefineOptions({ name: 'ClLoadCircleBubble' })\n</script>\n","<template>\n <div :class=\"clsParent\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\n// defineOptions\ndefineOptions({ name: 'ClLoadCircleNotch' })\n\n// props\nconst props = defineProps<{\n color?: string\n}>()\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {\n 'load-circleNotch-container': true,\n }\n const { color } = props\n if (color && color !== 'default') {\n cls['circleNotch-white'] = true\n }\n return cls\n})\n</script>\n","<template>\n <div class=\"loader\">\n <!-- --i、--c为自定义属性,CSS中可通过var函数对其调用 -->\n <span style=\"--i:1;--c:#2ecc71;\"></span>\n <span style=\"--i:2;--c:#3498db;\"></span>\n <span style=\"--i:3;--c:#f1c40f;\"></span>\n <span style=\"--i:4;--c:#e74c3c;\"></span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n// defineOptions\ndefineOptions({ name: 'ClLoadBallColor4' })\n</script>\n","<template>\n <div :class=\"clsParent\">\n <ClLoadRotaryLine v-if=\"theme === 'rotaryLine'\" />\n <ClLoadCircleNotch\n v-else-if=\"theme === 'circleNotch'\"\n :color=\"color\"\n />\n <ClLoadCircleBubble v-else-if=\"theme === 'circleBubble'\" />\n <ClLoadBallColor4 v-else-if=\"theme === 'ballColor4'\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { computed } from 'vue'\nimport ClLoadRotaryLine from './RotaryLine.vue'\nimport ClLoadCircleBubble from './CircleBubble.vue'\nimport ClLoadCircleNotch from './CircleNotch.vue'\nimport ClLoadBallColor4 from './BallColor4.vue'\n\n// defineOptions\ndefineOptions({ name: 'ClLoad' })\n\n// props\nconst props = defineProps({\n theme: {\n type: String,\n default: 'rotaryLine',\n validator: (value: string) => {\n return ['rotaryLine', 'circleNotch', 'circleBubble', 'ballColor4'].indexOf(value) !== -1\n }\n },\n size: {\n type: String,\n default: 'large'\n },\n color: {\n type: String,\n default: 'default'\n },\n})\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-load': true,\n }\n cls[`load-${props.theme || 'rotaryLine'}`] = true\n // 仅实现 circleBubble 大小\n cls[`${props.theme || 'rotaryLine'}-${props.size || 'large'}`] = true\n return cls\n})\n</script>\n","/*!\n * Waves v0.7.6\n * http://fian.my.id/Waves\n *\n * Copyright 2014-2018 Alfiana E. Sibuea and other contributors\n * Released under the MIT license\n * https://github.com/fians/Waves/blob/master/LICENSE\n */\n\n;(function(window, factory) {\n 'use strict';\n\n // AMD. Register as an anonymous module. Wrap in function so we have access\n // to root via `this`.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n window.Waves = factory.call(window);\n return window.Waves;\n });\n }\n\n // Node. Does not work with strict CommonJS, but only CommonJS-like\n // environments that support module.exports, like Node.\n else if (typeof exports === 'object') {\n module.exports = factory.call(window);\n }\n\n // Browser globals.\n else {\n (window||Window).Waves = factory.call(window);\n }\n})(typeof global === 'object' ? global : this, function() {\n 'use strict';\n\n var Waves = Waves || {};\n var $$ = document.querySelectorAll.bind(document);\n var toString = Object.prototype.toString;\n var isTouchAvailable = 'ontouchstart' in window;\n\n\n // Find exact position of element\n function isWindow(obj) {\n return obj !== null && obj === obj.window;\n }\n\n function getWindow(elem) {\n return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\n }\n\n function isObject(value) {\n var type = typeof value;\n return type === 'function' || type === 'object' && !!value;\n }\n\n function isDOMNode(obj) {\n return isObject(obj) && obj.nodeType > 0;\n }\n\n function getWavesElements(nodes) {\n var stringRepr = toString.call(nodes);\n\n if (stringRepr === '[object String]') {\n return $$(nodes);\n } else if (isObject(nodes) && /^\\[object (Array|HTMLCollection|NodeList|Object)\\]$/.test(stringRepr) && nodes.hasOwnProperty('length')) {\n return nodes;\n } else if (isDOMNode(nodes)) {\n return [nodes];\n }\n\n return [];\n }\n\n function offset(elem) {\n var docElem, win,\n box = { top: 0, left: 0 },\n doc = elem && elem.ownerDocument;\n\n docElem = doc.documentElement;\n\n if (typeof elem.getBoundingClientRect !== typeof undefined) {\n box = elem.getBoundingClientRect();\n }\n win = getWindow(doc);\n return {\n top: box.top + win.pageYOffset - docElem.clientTop,\n left: box.left + win.pageXOffset - docElem.clientLeft\n };\n }\n\n function convertStyle(styleObj) {\n var style = '';\n\n for (var prop in styleObj) {\n if (styleObj.hasOwnProperty(prop)) {\n style += (prop + ':' + styleObj[prop] + ';');\n }\n }\n\n return style;\n }\n\n var Effect = {\n\n // Effect duration\n duration: 750,\n\n // Effect delay (check for scroll before showing effect)\n delay: 200,\n\n show: function(e, element, velocity) {\n\n // Disable right click\n if (e.button === 2) {\n return false;\n }\n\n element = element || this;\n\n // Create ripple\n var ripple = document.createElement('div');\n ripple.className = 'waves-ripple waves-rippling';\n element.appendChild(ripple);\n\n // Get click coordinate and element width\n var pos = offset(element);\n var relativeY = 0;\n var relativeX = 0;\n // Support for touch devices\n if('touches' in e && e.touches.length) {\n relativeY = (e.touches[0].pageY - pos.top);\n relativeX = (e.touches[0].pageX - pos.left);\n }\n //Normal case\n else {\n relativeY = (e.pageY - pos.top);\n relativeX = (e.pageX - pos.left);\n }\n // Support for synthetic events\n relativeX = relativeX >= 0 ? relativeX : 0;\n relativeY = relativeY >= 0 ? relativeY : 0;\n\n var scale = 'scale(' + ((element.clientWidth / 100) * 3) + ')';\n var translate = 'translate(0,0)';\n\n if (velocity) {\n translate = 'translate(' + (velocity.x) + 'px, ' + (velocity.y) + 'px)';\n }\n\n // Attach data to element\n ripple.setAttribute('data-hold', Date.now());\n ripple.setAttribute('data-x', relativeX);\n ripple.setAttribute('data-y', relativeY);\n ripple.setAttribute('data-scale', scale);\n ripple.setAttribute('data-translate', translate);\n\n // Set ripple position\n var rippleStyle = {\n top: relativeY + 'px',\n left: relativeX + 'px'\n };\n\n ripple.classList.add('waves-notransition');\n ripple.setAttribute('style', convertStyle(rippleStyle));\n ripple.classList.remove('waves-notransition');\n\n // Scale the ripple\n rippleStyle['-webkit-transform'] = scale + ' ' + translate;\n rippleStyle['-moz-transform'] = scale + ' ' + translate;\n rippleStyle['-ms-transform'] = scale + ' ' + translate;\n rippleStyle['-o-transform'] = scale + ' ' + translate;\n rippleStyle.transform = scale + ' ' + translate;\n rippleStyle.opacity = '1';\n\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\n rippleStyle['-webkit-transition-duration'] = duration + 'ms';\n rippleStyle['-moz-transition-duration'] = duration + 'ms';\n rippleStyle['-o-transition-duration'] = duration + 'ms';\n rippleStyle['transition-duration'] = duration + 'ms';\n\n ripple.setAttribute('style', convertStyle(rippleStyle));\n },\n\n hide: function(e, element) {\n element = element || this;\n\n var ripples = element.getElementsByClassName('waves-rippling');\n\n for (var i = 0, len = ripples.length; i < len; i++) {\n removeRipple(e, element, ripples[i]);\n }\n\n if (isTouchAvailable) {\n element.removeEventListener('touchend', Effect.hide);\n element.removeEventListener('touchcancel', Effect.hide);\n }\n\n element.removeEventListener('mouseup', Effect.hide);\n element.removeEventListener('mouseleave', Effect.hide);\n }\n };\n\n /**\n * Collection of wrapper for HTML element that only have single tag\n * like <input> and <img>\n */\n var TagWrapper = {\n\n // Wrap <input> tag so it can perform the effect\n input: function(element) {\n\n var parent = element.parentNode;\n\n // If input already have parent just pass through\n if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {\n return;\n }\n\n // Put element class and style to the specified parent\n var wrapper = document.createElement('i');\n wrapper.className = element.className + ' waves-input-wrapper';\n element.className = 'waves-button-input';\n\n // Put element as child\n parent.replaceChild(wrapper, element);\n wrapper.appendChild(element);\n\n // Apply element color and background color to wrapper\n var elementStyle = window.getComputedStyle(element, null);\n var color = elementStyle.color;\n var backgroundColor = elementStyle.backgroundColor;\n\n wrapper.setAttribute('style', 'color:' + color + ';background:' + backgroundColor);\n element.setAttribute('style', 'background-color:rgba(0,0,0,0);');\n\n },\n\n // Wrap <img> tag so it can perform the effect\n img: function(element) {\n\n var parent = element.parentNode;\n\n // If input already have parent just pass through\n if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {\n return;\n }\n\n // Put element as child\n var wrapper = document.createElement('i');\n parent.replaceChild(wrapper, element);\n wrapper.appendChild(element);\n\n }\n };\n\n /**\n * Hide the effect and remove the ripple. Must be\n * a separate function to pass the JSLint...\n */\n function removeRipple(e, el, ripple) {\n\n // Check if the ripple still exist\n if (!ripple) {\n return;\n }\n\n ripple.classList.remove('waves-rippling');\n\n var relativeX = ripple.getAttribute('data-x');\n var relativeY = ripple.getAttribute('data-y');\n var scale = ripple.getAttribute('data-scale');\n var translate = ripple.getAttribute('data-translate');\n\n // Get delay beetween mousedown and mouse leave\n var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\n var delay = 350 - diff;\n\n if (delay < 0) {\n delay = 0;\n }\n\n if (e.type === 'mousemove') {\n delay = 150;\n }\n\n // Fade out ripple after delay\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\n\n setTimeout(function() {\n\n var style = {\n top: relativeY + 'px',\n left: relativeX + 'px',\n opacity: '0',\n\n // Duration\n '-webkit-transition-duration': duration + 'ms',\n '-moz-transition-duration': duration + 'ms',\n '-o-transition-duration': duration + 'ms',\n 'transition-duration': duration + 'ms',\n '-webkit-transform': scale + ' ' + translate,\n '-moz-transform': scale + ' ' + translate,\n '-ms-transform': scale + ' ' + translate,\n '-o-transform': scale + ' ' + translate,\n 'transform': scale + ' ' + translate\n };\n\n ripple.setAttribute('style', convertStyle(style));\n\n setTimeout(function() {\n try {\n el.removeChild(ripple);\n } catch (e) {\n return false;\n }\n }, duration);\n\n }, delay);\n }\n\n\n /**\n * Disable mousedown event for 500ms during and after touch\n */\n var TouchHandler = {\n\n /* uses an integer rather than bool so there's no issues with\n * needing to clear timeouts if another touch event occurred\n * within the 500ms. Cannot mouseup between touchstart and\n * touchend, nor in the 500ms after touchend. */\n touches: 0,\n\n allowEvent: function(e) {\n\n var allow = true;\n\n if (/^(mousedown|mousemove)$/.test(e.type) && TouchHandler.touches) {\n allow = false;\n }\n\n return allow;\n },\n registerEvent: function(e) {\n var eType = e.type;\n\n if (eType === 'touchstart') {\n\n TouchHandler.touches += 1; // push\n\n } else if (/^(touchend|touchcancel)$/.test(eType)) {\n\n setTimeout(function() {\n if (TouchHandler.touches) {\n TouchHandler.touches -= 1; // pop after 500ms\n }\n }, 500);\n\n }\n }\n };\n\n\n /**\n * Delegated click handler for .waves-effect element.\n * returns null when .waves-effect element not in \"click tree\"\n */\n function getWavesEffectElement(e) {\n\n if (TouchHandler.allowEvent(e) === false) {\n return null;\n }\n\n var element = null;\n var target = e.target || e.srcElement;\n\n while (target.parentElement) {\n if ( (!(target instanceof SVGElement)) && target.classList.contains('waves-effect')) {\n element = target;\n break;\n }\n target = target.parentElement;\n }\n\n return element;\n }\n\n /**\n * Bubble the click and show effect if .waves-effect elem was found\n */\n function showEffect(e) {\n\n // Disable effect if element has \"disabled\" property on it\n // In some cases, the event is not triggered by the current element\n // if (e.target.getAttribute('disabled') !== null) {\n // return;\n // }\n\n var element = getWavesEffectElement(e);\n\n if (element !== null) {\n\n // Make it sure the element has either disabled property, disabled attribute or 'disabled' class\n if (element.disabled || element.getAttribute('disabled') || element.classList.contains('disabled')) {\n return;\n }\n\n TouchHandler.registerEvent(e);\n\n if (e.type === 'touchstart' && Effect.delay) {\n\n var hidden = false;\n\n var timer = setTimeout(function () {\n timer = null;\n Effect.show(e, element);\n }, Effect.delay);\n\n var hideEffect = function(hideEvent) {\n\n // if touch hasn't moved, and effect not yet started: start effect now\n if (timer) {\n clearTimeout(timer);\n timer = null;\n Effect.show(e, element);\n }\n if (!hidden) {\n hidden = true;\n Effect.hide(hideEvent, element);\n }\n\n removeListeners();\n };\n\n var touchMove = function(moveEvent) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n hideEffect(moveEvent);\n\n removeListeners();\n };\n\n element.addEventListener('touchmove', touchMove, false);\n element.addEventListener('touchend', hideEffect, false);\n element.addEventListener('touchcancel', hideEffect, false);\n\n var removeListeners = function() {\n element.removeEventListener('touchmove', touchMove);\n element.removeEventListener('touchend', hideEffect);\n element.removeEventListener('touchcancel', hideEffect);\n };\n } else {\n\n Effect.show(e, element);\n\n if (isTouchAvailable) {\n element.addEventListener('touchend', Effect.hide, false);\n element.addEventListener('touchcancel', Effect.hide, false);\n }\n\n element.addEventListener('mouseup', Effect.hide, false);\n element.addEventListener('mouseleave', Effect.hide, false);\n }\n }\n }\n\n Waves.init = function(options) {\n var body = document.body;\n\n options = options || {};\n\n if ('duration' in options) {\n Effect.duration = options.duration;\n }\n\n if ('delay' in options) {\n Effect.delay = options.delay;\n }\n\n if (isTouchAvailable) {\n body.addEventListener('touchstart', showEffect, false);\n body.addEventListener('touchcancel', TouchHandler.registerEvent, false);\n body.addEventListener('touchend', TouchHandler.registerEvent, false);\n }\n\n body.addEventListener('mousedown', showEffect, false);\n };\n\n\n /**\n * Attach Waves to dynamically loaded inputs, or add .waves-effect and other\n * waves classes to a set of elements. Set drag to true if the ripple mouseover\n * or skimming effect should be applied to the elements.\n */\n Waves.attach = function(elements, classes) {\n\n elements = getWavesElements(elements);\n\n if (toString.call(classes) === '[object Array]') {\n classes = classes.join(' ');\n }\n\n classes = classes ? ' ' + classes : '';\n\n var element, tagName;\n\n for (var i = 0, len = elements.length; i < len; i++) {\n\n element = elements[i];\n tagName = element.tagName.toLowerCase();\n\n if (['input', 'img'].indexOf(tagName) !== -1) {\n TagWrapper[tagName](element);\n element = element.parentElement;\n }\n\n if (element.className.indexOf('waves-effect') === -1) {\n element.className += ' waves-effect' + classes;\n }\n }\n };\n\n\n /**\n * Cause a ripple to appear in an element via code.\n */\n Waves.ripple = function(elements, options) {\n elements = getWavesElements(elements);\n var elementsLen = elements.length;\n\n options = options || {};\n options.wait = options.wait || 0;\n options.position = options.position || null; // default = centre of element\n\n\n if (elementsLen) {\n var element, pos, off, centre = {}, i = 0;\n var mousedown = {\n type: 'mousedown',\n button: 1\n };\n var hideRipple = function(mouseup, element) {\n return function() {\n Effect.hide(mouseup, element);\n };\n };\n\n for (; i < elementsLen; i++) {\n element = elements[i];\n pos = options.position || {\n x: element.clientWidth / 2,\n y: element.clientHeight / 2\n };\n\n off = offset(element);\n centre.x = off.left + pos.x;\n centre.y = off.top + pos.y;\n\n mousedown.pageX = centre.x;\n mousedown.pageY = centre.y;\n\n Effect.show(mousedown, element);\n\n if (options.wait >= 0 && options.wait !== null) {\n var mouseup = {\n type: 'mouseup',\n button: 1\n };\n\n setTimeout(hideRipple(mouseup, element), options.wait);\n }\n }\n }\n };\n\n /**\n * Remove all ripples from an element.\n */\n Waves.calm = function(elements) {\n elements = getWavesElements(elements);\n var mouseup = {\n type: 'mouseup',\n button: 1\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n Effect.hide(mouseup, elements[i]);\n }\n };\n\n /**\n * Deprecated API fallback\n */\n Waves.displayEffect = function(options) {\n console.error('Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect');\n Waves.init(options);\n };\n\n return Waves;\n});\n","import \"./waves.css\";\r\nimport \"./waves.js\";\r\nimport CommonBase from \"../../Common/base\";\r\n\r\nconst _waves = {\r\n init: (options: any) => {\r\n const newOption = CommonBase.getJsonMerge({ name: \"waves\", duration: 500, delay: 200 }, options);\r\n // @ts-ignore\r\n if (Window.Waves) {\r\n // @ts-ignore\r\n Window.Waves.init(newOption);\r\n }\r\n },\r\n bind: (el: any, binding: any) => {\r\n const newOptions = CommonBase.isObject(binding.value) ? binding.value : {};\r\n const isInit = CommonBase.isBoolean(newOptions.init) ? newOptions.init : true;\r\n if (isInit) {\r\n const isEmpty = CommonBase.isEmpty(binding.modifiers);\r\n let classes;\r\n if (isEmpty) {\r\n let colorBg = \"\";\r\n if (!CommonBase.isEmpty(newOptions.color)) {\r\n switch (newOptions.color) {\r\n case \"white\":\r\n colorBg = \"light\";\r\n break;\r\n case \"black\":\r\n colorBg = \"\";\r\n break;\r\n }\r\n }\r\n if (!CommonBase.isEmpty(colorBg)) {\r\n classes = `waves-${colorBg}`;\r\n }\r\n } else {\r\n classes = [\"button\", \"circle\", \"block\", \"float\", \"light\", \"classic\"]\r\n .filter((cls) => binding.modifiers[cls])\r\n .map((cls) => `waves-${cls}`);\r\n }\r\n // @ts-ignore\r\n if (Window.Waves) {\r\n // @ts-ignore\r\n Window.Waves.attach(el, classes);\r\n }\r\n }\r\n },\r\n};\r\nexport const name = \"clwaves\";\r\nexport const directive = (options: any) => {\r\n _waves.init(options);\r\n return {\r\n deep: true,\r\n mounted: _waves.bind,\r\n };\r\n};\r\nexport const wavesBind = {\r\n mounted: _waves.bind,\r\n};\r\n","<template>\n <span class=\"panel-btn-parent\">\n <button\n ref=\"refElTopParent\"\n type=\"button\"\n :class=\"clsParent\"\n :disabled=\"optIsDisabled\"\n @click=\"onClick\"\n v-clwaves=\"{ color: optWavesColor }\"\n >\n <span :style=\"styBtnChild\">\n <i\n :class=\"clsIcon\"\n v-if=\"optIsShowIcon\"\n ></i>\n <span\n class=\"btn-label\"\n v-if=\"optIsShowLabel\"\n >{{ label }}</span>\n </span>\n <span\n class=\"btn-loading\"\n v-if=\"optIsRunLoading && !optIsShowBackDropLoad\"\n >\n <ClLoad\n :theme=\"loadTheme\"\n :size=\"optLoadSize\"\n />\n </span>\n </button>\n <template v-if=\"optIsShowBackDrop\">\n <div class=\"btn-body-backdrop\"></div>\n <div\n :class=\"clsBodyBackdropMain\"\n v-if=\"optIsShowBackDropLoad && optIsBackDropRunLoading\"\n >\n <div class=\"btn-body-backdrop-container\">\n <ClLoad\n :theme=\"loadTheme\"\n :size=\"optLoadSize\"\n />\n <div class=\"btn-body-backdrop-text\">{{ loadText || '加载中' }}</div>\n </div>\n </div>\n </template>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, computed, watch, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport ClLoad from '../Load/Index.vue'\nimport { wavesBind } from '../../Web/Waves'\n\n// defineOptions\ndefineOptions({\n name: 'ClButton',\n directives: {\n clwaves: wavesBind\n }\n})\n\n// props\nconst props = defineProps({\n className: {\n type: String,\n default: '' // desc: 自定义CSS类名\n },\n label: {\n type: String,\n default: '' // desc: 按钮文本标签\n },\n icon: {\n type: String,\n default: '' // desc: 按钮图标类名\n },\n color: {\n type: String,\n default: 'default' // desc: 按钮颜色主题 | enum: default, green, red, yellow, white, grayLight, transparent\n },\n size: {\n type: String,\n default: '' // desc: 按钮尺寸 | enum: large, small, xl\n },\n disabled: {\n type: Boolean,\n default: false // desc: 是否禁用按钮\n },\n isShowLoad: {\n type: Boolean,\n default: false // desc: 是否显示加载动画\n },\n loadPos: {\n type: String,\n default: 'right', // desc: 加载动画位置 | enum: right, zoom-out, fixedCenter\n validator: (value: string) => {\n return ['right', 'zoom-out', 'fixedCenter'].indexOf(value) !== -1\n }\n },\n loadTheme: {\n type: String,\n default: 'rotaryLine' // desc: 加载动画主题 | enum: rotaryLine, circleNotch, circleBubble\n },\n loadDrift: {\n type: Boolean,\n default: true // desc: 加载时是否漂移\n },\n loadText: {\n type: String,\n default: '' // desc: 加载提示文本\n },\n isShowBackDrop: {\n type: Boolean,\n default: false // desc: 是否显示遮罩层\n },\n isShowWaves: {\n type: Boolean,\n default: true // desc: 是否显示点击波纹效果\n },\n wavesColor: {\n type: String,\n default: 'white' // desc: 波纹颜色 | enum: white, black\n },\n loadStatusIsIng: {\n type: [Boolean, null],\n default: null // desc: 加载状态控制(true开始,false结束,null忽略)\n }\n})\n\nif (CommonBase.isEmpty(props.label) && CommonBase.isEmpty(props.icon)) {\n console.warn('[ClButton] Warning: Either \"label\" or \"icon\" prop is required.')\n}\n\n// emit\nconst emit = defineEmits<{\n (e: 'onClick'): void\n}>()\n\n// refs\nconst refElTopParent = ref<HTMLElement | null>(null)\n\n// reactive\nconst optIsRunLoading = ref(false)\nconst optIsShowBackDrop = ref(false)\nconst optIsBackDropRunLoading = ref(false)\n\n// computed\nconst optIsShowLabel = computed(() => {\n return !CommonBase.isEmpty(props.label)\n})\n\nconst optIsShowIcon = computed(() => {\n return !CommonBase.isEmpty(props.icon)\n})\n\nconst optIsDisabled = computed(() => {\n return props.disabled ? true : optIsRunLoading.value\n})\n\nconst optIsShowBackDropLoad = computed(() => {\n return props.loadPos === 'fixedCenter'\n})\n\nconst optWavesColor = computed(() => {\n let color = props.wavesColor || 'white'\n if (CommonBase.isExistValue(props.color, 'white') || CommonBase.isExistValue(props.color, 'grayLight')) {\n color = 'black'\n }\n return color\n})\n\nconst optLoadPos = computed(() => {\n let pos = props.loadPos || 'right'\n if (CommonBase.isExistValue(props.className, 'btn-circle')) {\n if (CommonBase.isExistValue(pos, 'right')) {\n pos = 'zoom-out'\n }\n }\n return pos\n})\n\nconst optLoadSize = computed(() => {\n let size = 'large'\n switch (props.loadTheme) {\n case 'rotaryLine':\n size = props.size === 'small' ? 'small' : 'large'\n if (CommonBase.isExistValue(props.className, 'btn-circle')) {\n size = 'small'\n }\n break\n case 'circleNotch':\n size = 'large'\n break\n case 'circleBubble':\n size = 'small'\n break\n }\n return size\n})\n\nconst clsParent = computed(() => {\n const cls: any = {\n 'btn-parent': true,\n btn: true,\n }\n if (!CommonBase.isEmpty(props.color)) {\n cls[`btn-${props.color}`] = true\n }\n if (!CommonBase.isEmpty(props.className)) {\n props.className?.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n if (!CommonBase.isEmpty(props.size)) {\n cls[`btn-${props.size}`] = true\n }\n\n cls['btn-load-ing'] = optIsRunLoading.value\n if (optIsRunLoading.value) {\n cls[`btn-load-${optLoadPos.value}`] = true\n cls[`btn-load-${props.loadTheme}`] = true\n cls['btn-load-nodrift'] = !props.loadDrift\n }\n\n if (refElTopParent.value && refElTopParent.value.className) {\n refElTopParent.value.className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n if (!CommonBase.isExistJsonKey(cls, c)) {\n cls[c] = true\n }\n }\n })\n }\n return cls\n})\n\nconst clsIcon = computed(() => {\n const cls: any = {\n 'btn-icon': true,\n }\n if (optIsShowIcon.value) {\n props.icon?.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsBodyBackdropMain = computed(() => {\n const isRun = optIsRunLoading.value && optIsShowBackDropLoad.value\n const cls = {\n 'btn-body-backdrop-main': true,\n animated: true,\n zoomIn: isRun,\n zoomOut: !isRun,\n }\n return cls\n})\n\nconst styBtnChild = computed(() => {\n const sty: any = {}\n if (optIsShowLabel.value || optIsShowIcon.value) {\n if (optLoadPos.value === 'zoom-out' && optIsRunLoading.value && !optIsShowBackDropLoad.value) {\n sty.opacity = 0\n }\n }\n return sty\n})\n\n// 内部方法\nconst _runLoading = () => {\n if (!optIsRunLoading.value) {\n if (props.isShowBackDrop) {\n optIsShowBackDrop.value = true\n optIsBackDropRunLoading.value = true\n }\n optIsRunLoading.value = true\n }\n}\n\nconst _runLoadEnd = () => {\n if (props.isShowBackDrop) {\n if (optIsShowBackDropLoad.value) {\n nextTick(() => {\n setTimeout(() => {\n optIsShowBackDrop.value = false\n optIsBackDropRunLoading.value = false\n }, 200)\n })\n } else {\n optIsShowBackDrop.value = false\n }\n }\n optIsRunLoading.value = false\n}\n\n// watch\nwatch(\n () => props.loadStatusIsIng,\n (newValue) => {\n if (CommonBase.isBoolean(newValue)) {\n newValue ? _runLoading() : _runLoadEnd()\n }\n }\n)\n\n// emit 外部使用的事件\nconst _emitClick = () => {\n emit('onClick')\n}\n\n// 内部触发的事件 on\nconst onClick = () => {\n if (!props.disabled) {\n if (props.isShowLoad) {\n _runLoading()\n }\n _emitClick()\n }\n}\n\n// 外部调用\nconst loadStart = () => {\n _runLoading()\n}\n\nconst loadStop = () => {\n _runLoadEnd()\n}\n\n// 暴露给外部的方法\nexport interface ClButtonExpose {\n loadStart: () => void\n loadStop: () => void\n}\n\ndefineExpose({\n loadStart,\n loadStop\n})\n</script>\n\n<style scoped>\n.panel-btn-parent {\n display: inline-block;\n}\n</style>\n","<template>\n <template v-if=\"url && optIsLink\">\n <span\n v-if=\"disabled\"\n :class=\"clsParent\"\n >\n <slot></slot>\n </span>\n <template v-else>\n <a\n v-if=\"isOutside\"\n :class=\"clsParent\"\n :href=\"url.toString()\"\n :target=\"isTargetBlank ? '_blank' : ''\"\n @click=\"onClick\"\n @mouseenter=\"onHoverIn\"\n @mouseleave=\"onHoverOut\"\n >\n <span>\n <slot></slot>\n </span>\n </a>\n <template v-else>\n <a\n v-if=\"isTargetBlank\"\n :class=\"clsParent\"\n :href=\"url.toString()\"\n target=\"_blank\"\n @click.stop=\"onClick\"\n @mouseenter=\"onHoverIn\"\n @mouseleave=\"onHoverOut\"\n >\n <span>\n <slot></slot>\n </span>\n </a>\n <router-link\n v-else\n :class=\"clsParent\"\n :to=\"url\"\n @click.stop=\"onClick\"\n >\n <span\n @mouseenter=\"onHoverIn\"\n @mouseleave=\"onHoverOut\"\n >\n <slot></slot>\n </span>\n </router-link>\n </template>\n </template>\n </template>\n <a\n v-else\n :class=\"clsParent\"\n href=\"javascript:\"\n @click=\"onClick\"\n @mouseenter=\"onHoverIn\"\n @mouseleave=\"onHoverOut\"\n >\n <span>\n <slot></slot>\n </span>\n </a>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { computed } from 'vue'\nimport CommonBase from '../../Common/base'\n\n// defineOptions\ndefineOptions({ name: 'ClLink' })\n\n// props\nconst props = defineProps({\n wavesColor: {\n type: String,\n default: 'black',\n validator: (value: string) => {\n return ['black', 'white'].indexOf(value) !== -1\n }\n },\n url: {\n type: [String, Object],\n default: ''\n },\n className: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n isUnderline: {\n type: Boolean,\n default: false\n },\n isLight: {\n type: Boolean,\n default: false\n },\n isWaves: {\n type: Boolean,\n default: false\n },\n isTargetBlank: {\n type: Boolean,\n default: false\n },\n isOutside: {\n type: Boolean,\n default: false\n },\n isStopPropagation: {\n type: Boolean,\n default: false\n },\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'onClick', event: any): void\n (e: 'onHoverIn', event: any): void\n (e: 'onHoverOut', event: any): void\n}>()\n\n// computed\nconst optIsLink = computed(() => {\n return !CommonBase.isEmpty(props.url)\n})\n\nconst clsParent = computed(() => {\n const clsTemp: any = {\n 'btn-link': true,\n 'btn-link-disabled': props.disabled,\n 'always-light': props.isLight,\n 'underline-none': !props.isUnderline,\n }\n if (!CommonBase.isEmpty(props.className)) {\n props.className?.split(' ').forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n return clsTemp\n})\n\n// emit 外部使用的事件\nconst _emitClick = (event: any) => {\n emit('onClick', event)\n}\n\nconst _emitHoverIn = (event: any) => {\n emit('onHoverIn', event)\n}\n\nconst _emitHoverOut = (event: any) => {\n emit('onHoverOut', event)\n}\n\n// 内部触发的事件 on\nconst onClick = (event: any) => {\n if (!props.disabled) {\n _emitClick(event)\n if (props.isStopPropagation) {\n event.preventDefault()\n event.stopPropagation()\n }\n }\n}\n\nconst onHoverIn = (event: any) => {\n if (!props.disabled) {\n _emitHoverIn(event)\n }\n}\n\nconst onHoverOut = (event: any) => {\n if (!props.disabled) {\n _emitHoverOut(event)\n }\n}\n</script>\n","<template>\n <i class=\"clIconFont\" :class=\"iconClass\" :style=\"iconStyle\" />\n</template>\n\n<script setup lang=\"ts\">\n// import 导入\nimport { computed } from 'vue'\nimport './Index.css'\n\n// defineOptions(组件名称:Cl + 组件名,首字母大写)\ndefineOptions({ name: 'ClIconFont' })\n\n// props\nconst props = defineProps<{\n name: string\n size?: string | number\n color?: string\n}>()\n\n// 内部调用方法(方法名以 _ 开头)\nconst _getIconClass = () => {\n return `clIcon-${props.name}`\n}\n\n// 开放给外部使用的方法\nconst iconClass = computed(() => _getIconClass())\n\nconst iconStyle = computed(() => {\n const style: Record<string, string | undefined> = {}\n if (props.size) {\n style['font-size'] = typeof props.size === 'number' ? `${props.size}px` : props.size\n }\n if (props.color) {\n style.color = props.color\n }\n return style\n})\n</script>\n","<template>\n <div :class=\"clsParent\">\n <transition\n :enter-active-class=\"classTransitionEnter\"\n :leave-active-class=\"classTransitionLeave\"\n @enter=\"onTransitionEnter\"\n @after-leave=\"onTransitionLeave\"\n >\n <div\n :class=\"clsModal\"\n tabindex=\"-1\"\n v-show=\"optBase.isShow\"\n >\n <div\n ref=\"refElWrapper\"\n class=\"modal-wrapper\"\n :style=\"styWrapper\"\n @click=\"onClickBack\"\n >\n <div\n class=\"modal-dialog\"\n :style=\"styDialog\"\n ref=\"refElDialog\"\n >\n <div class=\"modal-content\">\n <slot></slot>\n </div>\n </div>\n </div>\n </div>\n </transition>\n <transition name=\"overlay-fade\">\n <div\n v-show=\"optBase.isShow\"\n class=\"modal-backdrop fade show\"\n ></div>\n </transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { onMounted, nextTick, watch, computed, reactive, ref } from 'vue'\nimport CommonBase from '../../Common/base'\n\n// defineOptions\ndefineOptions({ name: 'ClModalTransition' })\n\n// props\nconst props = defineProps<{\n className?: string\n isBackClick?: boolean\n width?: string\n classTransitionEnter?: string\n classTransitionLeave?: string\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'onClickBack'): void\n}>()\n\n// refs\nconst refElDialog = ref<HTMLElement | null>(null)\nconst refElWrapper = ref<HTMLElement | null>(null)\n\n// reactive\nconst optBase = reactive({\n isShow: false,\n isAlignTop: false,\n isAlignLeft: false,\n})\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-modal': true,\n }\n if (!CommonBase.isEmpty(props.className)) {\n props.className?.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsModal = computed(() => {\n const cls = {\n modal: true,\n fade: true,\n show: optBase.isShow,\n }\n return cls\n})\n\nconst styWrapper = computed(() => {\n const sty: any = {}\n if (optBase.isAlignTop) {\n sty['align-items'] = 'flex-start'\n }\n if (optBase.isAlignLeft) {\n sty['justify-content'] = 'flex-start'\n }\n return sty\n})\n\nconst styDialog = computed(() => {\n const sty: any = {}\n if (!CommonBase.isEmpty(props.width)) {\n sty.width = props.width\n }\n return sty\n})\n\n// emit 外部使用的事件\nconst _emitClickBack = () => {\n emit('onClickBack')\n}\n\n// 内部方法\nconst _closeHide = () => {\n optBase.isShow = false\n document.body.className = document.body.className.replace(' modal-open', '')\n}\n\nconst _calculationAlignTop = () => {\n if (refElDialog.value) {\n optBase.isAlignTop = refElDialog.value.clientHeight > window.innerHeight\n }\n}\n\nconst _calculationAlignLeft = () => {\n if (refElDialog.value) {\n optBase.isAlignLeft = refElDialog.value.clientWidth > window.innerWidth\n }\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _calculationAlignTop()\n _calculationAlignLeft()\n })\n})\n\nwatch(\n () => optBase.isShow,\n (newValue) => {\n if (newValue) {\n if (!document.body.className.includes('modal-open')) {\n document.body.className += ' modal-open'\n }\n nextTick(() => {\n _calculationAlignTop()\n })\n } else {\n document.body.className = document.body.className.replace(' modal-open', '')\n optBase.isAlignTop = false\n }\n }\n)\n\n// 内部触发的事件 on\nconst onClickBack = (event: any) => {\n if (props.isBackClick) {\n if (event.currentTarget === event.target) {\n _closeHide()\n _emitClickBack()\n }\n }\n}\n\nconst onTransitionEnter = () => {}\n\nconst onTransitionLeave = () => {}\n\n// 外部调用\nconst show = () => {\n optBase.isShow = true\n}\n\nconst hide = () => {\n _closeHide()\n}\n\n// 暴露给外部的方法\nexport interface ClModalBaseTransitionExpose {\n show: () => void\n hide: () => void\n}\n\ndefineExpose({\n show,\n hide\n})\n</script>\n","<template>\n <cl-modal-transition\n :className=\"className\"\n :isBackClick=\"isBackClick && optBase.isLoadBackClick\"\n :classTransitionEnter=\"classTransitionEnter\"\n :width=\"width\"\n @onClickBack=\"onClickBack\"\n ref=\"refElTransition\"\n >\n <div\n v-if=\"isShowHeader\"\n class=\"modal-header\"\n >\n <h4 class=\"modal-title\">{{titleName}}</h4>\n <button\n type=\"button\"\n class=\"close\"\n @click=\"onClose\"\n ><i class=\"clIconFont clIcon-close\"></i></button>\n </div>\n <div class=\"modal-body\">\n <slot></slot>\n </div>\n <div\n class=\"modal-footer\"\n v-if=\"isShowFooter\"\n >\n <template v-if=\"posSubmitClose==='CloseSubmit'\">\n <cl-button\n :label=\"closeLabel||'取消'\"\n color=\"grayLight\"\n @onClick=\"onClose\"\n ></cl-button>\n <cl-button\n ref=\"refElBtnSubmit\"\n v-if=\"isShowSubmit\"\n :disabled=\"optBase.disabledSubmit\"\n :isShowLoad=\"isShowSubmitLoad\"\n :isShowBackDrop=\"true\"\n :label=\"submitLabel||'提交'\"\n @onClick=\"onSubmit\"\n ></cl-button>\n </template>\n <template v-else-if=\"posSubmitClose==='SubmitClose'\">\n <cl-button\n ref=\"refElBtnSubmit\"\n v-if=\"isShowSubmit\"\n :disabled=\"optBase.disabledSubmit\"\n :isShowLoad=\"isShowSubmitLoad\"\n :isShowBackDrop=\"true\"\n :label=\"submitLabel||'提交'\"\n @onClick=\"onSubmit\"\n ></cl-button>\n <cl-button\n :label=\"closeLabel||'取消'\"\n color=\"grayLight\"\n @onClick=\"onClose\"\n ></cl-button>\n </template>\n <template v-else></template>\n </div>\n <div\n v-else\n class=\"modal-footer-hide\"\n ></div>\n </cl-modal-transition>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { reactive, ref } from 'vue'\nimport CommonBase from '../../Common/base'\nimport ClModalTransition from './BaseTransition.vue'\nimport ClButton from '../Button/Index.vue'\n\n// defineOptions\ndefineOptions({ name: 'ClModal' })\n\n// props\nconst props = defineProps({\n posSubmitClose: {\n type: String,\n default: 'CloseSubmit',\n validator: (value: string) => {\n return ['CloseSubmit', 'SubmitClose'].indexOf(value) !== -1\n }\n },\n className: {\n type: String,\n default: ''\n },\n width: {\n type: String,\n default: '600px'\n },\n titleName: {\n type: String,\n default: ''\n },\n isBackClick: {\n type: Boolean,\n default: true\n },\n isShowHeader: {\n type: Boolean,\n default: true\n },\n isShowFooter: {\n type: Boolean,\n default: true\n },\n isShowSubmit: {\n type: Boolean,\n default: true\n },\n isShowSubmitLoad: {\n type: Boolean,\n default: true\n },\n closeLabel: {\n type: String,\n default: ''\n },\n submitLabel: {\n type: String,\n default: ''\n },\n classTransitionEnter: {\n type: String,\n default: 'animated fadeInDown'\n },\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'onSubmit'): void\n (e: 'onClose'): void\n}>()\n\n// refs\nconst refElTransition = ref<HTMLElement | null>(null)\nconst refElBtnSubmit = ref<HTMLElement | null>(null)\n\n// reactive\nconst optBase:any = reactive({\n isLoadBackClick: true,\n disabledSubmit: false,\n})\n\n// emit 外部使用的事件\nconst _emitClickSubmit = () => {\n emit('onSubmit')\n}\n\nconst _emitClickClose = () => {\n emit('onClose')\n}\n\n// 内部方法\nconst _closeHide = () => {\n if (refElTransition.value) {\n // @ts-ignore\n refElTransition.value.hide()\n }\n}\n\n// 内部触发的事件 on\nconst onSubmit = () => {\n if (props.isShowSubmitLoad) {\n optBase.isLoadBackClick = false\n }\n _emitClickSubmit()\n}\n\nconst onClose = () => {\n _closeHide()\n _emitClickClose()\n}\n\nconst onClickBack = () => {\n _emitClickClose()\n}\n\n// 外部调用\nconst show = () => {\n optBase.disabledSubmit = false\n if (refElTransition.value) {\n // @ts-ignore\n refElTransition.value.show()\n }\n}\n\nconst hide = () => {\n optBase.isLoadBackClick = true\n if (props.isShowSubmitLoad && refElBtnSubmit.value) {\n // @ts-ignore\n refElBtnSubmit.value.loadStop()\n }\n _closeHide()\n}\n\nconst loadStop = () => {\n optBase.isLoadBackClick = true\n if (props.isShowSubmitLoad && refElBtnSubmit.value) {\n // @ts-ignore\n refElBtnSubmit.value.loadStop()\n }\n}\n\nconst disabledSubmit = (b?: boolean) => {\n const isDisabled = CommonBase.isBoolean(b) ? b : true\n optBase.disabledSubmit = isDisabled\n}\n\n// 暴露给外部的方法\nexport interface ClModalExpose {\n show: () => void\n hide: () => void\n loadStop: () => void\n disabledSubmit: (b: boolean) => void\n}\n\ndefineExpose({\n show,\n hide,\n loadStop,\n disabledSubmit\n})\n</script>\n","<template>\n <div class=\"panel-load-fullCenter loading-wrapper\">\n <div class=\"load-fullCenter-bg\"></div>\n <div class=\"loading-content\">\n <ClLoad\n :theme=\"theme\"\n :size=\"size\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport ClLoad from './Index.vue'\n\n// defineOptions\ndefineOptions({ name: 'ClLoadFullCenter' })\n\n// props\ndefineProps<{\n theme?: string\n size?: string\n}>()\n</script>\n\n<style scoped>\n.panel-load-fullCenter.loading-wrapper {\n background-color: transparent;\n border-radius: 0;\n}\n\n.load-fullCenter-bg {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(0, 0, 0, 0.5);\n}\n</style>\n","<template>\n <div\n class=\"loading-wrapper\"\n v-if=\"isLoadIng || isEmpty\"\n >\n <div\n class=\"loading-content\"\n v-if=\"isLoadIng\"\n >\n <ClLoad\n :theme=\"theme\"\n :size=\"size\"\n />\n </div>\n <div\n v-else-if=\"isEmpty\"\n class=\"loading-nothing\"\n >\n <div>\n <slot name=\"nothingData\">\n <span>{{ noDataText || '暂无数据' }}</span>\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport ClLoad from './Index.vue'\n\n// defineOptions\ndefineOptions({ name: 'ClLoadIng' })\n\n// props\ndefineProps<{\n theme?: string\n size?: string\n isLoadIng?: boolean\n isEmpty?: boolean\n noDataText?: string\n}>()\n</script>\n\n<style scoped>\n.loading-nothing {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n height: 100%;\n font-size: 20px;\n color: #c0c0c0;\n cursor: default;\n}\n</style>\n","<template>\n <div\n class=\"panel-load-ward\"\n :style=\"styParent\"\n >\n <slot></slot>\n <ClLoadIng\n :isLoadIng=\"isLoadIng\"\n :isEmpty=\"isEmpty\"\n :theme=\"theme\"\n :size=\"size\"\n :noDataText=\"noDataText\"\n >\n <template #nothingData>\n <slot name=\"nothingData\"></slot>\n </template>\n </ClLoadIng>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport CommonBase from '../../Common/base'\nimport ClLoadIng from './Ing.vue'\n\n// defineOptions\ndefineOptions({ name: 'ClLoadWarp' })\n\n// props\nconst props = defineProps<{\n theme?: string\n size?: string\n isLoadIng?: boolean\n isEmpty?: boolean\n height?: string\n minHeight?: string\n noDataText?: string\n}>()\n\n// computed\nconst styParent = computed(() => {\n const sty: any = {}\n const { height, minHeight, isLoadIng } = props\n if (isLoadIng) {\n sty['min-height'] = '100px'\n }\n if (height && !CommonBase.isEmpty(height)) {\n sty.height = height\n } else {\n if (minHeight && !CommonBase.isEmpty(minHeight)) {\n sty['min-height'] = minHeight\n }\n }\n return sty\n})\n</script>\n\n<style scoped>\n.panel-load-ward {\n position: relative;\n min-height: 80px;\n height: 100%;\n}\n</style>\n","import { createPopper } from \"@popperjs/core\";\nimport CommonBase from \"./base\";\nimport CommonElement from \"./Element/index\";\nconst defaultTrigger = [\"click\", \"hover\", \"focus\"];\nconst defaultClass = { fade: \"fade\", show: \"show\" };\nconst defaultOptions = {\n type: \"tooltip\",\n placement: \"top\",\n trigger: \"click\",\n theme: \"white\",\n wrap: \"body\",\n template: \"\",\n contentBody: \"\",\n contentHeader: \"\",\n selectorBody: \"\",\n selectorHead: \"\",\n selectorArrow: \".arrow\",\n isLoad: false,\n loadOnCallback: null,\n loadOffCallback: null,\n isRunTrigger: true,\n isStopPropagation: true,\n isInitShow: true,\n isHtml: true,\n className: \"\",\n};\n\nclass Tooltip {\n elementModal: any;\n optionModal: any;\n pageData: any;\n pageObject: any;\n constructor(el: Element, options: any) {\n this.elementModal = {};\n this.elementModal.rely = el;\n this.optionModal = CommonBase.getJsonMerge(defaultOptions, options);\n this.pageData = {\n isOpen: false,\n events: [],\n };\n this.pageObject = null;\n [\"listenerOn\", \"listenerOff\", \"listenerHide\", \"listenerRelatedMouseLeave\"].forEach((handle) => {\n //@ts-ignore\n this[handle] = this[handle].bind(this);\n });\n this.init();\n }\n\n init() {\n if (!CommonBase.isEmpty(this.optionModal.template)) {\n const eventInfo = this.getEventType();\n this.setEventListener(eventInfo);\n }\n }\n\n getEventType() {\n const on: any = [];\n const off: any = [];\n let triggers = [];\n if (CommonBase.isArray(this.optionModal.trigger)) {\n triggers = this.optionModal.trigger;\n } else if (CommonBase.isString(this.optionModal.trigger)) {\n triggers = this.optionModal.trigger.split(\",\");\n }\n triggers.forEach((eventName: string) => {\n const eventType = CommonBase.isExistValue(defaultTrigger, eventName) ? eventName : \"\";\n switch (eventType) {\n case \"hover\":\n on.push(\"mouseenter\");\n off.push(\"mouseleave\");\n break;\n case \"focus\":\n on.push(\"focus\");\n off.push(\"blur\");\n break;\n case \"click\":\n on.push(\"click\");\n off.push(\"click\");\n break;\n }\n });\n return { on, off };\n }\n\n setEventListener(eventInfo: any) {\n if (!CommonBase.isEmpty(eventInfo.on)) {\n eventInfo.on.forEach((eventName: string) => {\n this.pageData.events.push({ on: eventName, func: this.listenerOn, eventName });\n this.elementModal.rely.addEventListener(eventName, this.listenerOn);\n });\n }\n if (!CommonBase.isEmpty(eventInfo.off)) {\n eventInfo.off.forEach((eventName: string) => {\n this.pageData.events.push({ off: eventName, func: this.listenerOff, eventName });\n this.elementModal.rely.addEventListener(eventName, this.listenerOff);\n });\n }\n }\n\n listenerOn(e: any) {\n if (this.optionModal.isInitShow) {\n if (this.optionModal.isStopPropagation) {\n e.preventDefault();\n e.stopPropagation();\n }\n if (this.pageData.isOpen) {\n return;\n }\n if (!this.optionModal.isRunTrigger) { return; }\n e.useOpenToTip = true;\n this.show();\n if (this.optionModal.isLoad) {\n if (CommonBase.isFunction(this.optionModal.loadOnCallback)) {\n this.optionModal.loadOnCallback();\n }\n }\n }\n }\n\n listenerOff(e: any) {\n if (!this.optionModal.isRunTrigger) { return; }\n const use = CommonBase.isBoolean(e.useOpenToTip) ? e.useOpenToTip : false;\n if (use) {\n return;\n }\n this.hide(e);\n if (this.optionModal.isLoad) {\n if (CommonBase.isFunction(this.optionModal.loadOffCallback)) {\n this.optionModal.loadOffCallback();\n }\n }\n }\n\n show() {\n if (CommonBase.isString(this.optionModal.wrap)) {\n const container = window.document.querySelector(this.optionModal.wrap);\n if (CommonBase.isUndefined(container)) {\n return;\n }\n }\n if (this.pageData.isOpen) {\n return;\n }\n this.operateShow();\n }\n\n operateShow() {\n if (!this.pageData.isOpen) {\n this.pageData.isOpen = true;\n if (CommonBase.isUndefined(this.elementModal.tip)) {\n this.elementModal.tip = this.createElement();\n const elWrap = this.getWrapElement();\n if (!CommonBase.isUndefined(elWrap)) {\n elWrap.appendChild(this.elementModal.tip);\n }\n const popperOptions: any = {\n placement: this.optionModal.placement,\n };\n popperOptions.modifiers = [\n {\n name: \"offset\",\n options: {\n offset: [0, 8],\n },\n },\n ];\n this.pageObject = createPopper(this.elementModal.rely, this.elementModal.tip, popperOptions);\n } else {\n this.pageObject.setOptions({\n modifiers: [{ name: \"eventListeners\", enabled: true }],\n });\n }\n\n this.setContentBody(this.optionModal.contentBody);\n this.setContentHeader(this.optionModal.contentHeader);\n const arrAdd = [\n defaultClass.fade,\n defaultClass.show,\n `bs-${this.optionModal.type}-${this.optionModal.placement}`,\n `tooltip-${this.optionModal.theme}`,\n ];\n if (!CommonBase.isEmpty(this.optionModal.className)) {\n this.optionModal.className.split(\" \").forEach((cls: string) => {\n if (!CommonBase.isEmpty(cls)) {\n arrAdd.push(cls);\n }\n });\n }\n this.elementModal.tip.className = CommonElement.getAddClass(this.elementModal.tip.className, arrAdd);\n\n // 元素 属性变动 更新浮层信息\n setTimeout(() => {\n this.pageObject.update();\n }, 50);\n }\n }\n\n createElement() {\n const tempDiv = window.document.createElement(\"div\");\n tempDiv.innerHTML = this.optionModal.template;\n return tempDiv.childNodes[0];\n }\n\n setContentBody(body: string) {\n if (!CommonBase.isEmpty(this.optionModal.selectorBody) && !CommonBase.isEmpty(body)) {\n if (CommonBase.isUndefined(this.elementModal.tip)) {\n this.optionModal.contentBody = body;\n } else {\n const el = this.elementModal.tip.querySelector(this.optionModal.selectorBody);\n if (!CommonBase.isUndefined(el)) {\n if (this.optionModal.isHtml) {\n const newBodyHtml = body.replace(/\\\\n/g, \"<br>\").replace(/\\n/g, \"<br>\");\n el.innerHTML = newBodyHtml;\n } else {\n el.innerText = body;\n }\n this.optionModal.contentBody = body;\n this.pageObject.update();\n }\n }\n }\n }\n setInitShow(isInitShow: boolean) {\n this.optionModal.isInitShow = isInitShow;\n }\n\n setContentHeader(header: string) {\n if (!CommonBase.isEmpty(this.optionModal.selectorHead)) {\n const el = this.elementModal.tip.querySelector(this.optionModal.selectorHead);\n if (!CommonBase.isUndefined(el)) {\n const headerValue = CommonBase.isEmpty(header) ? \"\" : header;\n if (this.optionModal.isHtml) {\n el.innerHTML = headerValue;\n } else {\n el.innerText = headerValue;\n }\n this.optionModal.contentHeader = headerValue;\n this.pageObject.update();\n }\n }\n }\n\n getWrapElement() {\n let elWrap;\n if (CommonBase.isString(this.optionModal.wrap)) {\n elWrap = window.document.querySelector(this.optionModal.wrap);\n } else if (this.optionModal.wrap === false) {\n elWrap = this.elementModal.rely.parentNode;\n }\n return elWrap;\n }\n\n hide(e: any) {\n if (!this.pageData.isOpen) {\n return;\n }\n if (!document.body.contains(this.elementModal.tip)) {\n return;\n }\n let isHide = true;\n if (e.type === \"mouseleave\") {\n const relatedEl = e.relatedreference || e.toElement || e.relatedTarget;\n if (this.elementModal.tip.contains(relatedEl)) {\n isHide = false;\n this.elementModal.tip.addEventListener(e.type, this.listenerRelatedMouseLeave);\n }\n }\n if (isHide) {\n this.operateHide();\n }\n }\n\n listenerRelatedMouseLeave(e: any) {\n const relatedEl = e.relatedreference || e.toElement || e.relatedTarget;\n this.elementModal.tip.removeEventListener(e.type, this.listenerRelatedMouseLeave);\n if (!this.elementModal.rely.contains(relatedEl)) {\n this.hide(e);\n }\n }\n\n operateHide() {\n if (this.pageData.isOpen) {\n this.pageData.isOpen = false;\n this.pageObject.setOptions({\n modifiers: [{ name: \"eventListeners\", enabled: false }],\n });\n this.elementModal.tip.className = CommonElement.getRemoveClass(this.elementModal.tip.className, defaultClass.show);\n this.elementModal.tip.removeEventListener(\"mouseenter\", this.listenerHide);\n this.elementModal.tip.removeEventListener(\"click\", this.listenerHide);\n this.elementModal.tip.parentNode.removeChild(this.elementModal.tip);\n this.elementModal.tip = null;\n }\n }\n\n listenerHide() {\n this.operateHide();\n }\n\n setRunTrigger(isRunTrigger: boolean) {\n this.optionModal.isRunTrigger = isRunTrigger;\n }\n\n dispose() {\n this.pageData.events.forEach(({ eventName, func }: any) => {\n this.elementModal.rely.removeEventListener(eventName, func);\n });\n this.pageData.events = [];\n if (this.pageObject) {\n this.operateHide();\n this.pageObject.destroy();\n }\n }\n\n clShow() {\n this.operateShow();\n }\n\n clHide() {\n this.operateHide();\n }\n\n clToggle() {\n if (this.pageData.isOpen) {\n this.operateHide();\n } else {\n this.operateShow();\n }\n }\n\n clSetContentBody(body: string) {\n this.setContentBody(body);\n }\n\n clSetContentHeader(header: string) {\n this.setContentHeader(header);\n }\n\n clSetRunTrigger(isRunTrigger: boolean) {\n this.setRunTrigger(isRunTrigger);\n }\n clSetInitShow(isInitShow: boolean) {\n this.setInitShow(isInitShow);\n }\n\n clDispose() {\n this.dispose();\n }\n}\n\nexport default Tooltip;\n","import \"./tooltip.css\";\nimport CommonBase from \"../../Common/base\";\nimport Tooltip from \"../../Common/tooltip\";\n\nconst _tooltip: any = {\n positions: {\n top: \"top\",\n right: \"right\",\n rightTop: \"right-start\",\n bottom: \"bottom\",\n left: \"left\",\n leftTop: \"left-start\",\n },\n triggers: [\"hover\", \"click\", \"focus\"],\n themes: [\"white\", \"black\"],\n options: {\n position: \"top\", // top | right | bottom | left | rightTop\n trigger: \"hover\", // hover | focus | click\n theme: \"white\", // white | black\n template: \"<div class='tooltip'><div class='tooltip-inner'></div><div class='arrow' data-popper-arrow></div></div>\",\n selectorBody: \".tooltip-inner\",\n selectorArrow: \".arrow\",\n isHtml: true,\n isRunTrigger: true,\n isFixedVisible: false, // todo 待定\n isStopPropagation: true,\n className: \"\",\n },\n bind: (el: any, binding: any) => {\n _tooltip.create(el, binding);\n },\n create: (el: any, binding: any) => {\n if (CommonBase.isObject(binding) && !CommonBase.isUndefined(binding.value)) {\n const isInit = _tooltip.getIsInit(binding);\n if (isInit) {\n const bodyHtml = _tooltip._getValueHtml(binding.value);\n if (!CommonBase.isEmpty(bodyHtml)) {\n const newOption = _tooltip.getOptions();\n newOption.contentBody = bodyHtml;\n newOption.placement = _tooltip.getPosition(binding);\n newOption.trigger = _tooltip.getTrigger(binding);\n newOption.theme = _tooltip.getTheme(binding);\n newOption.isHtml = _tooltip.getIsHtml(binding);\n newOption.isFixedVisible = _tooltip.getFixedVisible(binding);\n newOption.isStopPropagation = _tooltip.getStopPropagation(binding);\n newOption.className = _tooltip.getClassName(binding);\n const tooltip: any = new Tooltip(el, newOption);\n tooltip._vueEl = el;\n el._tooltip = tooltip;\n }\n }\n }\n },\n getIsInit: (binding: any) => {\n return CommonBase.isObject(binding.value) && CommonBase.isBoolean(binding.value.init) ? binding.value.init : true;\n },\n getOptions: () => {\n const newOption = CommonBase.getJsonClone(_tooltip.options);\n return newOption;\n },\n _getValueHtml: (bindingValue: any) => {\n let bodyHtml;\n const valueType = typeof bindingValue;\n switch (valueType) {\n case \"string\":\n case \"number\":\n bodyHtml = bindingValue.toString();\n break;\n case \"object\":\n if (!CommonBase.isEmpty(bindingValue.html)) {\n bodyHtml = bindingValue.html;\n }\n break;\n default:\n bodyHtml = \"\";\n }\n return bodyHtml;\n },\n getPosition: (binding: any) => {\n let position = CommonBase.isObject(binding.value) ? binding.value.position : \"\";\n if (CommonBase.isEmpty(position)) {\n for (const [kp, vp] of Object.entries(_tooltip.positions)) {\n if (binding.modifiers[kp]) {\n position = vp;\n }\n }\n } else {\n if (CommonBase.isExistJsonKey(_tooltip.positions, position)) {\n position = _tooltip.positions[position];\n }\n }\n return CommonBase.isEmpty(position) ? _tooltip.options.position : position;\n },\n getTrigger: (binding: any) => {\n let trigger = CommonBase.isObject(binding.value) ? binding.value.trigger : \"\";\n if (CommonBase.isEmpty(trigger)) {\n _tooltip.triggers.forEach((t: any) => {\n if (binding.modifiers[t]) {\n trigger = t;\n }\n });\n }\n return CommonBase.isEmpty(trigger) ? _tooltip.options.trigger : trigger;\n },\n getTheme: (binding: any) => {\n let theme = CommonBase.isObject(binding.value) ? binding.value.theme : \"\";\n if (CommonBase.isEmpty(theme)) {\n _tooltip.themes.forEach((t: any) => {\n if (binding.modifiers[t]) {\n theme = t;\n }\n });\n }\n return CommonBase.isEmpty(theme) ? _tooltip.options.theme : theme;\n },\n getIsHtml: (binding: any) => {\n const isHtml = CommonBase.isObject(binding.value) ? binding.value.isHtml : true;\n return CommonBase.isBoolean(isHtml) ? isHtml : _tooltip.options.isFixedVisible;\n },\n getIsRunTrigger: (bindingValue: any) => {\n return CommonBase.isObject(bindingValue) && CommonBase.isBoolean(bindingValue.isRunTrigger) ? bindingValue.isRunTrigger : true;\n },\n getFixedVisible: (binding: any) => {\n const isFixedVisible = CommonBase.isObject(binding.value) ? binding.value.isFixedVisible : false;\n return CommonBase.isBoolean(isFixedVisible) ? isFixedVisible : _tooltip.options.isFixedVisible;\n },\n getStopPropagation: (binding: any) => {\n const isStopPropagation = CommonBase.isObject(binding.value) ? binding.value.isStopPropagation : false;\n return CommonBase.isBoolean(isStopPropagation) ? isStopPropagation : _tooltip.options.isStopPropagation;\n },\n getClassName: (binding: any) => {\n const cls = CommonBase.isObject(binding.value) ? binding.value.className : \"\";\n return CommonBase.isEmpty(cls) ? _tooltip.options.className : cls;\n },\n update: (el: any, binding: any) => {\n const newIsInit = _tooltip.getIsInit(binding);\n if (newIsInit) {\n if (!el._tooltip && newIsInit) {\n _tooltip.create(el, binding);\n }\n const newValue = _tooltip._getValueHtml(binding.value);\n const oldValue = _tooltip._getValueHtml(binding.oldValue);\n const isValueObject = CommonBase.isObject(binding.value);\n let isUpdContent = false;\n if (newValue !== oldValue) {\n isUpdContent = true;\n } else {\n if (isValueObject && !CommonBase.isUndefined(binding.value.updRefreshInx)) {\n const newRefreshInx = binding.value.updRefreshInx;\n const oldRefreshInx = binding.oldValue.updRefreshInx;\n if (newRefreshInx !== oldRefreshInx) {\n isUpdContent = true;\n }\n }\n }\n if (el._tooltip) {\n if (isUpdContent) {\n el._tooltip.clSetContentBody(newValue);\n }\n el._tooltip.clSetInitShow(newIsInit);\n\n const newRunTrigger = _tooltip.getIsRunTrigger(binding.value);\n const oldRunTrigger = _tooltip.getIsRunTrigger(binding.oldValue);\n if (!newRunTrigger || !newIsInit) {\n el._tooltip.clHide();\n }\n if (newRunTrigger !== oldRunTrigger) {\n el._tooltip.clSetRunTrigger(newRunTrigger);\n }\n }\n } else {\n _tooltip.destroy(el);\n }\n },\n destroy: (el: any) => {\n if (el._tooltip) {\n el._tooltip.clDispose();\n delete el._tooltip;\n }\n },\n show: (el: any) => {\n if (el._tooltip) {\n el._tooltip.clShow();\n }\n },\n hide: (el: any) => {\n if (el._tooltip) {\n el._tooltip.clHide();\n }\n },\n};\n\nexport const name = \"clTooltip\";\nexport const directive = () => {\n return {\n deep: true,\n mounted: _tooltip.bind,\n updated: _tooltip.update,\n unmounted: _tooltip.destroy,\n };\n};\n\nexport const tooltipDirectives = {\n mounted: _tooltip.bind,\n updated: _tooltip.update,\n};\n\nexport const tooltipCommon = {\n show: _tooltip.show,\n hide: _tooltip.hide,\n};","<template>\n <div :class=\"clsParent\">\n <template\n v-for=\"(info, _cbIndex) in list\"\n :key=\"`${_optKeyIndex}-${_cbIndex}`\"\n >\n <div\n v-if=\"info.isShow || info.isShow===undefined\"\n :class=\"clsContainer\"\n :style=\"styContainerFun(info)\"\n >\n <span>\n <span>\n <input\n type=\"radio\"\n :id=\"`rd_${name}_${info.id}`\"\n :name=\"name\"\n :value=\"info.id\"\n :disabled=\"info.isDisabled || disabled\"\n :checked=\"info.id.toString()===optTextValue\"\n @click=\"onClick(info)\"\n >\n <label :for=\"`rd_${name}_${info.id}`\">\n <i\n v-if=\"info.icon && info.icon.length>0\"\n :class=\"info.icon\"\n v-cltooltip=\"{html:info.name,className:'tooltip-modal'}\"\n ></i>\n <template v-else> {{info.name}}</template>\n </label>\n </span>\n <i\n v-if=\"info.tipMsg && info.tipMsg.length>0\"\n :class=\"clsTipFun(info)\"\n v-cltooltip=\"{html:info.tipMsg,className:'tooltip-modal'}\"\n ></i>\n </span>\n </div>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, nextTick } from 'vue'\nimport './Index.css'\nimport CommonBase from '../../Common/base'\nimport { tooltipDirectives } from '../../Web/Tooltip'\n\n// defineOptions\ndefineOptions({\n name: 'ClRadio',\n directives: {\n cltooltip: tooltipDirectives\n }\n})\n\n// props\nexport interface ListInfo {\n id: string | number\n name: string\n isDisabled: boolean\n tipMsg: string\n tipIcon: string\n isShow: boolean\n icon: string\n width?: string\n}\n\nconst props = defineProps({\n value: {\n type: [String, Number],\n required: true\n },\n className: {\n type: String,\n default: ''\n },\n name: {\n type: String,\n required: true\n },\n list: {\n type: Array as () => ListInfo[],\n default: () => []\n },\n disabled: {\n type: Boolean,\n default: false\n },\n width: {\n type: String,\n default: 'auto'\n },\n isInline: {\n type: Boolean,\n default: true\n }\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: string): void\n (e: 'onChange', value: string, info: ListInfo): void\n (e: 'onInit'): void\n}>()\n\n// 常量 / 变量定义\nconst _optKeyIndex = `rd-${CommonBase.getRandom(8)}`\nvoid _optKeyIndex // 模板 :key 中使用,vue-tsc 无法追踪\nconst optTextValue = ref(props.value?.toString() || '')\nlet _listDataToJson: any = {}\nconst _optIsFirstDataFinish = ref(false)\n\n// computed\nconst clsParent = computed(() => {\n const className = props.className\n const cls: any = {\n \"panel-radio\": true,\n }\n if (className && !CommonBase.isEmpty(className)) {\n className.split(\" \").forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsContainer = computed(() => {\n const cls: any = {\n radio: true,\n \"radio-default\": true,\n }\n cls[\"radio-inline\"] = props.isInline ?? true\n return cls\n})\n\n// 内部调用方法\nconst clsTipFun = (item: any) => {\n const cls: any = {\n \"radio-icon-tip\": true,\n }\n if (CommonBase.isEmpty(item.tipIcon)) {\n cls[\"clIconFont clIcon-question-circle\"] = true\n } else {\n cls[item.tipIcon] = true\n }\n return cls\n}\n\nconst styContainerFun = (item: any) => {\n const sty: any = {}\n const { width } = props\n if (item && !CommonBase.isEmpty(item.width)) {\n sty.width = item.width\n } else {\n if (!CommonBase.isEmpty(width)) {\n sty.width = props.width\n }\n }\n return sty\n}\n\nconst _emitModelValue = (value: string) => {\n emit(\"update:value\", value)\n}\n\nconst _emitChange = (info: any) => {\n const value = info.id.toString()\n _emitModelValue(value)\n emit(\"onChange\", value, CommonBase.getJsonClone(info))\n}\n\nconst _emitInit = () => {\n nextTick(() => {\n emit(\"onInit\")\n })\n}\n\nconst _getValue = () => {\n return CommonBase.isExistJsonKey(_listDataToJson, optTextValue.value) ? optTextValue.value : \"\"\n}\n\nconst _convertListToJson = (list: any[]) => {\n _listDataToJson = CommonBase.isEmpty(list) ? {} : CommonBase.getJsonByList(list)\n}\n\nconst _checkValueInList = () => {\n if (_optIsFirstDataFinish.value) {\n const selectValue = CommonBase.isEmpty(optTextValue.value) ? \"\" : optTextValue.value\n const isExist = CommonBase.isExistJsonKey(_listDataToJson, selectValue)\n if (!isExist) {\n optTextValue.value = \"\"\n _emitModelValue(\"\")\n }\n }\n}\n\nconst _setValue = (value: any) => {\n if (value !== optTextValue.value) {\n optTextValue.value = value?.toString() || ''\n }\n}\n\nconst _initMain = () => {\n _optIsFirstDataFinish.value = props.list.length !== 0\n _convertListToJson(props.list)\n _checkValueInList()\n}\n\n// watch\nwatch(_optIsFirstDataFinish, (newValue) => {\n if (newValue) {\n _emitInit()\n }\n})\n\nwatch(\n () => props.list,\n (newValue) => {\n if (!_optIsFirstDataFinish.value) {\n _optIsFirstDataFinish.value = true\n if (newValue.length === 0) {\n _checkValueInList()\n }\n }\n }\n)\n\nwatch(\n [() => props.value, () => props.list],\n ([newValue, newList]) => {\n const list = newList as any[]\n if (!_optIsFirstDataFinish.value && list.length > 0) {\n _optIsFirstDataFinish.value = true\n }\n _convertListToJson(list)\n if (newValue !== optTextValue.value) {\n _setValue(newValue)\n }\n _checkValueInList()\n }\n)\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 事件方法\nconst onClick = (item: any) => {\n if (!item.isDisabled && !props.disabled) {\n const value = item.id.toString()\n if (value !== optTextValue.value) {\n optTextValue.value = value\n _emitChange(item)\n }\n }\n}\n\n// 开放给外部使用的方法\nconst getValue = () => {\n return _getValue()\n}\n\nconst getValueData = () => {\n const value = getValue()\n return CommonBase.isExistJsonKey(_listDataToJson, value) ? CommonBase.getJsonClone(_listDataToJson[value]) : {}\n}\n\nconst setValue = (value: string) => {\n _setValue(value)\n _checkValueInList()\n}\n\nconst runInitComplete = () => {\n if (!_optIsFirstDataFinish.value) {\n _optIsFirstDataFinish.value = true\n _convertListToJson(props.list)\n _setValue(props.value)\n _checkValueInList()\n }\n}\n\n// 导出类型定义\nexport interface ClRadioExpose {\n getValue: () => string\n getValueData: () => Record<string, any>\n setValue: (value: string) => void\n runInitComplete: () => void\n}\n\n// defineExpose\ndefineExpose({\n getValue,\n getValueData,\n setValue,\n runInitComplete\n})\n</script>","<template>\n <div :class=\"clsContainer\">\n <span>\n <span>\n <input\n type=\"radio\"\n :id=\"optForId\"\n :name=\"name\"\n :checked=\"value\"\n :disabled=\"isDisabled\"\n @click=\"onClick\"\n >\n <label :for=\"optForId\">\n <i\n v-if=\"icon && icon.length>0\"\n :class=\"icon\"\n v-cltooltip=\"{html:label,className:'tooltip-modal'}\"\n ></i>\n <template v-else> {{label}}</template>\n </label>\n </span>\n <i\n v-if=\"tipMsg && tipMsg.length>0\"\n :class=\"clsTip\"\n v-cltooltip=\"{html:tipMsg,className:'tooltip-modal'}\"\n ></i>\n </span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport './Index.css'\nimport CommonBase from '../../Common/base'\nimport { tooltipDirectives } from '../../Web/Tooltip'\n\n// defineOptions\ndefineOptions({\n name: 'ClRadioOne',\n directives: {\n cltooltip: tooltipDirectives\n }\n})\n\n// props\nconst props = defineProps<{\n className?: string\n forId?: string\n name?: string\n label?: string\n value?: boolean\n isDisabled?: boolean\n icon?: string\n tipMsg?: string\n tipIcon?: string\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: boolean): void\n (e: 'onChange', value: boolean): void\n}>()\n\n// 常量 / 变量定义\nconst optForId = CommonBase.isEmpty(props.forId) ? `rd_${props.name}_${CommonBase.getRandom(8)}` : props.forId\n\n// computed\nconst clsContainer = computed(() => {\n const cls: any = {\n radio: true,\n \"radio-default\": true,\n \"radio-inline\": true,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(\" \").forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsTip = computed(() => {\n const { tipIcon } = props\n const cls: any = {\n \"radio-icon-tip\": true,\n }\n if (!CommonBase.isEmpty(tipIcon) && tipIcon) {\n cls[tipIcon] = true\n } else {\n cls[\"clIconFont clIcon-question-circle\"] = true\n }\n return cls\n})\n\n// 内部调用方法\nconst _emitChange = (value: boolean) => {\n emit(\"update:value\", value)\n emit(\"onChange\", value)\n}\n\n// 事件方法\nconst onClick = (event: any) => {\n const checked = event.currentTarget.checked\n if (!checked) {\n _emitChange(checked)\n }\n}\n</script>","<template>\n <div :class=\"clsParent\">\n <template v-for=\"(info, _cbIndex) in list\" :key=\"`${optKeyIndex}-${_cbIndex}`\">\n <div v-if=\"info.isShow || info.isShow === undefined\" :class=\"clsContainer\" :style=\"styContainerFun(info)\">\n <span>\n <span>\n <input type=\"checkbox\" :id=\"`${optKeyIndex}_${name}_${info.id}`\" :name=\"name\" :value=\"info.id\"\n :disabled=\"info.isDisabled || disabled\" :checked=\"optTextValue.includes(info.id.toString())\"\n @click=\"onClick(info)\">\n <label :for=\"`${optKeyIndex}_${name}_${info.id}`\">\n <slot :data=\"info\">\n <i v-if=\"info.icon && info.icon.length > 0\" :class=\"info.icon\"\n v-cltooltip=\"{ html: info.name, className: 'tooltip-modal' }\"></i>\n <template v-else> {{ info.name }}</template>\n </slot>\n </label>\n </span>\n <i v-if=\"info.tipMsg && info.tipMsg.length > 0\" :class=\"clsTipFun(info)\"\n v-cltooltip=\"{ html: info.tipMsg, className: 'tooltip-modal' }\"></i>\n </span>\n </div>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, nextTick } from 'vue'\nimport './Index.css'\nimport CommonBase from '../../Common/base'\nimport { tooltipDirectives } from '../../Web/Tooltip'\n\n// defineOptions\ndefineOptions({\n name: 'ClCheckbox',\n directives: {\n cltooltip: tooltipDirectives\n }\n})\n\n// props\nexport interface ListInfo {\n id: string | number\n name: string\n isDisabled: boolean\n tipMsg: string\n tipIcon: string\n isShow: boolean\n icon: string\n width?: string\n}\n\nconst props = defineProps({\n value: {\n type: String,\n required: true\n },\n className: {\n type: String,\n default: ''\n },\n name: {\n type: String,\n required: true\n },\n list: {\n type: Array as () => ListInfo[],\n default: () => []\n },\n disabled: {\n type: Boolean,\n default: false\n },\n width: {\n type: String,\n default: ''\n },\n isInline: {\n type: Boolean,\n default: true\n },\n checkChangeBefore: {\n type: Function,\n default: undefined\n }\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: string): void\n (e: 'onChange', value: string, dataList: ListInfo[], isAll: boolean): void\n (e: 'onInit'): void\n}>()\n\n// 常量 / 变量定义\nconst optKeyIndex = `cb-${CommonBase.getRandom(8)}`\nconst optTextValue = ref(CommonBase.isEmpty(props.value) ? [] : props.value.split(','))\nconst _optIsFirstDataFinish = ref(false)\nlet _listDataToJson: any = {}\nconst _pageData = {\n lastValue: [] as string[]\n}\n\n// computed\nconst clsParent = computed(() => {\n const className = props.className\n const cls: any = {\n \"panel-checkbox\": true,\n }\n if (className && !CommonBase.isEmpty(className)) {\n className.split(\" \").forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsContainer = computed(() => {\n const cls: any = {\n checkbox: true,\n \"checkbox-default\": true,\n }\n cls[\"checkbox-inline\"] = props.isInline ?? true\n return cls\n})\n\n// 内部调用方法\nconst clsTipFun = (item: any) => {\n const cls: any = {\n \"checkbox-icon-tip\": true,\n }\n if (CommonBase.isEmpty(item.tipIcon)) {\n cls[\"clIconFont clIcon-question-circle\"] = true\n } else {\n cls[item.tipIcon] = true\n }\n return cls\n}\n\nconst styContainerFun = (item: any) => {\n const sty: any = {}\n const { width } = props\n if (item && !CommonBase.isEmpty(item.width)) {\n sty.width = item.width\n } else {\n if (!CommonBase.isEmpty(width)) {\n sty.width = props.width\n }\n }\n return sty\n}\n\nconst _emitModelValue = (value: string) => {\n emit(\"update:value\", value)\n}\n\nconst _emitChange = (value: string) => {\n const dataList: any[] = []\n if (!CommonBase.isEmpty(value)) {\n value.split(',').forEach((v: string) => {\n if (CommonBase.isExistJsonKey(_listDataToJson, v)) {\n dataList.push(CommonBase.getJsonClone(_listDataToJson[v]))\n }\n })\n }\n const isAll = dataList.length > 0 && dataList.length === props.list.length\n _emitModelValue(value)\n emit(\"onChange\", value, dataList, isAll)\n}\n\nconst _emitInit = () => {\n nextTick(() => {\n emit(\"onInit\")\n })\n}\n\nconst _getEffectiveValue = () => {\n const effectiveValue: any[] = []\n optTextValue.value.forEach((v: string) => {\n if (CommonBase.isExistJsonKey(_listDataToJson, v)) {\n effectiveValue.push(v)\n }\n })\n return effectiveValue\n}\n\nconst _convertListToJson = (list: any[]) => {\n _listDataToJson = CommonBase.isEmpty(list) ? {} : CommonBase.getJsonByList(list)\n}\n\nconst _checkValueInList = () => {\n if (_optIsFirstDataFinish.value) {\n if (!CommonBase.isEmpty(optTextValue.value)) {\n const effectiveValue = _getEffectiveValue()\n if (!CommonBase.isEqualArr(optTextValue.value, effectiveValue)) {\n optTextValue.value = effectiveValue\n _emitModelValue(effectiveValue.join(','))\n }\n }\n }\n}\n\nconst _setValue = (value: string) => {\n const arrValue = value.split(',')\n let isExist = CommonBase.isEqualArr(optTextValue.value, arrValue)\n if (isExist) {\n isExist = value === optTextValue.value.join(',')\n }\n if (!isExist) {\n optTextValue.value = arrValue\n }\n}\n\nconst _initMain = () => {\n _optIsFirstDataFinish.value = props.list.length !== 0\n _convertListToJson(props.list)\n _checkValueInList()\n _pageData.lastValue = CommonBase.getArrClone(optTextValue.value)\n}\n\n// watch\nwatch(_optIsFirstDataFinish, (newValue) => {\n if (newValue) {\n _emitInit()\n }\n})\n\nwatch(\n () => props.list,\n (newValue) => {\n if (!_optIsFirstDataFinish.value) {\n _optIsFirstDataFinish.value = true\n if (newValue.length === 0) {\n _checkValueInList()\n }\n _emitInit()\n }\n }\n)\n\nwatch(\n [() => props.value, () => props.list],\n ([newValue, newList]) => {\n const list = newList as any[]\n if (!_optIsFirstDataFinish.value && list.length > 0) {\n _optIsFirstDataFinish.value = true\n _emitInit()\n }\n _convertListToJson(list)\n if (newValue !== props.value) {\n _setValue(newValue)\n }\n _checkValueInList()\n }\n)\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 事件方法\nconst onClick = async (item: any) => {\n if (!item.isDisabled && !props.disabled) {\n const value: string = item.id.toString()\n let selectArr = CommonBase.getArrClone(optTextValue.value)\n if (CommonBase.isExistValue(optTextValue.value, value)) {\n selectArr = CommonBase.getArrRemoveById(selectArr, value)\n } else {\n selectArr.push(value)\n }\n\n const selectValueStr = selectArr.join(',')\n let tempCheck: any = true\n if (props.checkChangeBefore) {\n tempCheck = await props.checkChangeBefore(selectValueStr)\n tempCheck = CommonBase.isBoolean(tempCheck) ? tempCheck : true\n }\n if (tempCheck) {\n optTextValue.value = selectArr\n _pageData.lastValue = selectArr\n _emitChange(selectValueStr)\n } else {\n nextTick(() => {\n optTextValue.value = selectArr\n nextTick(() => {\n optTextValue.value = _pageData.lastValue\n })\n })\n }\n }\n}\n\n// 开放给外部使用的方法\nconst getValue = () => {\n const values = _getEffectiveValue()\n return values.join(',')\n}\n\nconst getValueData = () => {\n const list: any[] = []\n optTextValue.value.forEach((v: string) => {\n if (CommonBase.isExistJsonKey(_listDataToJson, v)) {\n list.push(CommonBase.getJsonClone(_listDataToJson[v]))\n }\n })\n return list\n}\n\nconst setValue = (value: string) => {\n _setValue(value)\n _checkValueInList()\n}\n\nconst runInitComplete = () => {\n if (!_optIsFirstDataFinish.value) {\n _optIsFirstDataFinish.value = true\n _convertListToJson(props.list)\n _setValue(props.value)\n _checkValueInList()\n _emitInit()\n }\n}\n\n// 导出类型定义\nexport interface ClCheckboxExpose {\n getValue: () => string\n getValueData: () => Record<string, any>[]\n setValue: (value: string) => void\n runInitComplete: () => void\n}\n\n// defineExpose\ndefineExpose({\n getValue,\n getValueData,\n setValue,\n runInitComplete\n})\n</script>","<template>\n <div :class=\"clsContainer\">\n <span>\n <span>\n <input\n type=\"checkbox\"\n :id=\"optForId\"\n :name=\"name\"\n :class=\"clsCheckbox\"\n :checked=\"value\"\n :disabled=\"disabled\"\n @click=\"onClick\"\n >\n <label :for=\"optForId\">\n <i\n v-if=\"icon && icon.length>0\"\n :class=\"icon\"\n v-cltooltip=\"{html:label,className:'tooltip-modal'}\"\n ></i>\n <template v-else> {{label}}</template>\n </label>\n </span>\n <i\n v-if=\"tipMsg && tipMsg.length>0\"\n :class=\"clsTip\"\n v-cltooltip=\"{html:tipMsg,className:'tooltip-modal'}\"\n ></i>\n </span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport './Index.css'\nimport CommonBase from '../../Common/base'\nimport { tooltipDirectives } from '../../Web/Tooltip'\n\n// defineOptions\ndefineOptions({\n name: 'ClCheckboxOne',\n directives: {\n cltooltip: tooltipDirectives\n }\n})\n\n// props\nconst props = defineProps<{\n className?: string\n forId?: string\n name?: string\n label?: string\n value?: boolean\n disabled?: boolean\n indeterminate?: boolean\n icon?: string\n tipMsg?: string\n tipIcon?: string\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: boolean): void\n (e: 'onChange', data: { event: any; value: boolean }): void\n}>()\n\n// 常量 / 变量定义\nconst optForId = CommonBase.isEmpty(props.forId) ? `cb_${props.name || ''}_${CommonBase.getRandom(8)}` : props.forId\n\n// computed\nconst clsContainer = computed(() => {\n const cls: any = {\n checkbox: true,\n \"checkbox-default\": true,\n \"checkbox-inline\": true,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(\" \").forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsTip = computed(() => {\n const { tipIcon } = props\n const cls: any = {\n \"checkbox-icon-tip\": true,\n }\n if (!CommonBase.isEmpty(tipIcon) && tipIcon) {\n cls[tipIcon] = true\n } else {\n cls[\"clIconFont clIcon-question-circle\"] = true\n }\n return cls\n})\n\nconst clsCheckbox = computed(() => {\n return {\n indeterminate: props.indeterminate,\n }\n})\n\n// 内部调用方法\nconst _emitChange = (e: any, value: boolean) => {\n emit(\"update:value\", value)\n emit(\"onChange\", { event: e, value })\n}\n\n// 事件方法\nconst onClick = (event: any) => {\n _emitChange(event, event.currentTarget.checked)\n}\n</script>","<template>\n <span\n :class=\"clsParent\"\n :style=\"styParent\"\n >{{optTextNum}}</span>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, watch, onMounted } from 'vue'\nimport './Index.css'\nimport CommonBase from '../../Common/base'\n\n// defineOptions\ndefineOptions({\n name: 'ClBadge'\n})\n\n// props\nconst props = defineProps({\n className: String, // desc: 自定义CSS类名\n color: {\n type: String,\n default: 'default' // enum: default, green, red, yellow, black, gray (可自定义) | desc: 颜色主题\n },\n colorSty: String, // desc: 自定义颜色样式\n num: [String, Number], // desc: 显示的数字\n maxNum: {\n type: Number,\n default: -1 // desc: 最大显示数字,超过显示 maxNum+\n },\n isHideZero: {\n type: Boolean,\n default: true // desc: 是否隐藏数字为0的徽章\n },\n isDot: {\n type: Boolean,\n default: false // desc: 是否显示为圆点\n }\n})\n\n// 验证:num 或者 isDot 必须传一个值\nconst validateProps = () => {\n if (CommonBase.isEmpty(props.num) && !props.isDot) {\n console.warn('[ClBadge] Warning: Either \"num\" prop or \"isDot\" prop is required. When \"num\" is not provided, \"isDot\" must be true.')\n }\n}\n\nonMounted(() => {\n validateProps()\n})\n\nwatch(() => [props.num, props.isDot], () => {\n validateProps()\n})\n\n// computed\nconst optTextNum = computed(() => {\n let v = ''\n if (!CommonBase.isEmpty(props.num)) {\n const n = Number(props.num)\n if (n === 0 && props.isHideZero) {\n v = ''\n } else if (n > (props.maxNum ?? -1) && (props.maxNum ?? -1) > 0) {\n v = `${props.maxNum}+`\n } else {\n v = n.toString()\n }\n }\n return v\n})\n\nconst clsParent = computed(() => {\n const cls: any = {\n badge: true,\n }\n if (!CommonBase.isEmpty(props.color)) {\n cls[`bg-${props.color}`] = true\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n if (props.isDot) {\n cls['badge-dot'] = true\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: any = {}\n if (!CommonBase.isEmpty(props.colorSty)) {\n sty['background-color'] = `${props.colorSty} !important`\n }\n return sty\n})\n</script>","<template>\n <span ref=\"refElText\">{{optValue}}</span>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport * as CountUp from 'countup.js'\n\n// defineOptions\ndefineOptions({\n name: 'ClCountup'\n})\n\n// props\nconst props = defineProps<{\n value?: string | number\n decimal?: number\n isThousand?: boolean\n separator?: string\n animationTime?: number\n}>()\n\n// 常量 / 变量定义\nconst refElText = ref<HTMLSpanElement | null>(null)\nconst optValue = ref('')\nconst _pageData: any = {\n lastValue: '',\n}\n\n// 内部调用方法\nconst _initValue = (value: any) => {\n const { animationTime = 0, decimal = 0, isThousand = true, separator = ',' } = props\n if (animationTime === 0) {\n let newValue = ''\n if (!CommonBase.isEmpty(value)) {\n newValue = CommonBase.getValueByFormat(value.toString(), decimal === 0 ? 'int' : 'float', {\n decimalNum: decimal,\n isThousands: isThousand,\n })\n if (isThousand && separator !== ',') {\n newValue = newValue.replace(/,/g, separator)\n }\n }\n optValue.value = newValue\n } else {\n const start = CommonBase.isEmpty(_pageData.lastValue) ? 0 : Number(_pageData.lastValue)\n const end = value && !CommonBase.isEmpty(value) ? Number(value) : 0\n const options = {\n startVal: start,\n duration: animationTime,\n decimalPlaces: decimal,\n separator,\n useGrouping: isThousand,\n }\n const objCountUp = new CountUp.CountUp(refElText.value as HTMLSpanElement, end, options)\n if (!objCountUp.error) {\n objCountUp.start()\n }\n }\n}\n\nconst _initMain = () => {\n _initValue(props.value)\n}\n\n// watch\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n _pageData.lastValue = oldValue\n _initValue(newValue)\n }\n }\n)\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n</script>","<template>\n <div :class=\"clsParent\">\n <div class=\"imgCropper-container\">\n <div>\n <div class=\"imgCropper-main\">\n <vue-cropper\n ref=\"refElCropper\"\n v-bind=\"optCropper\"\n @realTime=\"onRealTime\"\n @imgLoad=\"onImgLoad\"\n ></vue-cropper>\n <div class=\"frame-alignline\">\n <template v-if=\"optAlignLine.indexOf('center') > -1\">\n <div class=\"alignline-h alignline-center-h\"></div>\n <div class=\"alignline-v alignline-center-v\"></div>\n </template>\n <template v-if=\"optAlignLine.indexOf('nineGrid') > -1\">\n <div class=\"alignline-h alignline-nineGrid-h1\"></div>\n <div class=\"alignline-h alignline-nineGrid-h2\"></div>\n <div class=\"alignline-v alignline-nineGrid-v1\"></div>\n <div class=\"alignline-v alignline-nineGrid-v2\"></div>\n </template>\n </div>\n <ClLoadFullCenter\n v-if=\"optBase.isInitImageLoading\"\n theme=\"rotaryLine\"\n ></ClLoadFullCenter>\n </div>\n <div class=\"imgCropper-btns\">\n <div>\n <div\n v-if=\"isShowUpload\"\n class=\"imgCropper-upload\"\n >\n <input\n type=\"file\"\n :id=\"optBase.uploadAgainId\"\n :name=\"optBase.uploadAgainId\"\n accept=\"image/jpg,image/jpeg,image/pjpeg,image/png,image/x-png\"\n @change=\"onChangeFileAgain\"\n >\n <label\n ref=\"refElFileLabel\"\n :for=\"optBase.uploadAgainId\"\n >\n <span\n title=\"重新上传\"\n @click.stop=\"onClickFileLabel\"\n ><i class=\"clIconFont clIcon-upload\"></i></span>\n </label>\n </div>\n </div>\n\n <div class=\"imgCropper-btns-opt\">\n <span\n title=\"放大\"\n @click.stop=\"onLarge\"\n ><i class=\"clIconFont clIcon-search-plus\"></i></span>\n <span\n title=\"缩小\"\n @click.stop=\"onSmall\"\n ><i class=\"clIconFont clIcon-search-minus\"></i></span>\n <span\n title=\"左转90°\"\n @click.stop=\"onRotateLeft\"\n ><i class=\"clIconFont clIcon-rotate-left\"></i></span>\n <span\n title=\"右转90°\"\n @click.stop=\"onRotateRight\"\n ><i class=\"clIconFont clIcon-rotate-right\"></i></span>\n <span\n title=\"重置\"\n @click.stop=\"onReduction\"\n ><i class=\"clIconFont clIcon-restore\"></i></span>\n <span\n v-if=\"isShowSave\"\n title=\"保存\"\n @click.stop=\"onSave\"\n ><i class=\"clIconFont clIcon-save\"></i></span>\n </div>\n </div>\n </div>\n <div\n v-if=\"isPreview\"\n :class=\"clsPreview\"\n >\n <div :style=\"optPreview.pStyle\">\n <img\n :src=\"optPreview.src\"\n :style=\"optPreview.style\"\n alt=\"\"\n >\n </div>\n <div\n v-if=\"isPreviewAlignLine\"\n class=\"frame-alignline\"\n >\n <template v-if=\"optAlignLine.indexOf('center') > -1\">\n <div class=\"alignline-h alignline-center-h\"></div>\n <div class=\"alignline-v alignline-center-v\"></div>\n </template>\n <template v-if=\"optAlignLine.indexOf('nineGrid') > -1\">\n <div class=\"alignline-h alignline-nineGrid-h1\"></div>\n <div class=\"alignline-h alignline-nineGrid-h2\"></div>\n <div class=\"alignline-v alignline-nineGrid-v1\"></div>\n <div class=\"alignline-v alignline-nineGrid-v2\"></div>\n </template>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { watch, onMounted, nextTick, computed, ref, reactive } from 'vue'\nimport 'vue-cropper/dist/index.css'\nimport { VueCropper } from 'vue-cropper'\nimport ClLoadFullCenter from '../Load/FullCenter.vue'\nimport CommonBase from '../../Common/base'\nimport './index.css'\n\ndefineOptions({ name: 'ClCropperBase' })\n\nconst props = defineProps({\n className: String,\n src: {\n type: String,\n required: true\n },\n width: {\n type: Number,\n required: true\n },\n height: {\n type: Number,\n required: true\n },\n isFixedAspectRatio: {\n type: Boolean,\n default: true\n },\n isPreview: {\n type: Boolean,\n default: true\n },\n previewShape: {\n type: String,\n default: 'square' // square | round\n },\n enlarge: {\n type: Number,\n default: 2\n },\n isShowUpload: {\n type: Boolean,\n default: true\n },\n isShowSave: {\n type: Boolean,\n default: false\n },\n isCenterBox: {\n type: Boolean,\n default: true\n },\n fillColor: {\n type: String,\n default: 'transparent' // #FFFFFF\n },\n alignLine: {\n type: String,\n default: 'center' // center | nineGrid\n },\n isPreviewAlignLine: {\n type: Boolean,\n default: false\n }\n})\n\nconst emit = defineEmits<{\n (e: 'onImgLoad', isSuccess: boolean): void\n (e: 'onImgSave'): void\n}>()\n\nconst refElCropper: any = ref(null)\nconst refElFileLabel: any = ref(null)\n\nconst ran = CommonBase.getRandom(8)\nconst optBase = reactive({\n uploadAgainId: `btnImgCropper_uploadAgain_${ran}`,\n isInitImageLoading: false\n})\n\nconst optCropper: any = reactive({\n img: '',\n outputSize: 1,\n outputType: 'png',\n info: true,\n canScale: true,\n autoCrop: true,\n autoCropWidth: props.width,\n autoCropHeight: props.height,\n fixed: props.isFixedAspectRatio,\n fixedNumber: [1, 1],\n full: false,\n fixedBox: false,\n canMove: true,\n canMoveBox: true,\n original: false,\n centerBox: props.isCenterBox,\n high: true,\n infoTrue: true,\n maxImgSize: 2000,\n enlarge: props.enlarge,\n mode: 'contain',\n limitMinSize: 50,\n fillColor: props.fillColor\n})\n\nconst optPreview = reactive({\n src: '',\n style: {} as any,\n pStyle: {} as any\n})\n\nconst optAlignLine = computed(() => {\n const { alignLine } = props\n const arr: string[] = alignLine && !CommonBase.isEmpty(alignLine) ? alignLine.split(',') : []\n return arr\n})\n\nconst clsParent = computed(() => {\n const { className } = props\n const cls: any = {\n 'panel-imgCropper': true\n }\n if (className && !CommonBase.isEmpty(className)) {\n className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsPreview = computed(() => {\n const { previewShape } = props\n const cls: any = {\n 'imgCropper-preview': true\n }\n cls[`imgCropper-preview-${previewShape}`] = true\n return cls\n})\n\nconst _setFixedNumber = () => {\n const { width, height } = props\n let fixedNumber: number[] = []\n if (width > height) {\n fixedNumber = [1, height / width]\n } else if (width < height) {\n fixedNumber = [width / height, 1]\n } else {\n fixedNumber = [1, 1]\n }\n optCropper.fixedNumber = fixedNumber\n}\n\nconst _setCropperImgSrc = () => {\n const { src } = props\n let newSrc = ''\n if (src && !CommonBase.isEmpty(src)) {\n if (src.substring(0, 5) !== 'data:') {\n if (/^(http|https):\\/\\/[^\\s]+$/.test(src)) {\n const t = `_t=${new Date().getTime()}`\n const joinStr = src.indexOf('?') === -1 ? '?' : '&'\n newSrc = src + joinStr + t\n }\n } else {\n newSrc = src\n }\n optBase.isInitImageLoading = true\n }\n optCropper.img = newSrc\n}\n\nconst _initMain = () => {\n _setFixedNumber()\n _setCropperImgSrc()\n}\n\nonMounted(() => {\n optBase.isInitImageLoading = true\n nextTick(() => {\n _initMain()\n })\n})\n\nwatch(\n () => props.src,\n (newValue: string) => {\n if (!CommonBase.isEmpty(newValue)) {\n _setCropperImgSrc()\n }\n }\n)\n\nconst onRealTime = (imgData: any) => {\n optPreview.src = imgData.url\n optPreview.style = imgData.img\n optPreview.pStyle = imgData.div\n}\n\nconst onImgLoad = (result: any) => {\n const isSuccess = result === 'success'\n optBase.isInitImageLoading = false\n emit('onImgLoad', isSuccess)\n}\n\nconst onChangeFileAgain = (el: any) => {\n CommonBase.getBase64ByFile(el.currentTarget.files).then((result: any) => {\n optCropper.img = result\n })\n}\n\nconst onClickFileLabel = () => {\n // refElFileLabel.value.click()\n}\n\nconst onLarge = () => {\n refElCropper.value.changeScale(1)\n}\n\nconst onSmall = () => {\n refElCropper.value.changeScale(-1)\n}\n\nconst onRotateLeft = () => {\n refElCropper.value.rotateLeft()\n}\n\nconst onRotateRight = () => {\n refElCropper.value.rotateRight()\n}\n\nconst onReduction = () => {\n refElCropper.value.refresh()\n}\n\nconst onSave = () => {\n emit('onImgSave')\n}\n\nconst getImageBase64 = (): Promise<any> => {\n return new Promise((resolve) => {\n refElCropper.value.getCropData((cropperData: any) => {\n resolve(cropperData)\n })\n })\n}\n\ndefineExpose({\n getImageBase64\n})\n</script>\n","<template>\n <ClModal\n v-if=\"isModal\"\n ref=\"refElModal\"\n width=\"850px\"\n titleName=\"图片裁切\"\n :isShowSubmitLoad=\"false\"\n closeLabel=\"取消\"\n submitLabel=\"确定\"\n @onSubmit=\"onSubmit\"\n >\n <ClCropperBase\n ref=\"refElCropper\"\n :className=\"className\"\n :src=\"src\"\n :width=\"width\"\n :height=\"height\"\n :isFixedAspectRatio=\"isFixedAspectRatio\"\n :isPreview=\"isPreview\"\n :previewShape=\"previewShape\"\n :enlarge=\"enlarge\"\n :isCenterBox=\"isCenterBox\"\n :isShowUpload=\"isShowUpload\"\n :isShowSave=\"false\"\n :alignLine=\"alignLine\"\n :isPreviewAlignLine=\"isPreviewAlignLine\"\n :fillColor=\"fillColor\"\n @onImgLoad=\"onImgLoad\"\n ></ClCropperBase>\n </ClModal>\n <ClCropperBase\n v-else\n ref=\"refElCropper\"\n :className=\"className\"\n :src=\"src\"\n :width=\"width\"\n :height=\"height\"\n :isFixedAspectRatio=\"isFixedAspectRatio\"\n :isPreview=\"isPreview\"\n :previewShape=\"previewShape\"\n :enlarge=\"enlarge\"\n :isCenterBox=\"isCenterBox\"\n :isShowUpload=\"isShowUpload\"\n :isShowSave=\"isShowSave\"\n :alignLine=\"alignLine\"\n :isPreviewAlignLine=\"isPreviewAlignLine\"\n :fillColor=\"fillColor\"\n @onImgLoad=\"onImgLoad\"\n @onImgSave=\"onImgSave\"\n ></ClCropperBase>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport ClCropperBase from './Base.vue'\nimport ClModal from '../Modal/Index.vue'\n\ndefineOptions({ name: 'ClCropper' })\n\nconst props = defineProps({\n className: String,\n src: {\n type: String,\n required: true\n },\n width: {\n type: Number,\n required: true\n },\n height: {\n type: Number,\n required: true\n },\n isFixedAspectRatio: {\n type: Boolean,\n default: true\n },\n isCenterBox: {\n type: Boolean,\n default: true\n },\n isPreview: {\n type: Boolean,\n default: true\n },\n previewShape: {\n type: String,\n default: 'square' // square | round\n },\n enlarge: {\n type: Number,\n default: 2\n },\n isModal: {\n type: Boolean,\n default: true\n },\n isShowUpload: {\n type: Boolean,\n default: true\n },\n isShowSave: {\n type: Boolean,\n default: false\n },\n fillColor: {\n type: String,\n default: 'transparent' // #FFFFFF\n },\n alignLine: {\n type: String,\n default: 'center' // center | nineGrid\n },\n isPreviewAlignLine: {\n type: Boolean,\n default: false\n }\n})\n\nconst emit = defineEmits<{\n (e: 'onSubmit', data: any): void\n (e: 'onImgLoad', isSuccess: boolean): void\n}>()\n\nconst refElModal: any = ref(null)\nconst refElCropper: any = ref(null)\n\nconst _getOutImageBase64 = () => {\n return refElCropper.value.getImageBase64().then((data: any) => data)\n}\n\nconst onSubmit = () => {\n return _getOutImageBase64().then((data: any) => {\n emit('onSubmit', data)\n refElModal.value.hide()\n })\n}\n\nconst onImgLoad = (isSuccess: boolean) => {\n emit('onImgLoad', isSuccess)\n}\n\nconst onImgSave = () => {\n return _getOutImageBase64().then((data: any) => {\n emit('onSubmit', data)\n })\n}\n\nconst getImageBase64 = () => {\n return _getOutImageBase64()\n}\n\nconst show = () => {\n if (refElModal.value && props.isModal) {\n refElModal.value.show()\n }\n}\n\ndefineExpose({\n getImageBase64,\n show\n})\n</script>\n","/**!\n * Sortable 1.15.0\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n /**HTMLElement*/\n el,\n /**String*/\n selector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n /**HTMLElement*/\n el,\n /**String*/\n selector,\n /**HTMLElement*/\n ctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n var winWidth = document.documentElement.clientWidth || document.body.clientWidth || window.innerWidth;\n var winHeight = document.documentElement.clientHeight || document.body.clientHeight || window.innerHeight;\n top = 0;\n left = 0;\n bottom = winHeight;\n right = winWidth;\n height = winHeight;\n width = winWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghostClone && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghostClone || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghostClone) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n dragElClone,\n parentEl,\n ghostEl,\n ghostElClone,\n ghostMatrixLast,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\n ghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n _silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\n supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n }(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n },\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n },\n\n /**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n },\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n },\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n },\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n }; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n //console.log(\"new Sortable\")\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5,\n extOption: {\n boundary: {\n isOut: false,\n element: \"\",\n x: 0,\n y: 0,\n },\n wrapBody: {\n isWrap: false,\n element: \"\"\n },\n cross: {\n isCross: false,\n isSameStruct: true,\n dropEndBeforeCallback: null\n },\n }\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) { }\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n if (ghostEl) {\n /// 判断是否移出边界\n const boundaryCheckInfo = SortableExt.checkMoveOutBoundary(ghostEl, this.el, this.options);\n if (boundaryCheckInfo.isOut) {\n //console.log(boundaryCheckInfo)\n if (ghostMatrixLast) {\n ghostMatrix.e = ghostMatrixLast.e;\n ghostMatrix.f = ghostMatrixLast.f;\n } else {\n if (boundaryCheckInfo.top) {\n ghostMatrix.f = boundaryCheckInfo.x * -1;\n }\n if (boundaryCheckInfo.right) {\n ghostMatrix.e = boundaryCheckInfo.y;\n }\n if (boundaryCheckInfo.bottom) {\n ghostMatrix.f = boundaryCheckInfo.x;\n }\n if (boundaryCheckInfo.left) {\n ghostMatrix.e = boundaryCheckInfo.y * -1;\n }\n }\n } else {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n\n //防止当前超出\n const boundaryCheckInfo1 = SortableExt.checkMoveOutBoundary(ghostEl, this.el, this.options);\n if (!boundaryCheckInfo1.isOut) {\n ghostMatrixLast = ghostMatrix;\n }\n }\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n ghostElClone = dragEl.cloneNode(true);\n ghostEl = dragEl.cloneNode(true);\n ghostEl = SortableExt.setWrapBody(ghostEl, this.el, this.options)\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n Sortable.ghostClone = ghostElClone;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n //console.log(\"activeSortable && !options.disabled !Sortable.eventCanceled\")\n SortableExt.setCrossEl(target, this.options)\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n //console.log(\"!elLastChild || _ghostIsLast\")\n SortableExt.setCrossEl(target, this.options)\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n //console.log(\"elLastChild && _ghostIsFirst\")\n capture();\n SortableExt.setCrossEl(target, this.options)\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostElClone));//sibling === ghostEl\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n //console.log(\"target.parentNode === el\")\n SortableExt.setCrossEl(target, this.options)\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n //console.log(\"DropEnd\")\n SortableExt.crossDropEnd(this.options).then((crossResult) => {\n //console.log(crossResult)\n if (crossResult) {\n ////\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n this._nulling();\n\n ////\n }\n })\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = dragElClone = parentEl = ghostEl = ghostElClone = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.ghostClone = Sortable.clone = Sortable.active = ghostMatrixLast = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray(pEl) {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n /**Event*/\n evt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() { }\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() { }\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\n multiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\n folding = false,\n // Folding any other time\n dragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\n * Selects the provided multi-drag item\n * @param {HTMLElement} el The element to be selected\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\n * Deselects the provided multi-drag item\n * @param {HTMLElement} el The element to be deselected\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\n * Insert multi-drag clones\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\n * @param {HTMLElement} rootEl\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\nconst SortableExt = {\n isBoolean: (value) => {\n return typeof value === \"boolean\"\n },\n isFunction: (value) => {\n return typeof value === \"function\"\n },\n isUndefined: (value) => {\n return typeof value === \"undefined\" || value === null;\n },\n getOffset: (el) => {\n const tempElBox = el.getBoundingClientRect();\n const doc = el && el.ownerDocument;\n const docEl = doc.documentElement;\n let winEl\n if (docEl.toString() !== \"[object Window]\") {\n const ownerDocument = el.ownerDocument;\n winEl = ownerDocument ? ownerDocument.defaultView || window : window;\n } else {\n winEl = docEl;\n }\n return {\n top: (tempElBox.top + (winEl.pageYOffset || docEl.scrollTop)) - (docEl.clientTop || 0),\n left: (tempElBox.left + (winEl.pageXOffset || docEl.scrollLeft)) - (docEl.clientLeft || 0),\n width: tempElBox.width,\n height: tempElBox.height\n };\n },\n createElement: (el) => {\n const sf = el.substring(0, 1);\n if (sf === \"<\") {\n const temp = document.createElement(\"div\"); temp.innerHTML = el;\n return temp.children[0]\n } else {\n return document.createElement(el)\n }\n },\n getElementData: (pEl, options) => {\n const order = [],\n children = pEl.children,\n n = children.length;\n let el;\n for (let i = 0; i < n; i++) {\n el = children[i];\n const attrData = el.getAttribute(options.dataIdAttr);\n if (attrData && attrData.length > 0) {\n order.push(attrData);\n }\n }\n return order;\n },\n checkMoveOutBoundary: (moveEl, pEl, option) => {\n let isCheck = true;\n let result = {};\n const boundary = option.extOption.boundary;\n if (boundary) {\n let isOut = boundary.isOut;\n isOut = SortableExt.isBoolean(isOut) ? isOut : true;\n if (!isOut) {\n //isCheck = false;\n let elOffset;\n if (boundary.element && boundary.element.length > 0) {\n const boundaryEl = window.document.querySelector(boundary.element);\n if (boundaryEl) {\n elOffset = SortableExt.getOffset(boundaryEl)\n }\n } else {\n elOffset = SortableExt.getOffset(pEl)\n }\n if (elOffset) {\n //evt.pageX evt.pageY\n const moveElOffset = SortableExt.getOffset(moveEl);\n let x = Number(boundary.x);\n if (x === NaN) {\n x = 0;\n }\n let y = Number(boundary.y);\n if (y === NaN) {\n y = 0;\n }\n const checkTop = elOffset.top - x > moveElOffset.top;\n const checkRight = elOffset.left + elOffset.width + y < moveElOffset.left + moveElOffset.width;\n const checkBottom = elOffset.top + elOffset.height + x < moveElOffset.top + moveElOffset.height;\n const checkLeft = elOffset.left - y > moveElOffset.left;\n isCheck = !(checkTop || checkRight || checkBottom || checkLeft)\n if (!isCheck) {\n result = {\n top: checkTop,\n right: checkRight,\n bottom: checkBottom,\n left: checkLeft,\n x,\n y,\n }\n }\n }\n }\n }\n result.isOut = !isCheck;\n return result;\n },\n setWrapBody: (el, pEl, option) => {\n let elWrap = el;\n let wrapBody = option.extOption.wrapBody;\n if (option.fallbackOnBody) {\n if (wrapBody) {\n option.extOption.wrapBody.isWrap = true;\n } else {\n option.extOption.wrapBody = { isWrap: true }\n }\n wrapBody = option.extOption.wrapBody;\n }\n if (wrapBody) {\n let isWrap = wrapBody.isWrap;\n isWrap = SortableExt.isBoolean(isWrap) ? isWrap : false;\n if (isWrap) {\n //let elWrap;\n if (wrapBody.element && wrapBody.element.length > 0) {\n elWrap = SortableExt.createElement(wrapBody.element)\n elWrap.appendChild(el);\n } else {\n elWrap = pEl.cloneNode();\n elWrap.appendChild(el);\n switch (elWrap.tagName.toLocaleLowerCase()) {\n case \"tbody\":\n const temp = pEl.parentNode.cloneNode();\n temp.appendChild(elWrap);\n elWrap = temp\n break;\n }\n }\n }\n }\n return elWrap;\n },\n checkCross: (moveEl, containerEl, option) => {\n const cross = option.extOption.cross;\n let result = { newEl: null, isSameStruct: true };\n if (cross) {\n let isCross = cross.isCross;\n isCross = SortableExt.isBoolean(isCross) ? isCross : false;\n if (moveEl.parentNode === containerEl.parentNode) {\n isCross = false;\n }\n if (isCross) {\n let isSameStruct = cross.isSameStruct;\n isSameStruct = SortableExt.isBoolean(isSameStruct) ? isSameStruct : true;\n if (!isSameStruct) {\n const tagName = containerEl.tagName.toLocaleLowerCase();\n const newEl = SortableExt.createElement(tagName);\n const newCls = [];\n const clsArr = [\"darg-select\", \"darg-placeholder\"];\n containerEl.className.split(\" \").forEach((s) => {\n if (clsArr.indexOf(s) === -1) {\n newCls.push(s);\n }\n })\n newCls.push(...clsArr)\n newEl.className = newCls.join(\" \");\n css(newEl, 'height', containerEl.clientHeight);\n switch (tagName) {\n case \"tr\":\n let len = 0;\n for (let i = 0; i < containerEl.children.length; i++) {\n const s = containerEl.children[i].getAttribute(\"colspan\");\n len += (SortableExt.isUndefined(s) ? 1 : Number(s))\n }\n const td = SortableExt.createElement(\"td\");\n td.setAttribute(\"colspan\", len);\n newEl.appendChild(td)\n break;\n }\n result.isSameStruct = false;\n result.newEl = newEl;\n }\n }\n }\n return result;\n },\n setCrossEl: (containerEl, option) => {\n var result = SortableExt.checkCross(dragEl, containerEl, option)\n if (!result.isSameStruct) {\n const temp = dragEl.cloneNode(true);\n dragEl.parentNode.removeChild(dragEl)\n if (dragElClone) {\n dragEl = dragElClone\n dragElClone = null\n } else {\n dragEl = result.newEl\n }\n if (!dragElClone) {\n dragElClone = temp\n }\n }\n },\n crossDropEnd: (option) => {\n return new Promise((resolve, reject) => {\n const cross = option.extOption.cross;\n let isRunCb = false;\n const parentEl = dragEl && dragEl.parentNode;\n if (cross) {\n let isCross = cross.isCross;\n isCross = SortableExt.isBoolean(isCross) ? isCross : false;\n if (isCross) {\n if (parentEl && rootEl !== parentEl) {\n if (cross.dropEndBeforeCallback) {\n isRunCb = true;\n }\n }\n }\n }\n if (isRunCb) {\n const assistData = ghostElClone.getAttribute(option.dataIdAttr)\n const arrSortId = SortableExt.getElementData(parentEl, option)\n const checkCb = cross.dropEndBeforeCallback({ data: assistData, inx: index(dragEl), arrSortId });\n if (checkCb && checkCb.then && SortableExt.isFunction(checkCb.then)) {\n SortableExt._crossDropLoad(true);\n checkCb.then((checkResult) => {\n SortableExt._crossDropLoad(false);\n const isSuccess = SortableExt._crossDropEndCb(checkResult)\n resolve({ success: isSuccess })\n });\n } else {\n const isSuccess = SortableExt._crossDropEndCb(checkCb)\n resolve({ success: isSuccess })\n }\n } else {\n resolve({ success: true })\n }\n })\n },\n _crossDropLoad: (isAdd) => {\n let containerEl;\n const tagName = dragEl.tagName.toLocaleLowerCase();\n if (dragEl.children.length === 0) {\n containerEl = dragEl;\n } else {\n switch (tagName) {\n case \"tr\":\n containerEl = dragEl.children[0]\n break\n }\n }\n if (isAdd) {\n const el = SortableExt.createElement(\"div\");\n el.className = \"panel-darg-loading\";\n el.innerHTML = '<div class=\"darg-add-loading\"></div>'\n containerEl.appendChild(el)\n } else {\n const loadEl = dragEl.querySelector(\".panel-darg-loading\")\n loadEl.parentNode.removeChild(loadEl);\n }\n },\n _crossDropEndCb: (result) => {\n var isSuccess = SortableExt.isBoolean(result) ? result : true;\n if (isSuccess) {\n dragEl && dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n }\n }\n}\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","<template>\n <div\n ref=\"refElTop\"\n :class=\"clsParent\"\n >\n <slot></slot>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, computed, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { Drag as DragEvent } from '../../Common/Element/Event/index'\nimport Sortable from './Sortable.js'\n\n// defineOptions\ndefineOptions({\n name: 'ClDarg'\n})\n\n// props\nconst props = defineProps<{\n className?: string\n group?: string\n dargRegionCls?: string\n handleCls?: string\n selectCls?: string\n placeholderCls?: string\n isBoundaryOut?: boolean\n boundaryElement?: string\n isWrapBody?: boolean\n wrapBodyElement?: string\n isDisabledInner?: boolean\n isDisabledOutsideInto?: boolean\n isGroupSameStruct?: boolean\n groupDropEndBeforeCallback?: Function\n keyAttrId?: string\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'onChangeSort', arrSort: any[]): void\n}>()\n\n// 常量 / 变量定义\nconst refElTop = ref<HTMLElement | null>(null)\nconst _pageData: any = {\n sortableObj: {},\n dargEventObj: {} as DragEvent,\n}\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-darg': true,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\n// 内部调用方法\nconst _emitChangeSort = () => {\n const arrSort = _pageData.sortableObj.toArray()\n emit('onChangeSort', arrSort)\n}\n\nconst _initSortable = () => {\n nextTick(() => {\n const el = refElTop.value?.querySelector(props.dargRegionCls || '.darg-region') as HTMLElement | null\n if (!el) return\n \n const {\n group,\n placeholderCls,\n handleCls,\n selectCls,\n isBoundaryOut,\n boundaryElement,\n isWrapBody,\n wrapBodyElement,\n isDisabledInner,\n isDisabledOutsideInto,\n isGroupSameStruct,\n groupDropEndBeforeCallback,\n keyAttrId,\n } = props\n const option: any = {\n sort: !isDisabledInner,\n forceFallback: true,\n fallbackOnBody: isWrapBody,\n fallbackTolerance: 0,\n handle: handleCls,\n ghostClass: placeholderCls,\n chosenClass: selectCls,\n dragClass: 'darg-moveing',\n animation: 150,\n dataIdAttr: keyAttrId,\n extOption: {\n boundary: {\n isOut: isBoundaryOut,\n element: boundaryElement,\n x: 5,\n y: 5,\n },\n wrapBody: {\n isWrap: isWrapBody,\n element: wrapBodyElement,\n },\n cross: {\n isCross: false,\n isSameStruct: isGroupSameStruct,\n dropEndBeforeCallback: groupDropEndBeforeCallback,\n },\n },\n onUpdate: () => {\n _emitChangeSort()\n },\n }\n if (group && !CommonBase.isEmpty(group) && isBoundaryOut) {\n if (isDisabledOutsideInto) {\n option.group = {\n name: group,\n pull: 'clone',\n put: false,\n }\n option.animation = 0\n } else {\n option.group = group\n }\n option.extOption.cross.isCross = true\n }\n _pageData.sortableObj = new Sortable(el, option)\n })\n}\n\nconst _initMain = () => {\n _initSortable()\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 开放给外部使用的方法\nconst getArrSort = () => {\n return _pageData.sortableObj.toArray ? _pageData.sortableObj.toArray() : []\n}\n\n// 导出类型定义\nexport interface ClDargExpose {\n getArrSort: () => string[]\n}\n\n// defineExpose\ndefineExpose({\n getArrSort\n})\n</script>","<template>\n <div\n ref=\"refElParent\"\n :class=\"clsParent\"\n v-cltooltip=\"{\n init:isShowTitle&&optBase.isUseTooltip&&optBase.isPosParent,\n html:tooltipHtml||text,\n theme:tooltipTheme,\n position:tooltipPosition,\n trigger:tooltipTrigger,\n isHtml:tooltipIsHtml\n }\"\n ><span\n ref=\"refElSpan\"\n :title=\"optTitle\"\n v-cltooltip=\"{\n init:isShowTitle&&optBase.isUseTooltip&&optBase.isPosSpan,\n html:tooltipHtml||text,\n theme:tooltipTheme,\n position:tooltipPosition,\n trigger:tooltipTrigger,\n isHtml:tooltipIsHtml\n }\"\n >{{text}}</span></div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, reactive, computed, watch, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { tooltipDirectives } from '../../Web/Tooltip'\n\n// defineOptions\ndefineOptions({\n name: 'ClEllipsis',\n directives: {\n cltooltip: tooltipDirectives\n }\n})\n\n// props\nconst props = defineProps<{\n className?: string\n text?: string\n isUseTooltip?: boolean\n tooltipTheme?: string\n tooltipPosition?: string\n tooltipTrigger?: string\n tooltipIsHtml?: boolean\n tooltipHtml?: string\n isAutoTooltip?: boolean\n isShowTitle?: boolean\n}>()\n\n// 常量 / 变量定义\nconst refElParent = ref<HTMLElement | null>(null)\nconst refElSpan = ref<HTMLElement | null>(null)\n\nconst optBase = reactive({\n isPosParent: false,\n isPosSpan: false,\n isUseTooltip: false,\n})\n\n// computed\nconst optTitle = computed(() => {\n let title = ''\n if (props.isUseTooltip || optBase.isUseTooltip) {\n title = ''\n } else {\n title = props.isShowTitle ? props.text || '' : ''\n }\n return title\n})\n\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-ellipsis': true,\n 'ellipsis-txt-title': true,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\n// 内部调用方法\nconst _initTipPos = () => {\n if (props.isUseTooltip && props.text && props.text.length > 0) {\n if (refElParent.value && refElSpan.value) {\n const pW = refElParent.value.clientWidth\n const cW = refElSpan.value.offsetWidth\n if (pW > 0 && cW > 0) {\n const isPosSpan = pW >= cW\n const isPosParent = pW < cW\n\n if (props.isAutoTooltip) {\n optBase.isUseTooltip = isPosParent\n } else {\n optBase.isUseTooltip = true\n }\n optBase.isPosSpan = isPosSpan\n optBase.isPosParent = isPosParent\n }\n }\n }\n}\n\nconst _initMain = () => {\n _initTipPos()\n}\n\n// watch\nwatch(\n () => props.text,\n () => {\n nextTick(() => {\n _initTipPos()\n })\n },\n)\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n</script>","class DelayFun {\n private _fun: any;\n private _time: number;\n private _cb: any;\n constructor(cb: any, delay = 200) {\n this._cb = cb;\n this._time = delay;\n }\n stopRun() {\n if (this._fun) {\n clearTimeout(this._fun);\n this._fun = null;\n }\n }\n run(cb?: any) {\n const newCb = cb ? cb : this._cb;\n if (newCb) {\n this.stopRun();\n this._fun = setTimeout(()=>{\n newCb();\n }, this._time);\n }\n }\n}\nexport default DelayFun;","import CommonBase from \"../base\";\nclass AnimateEasing {\n startTime: number;\n startPos: number;\n endPos: number;\n duration: number;\n runEasing: any;\n\n runIngFun: any;\n\n lastPos: number;\n lastInterval: number;\n\n timeAnimate: any;\n constructor(option: any) {\n this.startTime = 0;\n this.startPos = 0;\n this.endPos = 0;\n this.duration = 0;\n this.runEasing = null;\n\n this.runIngFun = option.runIngCallback;\n\n this.lastPos = 0;\n this.lastInterval = 0;\n }\n\n _easing = {\n /**\n * t:动画已经消耗的时间\n * b:初始位置\n * c:目标位置\n * d:动画持续的总时间\n */\n linear: (t: number, b: number, c: number, d: number) => c * t / d + b,\n easeInCubic: (t: number, b: number, c: number, d: number) => c * (t /= d) * t * t + b, // eslint-disable-line\n easeOutCubic: (t: number, b: number, c: number, d: number) => c * ((t = t / d - 1) * t * t + 1) + b,// eslint-disable-line\n };\n\n start(startPos: number, endPos: number, duration: number, easing = \"linear\") {\n const self: any = this;\n return new Promise((resolve) => {\n this.startTime = +new Date();\n this.startPos = startPos;\n this.endPos = endPos;\n this.duration = duration;\n this.runEasing = self._easing[easing];\n self.timeAnimate = CommonBase.requestAnimationFrame(function fnCb() {\n const stepResult = self.step();\n if (stepResult === false) {\n self.stop();\n resolve(self.lastInterval);\n } else {\n self.timeAnimate = CommonBase.requestAnimationFrame(fnCb);\n }\n });\n });\n }\n\n step() {\n const t = +new Date();\n if (t >= this.startTime + this.duration) {\n this.runIngFun(this.endPos);\n return false;\n }\n const pos = this.runEasing(t - this.startTime, this.startPos, this.endPos - this.startPos, this.duration);\n this.lastInterval = Math.abs(pos - this.lastPos);\n this.lastPos = pos;\n this.runIngFun(pos);\n return true;\n }\n\n stop() {\n if (this.timeAnimate) {\n CommonBase.cancelAnimationFrame(this.timeAnimate);\n }\n }\n}\nexport default AnimateEasing;\n","<template>\n <form ref=\"refElTop\" autocomplete=\"off\" :class=\"clsParent\" v-bind=\"optParent\">\n <slot></slot>\n </form>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, reactive, computed, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport CommonPromise from '../../Common/promise'\nimport CommonElement from '../../Common/Element/index'\nimport { AnimateEasing } from '../../Common/Tools/index'\n\n// defineOptions\ndefineOptions({\n name: 'ClForm'\n})\n\n// props\nconst props = defineProps<{\n theme?: string\n className?: string\n isAwaitRun?: boolean\n preScroll?: number\n pElError?: string\n isScrollToErr?: boolean\n}>()\n\n// 常量 / 变量定义\nconst refElTop = ref<HTMLFormElement | null>(null)\nconst optBase = reactive({ isRun: !props.isAwaitRun })\nconst _pageData: any = {\n _scrollUpAnimate: null,\n parentScroll: null,\n isScrollWindow: true,\n}\n\n// computed\nconst optParent = computed(() => {\n const temp: any = {\n 'data-cl-validate': '',\n }\n if (optBase.isRun) {\n temp['data-run'] = ''\n }\n if (!CommonBase.isEmpty(props.theme)) {\n temp['data-theme'] = props.theme\n }\n return temp\n})\n\nconst clsParent = computed(() => {\n const clsTemp: any = {\n 'panel-form': true,\n 'form-validate': true,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n return clsTemp\n})\n\n// 内部调用方法\nconst _validateEl = (el: any) => {\n let result = true\n if (optBase.isRun && !CommonBase.isUndefined(el) && refElTop.value?.contains(el)) {\n if (el.runValidate) {\n result = el.runValidate()\n }\n }\n return result\n}\n\nconst _runScrollErrorEl = () => {\n const errEl: any = refElTop.value?.querySelectorAll('[data-validate-error]')\n if (!CommonBase.isUndefined(errEl) && errEl.length && errEl.length > 0) {\n let el = errEl[0]\n const { preScroll, pElError } = props\n\n const isErrElP = !CommonBase.isEmpty(el.pElError)\n const isErrElF = !CommonBase.isEmpty(pElError)\n if (isErrElP || isErrElF) {\n const tempEL = CommonElement.getParent(el, isErrElP ? el.pElError : pElError, refElTop.value)\n if (!CommonBase.isUndefined(tempEL)) {\n el = tempEL\n }\n }\n const elOffset = CommonElement.getOffset(el, _pageData.isScrollWindow ? null : _pageData.parentScroll)\n let end = elOffset.top - 10\n if (preScroll && !CommonBase.isUndefined(preScroll)) {\n end -= preScroll\n }\n _pageData._scrollUpAnimate.start(_pageData.parentScroll.scrollTop, end, 200)\n }\n}\n\nconst _initMain = () => {\n const pScrolls = CommonElement.getParentScrollList(refElTop.value, null, false)\n _pageData.isScrollWindow = pScrolls.length === 0\n _pageData.parentScroll = _pageData.isScrollWindow ? document.documentElement : pScrolls[0].children[0]\n _pageData._scrollUpAnimate = new AnimateEasing({\n runIngCallback: (pos: any) => {\n _pageData.parentScroll.scrollTop = pos\n },\n })\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 开放给外部使用的方法\nconst validate = (el?: any) => {\n return CommonPromise.promiseFun((resolve: any) => {\n let result = true\n if (CommonBase.isUndefined(el)) {\n optBase.isRun = true\n nextTick(() => {\n const validateEl: any = refElTop.value?.querySelectorAll('[data-validate-el]')\n if (!CommonBase.isUndefined(validateEl) && validateEl.length && validateEl.length > 0) {\n validateEl.forEach((e: any) => {\n const check = _validateEl(e)\n if (!check) {\n result = false\n }\n })\n }\n if (!result) {\n if (props.isScrollToErr) {\n nextTick(() => {\n _runScrollErrorEl()\n })\n }\n }\n resolve(result)\n })\n } else {\n result = _validateEl(el)\n resolve(result)\n }\n })\n}\n\nconst reset = () => {\n optBase.isRun = false\n refElTop.value?.removeAttribute('data-run')\n const validateEl:any = refElTop.value?.querySelectorAll('[data-validate-el]')\n if (!CommonBase.isUndefined(validateEl) && validateEl.length && validateEl.length > 0) {\n validateEl.forEach((e: any) => {\n if (e.runReset) {\n e.runReset()\n }\n })\n }\n}\n\n// 导出类型定义\nexport interface ClFormExpose {\n validate: (el?: HTMLElement) => Promise<boolean>\n reset: () => void\n}\n\n// defineExpose\ndefineExpose({\n validate,\n reset\n})\n</script>","import dayjs from \"dayjs\";\nimport CommonBase, { registerFormatHandler } from \"./base\";\nimport \"dayjs/locale/zh-cn\";\nimport \"dayjs/locale/en\";\nimport localeData from \"dayjs/plugin/localeData\";\nimport objectSupport from \"dayjs/plugin/objectSupport\";\nimport isSameOrAfter from \"dayjs/plugin/isSameOrAfter\";\nimport isSameOrBefore from \"dayjs/plugin/isSameOrBefore\";\nimport isoWeek from \"dayjs/plugin/isoWeek\";\n\nimport lunar from \"dayjs-lunar\";\n//import customParseFormat from \"dayjs/plugin/customParseFormat\";\n\n\nimport utc from \"dayjs/plugin/utc\";\nimport timezone from \"dayjs/plugin/timezone\";\n\ndayjs.locale(\"zh-cn\");\ndayjs.extend(localeData);\ndayjs.extend(objectSupport);\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\ndayjs.extend(isoWeek);\n//dayjs.extend(customParseFormat);\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\ndayjs.extend(lunar);\n\nclass CommDay {\n static objDay: any = dayjs;\n static timezone = \"PRC\"; // desc: 时区配置,默认中国时区,可设置为 \"UTC\"、 \"America/New_York\" 等\n\n static initDay(d?: any): any {\n const newDay = CommonBase.isUndefined(d) ? dayjs() : d;\n return newDay.tz(this.timezone);\n }\n\n\n static getDayjsObject(day: any): any {\n if (CommonBase.isEmpty(day)) {\n return this.initDay(dayjs());\n }\n if (dayjs.isDayjs(day)) {\n return this.initDay(day.clone());\n }\n let value: any;\n if (CommonBase.isString(day)) {\n value = day.replace(/[/]/g, \"-\").replace(/:/g, \":\");\n } else if (CommonBase.isInt(day)) {\n value = new Date(parseInt(day, 10));\n } else if (CommonBase.isObject(day)) {\n value = day;\n }\n return this.initDay(dayjs(value, \"YYYY-MM-DD HH:mm:ss\"));\n }\n\n /**\n * 获取时间格式\n * @param options string|int| new Date() | dayjs() | {value,format}\n * @returns\n */\n static initFormat(options?: any): string {\n let optionBase: any = { value: \"\", format: \"YYYY-MM-DD\" };\n let objDay: any;\n if (CommonBase.isObject(options)) {\n if (dayjs.isDayjs(options)) {\n objDay = options;\n } else {\n if (options.format) {\n optionBase = CommonBase.getJsonMerge(optionBase, options);\n }\n if (options.value || options.format) {\n objDay = this.getDayjsObject(options.value || \"\");\n } else {\n objDay = this.getDayjsObject(options);\n }\n }\n } else {\n objDay = this.getDayjsObject(options);\n }\n return objDay.format(optionBase.format);\n }\n\n static addTime(time: any, num: number, type = \"days\"): any {\n return this.getDayjsObject(time).add(num, type);\n }\n\n static subtractTime(time: any, num: number, type = \"days\"): any {\n return this.getDayjsObject(time).subtract(num, type);\n }\n\n /**\n * 比较时间差值\n * @param time1 开始时间\n * @param timeDiff2 比较时间\n * @param type day week month year hour minute second millisecond\n * @returns\n */\n static diffTime(time1: any, timeDiff2: any, type = \"millisecond\") {\n const diff = this.getDayjsObject(time1).diff(this.getDayjsObject(timeDiff2), type);\n return diff;\n }\n\n /* static isValid(time: any, checkFormat = \"YYYY-MM-DD\"): any {\n return Dayjs(time, checFormat, true).isValid();\n } */\n\n static lunar(value: string) {\n const objDay = this.getDayjsObject(value);\n const newValue = objDay.lunar();\n return newValue;\n }\n}\n\n// Register date format handlers into base.ts to avoid circular import\nregisterFormatHandler('date', (value: any, format: string) => CommDay.initFormat({ value, format }))\nregisterFormatHandler('dateTime', (value: any, format: string) => CommDay.initFormat({ value, format }))\nregisterFormatHandler('time', (value: any, format: string) => CommDay.initFormat({ value, format }))\n\nexport default CommDay;\n","export default {\n common: {\n submit: \"确定\",\n save: \"保存\",\n cancel: \"取消\",\n update: \"修改\",\n close: \"关闭\",\n delete: \"删除\",\n deleteAll: \"全部删除\",\n upload: \"上传\",\n download: \"下载\",\n preview: \"预览\",\n restore: \"还原\",\n clear: \"清除\",\n clearEmpty: \"清空\",\n clearAll: \"全部清除\",\n copy:\"复制\",\n custom: \"自定义\",\n loading: \"加载中\",\n noDataText: \"暂无数据\",\n noResultsText: \"未找到结果\",\n checkboxAll: \"全选\",\n selected: \"已选\",\n count: \"个\",\n add: \"添加\",\n checkAddMax: \"最多添加\",\n checkAddMin: \"最少保留\",\n pleaseSelect: \"请选择\",\n },\n validate: {\n required: \"此项不能为空\",\n number: \"请输入数字\",\n integer: \"请输入整数\",\n integerPositive: \"请输入正整数\",\n alphanum: \"请输入数字或字母\",\n email: \"邮箱格式不正确\",\n minLen: \"输入值的长度不能小于 %s 个字\",\n maxLen: \"输入值的长度不能大于 %s 个字\",\n minByte: \"输入值的长度不能小于 %s 个字节\",\n maxByte: \"输入值的长度不能大于 %s 个字节\",\n minGreater: \"输入值请大于 %s\",\n maxGreater: \"输入值请小于 %s\",\n minGreaterEqual: \"输入值请大于或等于 %s\",\n maxGreaterEqual: \"输入值请小于或等于 %s\",\n phone: \"手机号不正确\",\n equalto: \"两次输入值不同\",\n },\n dataTime: {\n am: \"上午\",\n pm: \"下午\",\n year: \"年\",\n prevYear: \"上一年\",\n prevMonth: \"上一月\",\n nextYear: \"下一年\",\n nextMonth: \"下一月\",\n prevYear10: \"前十年\",\n nextYear10: \"后十年\",\n today: \"今天\",\n yesterDay: \"昨天\",\n pastDays7: \"过去7天\",\n pastDays30: \"过去30天\",\n montCurrent: \"本月\",\n montLast: \"上月\",\n montLately6: \"最近半年\",\n yearCurrent: \"今年\",\n yearLast: \"去年\",\n rangeStartLabel: \"开始\",\n checkEndMinLabel: \"结束时间不能小于设置的最小时间\",\n checkStartMaxLabel: \"时间不能大于设置的最大时间\",\n checkStartMinLabel: \"时间不能小于设置的最小时间\",\n checkStartEndLabel: \" \",\n checkRangeEmptyLabel: \"请选择完整的开始时间,结束时间\",\n },\n fileUpload: {\n checkImageWHLabel: \"图片宽高不匹配\",\n checkSuffixMimeLabel: \"类型不匹配\",\n checkSizeLabel: \"大小不匹配\",\n uploadFile: \"上传文件\",\n },\n weekHour: {\n daily: \"每日\",\n monday: \"周一\",\n tuesday: \"周二\",\n wednesday: \"周三\",\n thursday: \"周四\",\n friday: \"周五\",\n saturday: \"周六\",\n sunday: \"周日\",\n weekday: \"工作日\",\n weekend: \"周末\",\n dawn: \"凌晨\",\n morning: \"上午\",\n noon: \"中午\",\n afternoon: \"下午\",\n evening: \"傍晚\",\n night: \"晚上\",\n selected: \"已定向\",\n selectedNot: \"未定向\",\n },\n paginate: {\n page: \"页\",\n pageStrip: \"页/条\",\n jumpTo: \"跳转至\",\n statistic: \"显示第 ${s} 至 ${e} 项结果,共 ${_total} 项\",\n },\n xEditable: {\n required: \"此项不能为空\",\n submitCallback: \"submitCallback的返回格式不正确\",\n },\n};","export default {\n common: {\n submit: \"Submit\",\n save: \"Save\",\n cancel: \"Cancel\",\n update: \"Modify\",\n close: \"Close\",\n delete: \"Delete\",\n deleteAll: \"Delete All\",\n upload: \"Upload\",\n download: \"Download\",\n preview: \"Preview\",\n restore: \"Restore\",\n clear: \"Clear\",\n clearEmpty: \"Clear All\",\n clearAll: \"Clear All\",\n copy: \"Copy\",\n custom: \"Custom\",\n loading: \"Loading\",\n noDataText: \"No Data\",\n noResultsText: \"No Result\",\n checkboxAll: \"Select All\",\n selected: \"Selected\",\n count: \"Count\",\n add: \"Add\",\n checkAddMax: \"Add Maximum\",\n checkAddMin: \"Add Minimum\",\n pleaseSelect: \"Select\",\n },\n validate: {\n required: \"Required\",\n number: \"Please enter number\",\n integer: \"Please enter integer\",\n integerPositive: \"Please enter positive integer\",\n alphanum: \"Please enter number or letter\",\n email: \"Error Email\",\n minLen: \"Cannot less than %s characters\",\n maxLen: \"Cannot more than %s characters\",\n minByte: \"Cannot less than %s Bytes\",\n maxByte: \"Cannot more than %s Bytes\",\n minGreater: \"Must more than %s\",\n maxGreater: \"Must less than %s\",\n minGreaterEqual: \"Cannot less than %s\",\n maxGreaterEqual: \"Cannot more than %s\",\n phone: \"Error phone number\",\n equalto: \"Different Value\",\n },\n dataTime: {\n am: \"am\",\n pm: \"pm\",\n year: \"year\",\n prevYear: \"Last Year\",\n prevMonth: \"Last Month\",\n nextYear: \"Next Year\",\n nextMonth: \"Next Month\",\n prevYear10: \"Last Decade\",\n nextYear10: \"Next Decade\",\n today: \"Today\",\n yesterDay: \"Yesterday\",\n pastDays7: \"Last 7 Days\",\n pastDays30: \"Last 30 Days\",\n montCurrent: \"This Month\",\n montLast: \"Last Month\",\n montLately6: \"Last Half Year\",\n yearCurrent: \"This Year\",\n yearLast: \"Last Year\",\n rangeStartLabel: \"Start\",\n checkEndMinLabel: \"Error end time\",\n checkStartMaxLabel: \"Error end time\",\n checkStartMinLabel: \"Error start time\",\n checkStartEndLabel: \"End time cannot before start time\",\n checkRangeEmptyLabel: \"Select start and end time\",\n },\n fileUpload: {\n checkImageWHLabel: \"Error image dimension\",\n checkSuffixMimeLabel: \"Error type\",\n checkSizeLabel: \"Error file size\",\n uploadFile: \"Upload File\",\n },\n weekHour: {\n daily: \"Daily\",\n monday: \"Monday\",\n tuesday: \"Tuesday\",\n wednesday: \"Wednesday\",\n thursday: \"Thursday\",\n friday: \"Friday\",\n saturday: \"Saturday\",\n sunday: \"Sunday\",\n weekday: \"Weekday\",\n weekend: \"Weekend\",\n dawn: \"Midnight\",\n morning: \"AM\",\n noon: \"Noon\",\n afternoon: \"PM\",\n evening: \"Evenfall\",\n night: \"Evening\",\n selected: \"Include\",\n selectedNot: \"Exclude\",\n },\n paginate: {\n page: \"Page\",\n pageStrip: \"Lines/Page\",\n jumpTo: \"Page to\",\n statistic: \"Records ${s} to ${e} , ${_total} Records in Total\",\n },\n xEditable: {\n required: \"Required\",\n submitCallback: \"Error SubmitCallback\",\n },\n};","import CommonBase from \"../base\";\nimport CommonDay from \"../day\";\nimport ZHCN from \"./zh_CN\";\nimport EN from \"./en\";\nclass LanguagePack {\n private _type: string;\n private _typeDef: string;\n private _packageData: any;\n constructor() {\n this._type = \"zh_cn\";\n this._typeDef = \"zh_cn\";\n this._packageData = {\n \"zh_cn\": ZHCN,\n en: EN,\n };\n }\n initMerge(options: any) {\n const isEmptyType = CommonBase.isEmpty(options.type);\n if (!isEmptyType) {\n this._type = options.type;\n }\n /* if (!CommonBase.isEmpty(options.typeDef)) {\n this._typeDef = options.typeDef;\n } */\n if (!CommonBase.isEmpty(options.packageData)) {\n if (isEmptyType) {\n this._packageData[this._typeDef] = CommonBase.getJsonMergeDeep(this._packageData[this._typeDef], options.packageData);\n } else {\n this._packageData = CommonBase.getJsonMergeDeep(this._packageData, options.packageData);\n }\n }\n return {\n type: this._type,\n //typeDef: this._typeDef,\n packageData: this._packageData,\n };\n }\n private _getType() {\n //const defType = \"zh_cn\";\n let type = this._type;\n if (CommonBase.isEmpty(type)) {\n type = this._typeDef;\n }\n /* if (CommonBase.isEmpty(type)) {\n type = defType;\n } */\n return { type, def: this._typeDef };\n }\n private _getData(type?: string) {\n let data = {};\n const packageData = this._packageData;\n if (type) {\n data = packageData[type];\n } else {\n const typeInfo = this._getType();\n if (CommonBase.isExistJsonKey(packageData, typeInfo.type)) {\n data = packageData[typeInfo.type];\n }\n if (CommonBase.isEmpty(data)) {\n data = packageData[typeInfo.def];\n }\n }\n return data;\n }\n private _getKeyValue(k: string, data: any) {\n let value;\n if (CommonBase.isExistValue(k, \".\")) {\n const arrTemp: string[] = CommonBase.split(k, \".\");\n let tempValue: any = CommonBase.getJsonClone(data, true);\n arrTemp.forEach((ki: string, i: number) => {\n const kv = tempValue[ki];\n if (i === arrTemp.length - 1) {\n tempValue = kv;\n } else {\n tempValue = CommonBase.isEmpty(kv) ? {} : kv;\n }\n });\n value = tempValue;\n } else {\n value = data[k];\n }\n return value;\n }\n private _getKey(k: string, type?: string) {\n let value;\n const data: any = type\n ? this._getData(type)\n : this._getData();\n if (!CommonBase.isEmpty(data)) {\n value = this._getKeyValue(k, data);\n if (CommonBase.isObject(value)) {\n value = CommonBase.getJsonClone(value, true);\n }\n }\n return value;\n }\n getType() {\n return this._getType();\n }\n\n getAll() {\n return this._getData();\n }\n getCommon() {\n const data = this._getKey(\"common\");\n const dataDef = this._getKey(\"common\", this._typeDef);\n return CommonBase.getJsonMergeDeep(dataDef || {}, data || {});\n }\n getValue(key: string) {\n let value = this._getKey(key);\n if (CommonBase.isEmpty(value)) {\n value = this._getKey(key, this._typeDef);\n }\n return value;\n }\n\n getPage(key: string) {\n let data = {};\n const common = this.getCommon();\n if (key === \"common\") {\n data = common;\n } else {\n const jsonDef = this._getKey(key, this._typeDef);\n const jsonValue = this._getKey(key);\n const pageJson = CommonBase.getJsonMergeDeep(jsonDef, jsonValue);\n let pageCommon = {};\n if (CommonBase.isExistValue(key, \".\")) {\n const arrTemp: string[] = CommonBase.split(key, \".\");\n arrTemp[arrTemp.length - 1] = \"common\";\n const keyTemp = arrTemp.join(\".\");\n const jsonTempDef = this._getKey(keyTemp, this._typeDef);\n const jsonTempValue = this._getKey(keyTemp);\n pageCommon = CommonBase.getJsonMergeDeep(jsonTempDef, jsonTempValue);\n }\n data = CommonBase.getJsonMerge(pageJson, { common, pageCommon });\n }\n return data;\n }\n setType(type: string) {\n this._type = type;\n switch (type) {\n case \"zh_cn\":\n CommonDay.objDay.locale(\"zh-cn\");\n break;\n case \"en\":\n CommonDay.objDay.locale(\"en\");\n break;\n\n }\n }\n}\nexport default new LanguagePack();\n","import { ref } from \"vue\";\nimport Language from \"../Common/i18n/index\";\n\nconst useLanguage = () => {\n\n const optPageLanguage: any = ref({});\n const getPageLanguage = (page: string) => {\n const temp = Language.getPage(page);\n optPageLanguage.value = temp;\n };\n const getLanguageValue = (key: string) => {\n const value = Language.getValue(key);\n return value;\n };\n const getLanguageType = () => {\n return Language.getType();\n };\n\n return {\n optPageLanguage,\n getPageLanguage,\n getLanguageValue,\n getLanguageType,\n };\n};\nexport default useLanguage;\n","<template>\n <div ref=\"refElTop\" :class=\"clsParent\" v-bind=\"optParent\">\n <slot></slot>\n <div ref=\"refElMsg\" v-if=\"optBase.msgHtml.length > 0 && isShowMsg\" :class=\"clsErr\">\n <i v-if=\"optBase.type === 'tip'\" class=\"clIconFont clIcon-exclamation-circle-fill error-tip-el\"\n v-cltooltip=\"optBase.msgHtml\"></i>\n <span v-else-if=\"optBase.type === 'text'\" class=\"error-text-el\">{{ optBase.msgHtml }}</span>\n <template v-else></template>\n </div><template v-else></template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, onMounted, nextTick, toRaw, inject, watch } from \"vue\";\nimport CommonBase from \"../../Common/base\";\nimport CommonElement from \"../../Common/Element/index\";\nimport { tooltipDirectives } from \"../../Web/Tooltip\";\nimport useLanguage from \"../../Use/language\";\n\n// defineOptions\ndefineOptions({\n name: 'ClFormValidate',\n directives: {\n cltooltip: tooltipDirectives\n }\n})\n\n// props\nconst props = defineProps<{\n className?: string\n checkValue?: string | number\n rules?: any[]\n isCheck?: boolean\n msgElementId?: string\n msgType?: string\n pElError?: string\n isShowMsg?: boolean\n}>()\n\n// 常量 / 变量定义\nconst { optPageLanguage, getPageLanguage, getLanguageType } = useLanguage();\ngetPageLanguage(\"validate\");\n\nconst _clGlobals: any = inject(\"$ClGlobals\");\n\nconst refElTop = ref<HTMLElement | null>(null);\nconst refElMsg = ref<HTMLElement | null>(null);\n\nconst optBase = reactive({\n type: \"\",\n msgHtml: \"\",\n check: 0,\n});\n\nconst _pageElement: any = {\n form: null,\n};\n\nconst _pageData: any = {\n rules: {},\n messages: {},\n totalMessages: {},\n};\n\n// computed\nconst optParent = computed(() => {\n const temp: any = {\n \"data-validate-el\": \"\",\n };\n if (props.isCheck) {\n switch (optBase.check) {\n case 1:\n temp[\"data-validate-success\"] = \"\";\n break;\n case 2:\n temp[\"data-validate-error\"] = \"\";\n break;\n }\n }\n return temp;\n});\n\nconst clsParent = computed(() => {\n const clsTemp: any = {};\n if (props.isCheck) {\n clsTemp[\"panel-validate-element\"] = true;\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(\" \").forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true;\n }\n });\n }\n return clsTemp;\n});\n\nconst clsErr = computed(() => {\n const cls: any = {\n \"panel-validate-errors\": true,\n };\n cls[`validate-errors-${optBase.type}`] = true;\n return cls;\n});\n\n// 内部调用方法\nconst _initRules = (options: any[]) => {\n const rules: any = {};\n const messages: any = {};\n options.forEach((info: any) => {\n const type = typeof info;\n switch (type) {\n case \"string\":\n if (!CommonBase.isEmpty(info)) {\n if (CommonBase.isExistValue(info, \"|\")) {\n const tempR = info.split(\"|\");\n rules[tempR[0]] = tempR[1];\n } else {\n rules[info] = \"\";\n }\n }\n break;\n case \"object\":\n const isCheckOne = CommonBase.isBoolean(info.isCheck) ? info.isCheck : true;\n if (!CommonBase.isEmpty(info.r) && isCheckOne) {\n rules[info.r] = CommonBase.isUndefined(info.p) ? \"\" : info.p;\n if (!CommonBase.isEmpty(info.m)) {\n messages[info.r] = info.m;\n }\n }\n break;\n default:\n break;\n }\n });\n _pageData.rules = rules;\n _pageData.messages = messages;\n};\n\nconst _mergeRules = () => {\n const cancel: string[] = [];\n const param: any = {};\n const message: any = {};\n if (refElTop.value && !CommonBase.isEmpty(refElTop.value.dataset)) {\n Object.keys(refElTop.value.dataset).forEach((key) => {\n if (key.indexOf(\"validate\") === 0) {\n const tempKey = key.replace(/[A-Z]/g, (str) => `-${str.toLowerCase()}`);\n const arrKey = tempKey.split(\"-\");\n if (arrKey.length === 3) {\n const name = arrKey[2];\n const value: any = refElTop.value!.dataset[key];\n switch (arrKey[1]) {\n case \"check\":\n if (!CommonBase.isEmpty(value) && value.toLowerCase() === \"false\") {\n cancel.push(name);\n }\n break;\n case \"param\":\n param[name] = value;\n break;\n case \"message\":\n message[name] = value;\n break;\n default:\n break;\n }\n }\n }\n });\n }\n\n if (!CommonBase.isEmpty(_pageData.rules)) {\n if (!CommonBase.isEmpty(cancel) || !CommonBase.isEmpty(param)) {\n const newRules: any = {};\n for (const [r, p] of Object.entries(_pageData.rules)) {\n if (!CommonBase.isExistValue(cancel, r)) {\n newRules[r] = CommonBase.isExistJsonKey(param, r) ? param[r] : p;\n }\n }\n _pageData.rules = newRules;\n }\n }\n if (!CommonBase.isEmpty(_pageData.messages)) {\n if (!CommonBase.isEmpty(message)) {\n const newMessages: any = {};\n for (const [r, m] of Object.entries(_pageData.messages)) {\n newMessages[r] = CommonBase.isExistJsonKey(message, r) ? param[r] : m;\n }\n _pageData.messages = newMessages;\n }\n }\n};\n\nconst _getErrData = (value: string) => {\n const errData: any = {};\n const totalRules = _clGlobals.validate.rules;\n if (!CommonBase.isEmpty(_pageData.rules)) {\n const isEmpty = CommonBase.isEmpty(value);\n const newValue = isEmpty ? \"\" : CommonBase.trim(value);\n for (const [r, p] of Object.entries(_pageData.rules)) {\n if (CommonBase.isExistJsonKey(totalRules, r)) {\n let check = true;\n if (r === \"required\") {\n check = totalRules.required(newValue);\n } else {\n if (!isEmpty) {\n check = totalRules[r](newValue, p);\n }\n }\n if (!check) {\n errData[r] = p;\n }\n }\n }\n }\n return errData;\n};\n\nconst _getTotalMessages = () => {\n if (CommonBase.isEmpty(_pageData.totalMessages)) {\n const lang = toRaw(optPageLanguage.value);\n const vMsg = toRaw(_clGlobals.validate.messages);\n const langTypeInfo = getLanguageType();\n const msg =\n CommonBase.isExistJsonKey(vMsg, langTypeInfo.type) || CommonBase.isExistJsonKey(vMsg, langTypeInfo.def)\n ? CommonBase.getJsonMerge({}, vMsg[langTypeInfo.def] || {}, vMsg[langTypeInfo.type] || {})\n : vMsg;\n\n const data = CommonBase.getJsonMerge({}, lang, msg);\n return data;\n } else {\n return _pageData.totalMessages;\n }\n};\n\nconst _getErrMsg = (errData: any) => {\n const totalMessages = _getTotalMessages();\n const msg: any[] = [];\n Object.keys(errData).forEach((r) => {\n let rMsg = \"\";\n if (!CommonBase.isUndefined(totalMessages[r])) {\n rMsg = totalMessages[r];\n }\n if (!CommonBase.isUndefined(_pageData.messages[r])) {\n rMsg = _pageData.messages[r];\n }\n if (!CommonBase.isEmpty(rMsg)) {\n let temp = \"\";\n const p = errData[r];\n if (CommonBase.isExistValue(rMsg, \"%s\")) {\n temp = rMsg.replace(\"%s\", p);\n } else {\n temp = rMsg;\n }\n msg.push({ rule: r, msg: temp });\n }\n });\n return msg;\n};\n\nconst _getForm = () => {\n if (CommonBase.isUndefined(_pageElement.form) && refElTop.value) {\n _pageElement.form = CommonElement.getParent(refElTop.value, \"form\");\n }\n return _pageElement.form;\n};\n\nconst _setThemeType = () => {\n _getForm();\n let type = _clGlobals.validate.type;\n if (!CommonBase.isUndefined(_pageElement.form) && !CommonBase.isEmpty(_pageElement.form.dataset.theme)) {\n type = _pageElement.form.dataset.theme;\n }\n if (props.msgType && !CommonBase.isEmpty(props.msgType)) {\n type = props.msgType;\n }\n optBase.type = type;\n};\n\nconst _checkRun = () => {\n let isRun = true;\n _getForm();\n if (CommonBase.isUndefined(_pageElement.form)) {\n isRun = false;\n } else {\n if (!CommonBase.isEmpty(_pageElement.form.dataset)) {\n isRun = !CommonBase.isUndefined(_pageElement.form.dataset.run);\n }\n }\n return isRun;\n};\n\nconst _setMsg = (msg: string) => {\n if (CommonBase.isEmpty(msg)) {\n optBase.msgHtml = \"\";\n optBase.check = 1;\n } else {\n optBase.msgHtml = msg;\n optBase.check = 2;\n }\n if (props.msgElementId && !CommonBase.isEmpty(props.msgElementId)) {\n const msgEl: any = window.document.querySelector(props.msgElementId);\n if (msgEl) {\n nextTick(() => {\n if (refElMsg.value) {\n msgEl.appendChild(refElMsg.value);\n }\n });\n }\n }\n};\n\nconst _validate = () => {\n let result = true;\n if (props.isCheck && _checkRun()) {\n _setThemeType();\n _mergeRules();\n const errData = _getErrData(props.checkValue as string);\n result = CommonBase.isEmpty(errData);\n if (result) {\n _setMsg(\"\");\n } else {\n const msgList = _getErrMsg(errData);\n let msg = \"\";\n if (!CommonBase.isEmpty(msgList)) {\n switch (optBase.type) {\n case \"tip\":\n msg = msgList.map((info: any) => `<div>${info.msg}</div>`).join(\"\");\n break;\n case \"text\":\n msg = msgList.map((info: any) => info.msg).join(\",\");\n break;\n default:\n msg = \"\";\n }\n }\n _setMsg(msg);\n }\n } else {\n _setMsg(\"\");\n }\n return result;\n};\n\nconst _initMain = () => {\n _initRules(props.rules || []);\n _getForm();\n if (refElTop.value) {\n //@ts-ignore\n refElTop.value.pElError = props.pElError;\n //@ts-ignore\n refElTop.value.runValidate = _validate;\n //@ts-ignore\n refElTop.value.runErrMsg = _setMsg;\n //@ts-ignore\n refElTop.value.runReset = () => {\n _setMsg(\"\");\n };\n }\n};\n\n// watch\nwatch(\n [() => props.checkValue, () => props.rules, () => props.isCheck],\n ([_newValue, newRules]: any) => {\n _initRules(newRules || []);\n _validate();\n },\n { deep: true },\n);\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain();\n });\n});\n\n// 开放给外部使用的方法\nconst runValidate = () => {\n _validate();\n};\n\nconst runErrMsg = (msg: string) => {\n _setThemeType();\n _setMsg(msg);\n};\n\nconst runReset = () => {\n _setThemeType();\n _setMsg(\"\");\n};\n\n// 导出类型定义\nexport interface ClFormValidateExpose {\n runValidate: () => void\n runErrMsg: (msg: string) => void\n runReset: () => void\n}\n\n// defineExpose\ndefineExpose({\n runValidate,\n runErrMsg,\n runReset\n})\n</script>","import CommonBase from \"../../Common/base\";\nimport { LazyOptionInfo } from \"./interfaceItem\";\nconst defOption = {\n loading: \"data:image/gif;base64,R0lGODlhEAAQAPQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAkKAAAALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQJCgAAACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQJCgAAACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkECQoAAAAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkECQoAAAAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAkKAAAALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAkKAAAALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQJCgAAACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQJCgAAACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA==\",\n error: \"data:image/png;base64,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\",\n attr: {\n timeOutId: \"data-lazy-timeout-id\",\n },\n isCrossOrigin: false,\n};\nclass Lazy {\n public options: LazyOptionInfo = {\n loading: defOption.loading,\n error: defOption.error,\n observerOptions: {\n rootMargin: \"0px\",\n threshold: 0,\n },\n log: false,\n callback: {},\n };\n private _images = new WeakMap();\n constructor(options?: LazyOptionInfo) {\n this.config(options);\n }\n public config(options = {}): void {\n this.options = CommonBase.getJsonMergeDeep(this.options, options);\n }\n private _initValue(value: any, el: any) {\n let src = \"\";\n let loading = this.options.loading;\n let error = this.options.error;\n let callback = this.options.callback;\n let delay = this.options.delay;\n if (CommonBase.isObject(value)) {\n src = value.src;\n loading = value.loading || this.options.loading;\n error = value.error || this.options.error;\n callback = value.callback || this.options.callback;\n delay = value.delay || this.options.delay;\n } else if (CommonBase.isString(value)) {\n src = value;\n }\n else if (CommonBase.isUndefined(value)) {\n src = el && el.src || \"\";\n }\n return {\n src,\n loading,\n error,\n callback,\n delay,\n };\n }\n public mount(el: HTMLElement, binding: any): void {\n if (CommonBase.isUndefined(el)) return;\n const value = typeof binding === \"string\" ? binding : binding.value;\n const { src, loading, error, callback, delay } = this._initValue(value, el);\n this._setCallback(el, \"loading\", callback);\n el.setAttribute(\"src\", loading || defOption.loading);\n if (!this._checkIntersectionObserver()) {\n this._setImageSrc(el, src, error, callback);\n this._log(() => {\n throw new Error(\"Not support IntersectionObserver!\");\n });\n }\n this._initIntersectionObserver(el, src, error, callback, delay);\n }\n public update(el: HTMLElement, binding: any): void {\n if (CommonBase.isUndefined(el)) return;\n this._realObserver(el)?.unobserve(el);\n const value = typeof binding === \"string\" ? binding : binding.value;\n const { src, error, callback, delay } = this._initValue(value, el);\n this._initIntersectionObserver(el, src, error, callback, delay);\n }\n public unmount(el: HTMLElement): void {\n if (CommonBase.isUndefined(el)) return;\n this._realObserver(el)?.unobserve(el);\n this._images.delete(el);\n }\n\n private _setImageSrc(el: HTMLElement, src: string, error?: string, callback?: any): void {\n if (el.tagName.toLowerCase() === \"img\") {\n const elImage = el as HTMLImageElement;\n if (CommonBase.isEmpty(src)) {\n\n elImage.onload = null;\n this._setCallback(elImage, \"error\", callback);\n this._realObserver(elImage)?.disconnect();\n if (error) {\n elImage.setAttribute(\"src\", error);\n }\n } else {\n if (src) {\n const preSrc = elImage.getAttribute(\"src\");\n if (preSrc !== src) elImage.setAttribute(\"src\", src);\n }\n if (this.options.isCrossOrigin) {\n elImage.crossOrigin = \"Anonymous\";\n }\n elImage.onload = () => {\n if (src) {\n this._setCallback(elImage, \"loaded\", callback);\n }\n };\n elImage.onerror = () => {\n // Fix onload trigger twice, clear onload event\n // Reload on update\n elImage.onload = null;\n this._setCallback(elImage, \"error\", callback);\n this._realObserver(elImage)?.disconnect();\n if (error) {\n const newImageSrc = elImage.getAttribute(\"src\");\n if (newImageSrc !== error) elImage.setAttribute(\"src\", error);\n }\n this._log(() => { throw new Error(`Image failed to load!And failed src was: ${src} `); });\n };\n }\n }\n else {\n el.style.backgroundImage = `url('${src}')`;\n }\n }\n private _setCallback(el: HTMLElement, type: string, callback?: any): void {\n el?.setAttribute(\"lazy\", type);\n switch (type) {\n case \"loading\":\n if (callback?.loading) callback.loading(el);\n break;\n case \"loaded\":\n if (callback?.loaded) callback.loaded(el);\n break;\n case \"error\":\n if (callback?.error) callback.error(el);\n break;\n default:\n break;\n }\n }\n private _realObserver(el: HTMLElement) {\n return this._images.get(el);\n }\n private _checkIntersectionObserver(): boolean {\n const inBrowser = typeof window !== \"undefined\" && window !== null;\n if (inBrowser\n && \"IntersectionObserver\" in window\n && \"IntersectionObserverEntry\" in window\n && \"intersectionRatio\" in window.IntersectionObserverEntry.prototype) {\n if (!(\"isIntersecting\" in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n \"isIntersecting\", {\n get() {\n return this.intersectionRatio > 0;\n },\n });\n }\n return true;\n }\n return false;\n }\n private _initIntersectionObserver(el: HTMLElement, src: string, error?: string, callback?: any, delay?: number): void {\n const observerOptions = this.options.observerOptions;\n this._images.set(el, new IntersectionObserver((entries) => {\n Array.prototype.forEach.call(entries, (entry) => {\n if (delay && delay > 0)\n this._delayedIntersectionCallback(el, entry, delay, src, error, callback);\n else\n this._intersectionCallback(el, entry, src, error, callback);\n });\n }, observerOptions));\n this._realObserver(el)?.observe(el);\n }\n private _intersectionCallback(el: HTMLElement, entry: IntersectionObserverEntry, src: string, error?: string, callback?: any): void {\n if (entry.isIntersecting) {\n this._realObserver(el)?.unobserve(entry.target);\n this._setImageSrc(el, src, error, callback);\n }\n }\n\n private _delayedIntersectionCallback(el: HTMLElement, entry: IntersectionObserverEntry, delay: number, src: string, error?: string, callback?: any): void {\n if (entry.isIntersecting) {\n if (entry.target.hasAttribute(defOption.attr.timeOutId))\n return;\n\n const timeoutId = setTimeout(() => {\n this._intersectionCallback(el, entry, src, error, callback);\n entry.target.removeAttribute(defOption.attr.timeOutId);\n }, delay);\n entry.target.setAttribute(defOption.attr.timeOutId, String(timeoutId));\n }\n else {\n if (entry.target.hasAttribute(defOption.attr.timeOutId)) {\n clearTimeout(Number(entry.target.getAttribute(defOption.attr.timeOutId)));\n entry.target.removeAttribute(defOption.attr.timeOutId);\n }\n }\n }\n private _log(callback: () => void): void {\n if (this.options.log) callback();\n\n }\n}\nexport default Lazy;","import { onMounted, onUnmounted, nextTick, watch, Ref } from \"vue\";\nimport Lazy from \"./lazy\";\nimport { LazyOptionInfo } from \"./interfaceItem\";\n\nexport const useLazyload = (refEl: Ref<HTMLElement | null>, src: Ref<string>, options?: LazyOptionInfo) => {\n const lazy = new Lazy(options);\n onMounted(() => {\n nextTick(() => {\n if (refEl.value) {\n lazy.mount(refEl.value, src);\n }\n });\n });\n onUnmounted(() => {\n if (refEl.value) {\n lazy.unmount(refEl.value);\n }\n });\n watch(src, (newVal: string) => {\n if (src.value && refEl.value) {\n lazy.update(refEl.value, newVal);\n }\n });\n};","<template>\n <div\n :class=\"clsParent\"\n :style=\"styParent\"\n >\n <img\n ref=\"refElImage\"\n alt=\"\"\n :style=\"styImg\"\n >\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, computed, watch } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { useLazyload } from '../LazyImage/use'\n\n// defineOptions\ndefineOptions({\n name: 'ClImage'\n})\n\n// props\nconst props = defineProps<{\n className?: string\n src: string\n height?: string\n width?: string\n isCircle?: boolean\n fit?: string\n isCrossOrigin?: boolean\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'onInit'): void\n}>()\n\n// 常量 / 变量定义\nconst optSrcUrl = ref(props.src)\nconst refElImage = ref<HTMLImageElement | null>(null)\n\n// 内部调用方法\nconst _emitInit = () => {\n emit('onInit')\n}\n\nuseLazyload(refElImage, optSrcUrl, {\n callback: {\n loaded: () => {\n _emitInit()\n },\n error: () => {\n _emitInit()\n },\n },\n isCrossOrigin: props.isCrossOrigin,\n})\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-imageBox': true,\n 'imageBox-circle': props.isCircle,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const { width, height } = props\n const sty: any = {}\n if (width && !CommonBase.isEmpty(width)) {\n sty.width = width\n }\n if (height && !CommonBase.isEmpty(height)) {\n sty.height = height\n }\n return sty\n})\n\nconst styImg = computed(() => {\n const { width, height, fit } = props\n const sty: any = {}\n if (fit && !CommonBase.isEmpty(fit)) {\n sty['object-fit'] = fit\n if (width && !CommonBase.isEmpty(width)) {\n sty.width = width\n }\n if (height && !CommonBase.isEmpty(height)) {\n sty.height = height\n }\n }\n return sty\n})\n\n// watch\nwatch(\n () => props.src,\n (newValue) => {\n optSrcUrl.value = newValue\n },\n)\n\n</script>","<template>\n <div :class=\"clsParent\">\n <cl-input ref=\"refElInput\" theme=\"bottomLine\" :isNumber=\"true\" :decimal=\"0\" :isThousand=\"false\"\n v-model:value=\"optBase.value\" :placeholder=\"placeholder\" :isClean=\"true\" @onKeyupEnter=\"onKeyupEnter\"\n @onChange=\"onChange\"></cl-input>\n <div :class=\"clsSendBtn\">\n <template v-if=\"optBase.isSend\">\n <span v-if=\"optBase.isCountdown\" class=\"inputCaptcha-count\">{{ optBase.countdown }}秒后重发</span>\n <span v-else class=\"inputCaptcha-btn\" @click.stop=\"onSend\">重新发送</span>\n </template>\n <span v-else class=\"inputCaptcha-btn\" @click.stop=\"onSend\">发送验证码</span>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, reactive, computed, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport Input from '../Input/Index.vue'\n\n// defineOptions\ndefineOptions({\n name: 'ClInputCaptcha',\n components: {\n ClInput: Input,\n }\n})\n\n// props\nconst props = defineProps<{\n value?: string\n className?: string\n theme?: string\n placeholder?: string\n countdownMax?: number\n onSendBefore?: Function\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: string): void\n (e: 'onChange', value: string): void\n (e: 'onKeyupEnter', value: string): void\n (e: 'onSend'): void\n}>()\n\n// 常量 / 变量定义\nconst refElInput = ref<any>(null)\nconst optBase = reactive({\n value: '',\n isSend: false,\n isCountdown: false,\n countdown: props.countdownMax || 120,\n})\nconst _pageData: any = {\n intervalCountdownId: null,\n}\n\n// computed\nconst clsParent = computed(() => {\n const clsTemp: any = {\n 'panel-input-captcha': true,\n 'box-width': true,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n clsTemp[`inputCaptcha-theme-${props.theme || 'default'}`] = true\n return clsTemp\n})\n\nconst clsSendBtn = computed(() => {\n const clsTemp: any = {\n 'inputCaptcha-send': true,\n 'inputCaptcha-send-ing': optBase.isCountdown,\n }\n return clsTemp\n})\n\n// emit 外部使用的事件\nconst _emitChange = (value: string) => {\n emit('update:value', value)\n emit('onChange', value)\n}\n\nconst _emitKeyupEnter = () => {\n emit('onKeyupEnter', optBase.value)\n}\n\nconst _emitSend = () => {\n emit('onSend')\n}\n\n// 内部方法\nconst _initMain = () => { }\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 内部触发的事件\nconst onChange = (value: string) => {\n _emitChange(value)\n}\n\nconst onKeyupEnter = () => {\n _emitKeyupEnter()\n}\n\nconst onSend = () => {\n const { countdownMax = 120 } = props\n let countdown = optBase.countdown\n if (countdown === countdownMax) {\n let isSend = false\n if (props.onSendBefore) {\n isSend = props.onSendBefore()\n isSend = CommonBase.isBoolean(isSend) ? isSend : false\n }\n optBase.isSend = isSend\n if (isSend) {\n _emitSend()\n countdown = countdownMax\n optBase.isCountdown = true\n optBase.countdown = countdown\n _pageData.intervalCountdownId = setInterval(() => {\n countdown -= 1\n let isCountdown = false\n if (countdown <= 0) {\n clearInterval(_pageData.intervalCountdownId)\n countdown = countdownMax\n isCountdown = false\n } else {\n isCountdown = true\n }\n optBase.countdown = countdown\n optBase.isCountdown = isCountdown\n }, 1000)\n }\n }\n}\n\n// 开放给外部使用的方法\nconst getValue = () => {\n return CommonBase.trim(optBase.value)\n}\n\n// 导出类型定义\nexport interface ClInputCaptchaExpose {\n getValue: () => string\n}\n\n// defineExpose\ndefineExpose({\n getValue\n})\n</script>","import CommonBase from \"../../base\";\nimport CommonElement from \"../index\";\ndeclare interface IClientXY {\n clientX: number\n clientY: number\n}\ndeclare interface IOptions {\n start?: (event: Event, clientXYInfo: IClientXY) => void\n ing?: (event: Event, clientXYInfo: IClientXY) => void\n end?: (event: Event, clientXYInfo: IClientXY) => void\n}\nclass Drag {\n optionsDrag: IOptions;\n private _isDragging: boolean;\n private _bindRunDragStart: any;\n private _bindRunDragIng: any;\n private _bindRunDragEnd: any;\n constructor(element: HTMLElement | null, options: IOptions) {\n this.optionsDrag = options;\n this._isDragging = false;\n this._init(element);\n }\n private _init(element: HTMLElement | null) {\n this._bindRunDragStart = this._runDragStart.bind(this);\n this._bindRunDragIng = this._runDraggIng.bind(this);\n this._bindRunDragEnd = this._runDragEnd.bind(this);\n CommonElement.onListener(element, \"mousedown\", this._bindRunDragStart);\n CommonElement.onListener(element, \"touchstart\", this._bindRunDragStart);\n }\n private _runDragStart(e: Event) {\n if (this._isDragging) return;\n\n const clientXYInfo = CommonElement.getClientXY(e);\n let tempRun: any = true;\n if (this.optionsDrag.start) {\n tempRun = this.optionsDrag.start(e, clientXYInfo);\n }\n tempRun = CommonBase.isBoolean(tempRun) ? tempRun : true;\n if (tempRun) {\n e.preventDefault();\n e.stopPropagation();\n\n document.onselectstart = () => false;\n document.ondragstart = () => false;\n\n this._isDragging = true;\n\n CommonElement.onListener(window, \"mousemove\", this._bindRunDragIng);\n CommonElement.onListener(window, \"touchmove\", this._bindRunDragIng);\n CommonElement.onListener(window, \"mouseup\", this._bindRunDragEnd);\n CommonElement.onListener(window, \"touchend\", this._bindRunDragEnd);\n CommonElement.onListener(window, \"contextmenu\", this._bindRunDragEnd);\n } else {\n this._isDragging = false;\n }\n }\n private _runDraggIng(e: Event) {\n if (!this._isDragging) return;\n const clientXYInfo = CommonElement.getClientXY(e);\n if (this.optionsDrag.ing) {\n this.optionsDrag.ing(e, clientXYInfo);\n }\n }\n private _runDragEnd(e: Event) {\n if (!this._isDragging) return;\n this._isDragging = false;\n const clientXYInfo = CommonElement.getClientXY(e);\n if (this.optionsDrag.end) {\n this.optionsDrag.end(e, clientXYInfo);\n }\n this._offListener();\n }\n private _offListener() {\n CommonElement.offListener(window, \"mousemove\", this._bindRunDragIng);\n CommonElement.offListener(window, \"touchmove\", this._bindRunDragIng);\n CommonElement.offListener(window, \"mouseup\", this._bindRunDragEnd);\n CommonElement.offListener(window, \"touchend\", this._bindRunDragEnd);\n CommonElement.offListener(window, \"contextmenu\", this._bindRunDragEnd);\n }\n end() {\n this._isDragging = false;\n this._offListener();\n }\n}\nexport default Drag;\n","import CommonBase from \"../../base\";\nimport CommonElement from \"../index\";\nimport { DelayFun } from \"../../Tools/index\";\ninterface IOptions {\n element?: HTMLElement | null\n isDelay?: boolean\n delayTime?: number\n callback: (item?: any) => void\n}\nclass Resize {\n options: IOptions;\n private _isWinResize: boolean;\n private _isRunDelay: boolean;\n private _runDelayFun: any;\n private _bindWinResize: any;\n private _objResizeObserver: any;\n constructor(options: IOptions) {\n this._isWinResize = CommonBase.isUndefined(options.element);\n this._isRunDelay = Boolean(CommonBase.isBoolean(options.isDelay) ? options.isDelay : true);\n this.options = options;\n this._init();\n }\n private _init() {\n if (this._isRunDelay) {\n this._runDelayFun = new DelayFun(this.options.callback, this.options.delayTime);\n }\n\n if (this._isWinResize) {\n this._bindWinResize = this._onWinResize.bind(this);\n CommonElement.onListener(window, \"resize\", this._bindWinResize);\n } else {\n this._initResizeObserver();\n }\n\n }\n private _onWinResize() {\n if (this._isRunDelay) {\n this._runDelayFun.run();\n } else {\n if (this.options.callback) {\n this.options.callback();\n }\n }\n }\n private _initResizeObserver() {\n if (window && \"ResizeObserver\" in window) {\n this._objResizeObserver = new ResizeObserver(entries => {\n const entry = entries[0]; // {target,contentRect}\n if (this._isRunDelay) {\n this._runDelayFun.run(() => {\n this.options.callback(entry);\n });\n } else {\n this.options.callback(entry);\n }\n });\n this._objResizeObserver.observe(this.options.element);\n }\n }\n destroy() {\n if (this._isWinResize) {\n CommonElement.offListener(window, \"resize\", this._bindWinResize);\n } else {\n if (this._objResizeObserver) {\n this._objResizeObserver.disconnect();\n this._objResizeObserver = null;\n }\n }\n }\n}\nexport default Resize;","<template>\n <span\n ref=\"refElButton\"\n :class=\"clsParent\"\n >\n <slot name=\"icon\"></slot>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { Drag as DragEvent } from '../../Common/Element/Event/index'\n\n// defineOptions\ndefineOptions({\n name: 'ClInputnumberButton'\n})\n\n// props\nconst props = defineProps<{\n className?: string\n isDisabled?: boolean\n checkDownBeforeCallback?: Function\n}>()\n\n// emit\nconst emit = defineEmits<{\n (e: 'onLongDownStart'): void\n (e: 'onLongDownEnd'): void\n}>()\n\n// 常量 / 变量定义\nconst refElButton = ref<HTMLElement | null>(null)\nconst _pageData: any = {\n longDownInterval: null,\n isMoveBoundary: false,\n}\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {\n 'inputNumber-controls': true,\n }\n const className = props.className\n if (className && !CommonBase.isEmpty(className)) {\n className.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n cls['inputNumber-controls-disabled'] = props.isDisabled || false\n return cls\n})\n\n// emit 外部使用的事件\nconst _emitLongDownStart = () => {\n emit('onLongDownStart')\n}\n\nconst _emitLongDownEnd = () => {\n emit('onLongDownEnd')\n}\n\n// 内部方法\nconst _checkLongDownStart = () => {\n let isCheck = true\n if (props.checkDownBeforeCallback) {\n isCheck = props.checkDownBeforeCallback()\n }\n return isCheck\n}\n\nconst _stopLongDownInterval = () => {\n if (_pageData.longDownInterval) {\n clearInterval(_pageData.longDownInterval)\n _pageData.longDownInterval = null\n }\n}\n\nconst _runLongDownStart = () => {\n _emitLongDownStart()\n _stopLongDownInterval()\n _pageData.longDownInterval = setInterval(() => {\n if (!props.isDisabled) {\n _emitLongDownStart()\n } else {\n _runLongDownEnd()\n }\n }, 200)\n}\n\nconst _runLongDownIng = (e: any) => {\n if (refElButton.value === e.target || refElButton.value?.contains(e.target)) {\n if (_pageData.isMoveBoundary) {\n _pageData.isMoveBoundary = false\n _runLongDownStart()\n }\n } else {\n _stopLongDownInterval()\n _pageData.isMoveBoundary = true\n }\n}\n\nconst _runLongDownEnd = () => {\n _stopLongDownInterval()\n _emitLongDownEnd()\n}\n\nconst _initMain = () => {\n const dragConfig = {\n start(e: any) {\n let isRun = false\n if (e.buttons === 1) {\n isRun = _checkLongDownStart()\n if (isRun) {\n if (!props.isDisabled) {\n _runLongDownStart()\n }\n }\n }\n return isRun\n },\n ing: (e: any) => {\n _runLongDownIng(e)\n },\n end: () => {\n _runLongDownEnd()\n },\n }\n if (refElButton.value) {\n new DragEvent(refElButton.value, dragConfig)\n }\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n</script>","<template>\n <div :class=\"clsParent\">\n <cl-input ref=\"refElInput\" :value=\"optValue\" :placeholder=\"placeholder\" :disabled=\"disabled\"\n :isReadonly=\"isTextRead\" :isClean=\"isClean\" :isNumber=\"!optIsFillZero\" :decimal=\"optTextDecimal\" theme=\"icon\"\n @onChange=\"onInputChange\" @onKeydown=\"onInputKeydown\" @onKeyup=\"onInputKeyup\" @onFocus=\"onInputFocus\"\n @onBlur=\"onInputBlur\"><template v-if=\"optIsShowTextPrepend\" v-slot:prepend>\n <slot name=\"textPrepend\"></slot>\n </template>\n </cl-input>\n <cl-inputnumber-button className=\"inputNumber-subtract\" :isDisabled=\"disabled || optBtn.subtractDisabled\"\n :checkDownBeforeCallback=\"operateBtnDownBeforeCallback\" @onLongDownStart=\"onButtonLongDown('subtract')\"\n @onLongDownEnd=\"onButtonLongDownEnd()\">\n <template v-slot:icon>\n <i :class=\"clsIconSubtract\"></i>\n </template>\n </cl-inputnumber-button>\n <cl-inputnumber-button className=\"inputNumber-add\" :isDisabled=\"disabled || optBtn.addDisabled\"\n :checkDownBeforeCallback=\"operateBtnDownBeforeCallback\" @onLongDownStart=\"onButtonLongDown('add')\"\n @onLongDownEnd=\"onButtonLongDownEnd()\">\n <template v-slot:icon>\n <i :class=\"clsIconAdd\"></i>\n </template>\n </cl-inputnumber-button>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, reactive, computed, onMounted, nextTick, watch, useSlots } from 'vue'\nimport CommonBase from '../../Common/base'\nimport Input from '../Input/Index.vue'\nimport InputnumberButton from './Button.vue'\n\n// defineOptions\ndefineOptions({\n name: 'ClInputNumber',\n components: {\n ClInput: Input,\n ClInputnumberButton: InputnumberButton,\n }\n})\n\n// props\nconst props = defineProps({\n size: {\n type: String,\n default: 'large',\n validator: (value: string) => {\n return ['', 'large', 'small'].indexOf(value) !== -1\n }\n },\n btnShowType: {\n type: String,\n default: 'fixed',\n validator: (value: string) => {\n return ['fixed', 'focus'].indexOf(value) !== -1\n }\n },\n btnTheme: {\n type: String,\n default: 'leftRight',\n validator: (value: string) => {\n return ['leftRight', 'upDown'].indexOf(value) !== -1\n }\n },\n value: {\n type: [String, Number],\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n },\n className: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n isClean: {\n type: Boolean,\n default: true\n },\n isTextRead: {\n type: Boolean,\n default: false\n },\n min: {\n type: Number,\n default: undefined\n },\n max: {\n type: Number,\n default: undefined\n },\n isLoop: {\n type: Boolean,\n default: false\n },\n decimal: {\n type: Number,\n default: 0\n },\n fillZeroCount: {\n type: Number,\n default: 0\n },\n btnStep: {\n type: Number,\n default: 1\n },\n btnClsIconSub: {\n type: String,\n default: ''\n },\n btnClsIconAdd: {\n type: String,\n default: ''\n },\n operateBtnDownBeforeCallback: Function,\n calculationOperateValueCallback: Function,\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: string): void\n (e: 'onChange', value: string): void\n}>()\n\n// 常量 / 变量定义\nconst refElInput = ref<any>(null)\nconst optBase = reactive({\n isHover: false,\n isFocus: false,\n})\nconst optValue = ref('')\n\nconst optBtn = reactive({\n subtractDisabled: false,\n addDisabled: false,\n})\n\nconst _pageData: any = {\n upDown: {\n subtract: 'clIconFont clIcon-angle-up',\n add: 'clIconFont clIcon-angle-down',\n },\n leftRight: {\n subtract: 'clIconFont clIcon-minus',\n add: 'clIconFont clIcon-plus',\n },\n btnShowFixed: props.btnShowType === 'fixed',\n btnShowFocus: props.btnShowType === 'focus',\n}\n\n// computed\nconst optIsShowTextPrepend = computed(() => {\n return !CommonBase.isUndefined(slots.textPrepend)\n})\n\nconst optTextDecimal = computed(() => {\n const decimal = props.decimal || 0\n const step = (props.btnStep || 1).toString()\n let newDecimal = decimal\n if (step.indexOf('.') > -1) {\n const len = step.split('.')[1].length\n if (decimal < len) {\n newDecimal = len\n }\n }\n return newDecimal\n})\n\nconst optIsFillZero = computed(() => {\n return (props.fillZeroCount || 0) > 0\n})\n\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-inputNumber': true,\n 'inputNumber-disabled': props.disabled || false,\n }\n const { className, size } = props\n\n if (className && !CommonBase.isEmpty(className)) {\n className.split(' ').forEach((c) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n cls[`inputNumber-btn-${props.btnTheme || 'leftRight'}`] = true\n cls[`inputNumber-btn-${props.btnShowType || 'fixed'}`] = true\n cls['inputNumber-hover'] = optBase.isHover\n cls['inputNumber-focus'] = optBase.isFocus\n cls[`inputNumber-${size || 'large'}`] = true\n return cls\n})\n\nconst clsIconSubtract = computed(() => {\n const cls: any = {}\n let icon = ''\n if (props.btnClsIconSub && !CommonBase.isEmpty(props.btnClsIconSub)) {\n icon = props.btnClsIconSub\n } else {\n const btnTheme = props.btnTheme || 'leftRight'\n if (_pageData[btnTheme]) {\n icon = _pageData[btnTheme].subtract\n }\n }\n if (icon.length > 0) {\n cls[icon] = true\n }\n return cls\n})\n\nconst clsIconAdd = computed(() => {\n const cls: any = {}\n let icon = ''\n if (props.btnClsIconAdd && !CommonBase.isEmpty(props.btnClsIconAdd)) {\n icon = props.btnClsIconAdd\n } else {\n const btnTheme = props.btnTheme || 'leftRight'\n if (_pageData[btnTheme]) {\n icon = _pageData[btnTheme].add\n }\n }\n if (icon.length > 0) {\n cls[icon] = true\n }\n return cls\n})\n\n// emit 外部使用的事件\nconst _emitChange = () => {\n const value = optValue.value\n emit('update:value', value)\n emit('onChange', value)\n}\n\n// 内部方法\nconst _initValue = (value: string) => {\n if (value === optValue.value) {\n refElInput.value?.setValue(value)\n }\n optValue.value = value\n}\n\nconst _calculationOperateValue = (value: any, type?: string) => {\n let newValue: any\n let subtractDisabled = false\n let addDisabled = false\n if (props.calculationOperateValueCallback) {\n const tempValueInfo = props.calculationOperateValueCallback({ value, type })\n newValue = tempValueInfo.value\n subtractDisabled = tempValueInfo.subtractDisabled\n addDisabled = tempValueInfo.addDisabled\n } else {\n const num = CommonBase.isEmpty(value) ? 0 : Number(value)\n const min: any = props.min\n const max: any = props.max\n const { isLoop = false } = props\n const minIsEmpty = CommonBase.isUndefined(min)\n const maxIsEmpty = CommonBase.isUndefined(max)\n const step = props.btnStep || 1\n\n let tempNum = num\n if (type && !CommonBase.isEmpty(type)) {\n tempNum += step * (type === 'subtract' ? -1 : 1)\n\n const tempStr = tempNum.toString()\n if (tempStr.indexOf('.') > -1) {\n const len = tempStr.split('.')[1].length\n const decimal = optTextDecimal.value\n if (decimal.toString().length < len) {\n tempNum = Number(tempNum.toFixed(decimal))\n }\n }\n }\n\n if (!minIsEmpty && tempNum <= min) {\n if (!isLoop) {\n subtractDisabled = true\n }\n newValue = tempNum < min && isLoop && !maxIsEmpty ? max : min\n } else if (!maxIsEmpty && tempNum >= max) {\n if (!isLoop) {\n addDisabled = true\n }\n newValue = tempNum > max && isLoop && !minIsEmpty ? min : max\n } else {\n newValue = tempNum\n }\n }\n if (optIsFillZero.value) {\n newValue = CommonBase.getFillZero(newValue)\n }\n _initValue(newValue.toString())\n optBtn.subtractDisabled = subtractDisabled\n optBtn.addDisabled = addDisabled\n}\n\nconst _setFocus = (isFocus: boolean) => {\n optBase.isFocus = isFocus\n if (isFocus) {\n refElInput.value?.focus()\n }\n}\n\nconst _initMain = () => {\n _calculationOperateValue(props.value)\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// watch\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue && newValue !== optValue.value) {\n _calculationOperateValue(newValue)\n }\n },\n)\n\n// 内部触发的事件\nlet _searchTimerDelay: any\nconst onInputChange = (value: string) => {\n if (!props.disabled) {\n if (_searchTimerDelay) {\n clearTimeout(_searchTimerDelay)\n _searchTimerDelay = null\n }\n _searchTimerDelay = setTimeout(() => {\n if (CommonBase.isEmpty(value)) {\n _initValue('')\n optBtn.subtractDisabled = false\n optBtn.addDisabled = false\n } else {\n _calculationOperateValue(value)\n }\n _emitChange()\n }, 100)\n }\n}\n\nconst onInputKeydown = (e: any) => {\n if (!props.disabled && !props.isTextRead) {\n let keyCode = e.keyCode\n if (!CommonBase.isUndefined(keyCode)) {\n keyCode = keyCode.toString()\n if (keyCode === '37' || keyCode === '40') {\n _calculationOperateValue(optValue.value, 'subtract')\n _setFocus(true)\n } else if (keyCode === '38' || keyCode === '39') {\n _calculationOperateValue(optValue.value, 'add')\n _setFocus(true)\n }\n }\n }\n}\n\nconst onInputKeyup = (e: any) => {\n if (!props.disabled && !props.isTextRead) {\n let keyCode = e.keyCode\n if (!CommonBase.isUndefined(keyCode)) {\n keyCode = keyCode.toString()\n if (keyCode === '37' || keyCode === '40' || keyCode === '38' || keyCode === '39') {\n _setFocus(true)\n _emitChange()\n }\n }\n }\n}\n\nconst onInputFocus = () => {\n _setFocus(true)\n}\n\nconst onInputBlur = () => {\n _setFocus(false)\n}\n\nconst onButtonLongDown = (type: string) => {\n _calculationOperateValue(optValue.value, type)\n _setFocus(true)\n}\n\nconst onButtonLongDownEnd = () => {\n _emitChange()\n _setFocus(true)\n}\n\nconst slots = useSlots()\n</script>","<template>\n <div :class=\"clsParent\">\n <cl-input\n ref=\"refElInput\"\n v-model:value=\"optSearchValue\"\n theme=\"icon\"\n :placeholder=\"placeholder\"\n :isClean=\"true\"\n :disabled=\"disabled\"\n @onChange=\"onChange\"\n @onKeyupEnter=\"onKeyupEnter\"\n @onFocus=\"onFocus\"\n @onBlur=\"onBlur\"\n @onClear=\"onClear\"\n >\n <template v-slot:[optSlotAttrName]>\n <span\n v-if=\"theme==='text'\"\n @click=\"onClickIcon\"\n >{{textLabel}}</span>\n <i\n v-else\n class=\"clIconFont clIcon-search\"\n @click=\"onClickIcon\"\n ></i>\n </template>\n </cl-input>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, computed, watch } from 'vue'\nimport CommonBase from '../../Common/base'\nimport ClInput from '../Input/Index.vue'\n\ndefineOptions({\n name: 'ClInputSearch',\n components: {\n ClInput\n }\n})\n\nconst props = defineProps({\n theme: {\n type: String,\n default: 'icon',\n validator: (value: string) => {\n return ['icon', 'text'].indexOf(value) !== -1\n }\n },\n location: {\n type: String,\n default: 'right',\n validator: (value: string) => {\n return ['left', 'right'].indexOf(value) !== -1\n }\n },\n value: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n },\n className: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n textLabel: {\n type: String,\n default: ''\n },\n changDelayTime: {\n type: Number,\n default: 200\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update:value', value: string): void\n (e: 'onChange', value: string): void\n (e: 'onSearch', value: string): void\n (e: 'onFocus', value: string): void\n (e: 'onBlur', value: string): void\n}>()\n\nconst refElInput = ref<any>(null)\n\nlet _prevValue = props.value as string\nconst optSearchValue = ref(props.value)\n\nconst clsParent = computed(() => {\n const clsTemp: any = {\n 'panel-input-search': true,\n 'input-search-disabled': props.disabled,\n }\n if (!CommonBase.isEmpty(props.className)) {\n props.className?.split(' ').forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n const theme = CommonBase.isEmpty(props.theme) ? 'icon' : props.theme\n clsTemp[`input-search-${theme}`] = true\n\n return clsTemp\n})\n\nconst optSlotAttrName = computed(() => {\n let temp = 'append'\n if (!CommonBase.isEmpty(props.location)) {\n temp = props.location === 'left' ? 'prepend' : 'append'\n }\n return temp\n})\n\nlet _searchTimerDelay: any\n\nconst _stopRunDelay = () => {\n if (_searchTimerDelay) {\n clearTimeout(_searchTimerDelay)\n _searchTimerDelay = null\n }\n}\n\nconst _emitChange = (value: string) => {\n emit('update:value', value)\n emit('onChange', value)\n}\n\nconst _emitSearch = (value: string) => {\n emit('onSearch', value)\n}\n\nconst _emitFocus = (value: string) => {\n emit('onFocus', value)\n}\n\nconst _emitBlur = (value: string) => {\n emit('onBlur', value)\n}\n\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n optSearchValue.value = newValue\n }\n },\n)\n\nconst onChange = (value: string) => {\n if (!props.disabled) {\n _stopRunDelay()\n _searchTimerDelay = setTimeout(() => {\n if (_prevValue !== value) {\n _prevValue = value\n _emitChange(value)\n }\n }, props.changDelayTime)\n }\n}\n\nconst onKeyupEnter = (value: string) => {\n if (!props.disabled) {\n setTimeout(() => {\n _emitSearch(value)\n }, props.changDelayTime)\n }\n}\n\nconst onFocus = (value: string) => {\n if (!props.disabled) {\n _emitFocus(value)\n }\n}\n\nconst onBlur = (value: string) => {\n if (!props.disabled) {\n _emitBlur(value)\n }\n}\n\nconst onClickIcon = () => {\n if (!props.disabled) {\n _emitSearch(optSearchValue.value as string)\n }\n}\n\nconst onClear = () => {\n if (!props.disabled) {\n _emitChange('')\n _emitSearch('')\n }\n}\n\nconst getValue = () => {\n return optSearchValue.value\n}\n\nconst setValue = (value: string) => {\n _prevValue = value\n optSearchValue.value = value\n}\n\nconst focus = () => {\n refElInput.value?.focus()\n}\n\nexport interface ClInputSearchExpose {\n getValue: () => string\n setValue: (value: string) => void\n focus: () => void\n}\n\ndefineExpose({\n getValue,\n setValue,\n focus\n})\n</script>\n\n<style scoped>\n</style>\n","<template>\n <transition\n name=\"clSlideUpDown\"\n @before-enter=\"onBeforeEnter\"\n @enter=\"onEnter\"\n @after-enter=\"onAfterEnter\"\n @before-leave=\"onBeforeLeave\"\n @leave=\"onLeave\"\n @after-leave=\"onAfterLeave\"\n >\n <slot></slot>\n </transition>\n</template>\n\n<script setup lang=\"ts\">\nimport { reactive } from 'vue'\n\n// defineOptions\ndefineOptions({ name: 'ClTransitionSlideupdown' })\n\n// reactive\nconst optBase = reactive({\n oldPaddingTop: '',\n oldPaddingBottom: '',\n oldOverflow: '',\n})\n\n// 过渡事件处理\nconst onBeforeEnter = (el: any) => {\n optBase.oldPaddingBottom = el.style.paddingBottom\n optBase.oldPaddingTop = el.style.paddingTop\n // 过渡效果开始前设置元素的maxHeight为0,让元素maxHeight有一个初始值\n el.style.paddingTop = '0'\n el.style.paddingBottom = '0'\n el.style.maxHeight = '0'\n}\n\nconst onEnter = (el: any, done: any) => {\n optBase.oldOverflow = el.style.overflow\n const elHeight = el.scrollHeight\n // 过渡效果进入后将元素的maxHeight设置为元素本身的高度,将元素maxHeight设置为auto不会有过渡效果\n if (elHeight > 0) {\n el.style.maxHeight = elHeight + 'px'\n } else {\n el.style.maxHeight = '0'\n }\n el.style.paddingTop = optBase.oldPaddingTop\n el.style.paddingBottom = optBase.oldPaddingBottom\n\n el.style.overflow = 'hidden'\n // done();\n const onTransitionDone = function() {\n done()\n el.removeEventListener('transitionend', onTransitionDone, false)\n el.removeEventListener('transitioncancel', onTransitionDone, false)\n }\n // 绑定元素的transition完成事件,在transition完成后立即完成vue的过度动效\n el.addEventListener('transitionend', onTransitionDone, false)\n el.addEventListener('transitioncancel', onTransitionDone, false)\n}\n\nconst onAfterEnter = (el: any) => {\n // 过渡效果完成后恢复元素的maxHeight\n el.style.maxHeight = ''\n el.style.overflow = optBase.oldOverflow\n}\n\nconst onBeforeLeave = (el: any) => {\n optBase.oldPaddingBottom = el.style.paddingBottom\n optBase.oldPaddingTop = el.style.paddingTop\n optBase.oldOverflow = el.style.overflow\n\n el.style.maxHeight = el.scrollHeight + 'px'\n el.style.overflow = 'hidden'\n}\n\nconst onLeave = (el: any, done: any) => {\n if (el.scrollHeight !== 0) {\n el.style.maxHeight = '0'\n el.style.paddingBottom = '0'\n el.style.paddingTop = '0'\n }\n // done();\n const onTransitionDone = function() {\n done()\n el.removeEventListener('transitionend', onTransitionDone, false)\n el.removeEventListener('transitioncancel', onTransitionDone, false)\n }\n // 绑定元素的transition完成事件,在transition完成后立即完成vue的过度动效\n el.addEventListener('transitionend', onTransitionDone, false)\n el.addEventListener('transitioncancel', onTransitionDone, false)\n}\n\nconst onAfterLeave = (el: any) => {\n el.style.maxHeight = ''\n el.style.overflow = optBase.oldOverflow\n el.style.paddingBottom = optBase.oldPaddingBottom\n el.style.paddingTop = optBase.oldPaddingTop\n\n optBase.oldOverflow = optBase.oldPaddingBottom = optBase.oldPaddingTop = ''\n}\n</script>\n\n<style scoped>\n.clSlideUpDown-enter-active,\n.clSlideUpDown-leave-active {\n overflow: hidden;\n transition: height 0.3s ease-in-out, padding 0.3s ease-in-out, max-height 0.3s ease-in-out;\n}\n</style>\n","import axios from \"axios\";\nimport qs from \"qs\";\nimport CommonBase from \"./base\";\nclass AxiosRequest {\n requestPendingList: any;\n globalOptions: any;\n constructor() {\n this.requestPendingList = new Map();\n this.globalOptions = {};\n this._setInterceptors();\n }\n private _initRequest(url: string, param: any, optionsAll: any): Promise<any> {\n const self = this;\n const newExtInfo = this._getExtInfo(optionsAll.ext);\n return new Promise((resolve) => {\n const startTime = new Date();\n let options: any = {\n url: url,\n timeout: 1000 * 15,\n responseType: \"json\",\n retry: 3,\n retryDelay: 1000,\n //_requestKeyMerge: [\"method\", \"url\", \"_ran\"],\n };\n options = CommonBase.getJsonMerge(options, optionsAll.options, param);\n\n axios(options).then((response) => {\n if (optionsAll.ext._operateType === \"fileDownBinary\") {\n optionsAll.ext.uploadDownBinaryCallback(response, newExtInfo, resolve);\n } else {\n const initResData = newExtInfo.resultCallback ? newExtInfo.resultCallback(response) : self._initResult(response, newExtInfo.resultCode);\n self._initRequestResolve(resolve, initResData, newExtInfo, startTime);\n }\n\n }).catch((error) => {\n if (newExtInfo.errorCallback && error.response) {\n const errCbResult = newExtInfo.errorCallback(error);\n if (errCbResult) {\n if (errCbResult.then && CommonBase.isFunction(errCbResult.then)) {\n errCbResult.then((result: any) => {\n self._initRequestError(error, resolve, result, newExtInfo, startTime);\n });\n } else {\n self._initRequestError(error, resolve, errCbResult, newExtInfo, startTime);\n }\n }\n } else {\n let errCode = \"\";\n let errMsg = \"\";\n if (error.response) {\n errCode = error.response.status.toString();\n } else if (error.code === \"ECONNABORTED\") {\n errMsg = \"Axios:TimeOut Repeat\";\n } else {\n if (!CommonBase.isEmpty(error.message)) {\n errMsg = `Axios:${CommonBase.isEmpty(error.code) ? \"\" : (error.code + \"-\")}${error.message}`;\n }\n }\n const initErrData = self._initResultErr(errCode, errMsg);\n self._initRequestError(error, resolve, initErrData, newExtInfo, startTime);\n }\n });\n });\n }\n _initRequestResolve(resolve: any, data: any, newExtInfo: any, startTime: any) {\n if (newExtInfo.isTimeOut) {\n this._timeOut(startTime, () => {\n resolve(data);\n });\n } else {\n resolve(data);\n }\n }\n _initRequestError(error: any, resolve: any, errData: any, newExtInfo: any, startTime: any) {\n if (axios.isCancel(error)) {\n //reject({ code: \"-1111\", success: false, msg: error.message });\n } else {\n this._initRequestResolve(resolve, errData, newExtInfo, startTime);\n }\n }\n initGet(options: any) {\n const param = {\n method: \"get\",\n headers: this._getHeader(options.ext),\n params: options.param,\n };\n return this._initRequest(options.url, param, options);\n }\n\n initPost(options: any) {\n const param = {\n method: \"post\",\n headers: this._getHeader(options.ext),\n data: JSON.stringify(options.param),\n };\n return this._initRequest(options.url, param, options);\n }\n\n initPut(options: any) {\n const url = options.url;\n const param = {\n method: \"put\",\n headers: this._getHeader(options.ext),\n data: JSON.stringify(options.param),\n };\n return this._initRequest(url, param, options);\n }\n\n initDelete(options: any) {\n const url = options.url;\n const param = {\n method: \"delete\",\n headers: this._getHeader(options.ext),\n data: JSON.stringify(options.param),\n };\n return this._initRequest(url, param, options);\n }\n\n initFile(options: any) {\n const param: any = {\n method: \"post\",\n };\n const headers: any = this._getHeader(options.ext);\n /* if (options.ext.headerCallback) {\n const headerData = options.ext.headerCallback();\n if (!CommonBase.isEmpty(headerData)) {\n for (const [k, v] of Object.entries(headerData)) {\n headers[k] = v;\n }\n }\n } */\n // headers[\"Content-Type\"] = \"multipart/form-data\";\n /* param.headers = this._getHeader({\n headerCallback: () => headers,\n }); */\n param.headers = headers;\n const formData = new FormData();\n Object.keys(options.param).forEach((pk) => {\n const pv = options.param[pk];\n if (CommonBase.isArray(pv)) {\n pv.forEach((v: any) => {\n formData.append(pk, v);\n });\n } else {\n formData.append(pk, options.param[pk]);\n }\n });\n param.data = formData;\n return this._initRequest(options.url, param, options);\n }\n\n initFileDownLoad(options: any) {\n const self = this;\n const param: any = {\n method: \"post\",\n responseType: \"blob\",\n };\n const methodType = !CommonBase.isEmpty(options.options.method) ? options.options.method : \"post\";\n param.method = methodType;\n\n const headers: any = this._getHeader(options.ext);\n headers[\"Content-Type\"] = \"application/json;\";\n param.headers = headers;\n\n if (!CommonBase.isEmpty(options.param)) {\n if (methodType === \"get\") {\n param.params = options.param;\n } else {\n param.data = JSON.stringify(options.param);\n }\n }\n\n options.ext._operateType = \"fileDownBinary\";\n options.ext.uploadDownBinaryCallback = (response: any, newExtInfo: any, resolve: any) => {\n const fr = new FileReader();\n fr.onload = function(resFr: any) {\n try {\n const resData = JSON.parse(resFr.currentTarget.result);\n const result = newExtInfo.resultCallback ? newExtInfo.resultCallback({ data: resData }) : self._initResult({ data: resData }, newExtInfo.resultCode);\n if (!result.success) {\n resolve(result);\n }\n } catch (err) {\n //const fileName = window.decodeURIComponent(response.headers[\"content-disposition\"].split(\"=\")[1]);\n const contentDisposition = response.headers[\"content-disposition\"];\n let fileName = \"\";\n if (!CommonBase.isEmpty(contentDisposition)) {\n fileName = window.decodeURIComponent(contentDisposition.split(\"=\")[1]);\n } else {\n fileName = options.param && options.param.fileName\n ? options.param.fileName\n : (new Date()).getTime().toString();\n }\n fileName = fileName.replace(/\\\"/g, \"\").replace(/'/g, \"\");\n let fileType = \"\";\n /* const arrFile = fileName.split(\".\");\n if (arrFile.length > 1) {\n fileType = arrFile[1];\n }\n let blobOption: any = undefined;\n if (fileType === \"xlsx\") {\n blobOption = { type: \"application/vnd.ms-excel\" };\n }*/\n const lastIndex = fileName.lastIndexOf(\".\");\n if (lastIndex > -1) {\n fileType = fileName.substring(lastIndex + 1);\n }\n let blobOption: any = undefined;\n switch (fileType) {\n case \"xls\":\n case \"xlsx\":\n blobOption = { type: \"application/vnd.ms-excel\" };\n break;\n case \"csv\":\n blobOption = { type: \"text/csv\" };\n break;\n case \"doc\":\n case \"docx\":\n blobOption = { type: \"application/msword\" };\n break;\n case \"pdf\":\n blobOption = { type: \"application/pdf\" };\n break;\n }\n const blob = new Blob([response.data], blobOption);\n\n //@ts-ignore\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\n //@ts-ignore\n window.navigator.msSaveOrOpenBlob(blob, fileName);\n } else {\n const link = document.createElement(\"a\");\n link.href = (window.URL || window.webkitURL).createObjectURL(blob);\n link.download = fileName;\n link.style.display = \"none\";\n document.body.appendChild(link);\n link.click();\n //document.body.removeChild(link);\n window.URL.revokeObjectURL(link.href);\n }\n resolve({ success: true });\n }\n };\n fr.readAsText(response.data);\n };\n return this._initRequest(options.url, param, options);\n }\n\n private _getHeader(extOptions: any) {\n const reqHeaders: any = {\n \"Content-Type\": \"application/json;charset=UTF-8\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n };\n if (extOptions && extOptions.headerCallback) {\n const headerData = extOptions.headerCallback();\n if (!CommonBase.isEmpty(headerData)) {\n for (const [k, v] of Object.entries(headerData)) {\n reqHeaders[k] = v;\n }\n }\n }\n return reqHeaders;\n }\n\n private _getExtInfo(extOptions: any) {\n const ext = CommonBase.getJsonClone(extOptions);\n ext.isTimeOut = CommonBase.isBoolean(ext.isTimeOut) ? ext.isTimeOut : true;\n return ext;\n }\n private _timeOut(timeStart: any, cb: any) {\n const timeEnd = new Date();\n const timeDiff = timeEnd.getTime() - timeStart.getTime();\n const diff = timeDiff - 200;\n const timeout = diff > 0 ? 0 : Math.abs(diff);\n if (timeout <= 0) {\n cb();\n } else {\n setTimeout(() => {\n cb();\n }, timeout);\n }\n }\n\n private _initResult(res: any, extCode: any): any {\n const temp = { code: null, success: false, msg: \"\", data: null };\n if (res.data) {\n temp.code = res.data.code.toString();\n const successCode = extCode.success || \"200\";\n if (temp.code === successCode) {\n temp.success = true;\n temp.data = res.data.data;\n } else {\n temp.success = false;\n temp.msg = res.data.message;\n temp.data = res.data.data;\n }\n }\n return temp;\n }\n\n private _initResultErr(code: string, errMsg: string): any {\n const temp = { code: null, success: false, msg: \"Axios:Unknown error .\", data: null };\n //let msg = CommonBase.isExistJsonKey(this.clientErrCode[this.languageType], code) ? this.clientErrCode[this.languageType][code] : \"\";\n //if (CommonBase.isEmpty(msg)) {\n const msg = CommonBase.isEmpty(errMsg) ? `Axios:Unknown error ${code}` : errMsg;\n //}\n temp.msg = msg;\n return temp;\n }\n _setInterceptors() {\n //请求拦截 \n /// 取消重复请求\n axios.interceptors.request.use((config: any) => {\n if (this.globalOptions.interceptorsRequestCallback) {\n this.globalOptions.interceptorsRequestCallback(config);\n }\n if (config) {\n const isRunTimeout = !CommonBase.isEmpty(config.__retryCount) && config.__retryCount > 0;\n /// 超时重发,不执行取消操作\n if (!isRunTimeout) {\n this._removeRequestPending(config);\n this._addRequestPending(config);\n }\n }\n return config;\n }, (error: any) => {\n return Promise.reject(error);\n });\n\n //响应拦截 \n /// 设置 取消重复请求| 超时重发\n axios.interceptors.response.use((response: any) => {\n if (this.globalOptions.interceptorsResponseCallback) {\n this.globalOptions.interceptorsResponseCallback(response);\n }\n this._removeRequestPending(response.config);\n return response;\n }, (error: any) => {\n if (error.code === \"ECONNABORTED\" && error.message.indexOf(\"timeout\") > -1) {\n const config = error.config;\n // If config does not exist or the retry option is not set, reject\n if (!config || !config.retry) return Promise.reject(error);\n\n // Set the variable for keeping track of the retry count\n config.__retryCount = config.__retryCount || 0;\n\n // Check if we've maxed out the total number of retries\n if (config.__retryCount >= config.retry) {\n // Reject with the error\n return Promise.reject(error);\n }\n\n // Increase the retry count\n config.__retryCount += 1;\n\n // Create new promise to handle exponential backoff\n const backoff = new Promise((resolve: any) => {\n setTimeout(function() {\n resolve();\n }, config.retryDelay || 1);\n });\n\n // Return the promise in which recalls axios to retry the request\n return backoff.then(function() {\n return axios(config);\n });\n } else {\n /* this._removeRequestPending(error.config || {});\n if (axios.isCancel(error)) {\n console.log(`请求取消: ${error.message}`);\n } */\n //else {\n return Promise.reject(error);\n //}\n\n }\n });\n }\n private _getRequestKeyMerge(config: any) {\n const requestKeyMerge = config._requestKeyMerge;\n const isRequestCancelRepeat = CommonBase.isBoolean(config.isRequestCancelRepeat) ? config.isRequestCancelRepeat : true;\n const keyArr: string[] = [];\n if (!CommonBase.isEmpty(config) && isRequestCancelRepeat) {\n if (!CommonBase.isUndefined(requestKeyMerge)) {\n [\"method\", \"url\", \"params\", \"data\", \"_ran\"].forEach((k: string) => {\n if (CommonBase.isExistValue(requestKeyMerge, k) && !CommonBase.isEmpty(config[k])) {\n let v = config[k];\n if (k === \"params\" || k === \"data\") {\n if (CommonBase.isString(v)) {\n v = JSON.parse(v);\n }\n keyArr.push(qs.stringify(v));\n } else {\n if (k === \"_ran\" && CommonBase.isEmpty(v)) {\n v = (new Date()).getTime();\n }\n keyArr.push(v);\n }\n }\n });\n } else {\n keyArr.push(config.method);\n keyArr.push(config.url);\n if (!CommonBase.isEmpty(config._ran)) {\n keyArr.push(config._ran);\n }\n }\n }\n return keyArr.join(\"&\");\n }\n private _addRequestPending(config: any) {\n const requestKey = this._getRequestKeyMerge(config);\n if (!CommonBase.isEmpty(requestKey)) {\n config.cancelToken = config.cancelToken || new axios.CancelToken((cancel: any) => {\n if (!this.requestPendingList.has(requestKey)) {\n this.requestPendingList.set(requestKey, cancel);\n }\n });\n }\n }\n private _removeRequestPending(config: any) {\n const requestKey = this._getRequestKeyMerge(config);\n if (!CommonBase.isEmpty(requestKey) && this.requestPendingList.has(requestKey)) {\n const cancelToken = this.requestPendingList.get(requestKey);\n cancelToken(`AxiosCancelRepeatRequest: ${requestKey}`);\n this.requestPendingList.delete(requestKey);\n }\n }\n\n cancelAll() {\n const arrKeys = [];\n for (const arrCancel of this.requestPendingList) {\n arrKeys.push(arrCancel[0]);\n }\n arrKeys.forEach((sk: any) => {\n const cancelToken = this.requestPendingList.get(sk);\n cancelToken(`AxiosCancelRepeatRequest: ${sk}`);\n this.requestPendingList.delete(sk);\n });\n }\n setResendAgain(error: any, opt: any = {}) {//{}retryDelay = 100\n const config = error.config;\n //const retryMax = CommonBase.isUndefined(opt.retryMax) ? 3 : opt.retryMax;\n const retryDelay = CommonBase.isUndefined(opt.retryDelay) ? 500 : opt.retryDelay;\n if (!config || !config.retry) return Promise.reject(error);\n\n /* config.__retryCount = config.__retryCount || 0;\n if (config.__retryCount >= retryMax) {\n return Promise.reject(error);\n }\n config.__retryCount += 1; */\n\n const backoff = new Promise((resolve: any) => {\n setTimeout(function() {\n resolve();\n }, retryDelay || 1);\n });\n return backoff.then(function() {\n config.cancelToken = null;\n return axios(config);\n });\n }\n setGlobalOptions(options: any) {\n this.globalOptions = CommonBase.getJsonMerge(this.globalOptions, options || {});\n }\n}\nexport default new AxiosRequest();\n","<template>\n <label :class=\"clsParent\">\n <input\n type=\"checkbox\"\n class=\"switchery-input\"\n :name=\"optElName\"\n :checked=\"optBase.isOpen\"\n >\n <span\n :class=\"clsContainer\"\n :style=\"styContainer\"\n @click=\"onToggle\"\n ref=\"refElContainer\"\n >\n <span\n v-if=\"activeHtml || inactiveHtml\"\n class=\"switchery-txt\"\n >\n <span\n v-if=\"optBase.isOpen\"\n v-html=\"activeHtml\"\n ></span>\n <span\n v-else\n v-html=\"inactiveHtml\"\n ></span>\n </span>\n <template v-else></template>\n <span\n class=\"switchery-button\"\n :style=\"styButton\"\n >\n <cl-load\n v-if=\"isShowLoad && optBase.isRunLoad\"\n theme=\"rotaryLine\"\n size=\"small\"\n ></cl-load>\n <template v-else></template>\n </span>\n </span>\n <div\n v-if=\"isShowLoad && optBase.isRunLoad\"\n class=\"switchery-load-bg\"\n ></div>\n <template v-else></template>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, watch, onMounted, nextTick, inject } from 'vue'\nimport { CommonBase, CommonElement } from '@c.Libs/Common'\nimport ClLoad from '../Load/Index.vue'\nimport './Index.css'\n\ndefineOptions({ name: 'ClSwitchery' })\n\nconst props = defineProps({\n value: {\n type: Boolean,\n default: false,\n },\n name: String,\n className: {\n type: String,\n default: '',\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n color: {\n type: [String, Object],\n validator: (value: any) => {\n return typeof value === 'object' ? value.checked || value.unChecked : typeof value === 'string'\n },\n },\n changeCallback: Function,\n isUseOnChangeCheck: {\n type: Boolean,\n default: false,\n },\n isShowLoad: {\n type: Boolean,\n default: true,\n },\n activeHtml: String,\n inactiveHtml: String,\n})\n\nconst emit = defineEmits<{\n (e: 'update:value', value: boolean): void\n (e: 'onChange', value: boolean, assistData: any): void\n}>()\n\nconst _clGlobals: any = inject('$ClGlobals')\n\nconst refElContainer: any = ref(null)\n\nconst optBase: any = reactive({\n isFirstComplete: false,\n isOpen: props.value,\n buttonLeft: 0,\n isRunLoad: false,\n colorChecked: '#2196f3',\n colorUnChecked: '#ffffff',\n})\n\nconst optElName = computed(() => {\n let name = props.name\n if (CommonBase.isEmpty(name)) {\n name = `switchery_${CommonBase.getRandom(8)}`\n }\n return name\n})\n\nconst optColorChecked = computed(() => {\n const { colorChecked } = optBase\n let strColor = ''\n const color: any = props.color\n if (CommonBase.isUndefined(color)) {\n strColor = colorChecked\n } else {\n if (CommonBase.isString(color)) {\n strColor = color\n } else if (CommonBase.isObject(color)) {\n strColor = CommonBase.isExistJsonKey(color, 'checked') ? color.checked : colorChecked\n }\n }\n return strColor\n})\n\nconst optColorUnChecked = computed(() => {\n const { colorUnChecked } = optBase\n let strColor = ''\n const color: any = props.color\n if (CommonBase.isObject(color) && CommonBase.isExistJsonKey(color, 'unChecked')) {\n strColor = color.unchecked\n } else {\n strColor = colorUnChecked\n }\n return strColor\n})\n\nconst clsParent = computed(() => {\n const cls: any = {\n 'panel-switchery': true,\n 'switchery-transition-immediately': !optBase.isFirstComplete,\n }\n if (!CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsContainer = computed(() => {\n const cls: any = {\n 'switchery-container': true,\n 'switchery-open': optBase.isOpen,\n }\n cls['switchery-disabled'] = props.disabled\n return cls\n})\n\nconst styContainer = computed(() => {\n const isOpen = optBase.isOpen\n const color = isOpen ? optColorChecked.value : optColorUnChecked.value\n const style: any = {\n 'background-color': color,\n }\n style.transition = isOpen\n ? 'border 0.4s, box-shadow 0.4s, background-color 1.2s'\n : 'border 0.4s, box-shadow 0.4s'\n style['box-shadow'] = isOpen ? `${color} 0px 0px 0px 11px inset` : `${color} 0px 0px 0px 0px inset`\n if (isOpen) {\n style['border-color'] = color\n }\n return style\n})\n\nconst styButton = computed(() => {\n const style: any = {\n left: '0',\n }\n if (optBase.isOpen) {\n style.left = `${optBase.buttonLeft}px`\n }\n return style\n})\n\nconst _emitChange = (value: boolean) => {\n const assistData = CommonElement.getElementData(props)\n emit('update:value', value)\n emit('onChange', value, assistData)\n}\n\nconst _initMergeGlobalsOption = () => {\n if (_clGlobals && _clGlobals.globalsOption && _clGlobals.globalsOption.switchery) {\n const opt = _clGlobals.globalsOption.switchery\n if (CommonBase.isExistJsonKey(opt, 'colorChecked')) {\n optBase.colorChecked = opt.colorChecked\n }\n if (CommonBase.isExistJsonKey(opt, 'colorUnChecked')) {\n optBase.colorUnChecked = opt.colorUnChecked\n }\n }\n}\n\nconst _calculationBtnLeft = () => {\n const containerWidth = refElContainer.value.clientWidth\n const buttonWidth = refElContainer.value.querySelector('.switchery-button').clientWidth\n optBase.buttonLeft = containerWidth === 0 ? 22 : containerWidth - buttonWidth\n}\n\nconst _initMain = () => {\n _initMergeGlobalsOption()\n _calculationBtnLeft()\n setTimeout(() => {\n optBase.isFirstComplete = true\n }, 250)\n}\n\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n optBase.isOpen = newValue\n }\n },\n)\n\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\nconst onToggle = () => {\n if (!props.disabled) {\n _calculationBtnLeft()\n const value = !optBase.isOpen\n if (props.changeCallback && CommonBase.isFunction(props.changeCallback)) {\n optBase.isRunLoad = true\n const assistData = CommonElement.getElementData(props)\n const changeCb: any = props.changeCallback(value, assistData)\n if (changeCb && changeCb.then && CommonBase.isFunction(changeCb.then)) {\n changeCb.then((result: any) => {\n let isCheck = false\n if (CommonBase.isBoolean(result)) {\n isCheck = result\n } else if (CommonBase.isObject(result) && CommonBase.isBoolean(result.success)) {\n isCheck = result.success\n }\n if (isCheck) {\n optBase.isOpen = value\n }\n optBase.isRunLoad = false\n })\n } else {\n let isCheck = false\n if (CommonBase.isBoolean(changeCb)) {\n isCheck = changeCb\n } else if (CommonBase.isObject(changeCb) && CommonBase.isBoolean(changeCb.success)) {\n isCheck = changeCb.success\n }\n if (isCheck) {\n optBase.isOpen = value\n }\n optBase.isRunLoad = false\n }\n } else {\n if (props.isUseOnChangeCheck) {\n optBase.isRunLoad = true\n } else {\n optBase.isOpen = value\n }\n _emitChange(value)\n }\n }\n}\n\nconst getValue = () => {\n return optBase.isOpen\n}\n\nconst setValue = (value: boolean, isEmitChange = false) => {\n optBase.isOpen = value\n if (isEmitChange) {\n _emitChange(value)\n }\n}\n\nconst setOnChangeResult = () => {\n if (props.isUseOnChangeCheck && CommonBase.isUndefined(props.changeCallback)) {\n optBase.isOpen = !optBase.isOpen\n optBase.isRunLoad = false\n }\n}\n\nexport interface ClSwitcheryExpose {\n getValue: () => boolean\n setValue: (value: boolean, isEmitChange?: boolean) => void\n setOnChangeResult: () => void\n}\n\ndefineExpose({\n getValue,\n setValue,\n setOnChangeResult,\n})\n</script>\n","import ClipboardJS from \"clipboard\";\nimport CommonBase from \"../../Common/base\";\n\nexport default () => {\n const _clearSelection = (target: any) => {\n if (target) {\n target().focus();\n const temp = window.getSelection();\n if (temp) {\n temp.removeAllRanges();\n }\n }\n };\n const _clipboardBase = (el: string | Element, option: any) => {\n let newEl: any;\n if (CommonBase.isString(el)) {\n newEl = document.querySelector(el.toString());\n } else {\n newEl = el;\n }\n if (newEl && newEl._clipboardObj) {\n } else {\n const newOption: any = {\n successCallback: option.successCallback,\n errorCallback: option.errorCallback,\n };\n\n const typeAction = CommonBase.getTypeof(option.action);\n switch (typeAction) {\n case \"function\":\n newOption.action = option.action;\n break;\n case \"string\":\n newOption.action = () => option.action;\n break;\n }\n\n const typeText = CommonBase.getTypeof(option.text);\n switch (typeText) {\n case \"function\":\n newOption.text = option.text;\n break;\n case \"string\":\n newOption.text = () => option.text;\n break;\n }\n\n if (option.target) {\n if (CommonBase.isFunction(option.target)) {\n newOption.target = option.target;\n } else {\n newOption.target = () => {\n if (CommonBase.isString(option.target)) {\n return document.querySelector(option.target);\n } else if (option.target instanceof Element) {\n return option.target;\n } else {\n return null;\n }\n\n };\n }\n }\n const clipboardObj = new ClipboardJS(el, newOption);\n clipboardObj.on(\"success\", (e) => {\n newOption.successCallback(clipboardObj, e);\n _clearSelection(newOption.target);\n });\n clipboardObj.on(\"error\", (e) => {\n newOption.errorCallback(clipboardObj, e);\n _clearSelection(newOption.target);\n });\n newEl._clipboardObj = clipboardObj;\n }\n };\n return {\n copy: (option: any) => {\n const tempEl = document.createElement(\"button\");\n tempEl.setAttribute(\"type\", \"button\");\n\n const newOption: any = {\n action: \"copy\",\n text: option.text,\n target: option.target,\n };\n newOption.successCallback = (objClipboard: any) => {\n if (option.successCallback) {\n option.successCallback();\n }\n objClipboard.destroy();\n };\n newOption.errorCallback = (objClipboard: any) => {\n if (option.errorCallback) {\n option.errorCallback();\n }\n objClipboard.destroy();\n };\n _clipboardBase(tempEl, newOption);\n\n document.body.appendChild(tempEl);\n tempEl.click();\n document.body.removeChild(tempEl);\n },\n };\n};\n","import { ref } from \"vue\";\nimport Language from \"../../Common/i18n/index\";\n\nconst useLanguage = () => {\n const optPageLanguage = ref({});\n const getPageLanguage = (page: string) => {\n const temp = Language.getPage(page);\n optPageLanguage.value = temp;\n };\n const getLanguageValue = (key: string) => {\n const value = Language.getValue(key);\n return value;\n };\n const getLanguageType = () => {\n return Language.getType();\n };\n const setLanguageType = (type: string) => {\n Language.setType(type);\n };\n\n return {\n optPageLanguage,\n getPageLanguage,\n getLanguageValue,\n getLanguageType,\n setLanguageType,\n };\n};\n\nexport const languagePack = () => {\n return {\n getPage: (page: string) => Language.getPage(page),\n getValue: (key: string) => Language.getValue(key),\n getType: () => Language.getType(),\n setType: (type: string) => Language.setType(type),\n getAll: () => Language.getAll(),\n getCommon: () => Language.getCommon(),\n };\n};\n\nexport default useLanguage;\n","<template>\n <div class=\"cl-pulltorefresh\" :class=\"clsParent\">\n <div class=\"ptr-track\">\n <div class=\"ptr-indicator\" :style=\"indicatorStyle\">\n <div class=\"ptr-indicator-inner\" :class=\"`ptr-state-${state}`\">\n <slot name=\"indicator\" :state=\"state\" :distance=\"pullDistance\" :threshold=\"threshold\">\n <i :class=\"pullIcon\"></i>\n <span class=\"ptr-text\">{{ indicatorText }}</span>\n </slot>\n </div>\n </div>\n <div\n ref=\"refElContent\"\n class=\"ptr-content\"\n :class=\"{ 'ptr-content-virtual': _isVirtual }\"\n @touchstart=\"onPullStart\"\n @touchmove=\"onPullMove\"\n @touchend=\"onPullEnd\"\n @mousedown=\"onPullStart\"\n >\n <div v-if=\"_isVirtual\" class=\"ptr-scroller-wrap\">\n <DynamicScroller\n class=\"ptr-scroller\"\n :items=\"list\"\n :min-item-size=\"minItemSize\"\n key-field=\"id\"\n @scroll=\"onScrollerScroll\"\n @scroll-end=\"onScrollEnd\"\n >\n <template #default=\"{ item, index, active }\">\n <DynamicScrollerItem\n :item=\"item\"\n :active=\"active\"\n :size-dependencies=\"sizeDependencies ? sizeDependencies(item) : undefined\"\n >\n <slot name=\"item\" :item=\"item\" :index=\"index\" :active=\"active\" />\n </DynamicScrollerItem>\n </template>\n <template #after>\n <div v-if=\"loading\" class=\"ptr-loadmore\">\n <slot name=\"loadMore\">\n <i :class=\"loadingIcon\"></i>\n <span>{{ loadingText }}</span>\n </slot>\n </div>\n <div v-if=\"finished && !loading\" class=\"ptr-finished\">\n <slot name=\"finished\">\n <span>{{ finishedText }}</span>\n </slot>\n </div>\n </template>\n </DynamicScroller>\n </div>\n <slot v-else></slot>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { ref, computed } from 'vue'\nimport { DynamicScroller, DynamicScrollerItem } from 'vue-virtual-scroller'\nimport 'vue-virtual-scroller/dist/vue-virtual-scroller.css'\n\ndefineOptions({ name: 'ClPullToRefresh' })\n\n// props\nconst props = defineProps({\n className: String,\n disabled: Boolean,\n // desc: 下拉刷新阈值(px)\n threshold: {\n type: Number,\n default: 60,\n },\n // desc: 列表数据,传入则启用虚拟滚动渲染\n list: {\n type: Array as () => any[],\n default: undefined,\n },\n // desc: 列表项最小高度(px),用于 DynamicScroller 初始估算\n minItemSize: {\n type: Number,\n default: 60,\n },\n // desc: 列表项高度依赖项提取函数,用于动态高度重算\n sizeDependencies: {\n type: Function,\n default: undefined,\n },\n // desc: 是否已加载完全部数据\n finished: Boolean,\n // desc: 是否正在加载更多\n loading: Boolean,\n // desc: 下拉刷新箭头图标类名(<i> 元素)\n pullIcon: {\n type: String,\n default: 'ptr-icon-arrow',\n },\n // desc: 加载更多时的 loading 图标类名(<i> 元素)\n loadingIcon: {\n type: String,\n default: 'ptr-icon-spinner',\n },\n // desc: 加载中提示文字\n loadingText: {\n type: String,\n default: '加载中...',\n },\n // desc: 已加载全部提示文字\n finishedText: {\n type: String,\n default: '没有更多了',\n },\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'refresh'): void\n (e: 'loadMore'): void\n}>()\n\n// ref\nconst refElContent = ref<HTMLElement>()\n\n// state\nconst state = ref<'idle' | 'pulling' | 'ready' | 'loading'>('idle')\nconst pullDistance = ref(0)\nconst _startY = ref(0)\nconst _isTracking = ref(false)\nconst _isPulling = ref(false)\nconst _scrollTop = ref(0)\nlet _rafId: number | null = null\nlet _pendingDeltaY = 0\n\n// computed\nconst threshold = computed(() => props.threshold || 60)\n\nconst _isVirtual = computed(() => Array.isArray(props.list))\n\nconst clsParent = computed(() => {\n const cls: any = {}\n if (props.disabled) {\n cls['ptr-disabled'] = true\n }\n if (_isPulling.value) {\n cls['ptr-is-pulling'] = true\n }\n if (props.className) {\n cls[props.className] = true\n }\n return cls\n})\n\nconst indicatorStyle = computed(() => ({\n height: `${pullDistance.value}px`,\n}))\n\nconst indicatorText = computed(() => {\n switch (state.value) {\n case 'loading':\n return '加载中...'\n case 'ready':\n return '释放即可刷新…'\n case 'pulling':\n return '下拉即可刷新…'\n default:\n return ''\n }\n})\n\n// 内部方法\nconst _isAtTop = () => {\n if (_isVirtual.value) {\n return _scrollTop.value <= 0\n }\n const el = refElContent.value\n if (!el) return true\n return el.scrollTop <= 0\n}\n\nconst _getClientY = (e: TouchEvent | MouseEvent): number => {\n if ('touches' in e) {\n return (e as TouchEvent).touches[0].clientY\n }\n return (e as MouseEvent).clientY\n}\n\nconst onScrollerScroll = (e: any) => {\n _scrollTop.value = e?.target?.scrollTop || 0\n}\n\nconst onScrollEnd = () => {\n if (!props.finished && !props.loading) {\n emit('loadMore')\n }\n}\n\nconst _startMouseListeners = () => {\n document.addEventListener('mousemove', (onPullMove as any) as EventListener)\n document.addEventListener('mouseup', (onPullEnd as any) as EventListener)\n}\n\nconst _stopMouseListeners = () => {\n document.removeEventListener('mousemove', (onPullMove as any) as EventListener)\n document.removeEventListener('mouseup', (onPullEnd as any) as EventListener)\n}\n\n// 事件方法\nconst onPullStart = (e: TouchEvent | MouseEvent) => {\n if (props.disabled || state.value === 'loading') return\n _startY.value = _getClientY(e)\n _isTracking.value = true\n if (!('touches' in e)) {\n _startMouseListeners()\n }\n}\n\nconst onPullMove = (e: TouchEvent | MouseEvent) => {\n if (!_isTracking.value) return\n _pendingDeltaY = _getClientY(e) - _startY.value\n if (_pendingDeltaY > 0 && _isAtTop()) {\n if (!_isPulling.value) {\n _isPulling.value = true\n }\n e.preventDefault()\n if (_rafId === null) {\n _rafId = requestAnimationFrame(() => {\n _rafId = null\n const d = _pendingDeltaY * 0.4\n pullDistance.value = d\n state.value = d >= threshold.value ? 'ready' : 'pulling'\n })\n }\n } else if (_isPulling.value) {\n _resetPull()\n }\n}\n\nconst onPullEnd = () => {\n if (!_isTracking.value) return\n _isTracking.value = false\n _stopMouseListeners()\n if (_rafId !== null) {\n cancelAnimationFrame(_rafId)\n _rafId = null\n }\n if (_isPulling.value && state.value === 'ready') {\n state.value = 'loading'\n pullDistance.value = threshold.value\n emit('refresh')\n } else {\n _resetPull()\n }\n}\n\nconst _resetPull = () => {\n if (_rafId !== null) {\n cancelAnimationFrame(_rafId)\n _rafId = null\n }\n _isPulling.value = false\n pullDistance.value = 0\n state.value = 'idle'\n}\n\n// 开放方法\nconst finishRefresh = () => {\n _resetPull()\n}\n\n// 导出类型\nexport interface ClPullToRefreshExpose {\n finishRefresh: () => void\n}\n\ndefineExpose({ finishRefresh })\n</script>\n","<template>\n <div\n class=\"cl-cell\"\n :class=\"clsParent\"\n :style=\"styParent\"\n @click=\"onClick\"\n >\n <div v-if=\"title || $slots.title || icon || $slots.icon\" class=\"cl-cell__left\">\n <div v-if=\"$slots.icon\" class=\"cl-cell__icon-wrap\">\n <slot name=\"icon\" />\n </div>\n <i v-else-if=\"icon\" :class=\"icon\" class=\"cl-cell__icon\"></i>\n <div v-if=\"title || $slots.title\" class=\"cl-cell__title-wrap\">\n <slot name=\"title\">\n <span v-if=\"required\" class=\"cl-cell__required\">*</span>\n <span class=\"cl-cell__title\">{{ title }}</span>\n </slot>\n <div v-if=\"label || $slots.label\" class=\"cl-cell__label\">\n <slot name=\"label\">\n <span>{{ label }}</span>\n </slot>\n </div>\n </div>\n </div>\n <div class=\"cl-cell__body\" :class=\"{ 'cl-cell__body--center': center }\">\n <slot>\n <div v-if=\"value || $slots.value\" class=\"cl-cell__value\">\n <slot name=\"value\">\n <span>{{ value }}</span>\n </slot>\n </div>\n </slot>\n </div>\n <div v-if=\"$slots.extra\" class=\"cl-cell__extra\">\n <slot name=\"extra\" />\n </div>\n <div v-if=\"isLink\" class=\"cl-cell__right-icon\">\n <slot name=\"rightIcon\">\n <i :class=\"`cl-cell__arrow cl-cell__arrow--${arrowDirection}`\"></i>\n </slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { computed } from 'vue'\nimport { useRouter } from 'vue-router'\n\ndefineOptions({ name: 'ClCell' })\n\nconst router = useRouter()\n\n// props\nconst props = defineProps({\n className: String, // desc: 自定义 CSS 类名\n title: String, // desc: 左侧标题\n value: String, // desc: 右侧内容\n label: String, // desc: 标题下方的描述信息\n icon: String, // desc: 左侧图标类名(<i> 元素)\n size: {\n type: String,\n default: 'default' // enum: default, large | desc: 单元格大小\n },\n url: String, // desc: 点击后跳转的链接地址\n to: [String, Object], // desc: 路由跳转目标,同 vue-router 的 to\n replace: Boolean, // desc: 跳转时是否替换当前页面历史\n border: {\n type: Boolean,\n default: true // desc: 是否显示底部边框\n },\n clickable: Boolean, // desc: 是否开启点击反馈\n isLink: Boolean, // desc: 是否展示右侧箭头\n required: Boolean, // desc: 是否显示必填星号\n center: Boolean, // desc: 是否使内容垂直居中\n arrowDirection: {\n type: String,\n default: 'right' // enum: left, right, up, down | desc: 箭头方向\n }\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'click', event: MouseEvent): void\n}>()\n\n// computed\nconst clsParent = computed(() => {\n const cls: any = {}\n if (props.className) {\n cls[props.className] = true\n }\n if (props.border) {\n cls['cl-cell--border'] = true\n }\n if (props.clickable || props.isLink || props.to || props.url) {\n cls['cl-cell--clickable'] = true\n }\n if (props.size === 'large') {\n cls['cl-cell--large'] = true\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: any = {}\n return sty\n})\n\n// 事件方法\nconst onClick = (e: MouseEvent) => {\n emit('click', e)\n if (props.to) {\n if (props.replace) {\n router.replace(props.to as any)\n } else {\n router.push(props.to as any)\n }\n } else if (props.url) {\n window.location.href = props.url\n }\n}\n</script>\n","<template>\n <div ref=\"refElTopParent\" class=\"panel-loadScreen\">\n <div class=\"loadScreen-container\">\n <div class=\"loadScreen-main\">\n <span v-if=\"optBase.text.length > 0\" class=\"loadScreen-text\">{{ optBase.text }}</span>\n <span>\n <cl-load></cl-load>\n </span>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive } from 'vue'\nimport CommonBase from '../../Common/base'\nimport ClLoad from '../Load/Index.vue'\nimport './Index.css'\n\ndefineOptions({ name: 'ClLoadScreen' })\n\nconst refElTopParent = ref<HTMLElement | null>(null)\n\nconst optBase = reactive({\n text: ''\n})\n\nlet _timeOutDestroyContainer: ReturnType<typeof setTimeout> | null = null\n\nconst _getBody = (): HTMLElement => {\n return document.querySelector('body') as HTMLElement\n}\n\nconst _getTopEl = (): HTMLElement | null => {\n return document.querySelector('body>.panel-loadScreen')\n}\n\nconst _checkContainer = (): boolean => {\n const el = _getTopEl()\n return !CommonBase.isUndefined(el)\n}\n\nconst _creatorContainer = () => {\n if (!_checkContainer()) {\n _getBody().appendChild(refElTopParent.value!)\n } else {\n if (_timeOutDestroyContainer) {\n clearTimeout(_timeOutDestroyContainer)\n _timeOutDestroyContainer = null\n }\n }\n}\n\nconst _destroyContainer = (t: number) => {\n if (_checkContainer()) {\n _timeOutDestroyContainer = setTimeout(() => {\n const el = _getTopEl()\n if (el) {\n _getBody().removeChild(el)\n }\n }, t)\n }\n}\n\nconst _creatorItem = (text: string) => {\n _creatorContainer()\n optBase.text = CommonBase.isEmpty(text) ? '' : text\n}\n\nconst show = (text?: string) => {\n _creatorItem(text || '')\n}\n\nconst hide = (t: number = 0) => {\n _destroyContainer(t)\n}\n\ndefineExpose({\n show,\n hide\n})\n</script>\n","<template>\n <div ref=\"refElTopParent\" :class=\"clsParent\" :style=\"styParent\">\n <template v-if=\"optBase.isHorizontal\">\n <div class=\"progress\">\n <div ref=\"refElBar\" :class=\"clsBar\" :style=\"styBar\">\n <span v-if=\"isShowNum && optBase.posText.inOut === 'in'\" class=\"progress-num\" :style=\"styNum\">{{ optShowNumText }}</span>\n </div>\n </div>\n </template>\n <template v-else-if=\"optBase.isCircular\">\n <div class=\"progress-circular-line circular-line-right\">\n <div class=\"progress-circular-bar\" :style=\"styCircularBarRight\"></div>\n </div>\n <div class=\"progress-circular-line circular-line-left\">\n <div class=\"progress-circular-bar\" :style=\"styCircularBarLeft\"></div>\n </div>\n </template>\n <span v-if=\"isShowNum && optBase.posText.inOut === 'out'\" class=\"progress-num\" :style=\"styNum\">{{ optShowNumText }}</span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, watch, onMounted, onUnmounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { Resize as ResizeEvent } from '../../Common/Element/Event/index'\nimport './Index.css'\n\ndefineOptions({ name: 'ClProgress' })\n\nconst props = defineProps({\n className: String,\n theme: {\n type: String,\n default: 'horizontal' // horizontal | circular\n },\n color: String,\n ratio: {\n type: [Number, String],\n required: true\n },\n isShowNum: {\n type: Boolean,\n default: true\n },\n isAnimation: {\n type: Boolean,\n default: true\n },\n diameter: {\n type: String,\n default: '50px'\n },\n showNumText: String,\n showNumPos: {\n type: String,\n default: 'out-center' // out-center|out-left|out-right|in-center|in-left|in-right\n },\n showNumTrigger: {\n type: String,\n default: 'hover' // none|hover\n },\n showNumColor: String\n})\n\nconst refElTopParent = ref<HTMLElement | null>(null)\nconst refElBar = ref<HTMLElement | null>(null)\n\nconst optBase = reactive({\n isHorizontal: props.theme === 'horizontal',\n isCircular: props.theme === 'circular',\n ratioHundred: '',\n circularLeftRotate: -45,\n circularLeftTime: 0,\n circularRightRotate: -45,\n circularRightTime: 0,\n posText: {\n inOut: 'out',\n lcr: 'center',\n isOverflow: false\n }\n})\n\nconst _pageData: {\n lastRatio: string\n lastRotateLeft: number\n lastRotateRight: number\n runTimeCircularRotate: ReturnType<typeof setTimeout> | null\n resizeEvent: any\n} = {\n lastRatio: '',\n lastRotateLeft: -45,\n lastRotateRight: -45,\n runTimeCircularRotate: null,\n resizeEvent: null\n}\n\nconst optShowNumText = computed(() => {\n let txt = ''\n const { showNumText } = props\n if (showNumText && !CommonBase.isEmpty(showNumText)) {\n txt = showNumText\n } else {\n let r = optBase.ratioHundred\n r = r.substring(0, r.length - 2)\n txt = CommonBase.getFormatThousands(r) + '%'\n }\n return txt\n})\n\nconst clsParent = computed(() => {\n const cls: Record<string, boolean> = {\n 'panel-progress': true\n }\n cls[`progress-${props.theme}`] = true\n\n const { className, isShowNum, showNumTrigger } = props\n if (isShowNum && showNumTrigger !== 'none') {\n cls[`progress-${showNumTrigger}-num`] = true\n }\n if (className && !CommonBase.isEmpty(className)) {\n className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: Record<string, string | undefined> = {}\n if (optBase.isCircular) {\n if (!CommonBase.isEmpty(props.diameter)) {\n sty.width = props.diameter\n sty.height = props.diameter\n }\n }\n return sty\n})\n\nconst clsBar = computed(() => {\n const cls: Record<string, boolean> = {\n 'progress-bar': true,\n 'progress-bar-striped': props.isAnimation,\n 'striped-animation': props.isAnimation\n }\n return cls\n})\n\nconst styBar = computed(() => {\n const sty: Record<string, string | undefined> = {}\n sty.width = optBase.ratioHundred\n if (!CommonBase.isEmpty(props.color)) {\n sty['background-color'] = props.color\n }\n if (optBase.isHorizontal && optBase.posText.inOut === 'in') {\n let justifyContent = 'center'\n switch (optBase.posText.lcr) {\n case 'left':\n justifyContent = 'flex-start'\n break\n case 'center':\n justifyContent = 'center'\n break\n case 'right':\n justifyContent = 'flex-end'\n break\n }\n if (optBase.posText.isOverflow) {\n justifyContent = 'flex-start'\n }\n sty['justify-content'] = justifyContent\n }\n return sty\n})\n\nconst styNum = computed(() => {\n const sty: Record<string, string | undefined> = {}\n const { showNumColor } = props\n if (showNumColor && !CommonBase.isEmpty(showNumColor)) {\n sty['color'] = showNumColor\n }\n return sty\n})\n\nconst styCircularBarRight = computed(() => {\n const sty: Record<string, string | undefined> = {}\n sty.transform = `rotate(${optBase.circularRightRotate}deg)`\n if (optBase.circularRightTime > 0) {\n sty['transition-duration'] = `${optBase.circularRightTime}ms`\n }\n if (!CommonBase.isEmpty(props.color)) {\n sty['border-bottom-color'] = props.color\n sty['border-right-color'] = props.color\n }\n return sty\n})\n\nconst styCircularBarLeft = computed(() => {\n const sty: Record<string, string | undefined> = {}\n sty.transform = `rotate(${optBase.circularLeftRotate}deg)`\n if (optBase.circularLeftTime) {\n sty['transition-duration'] = `${optBase.circularLeftTime}ms`\n }\n if (!CommonBase.isEmpty(props.color)) {\n sty['border-bottom-color'] = props.color\n sty['border-right-color'] = props.color\n }\n return sty\n})\n\n// 内部方法\nconst _initPost = () => {\n const { showNumPos } = props\n const arrTemp = showNumPos.split('-')\n if (arrTemp.length === 2) {\n optBase.posText.inOut = CommonBase.isExistValue(['in', 'out'], arrTemp[0]) ? arrTemp[0] : 'out'\n optBase.posText.lcr = CommonBase.isExistValue(['left', 'center', 'right'], arrTemp[1]) ? arrTemp[1] : 'center'\n }\n}\n\nconst _initRatio = (ratio: number | string) => {\n let newRatio = CommonBase.isEmpty(ratio) ? 0 : Number(ratio)\n if (newRatio <= 0) {\n newRatio = 0\n } else if (newRatio >= 100) {\n newRatio = 100\n }\n optBase.ratioHundred = `${newRatio}%`\n if (optBase.isCircular) {\n if (_pageData.runTimeCircularRotate) {\n clearTimeout(_pageData.runTimeCircularRotate)\n }\n\n const rotate = (newRatio / 100) * 360\n let rotateRight = 0\n let rotateLeft = 0\n if (rotate < 180) {\n rotateRight = rotate + -45\n rotateLeft = -45\n } else {\n rotateRight = 135\n rotateLeft = rotate - 180 - 45\n }\n let isIncrease = true\n const isEmptyLst = CommonBase.isEmpty(_pageData.lastRatio)\n if (!isEmptyLst) {\n isIncrease = newRatio >= Number(_pageData.lastRatio)\n }\n let timeRight = 0\n let timeLeft = 0\n const diffRight = Math.abs(rotateRight - _pageData.lastRotateRight)\n const diffLeft = Math.abs(rotateLeft - _pageData.lastRotateLeft)\n if (diffRight > 0 && diffLeft > 0) {\n const time = 400 / (diffRight + diffLeft)\n timeRight = diffRight * time\n timeLeft = diffLeft * time\n }\n\n if (isIncrease) {\n optBase.circularRightRotate = rotateRight\n optBase.circularRightTime = timeRight\n\n nextTick(() => {\n _pageData.runTimeCircularRotate = setTimeout(() => {\n optBase.circularLeftRotate = rotateLeft\n optBase.circularLeftTime = timeLeft\n }, timeRight)\n })\n } else {\n optBase.circularLeftRotate = rotateLeft\n optBase.circularLeftTime = timeLeft\n nextTick(() => {\n _pageData.runTimeCircularRotate = setTimeout(() => {\n optBase.circularRightRotate = rotateRight\n optBase.circularRightTime = timeRight\n }, timeLeft)\n })\n }\n _pageData.lastRotateRight = rotateRight\n _pageData.lastRotateLeft = rotateLeft\n }\n _pageData.lastRatio = String(newRatio)\n}\n\nconst _initMain = () => {\n _initPost()\n _initRatio(props.ratio)\n _pageData.resizeEvent = new ResizeEvent({\n element: refElBar.value,\n callback: () => {\n if (props.isShowNum && optBase.isHorizontal && optBase.posText.inOut === 'in') {\n if (refElTopParent.value) {\n const elBar = refElTopParent.value.querySelector('.progress-bar')\n const elNum = refElTopParent.value.querySelector('.progress-num')\n if (elBar && elNum) {\n const barW = elBar.clientWidth\n const numW = elNum.clientWidth\n let isOverflow = false\n if (barW === 0 && numW === 0) {\n isOverflow = false\n } else {\n if (barW === 0 && numW > 0) {\n isOverflow = true\n } else {\n isOverflow = barW > 0 && numW > barW\n }\n }\n optBase.posText.isOverflow = isOverflow\n }\n }\n }\n }\n })\n}\n\nwatch(\n () => props.ratio,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n _initRatio(newValue)\n }\n }\n)\n\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\nonUnmounted(() => {\n if (_pageData.resizeEvent) {\n _pageData.resizeEvent.destroy()\n }\n})\n</script>\n","<template>\n <div\n ref=\"refElBar\"\n :class=\"clsParent\"\n :style=\"styParent\"\n @mouseover=\"onMouseOver\"\n @mouseout=\"onMouseOut\"\n @click=\"onClick\"\n ></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, ref, reactive, computed, watch, onMounted, nextTick } from 'vue'\nimport { Drag as DragEvent } from '../../Common/Element/Event/index'\n\ndefineOptions({ name: 'ClSliderBar' })\n\nconst props = defineProps({\n left: {\n type: Number,\n default: 0\n },\n width: {\n type: Number,\n default: 0\n },\n isDisabled: {\n type: Boolean,\n default: false\n },\n isVertical: {\n type: Boolean,\n default: false\n },\n isBarDrag: {\n type: Boolean,\n default: false\n }\n})\n\nconst emit = defineEmits(['onMoveStart', 'onMoveIng', 'onMoveEnd', 'onMouseover', 'onMouseout', 'onClick'])\n\nconst _selfTop: any = inject('$SliderTop')\n\nconst refElBar = ref<HTMLElement | null>(null)\n\nconst optBase = reactive({\n isHover: false,\n left: props.left\n})\n\nconst _pageData = {\n isClick: false,\n isDragging: false,\n dragStart: 0,\n dragStartRatio: 0\n}\n\nconst clsParent = computed(() => {\n const cls: Record<string, boolean> = {\n 'slider-bar': true,\n 'slider-bar-drag': props.isBarDrag\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: Record<string, string | undefined> = {}\n if (props.isVertical) {\n sty.bottom = `${optBase.left}%`\n sty.height = `${props.width}%`\n } else {\n sty.left = `${optBase.left}%`\n sty.width = `${props.width}%`\n }\n return sty\n})\n\nconst _runDragStart = (_e: any, clientXYInfo: any) => {\n _pageData.isClick = true\n _pageData.dragStart = props.isVertical ? clientXYInfo.clientY : clientXYInfo.clientX\n _pageData.dragStartRatio = props.left\n emit('onMoveStart')\n}\n\nconst _runDraggIng = (_e: any, clientXYInfo: any) => {\n _pageData.isClick = false\n let move = 0\n if (props.isVertical) {\n move = _pageData.dragStart - clientXYInfo.clientY\n } else {\n move = clientXYInfo.clientX - _pageData.dragStart\n }\n const info = _selfTop.getDragValueInfo(move, _pageData.dragStartRatio)\n optBase.left = info.ratio\n emit('onMoveIng', info.ratio)\n}\n\nconst _runDragEnd = (e: any) => {\n if (_pageData.isClick) {\n emit('onClick', e)\n } else {\n emit('onMoveEnd')\n }\n _pageData.isClick = false\n}\n\nconst _initMain = () => {\n const dragConfig = {\n start(e: any, clientXYInfo: any) {\n let isRun = false\n if (!props.isDisabled && props.isBarDrag && e.buttons === 1) {\n isRun = true\n _runDragStart(e, clientXYInfo)\n }\n return isRun\n },\n ing: (e: any, clientXYInfo: any) => {\n _runDraggIng(e, clientXYInfo)\n },\n end: (e: any) => {\n _runDragEnd(e)\n }\n }\n new DragEvent(refElBar.value, dragConfig)\n}\n\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\nwatch(\n () => props.left,\n (newValue, oldValue) => {\n if (newValue !== oldValue && newValue !== optBase.left) {\n optBase.left = newValue\n }\n }\n)\n\nconst onClick = (e: MouseEvent) => {\n if (!props.isDisabled && !props.isBarDrag) {\n emit('onClick', e)\n }\n}\n\nconst onMouseOver = () => {\n emit('onMouseover')\n}\n\nconst onMouseOut = () => {\n if (!_pageData.isDragging) {\n emit('onMouseout')\n }\n}\n</script>\n","<template>\n <div\n ref=\"refElButton\"\n :class=\"clsParent\"\n :style=\"styParent\"\n tabindex=\"0\"\n @dblclick=\"onDblClick\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @keydown.down=\"onMoveLeft\"\n @keydown.up=\"onMoveRight\"\n @keydown.left=\"onMoveLeft\"\n @keydown.right=\"onMoveRight\"\n v-cltooltip.black=\"{trigger:['hover','focus'],position:optTooltipPos,html:optTooltipValue,updRefreshInx:optBase.ratio}\"\n >\n <div class=\"slider-button-icon\"></div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, ref, reactive, computed, watch, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { Drag as DragEvent } from '../../Common/Element/Event/index'\nimport { tooltipDirectives, tooltipCommon } from '../../Web/Tooltip'\n\ndefineOptions({ name: 'ClSliderButton' })\n\nconst props = defineProps({\n className: String,\n value: [String, Number],\n ratio: {\n type: Number,\n default: 0\n },\n isDisabled: {\n type: Boolean,\n default: false\n },\n isVertical: {\n type: Boolean,\n default: false\n },\n tooltipFormat: String\n})\n\nconst emit = defineEmits(['onMoveIng', 'onMoveEnd', 'onDblClick'])\n\nconst _selfTop: any = inject('$SliderTop')\n\nconst vCltooltip = tooltipDirectives\n\nconst refElButton = ref<HTMLElement | null>(null)\n\nconst optBase = reactive({\n isHover: false,\n ratio: props.ratio,\n value: props.value\n})\n\nconst _pageData = {\n dragStart: 0,\n dragStartRatio: 0,\n isMoveIng: false\n}\n\nconst optTooltipValue = computed(() => {\n let value = optBase.value\n if (value) {\n const format = props.tooltipFormat\n value = CommonBase.getFormatThousands(value.toString())\n if (format && !CommonBase.isEmpty(format)) {\n value = CommonBase.convertStringFormat(format, { _value: value })\n }\n }\n return value\n})\n\nconst optTooltipPos = computed(() => {\n return props.isVertical ? 'right' : 'top'\n})\n\nconst clsParent = computed(() => {\n const cls: Record<string, boolean> = {\n 'slider-button': true,\n hover: optBase.isHover\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: Record<string, string | undefined> = {}\n if (props.isVertical) {\n sty.bottom = `${optBase.ratio}%`\n } else {\n sty.left = `${optBase.ratio}%`\n }\n return sty\n})\n\nconst _showTooltip = () => {\n tooltipCommon.show(refElButton.value)\n}\n\nconst _hideTooltip = () => {\n tooltipCommon.hide(refElButton.value)\n}\n\nconst _getDraggIngInfo = (_e: any, clientXYInfo: any) => {\n let move = 0\n if (props.isVertical) {\n move = _pageData.dragStart - clientXYInfo.clientY\n } else {\n move = clientXYInfo.clientX - _pageData.dragStart\n }\n const info = _selfTop.getDragValueInfo(move, _pageData.dragStartRatio)\n optBase.ratio = info.ratio\n optBase.value = info.value\n return info\n}\n\nconst _runDragStart = (_e: any, clientXYInfo: any) => {\n _pageData.dragStart = props.isVertical ? clientXYInfo.clientY : clientXYInfo.clientX\n _pageData.dragStartRatio = props.ratio\n}\n\nconst _runDraggIng = (e: any, clientXYInfo: any) => {\n const info = _getDraggIngInfo(e, clientXYInfo)\n tooltipCommon.show(refElButton.value)\n emit('onMoveIng', { value: info.ratio, runType: 'drag' })\n}\n\nconst _runDragEnd = (e: any, clientXYInfo: any) => {\n _getDraggIngInfo(e, clientXYInfo)\n if (optBase.isHover || refElButton.value === e.target || refElButton.value?.contains(e.target)) {\n // keep tooltip\n } else {\n tooltipCommon.hide(refElButton.value)\n }\n emit('onMoveEnd', { runType: 'drag' })\n}\n\nconst _runMoveIng = (type: string) => {\n _pageData.isMoveIng = true\n const info = _selfTop.getButtonMoveValueInfo(type, props.ratio)\n optBase.ratio = info.ratio\n optBase.value = info.value\n emit('onMoveIng', { value: info.ratio, runType: 'keydown' })\n}\n\nconst _initMain = () => {\n const dragConfig = {\n start(e: any, clientXYInfo: any) {\n let isRun = false\n if (!props.isDisabled && e.buttons === 1) {\n isRun = true\n _runDragStart(e, clientXYInfo)\n }\n return isRun\n },\n ing: (e: any, clientXYInfo: any) => {\n _runDraggIng(e, clientXYInfo)\n },\n end: (e: any, clientXYInfo: any) => {\n _runDragEnd(e, clientXYInfo)\n }\n }\n new DragEvent(refElButton.value, dragConfig)\n}\n\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue && newValue !== optBase.value) {\n optBase.value = newValue\n }\n }\n)\n\nwatch(\n () => props.ratio,\n (newValue, oldValue) => {\n if (newValue !== oldValue && newValue !== optBase.ratio) {\n optBase.ratio = newValue\n }\n }\n)\n\nconst onMoveLeft = (e: KeyboardEvent) => {\n if (!props.isDisabled) {\n e.preventDefault()\n e.stopPropagation()\n _runMoveIng('left')\n }\n}\n\nconst onMoveRight = (e: KeyboardEvent) => {\n if (!props.isDisabled) {\n e.preventDefault()\n e.stopPropagation()\n _runMoveIng('right')\n }\n}\n\nconst onFocus = () => {\n if (!props.isDisabled) {\n optBase.isHover = true\n }\n}\n\nconst onBlur = () => {\n if (!props.isDisabled) {\n optBase.isHover = false\n if (_pageData.isMoveIng) {\n _pageData.isMoveIng = false\n emit('onMoveEnd', { runType: 'keydown' })\n }\n }\n}\n\nconst onDblClick = () => {\n if (!props.isDisabled) {\n emit('onDblClick')\n }\n}\n\nconst showTooltip = () => {\n _showTooltip()\n}\n\nconst hideTooltip = () => {\n _hideTooltip()\n}\n\ndefineExpose({\n showTooltip,\n hideTooltip\n})\n</script>\n","<template>\n <div :class=\"clsParent\" :style=\"styParent\" @mouseover=\"onMouseOver\" @mouseout=\"onMouseOut\" @click=\"onClick\" v-cltooltip.black.hover=\"{init:isTooltip,position:optTooltipPos,html:optTooltipValue}\">\n <div class=\"slider-dot-icon\"></div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport CommonBase from '../../Common/base'\nimport { tooltipDirectives } from '../../Web/Tooltip'\n\ndefineOptions({ name: 'ClSliderDot' })\n\nconst props = defineProps({\n itemInfo: {\n type: Object,\n default: () => ({})\n },\n isHover: {\n type: Boolean,\n default: false\n },\n isVertical: {\n type: Boolean,\n default: false\n },\n isTooltip: {\n type: Boolean,\n default: true\n },\n tooltipFormat: String\n})\n\nconst emit = defineEmits(['onMouseover', 'onMouseout', 'onClick'])\n\nconst vCltooltip = tooltipDirectives\n\nconst optTooltipPos = computed(() => {\n return props.isVertical ? 'right' : 'top'\n})\n\nconst optTooltipValue = computed(() => {\n let value = props.itemInfo.value\n if (value) {\n const format = props.tooltipFormat\n value = CommonBase.getFormatThousands(value.toString())\n if (format && !CommonBase.isEmpty(format)) {\n value = CommonBase.convertStringFormat(format, { _value: value })\n }\n }\n return value\n})\n\nconst clsParent = computed(() => {\n const cls: Record<string, boolean> = {\n 'slider-dot': true,\n 'slider-dot-active': props.itemInfo.isActive,\n 'slider-dot-hide': props.itemInfo.isHide,\n hover: props.isHover\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: Record<string, string | undefined> = {}\n if (props.isVertical) {\n sty.bottom = `${props.itemInfo.ratio}%`\n } else {\n sty.left = `${props.itemInfo.ratio}%`\n }\n return sty\n})\n\nconst onMouseOver = () => {\n emit('onMouseover')\n}\n\nconst onMouseOut = () => {\n emit('onMouseout')\n}\n\nconst onClick = () => {\n emit('onClick')\n}\n</script>\n","<template>\n <div :class=\"clsParent\" :style=\"styParent\">\n <div class=\"slider-container\">\n <div ref=\"refElTrack\" class=\"slider-track\" @click=\"onClickTrack\"></div>\n <cl-slider-bar\n :isDisabled=\"disabled\"\n :isVertical=\"isVertical\"\n :isBarDrag=\"optIsBarDrag\"\n :left=\"optBar.left\"\n :width=\"optBar.width\"\n @onMoveStart=\"onBarMoveStart\"\n @onMoveIng=\"onBarMoveIng\"\n @onMoveEnd=\"onBarMoveEnd\"\n @onClick=\"onClickTrack\"\n @onMouseover=\"onBarHoverIn\"\n @onMouseout=\"onBarHoverOut\"\n ></cl-slider-bar>\n <template v-if=\"isRange\">\n <cl-slider-button\n ref=\"refBtnStart\"\n :isDisabled=\"disabled\"\n :isVertical=\"isVertical\"\n :value=\"optValue.start\"\n :ratio=\"optValue.startRatio\"\n :tooltipFormat=\"tooltipFormat\"\n @onMoveIng=\"onButtonMoveIng($event, 'start')\"\n @onMoveEnd=\"onButtonMoveEnd\"\n @onDblClick=\"onButtonDblClick('start')\"\n ></cl-slider-button>\n <cl-slider-button\n ref=\"refBtnEnd\"\n :isDisabled=\"disabled\"\n :isVertical=\"isVertical\"\n :value=\"optValue.end\"\n :ratio=\"optValue.endRatio\"\n :tooltipFormat=\"tooltipFormat\"\n @onMoveIng=\"onButtonMoveIng($event, 'end')\"\n @onMoveEnd=\"onButtonMoveEnd\"\n @onDblClick=\"onButtonDblClick('end')\"\n ></cl-slider-button>\n </template>\n <cl-slider-button\n v-else\n ref=\"refBtnEnd\"\n :isDisabled=\"disabled\"\n :isVertical=\"isVertical\"\n :value=\"optValue.end\"\n :ratio=\"optValue.endRatio\"\n :tooltipFormat=\"tooltipFormat\"\n @onMoveIng=\"onButtonMoveIng($event, 'end')\"\n @onMoveEnd=\"onButtonMoveEnd\"\n ></cl-slider-button>\n <div v-if=\"optDotsList.length > 0\" class=\"slider-dots\">\n <cl-slider-dot\n v-for=\"(dInfo, dIndex) in optDotsList\"\n :key=\"`${optBase.keyIndex}-dot-${dIndex}`\"\n :isVertical=\"isVertical\"\n :itemInfo=\"dInfo\"\n :isHover=\"optBase.markHoverIndex === dIndex\"\n :isTooltip=\"!optIsShowMarks\"\n @onMouseover=\"onHoverMarkIn(dIndex)\"\n @onMouseout=\"onHoverMarkOut\"\n @onClick=\"onClickTrack\"\n ></cl-slider-dot>\n </div>\n </div>\n <div v-if=\"optIsShowMarks\" class=\"slider-marks\">\n <div\n v-for=\"(mInfo, mIndex) in optMarksList\"\n :key=\"`${optBase.keyIndex}-mark-${mIndex}`\"\n :class=\"{ 'slider-mark': true, hover: optBase.markHoverIndex === mIndex }\"\n :style=\"optFunMarkStyle(mInfo)\"\n v-html=\"mInfo.mark\"\n @mouseover=\"onHoverMarkIn(mIndex)\"\n @mouseout=\"onHoverMarkOut\"\n ></div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, watch, onMounted, nextTick, provide } from 'vue'\nimport CommonBase from '../../Common/base'\nimport ClSliderBar from './Bar.vue'\nimport ClSliderButton from './Button.vue'\nimport ClSliderDot from './Dot.vue'\nimport './Index.css'\n\ndefineOptions({ name: 'ClSlider' })\n\nconst props = defineProps({\n className: String,\n value: [String, Number],\n\n min: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 100\n },\n disabled: {\n type: Boolean,\n default: false\n },\n\n isRange: {\n type: Boolean,\n default: false\n },\n isBarDrag: {\n type: Boolean,\n default: false\n },\n\n splitNumber: {\n type: Number,\n default: 0\n },\n isShowDot: {\n type: Boolean,\n default: true\n },\n isShowDotActive: {\n type: Boolean,\n default: true\n },\n\n marks: {\n type: Array,\n default: () => []\n },\n\n isVertical: {\n type: Boolean,\n default: false\n },\n verticalHeight: String,\n\n size: {\n type: String,\n default: 'large', // large | small\n validator: (value: string) => {\n return ['large', 'small'].indexOf(value) > -1\n }\n },\n numType: {\n type: String,\n default: 'int', // int | float2 | float3\n validator: (value: string) => {\n return ['int', 'float2', 'float3'].indexOf(value) > -1\n }\n },\n tooltipFormat: String\n})\n\nconst emit = defineEmits(['update:value', 'onChange'])\n\nconst refElTrack = ref<HTMLElement | null>(null)\nconst refBtnStart = ref<any>(null)\nconst refBtnEnd = ref<any>(null)\n\nconst optBase = reactive({\n keyIndex: `slider-${CommonBase.getRandom(8)}`,\n markHoverIndex: -1\n})\n\nconst optBar = reactive({\n left: 0,\n width: 0\n})\n\nconst optValue = reactive({\n start: props.min,\n end: props.min,\n startRatio: 0,\n endRatio: 0\n})\n\nconst optDotsList = ref<any[]>([])\nconst optMarksList = ref<any[]>([])\n\n// computed\nconst optTotalNumTrack = computed(() => {\n return Math.abs(props.max - props.min)\n})\n\nconst optIsShowMarks = computed(() => {\n return props.marks.length > 0\n})\n\nconst optIsBarDrag = computed(() => {\n const { isRange, isBarDrag } = props\n let newIsBarDrag = false\n if (isRange) {\n newIsBarDrag = isBarDrag\n }\n return newIsBarDrag\n})\n\nconst optFunMarkStyle = (mInfo: any) => {\n const sty: Record<string, string | undefined> = {}\n if (props.isVertical) {\n sty.bottom = `${mInfo.ratio}%`\n } else {\n sty.left = `${mInfo.ratio}%`\n }\n if (!CommonBase.isEmpty(mInfo.color)) {\n sty.color = mInfo.color\n }\n return sty\n}\n\n// cls\nconst clsParent = computed(() => {\n const cls: Record<string, boolean> = {\n 'panel-slider': true,\n 'slider-disabled': props.disabled,\n 'slider-vertical': props.isVertical,\n 'slider-level': !props.isVertical\n }\n let size = props.size\n if (CommonBase.isEmpty(size)) {\n size = 'large'\n }\n cls[`slider-${size}`] = true\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst styParent = computed(() => {\n const sty: Record<string, string | undefined> = {}\n if (props.isVertical) {\n sty.height = props.verticalHeight\n }\n return sty\n})\n\n// emit\nconst _emitChange = (info?: any) => {\n const tempStart = info ? info.start : optValue.start\n const tempEnd = info ? info.end : optValue.end\n let start = tempStart\n let end = tempEnd\n if (start > end) {\n start = tempEnd\n end = tempStart\n }\n const value = props.isRange ? `${start},${end}` : end.toString()\n emit('update:value', value)\n emit('onChange', value, { start, end })\n}\n\n// 内部方法\nconst _calculationPercentage = (ratio: number, f = 2) => {\n return Number((ratio * 100).toFixed(f))\n}\n\nconst _calculationRatioByValue = (value: number) => {\n const total = optTotalNumTrack.value\n const ratio = total > 0 ? _calculationPercentage((value - props.min) / total) : 0\n return ratio\n}\n\nconst _calculationValueByRatio = (ratio: number) => {\n let value = 0\n if (ratio <= 0) {\n value = props.min\n } else if (ratio >= 100) {\n value = props.max\n } else {\n const { numType } = props\n const total = optTotalNumTrack.value\n const p = (total * ratio) / 100\n const t = CommonBase.getValueByFormat(p.toString(), numType, { isThousands: false })\n value = props.min + Number(t)\n if (CommonBase.isExistValue(['float2', 'float3'], numType)) {\n const strValue = value.toString()\n const decimal = Number(strValue.replace('float', ''))\n if (CommonBase.isExistValue(strValue, '.') && strValue.split('.')[1].length > decimal) {\n value = Number(value.toFixed(decimal))\n }\n }\n }\n return value\n}\n\nconst _checkMinMax = (value: any) => {\n let newValue = Number(value)\n let check = true\n if (newValue <= props.min) {\n newValue = props.min\n check = false\n } else if (newValue >= props.max) {\n newValue = props.max\n check = false\n }\n return { value: newValue, check }\n}\n\nconst _initMarks = () => {\n if (optIsShowMarks.value) {\n const list: any[] = []\n props.marks.forEach((mInfo: any) => {\n const newInfo = CommonBase.getJsonClone(mInfo)\n newInfo.value = Number(newInfo.value)\n newInfo.ratio = _calculationRatioByValue(newInfo.value)\n list.push(newInfo)\n })\n optMarksList.value = list\n }\n}\n\nconst _initDots = () => {\n const list: any[] = []\n if (optIsShowMarks.value) {\n optMarksList.value.forEach((mInfo: any) => {\n list.push({ ratio: mInfo.ratio, value: mInfo.value, isActive: false, isHide: false })\n })\n } else {\n if (props.splitNumber > 1) {\n const intervalRatio = Number((100 / props.splitNumber).toFixed())\n const halfRatio = intervalRatio / 2\n\n for (let i = 1; i < props.splitNumber; i++) {\n const valueRatio = intervalRatio * i\n const value = _calculationValueByRatio(valueRatio)\n list.push({\n value,\n ratio: valueRatio,\n isActive: false,\n isHide: false,\n left: valueRatio - halfRatio,\n right: valueRatio + halfRatio\n })\n }\n }\n }\n optDotsList.value = list\n}\n\nconst _refreshDotsStatus = () => {\n if (optDotsList.value.length > 0) {\n const { isShowDot, isShowDotActive, min, max } = props\n const isShowForever = optIsShowMarks.value\n\n const barStart = optBar.left\n const barEnd = barStart + optBar.width\n\n const newList: any[] = []\n optDotsList.value.forEach((dInfo: any) => {\n const newInfo = CommonBase.getJsonClone(dInfo)\n\n const isActive = dInfo.ratio >= barStart && dInfo.ratio <= barEnd\n newInfo.isActive = isActive\n\n let isShow = false\n if (isShowForever) {\n isShow = true\n } else {\n if (isShowDot) {\n isShow = true\n if (isActive) {\n if (isShowDotActive) {\n isShow = true\n } else {\n isShow = false\n }\n }\n } else {\n isShow = false\n }\n }\n if (newInfo.ratio === min || newInfo.ratio === max) {\n isShow = false\n }\n\n newInfo.isHide = !isShow\n newList.push(newInfo)\n })\n optDotsList.value = newList\n }\n}\n\nconst _bindBar = (info: any) => {\n const left = info.startRatio > info.endRatio ? info.endRatio : info.startRatio\n const width = Math.abs(info.endRatio - info.startRatio)\n optBar.left = left\n optBar.width = width\n}\n\nconst _setBtnTooltipByBarMove = (isShow: boolean) => {\n nextTick(() => {\n if (props.isRange) {\n if (isShow) {\n refBtnStart.value?.showTooltip()\n refBtnEnd.value?.showTooltip()\n } else {\n refBtnStart.value?.hideTooltip()\n refBtnEnd.value?.hideTooltip()\n }\n } else {\n if (isShow) {\n refBtnEnd.value?.showTooltip()\n } else {\n refBtnEnd.value?.hideTooltip()\n }\n }\n })\n}\n\nconst _bindValue = (info: any) => {\n _bindBar(info)\n optValue.start = info.start\n optValue.end = info.end\n optValue.startRatio = info.startRatio\n optValue.endRatio = info.endRatio\n _refreshDotsStatus()\n}\n\nconst _initValue = (value: any) => {\n let start: number\n let end: number\n if (value && !CommonBase.isEmpty(value)) {\n const tempArr = value.toString().split(',')\n const tempStartInfo = _checkMinMax(tempArr[0])\n if (props.isRange) {\n start = tempStartInfo.value\n end = start\n if (tempArr.length > 1) {\n const tempEndInfo = _checkMinMax(tempArr[1])\n if (tempEndInfo.value > start) {\n end = tempEndInfo.value\n }\n }\n } else {\n start = props.min\n end = tempStartInfo.value\n }\n } else {\n start = props.min\n end = props.min\n }\n const startRatio = _calculationRatioByValue(start)\n const endRatio = _calculationRatioByValue(end)\n _bindValue({ start, end, startRatio, endRatio })\n}\n\nconst _getCheckUseRatio = (ratio: number) => {\n let newRatio = _calculationPercentage(ratio)\n const listDots = optDotsList.value\n if (!optIsShowMarks.value && listDots.length > 0) {\n if (newRatio < listDots[0].left) {\n newRatio = 0\n } else if (newRatio > listDots[listDots.length - 1].right) {\n newRatio = 100\n } else {\n for (let i = 0; i < listDots.length; i++) {\n if (newRatio >= listDots[i].left && newRatio <= listDots[i].right) {\n newRatio = listDots[i].ratio\n break\n }\n }\n }\n }\n return newRatio\n}\n\nconst _calculationTrackClickValue = (ratio: number) => {\n const newRatio = _getCheckUseRatio(ratio)\n const value = _calculationValueByRatio(newRatio)\n let { start, startRatio, end, endRatio } = optValue\n let updType = ''\n\n if (props.isRange) {\n if (newRatio <= startRatio) {\n updType = 'start'\n } else if (newRatio >= endRatio) {\n updType = 'end'\n } else {\n const diff = (endRatio - startRatio) / 2\n if (newRatio > startRatio && newRatio <= startRatio + diff) {\n updType = 'start'\n } else if (newRatio >= endRatio - diff && newRatio < endRatio) {\n updType = 'end'\n }\n }\n } else {\n updType = 'end'\n }\n switch (updType) {\n case 'start':\n start = value\n startRatio = newRatio\n break\n case 'end':\n end = value\n endRatio = newRatio\n break\n default:\n break\n }\n return { start, end, startRatio, endRatio }\n}\n\nconst _initMain = () => {\n _initMarks()\n _initDots()\n _initValue(props.value)\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// watch\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue && newValue !== oldValue) {\n let isInit = true\n const tempArr = newValue.toString().split(',')\n const temp0 = Number(tempArr[0])\n if (props.isRange) {\n const temp1 = tempArr.length > 1 ? Number(tempArr[1]) : temp0\n if (\n (temp0 === optValue.start && temp1 === optValue.end) ||\n (temp0 === optValue.end && temp1 === optValue.start)\n ) {\n isInit = false\n }\n } else {\n isInit = temp0 !== optValue.end\n }\n if (isInit) {\n _initValue(newValue)\n }\n }\n }\n)\n\n// 事件\nconst onClickTrack = (e: any) => {\n if (!props.disabled) {\n e.preventDefault()\n e.stopPropagation()\n const elTrack = refElTrack.value!\n const trackClientItem = elTrack.getBoundingClientRect()\n const ratio = props.isVertical\n ? (trackClientItem.bottom - e.clientY) / elTrack.clientHeight\n : (e.clientX - trackClientItem.left) / elTrack.clientWidth\n const newValueInfo = _calculationTrackClickValue(ratio)\n _bindValue(newValueInfo)\n _emitChange(newValueInfo)\n }\n}\n\nconst onButtonMoveIng = (moveInfo: any, btnType: string) => {\n let { startRatio, endRatio } = optValue\n const ratio = moveInfo.value\n if (btnType === 'start') {\n startRatio = ratio\n optValue.start = _calculationValueByRatio(ratio)\n optValue.startRatio = ratio\n } else {\n endRatio = ratio\n optValue.end = _calculationValueByRatio(ratio)\n optValue.endRatio = ratio\n }\n _bindBar({ startRatio, endRatio })\n _refreshDotsStatus()\n if (moveInfo.runType === 'keydown') {\n _emitChange()\n }\n}\n\nconst onButtonMoveEnd = (moveInfo: any) => {\n const { left, width } = optBar\n const info: any = {\n startRatio: left,\n endRatio: left + width\n }\n info.start = _calculationValueByRatio(info.startRatio)\n info.end = _calculationValueByRatio(info.endRatio)\n _bindValue(info)\n if (moveInfo.runType === 'drag') {\n _emitChange(info)\n }\n}\n\nconst onButtonDblClick = (btnType: string) => {\n if (props.isRange) {\n let { start, startRatio, end, endRatio } = optValue\n if (btnType === 'start') {\n endRatio = startRatio\n end = start\n } else {\n startRatio = endRatio\n start = end\n }\n const info = { start, startRatio, end, endRatio }\n _bindValue(info)\n _emitChange(info)\n }\n}\n\nconst onBarMoveStart = () => {\n _setBtnTooltipByBarMove(true)\n}\n\nconst onBarMoveIng = (ratio: number) => {\n const startRatio = ratio\n optValue.start = _calculationValueByRatio(ratio)\n optValue.startRatio = ratio\n\n const endRatio = ratio + optBar.width\n optValue.end = _calculationValueByRatio(endRatio)\n optValue.endRatio = endRatio\n\n _bindBar({ startRatio, endRatio })\n _refreshDotsStatus()\n _setBtnTooltipByBarMove(true)\n}\n\nconst onBarMoveEnd = () => {\n _emitChange()\n _setBtnTooltipByBarMove(false)\n}\n\nconst onBarHoverIn = () => {\n _setBtnTooltipByBarMove(true)\n}\n\nconst onBarHoverOut = () => {\n _setBtnTooltipByBarMove(false)\n}\n\nconst onHoverMarkIn = (inx: number) => {\n if (optIsShowMarks.value) {\n optBase.markHoverIndex = inx\n }\n}\n\nconst onHoverMarkOut = () => {\n optBase.markHoverIndex = -1\n}\n\n// provide\nprovide('$SliderTop', {\n getDragValueInfo: (move: number, start: number) => {\n const moveRatio = props.isVertical\n ? move / refElTrack.value!.clientHeight\n : move / refElTrack.value!.clientWidth\n let newRatio = start / 100 + moveRatio\n if (newRatio >= 1) {\n newRatio = 1\n } else if (newRatio <= 0) {\n newRatio = 0\n }\n newRatio = _getCheckUseRatio(newRatio)\n const value = _calculationValueByRatio(newRatio)\n return { ratio: newRatio, value }\n },\n getButtonMoveValueInfo: (moveType: string, start: number) => {\n const move = moveType === 'left' ? -1 : 1\n const startNum = Number(start)\n let newRatio: number\n const listDots = optDotsList.value\n const listLen = listDots.length\n if (!optIsShowMarks.value && listLen > 0) {\n let startIndex = -1\n if (startNum < listDots[0].ratio) {\n startIndex = -1\n } else if (startNum > listDots[listLen - 1].ratio) {\n startIndex = listLen\n } else {\n for (let i = 0; i < listLen; i++) {\n if (startNum >= listDots[i].ratio && i + 1 < listLen && startNum < listDots[i + 1].ratio) {\n startIndex = i\n break\n }\n }\n }\n const newIndex = startIndex + move\n if (newIndex < 0) {\n newRatio = 0\n } else if (newIndex >= listLen) {\n newRatio = 100\n } else {\n newRatio = listDots[newIndex].ratio\n }\n } else {\n newRatio = startNum + move\n }\n if (newRatio >= 100) {\n newRatio = 100\n } else if (newRatio <= 0) {\n newRatio = 0\n }\n const value = _calculationValueByRatio(newRatio)\n return { ratio: newRatio, value }\n }\n})\n</script>\n","<template>\n <div :class=\"clsParent\">\n <div :class=\"clsLabel\">\n <span>\n <span class=\"tip-must\" v-if=\"isTipMust\">*</span>\n <span class=\"control-label-text\">{{ label }}</span>\n <slot name=\"labelExtend\"></slot>\n </span>\n </div>\n <div :class=\"clsContent\">\n <slot></slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport CommonBase from '../../Common/base'\n\ndefineOptions({ name: 'ClFormGroup' })\n\nconst props = defineProps({\n colRatio: {\n type: String,\n default: '2:10'\n },\n className: {\n type: String,\n default: ''\n },\n label: String,\n isTipMust: {\n type: Boolean,\n default: false\n },\n isPlaintext: {\n type: Boolean,\n default: false\n }\n})\n\nconst clsParent = computed(() => {\n const clsTemp: Record<string, boolean> = {\n 'form-group': true,\n 'form-group-plaintext': props.isPlaintext,\n row: true\n }\n if (!CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((cls: string) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n return clsTemp\n})\n\nconst clsLabel = computed(() => {\n let r = '2'\n const temp: string[] = props.colRatio.split(':')\n if (temp.length > 0) {\n r = temp[0]\n }\n const clsTemp: Record<string, boolean> = {\n 'control-label': true\n }\n clsTemp[`col-sm-${r}`] = true\n clsTemp[`col-${r}`] = true\n return clsTemp\n})\n\nconst clsContent = computed(() => {\n let r = '10'\n const temp: string[] = props.colRatio.split(':')\n if (temp.length > 1) {\n r = temp[1]\n }\n const clsTemp: Record<string, boolean> = {}\n clsTemp[`col-sm-${r}`] = true\n clsTemp[`col-${r}`] = true\n return clsTemp\n})\n</script>\n\n<style src=\"./Index.css\"></style>\n","<template>\n <div class=\"anchor-nav\" :class=\"{ 'is-fixed': isFixed }\">\n <div v-for=\"item in list\" :key=\"item.id\" class=\"anchor-item\" :class=\"{ active: currentAnchor === item.id }\"\n @click=\"scrollToAnchor(item.id)\">\n <span class=\"anchor-dot\"></span>\n <span class=\"anchor-label\">{{ item.label }}</span>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted } from 'vue'\nimport './Index.css'\nimport type { AnchorItem } from './AnchorItem'\n\ndefineOptions({ name: 'ClAnchorNav' })\n\nconst props = defineProps({\n className: {\n type: String,\n default: '', // desc: 自定义CSS类名\n },\n list: {\n type: Array as () => AnchorItem[],\n required: true, // desc: 锚点列表配置,每个锚点包含id和label属性\n },\n})\n\nconst currentAnchor = ref('')\nconst isFixed = ref(false)\n\nconst scrollToAnchor = (anchorId: string) => {\n const element = document.getElementById(anchorId)\n if (element) {\n element.scrollIntoView({ behavior: 'smooth', block: 'start' })\n }\n}\n\nconst handleScroll = () => {\n const scrollTop = window.scrollY\n const windowHeight = window.innerHeight\n\n isFixed.value = scrollTop > 100\n\n const anchorElements = props.list\n .map((item) => ({\n id: item.id,\n element: document.getElementById(item.id),\n }))\n .filter((a): a is { id: string; element: HTMLElement } => a.element !== null)\n\n for (let i = anchorElements.length - 1; i >= 0; i--) {\n const element = anchorElements[i].element\n const rect = element.getBoundingClientRect()\n if (rect.top <= windowHeight / 2) {\n currentAnchor.value = anchorElements[i].id\n break\n }\n }\n}\n\nonMounted(() => {\n window.addEventListener('scroll', handleScroll)\n handleScroll()\n})\n\nonUnmounted(() => {\n window.removeEventListener('scroll', handleScroll)\n})\n</script>\n","<template>\n <div :class=\"clsParent\" :style=\"styParent\">\n <textarea ref=\"refElTextarea\" class=\"form-control text-area\" v-model=\"optTextValue\" :name=\"optElName\"\n :placeholder=\"placeholder\" :disabled=\"disabled\" @input=\"onInputText\" @keydown=\"onKeydown\" @keyup=\"onKeyup\"\n @focus=\"onFocus\" @blur=\"onBlur\"></textarea>\n <i v-if=\"optIsShowClean\" class=\"textarea-clear-icon clIconFont clIcon-close-circle-fill\"\n @click.stop=\"onClear\"></i>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, watch, nextTick, onMounted } from 'vue'\nimport CommonBase from '../../Common/base'\nimport './Index.css'\n\ndefineOptions({ name: 'ClInputTextarea' })\n\nconst props = defineProps({\n value: {\n type: String,\n default: ''\n },\n className: {\n type: String,\n default: ''\n },\n width: {\n type: String,\n default: ''\n },\n height: {\n type: String,\n default: '100px'\n },\n name: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n isClean: {\n type: Boolean,\n default: false\n },\n isAutoHeight: {\n type: Boolean,\n default: false\n },\n changDelayTime: {\n type: Number,\n default: 200\n },\n heightMax: {\n type: String,\n default: ''\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update:value', value: string): void\n (e: 'onChange', value: string): void\n (e: 'onInit'): void\n (e: 'onKeydownEnter', event: KeyboardEvent): void\n (e: 'onKeyupEnter', event: KeyboardEvent): void\n (e: 'onFocus'): void\n (e: 'onBlur'): void\n (e: 'onChangeDelay', value: string): void\n}>()\n\nconst refElTextarea = ref<HTMLTextAreaElement | null>(null)\nconst optBase = reactive({\n height: props.height || '100px',\n})\nconst optTextValue = ref(props.value || '')\nconst _pageData: any = {\n lastValue: props.value || '',\n prevDelayValue: props.value || '',\n valueDelayRun: false,\n}\n\nconst optElName = computed(() => {\n let name = props.name\n if (CommonBase.isEmpty(name)) {\n name = `textarea_${CommonBase.getRandom(8)}`\n }\n return name\n})\n\nconst optIsShowClean = computed(() => {\n return props.isClean && !props.disabled && !CommonBase.isEmpty(optTextValue.value)\n})\n\nconst clsParent = computed(() => {\n const clsTemp: any = {\n 'panel-textarea': true,\n 'box-width': true,\n 'textarea-clean': props.isClean,\n }\n if (props.className && !CommonBase.isEmpty(props.className)) {\n props.className.split(' ').forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n return clsTemp\n})\n\nconst styParent = computed(() => {\n const { width, heightMax } = props\n const sty: any = {}\n if (!CommonBase.isEmpty(width)) {\n sty.width = width\n }\n if (!CommonBase.isEmpty(optBase.height)) {\n sty.height = optBase.height\n }\n if (heightMax && !CommonBase.isEmpty(heightMax)) {\n sty['max-height'] = heightMax\n }\n return sty\n})\n\nconst _calculationHeight = () => {\n if (props.isAutoHeight) {\n const el = refElTextarea.value\n if (el) {\n el.style.height = props.height || '100px'\n const height = el.scrollHeight + el.scrollTop + (el.offsetHeight - el.clientHeight)\n el.style.height = '100%'\n optBase.height = height > 0 ? `${height}px` : (props.height || '100px')\n }\n }\n}\n\nconst _focus = () => {\n refElTextarea.value?.focus()\n}\n\nconst _emitChange = (value: string) => {\n if (value !== _pageData.lastValue) {\n _pageData.lastValue = value\n emit('update:value', value)\n emit('onChange', value)\n _emitChangeDelay(value)\n }\n}\n\nlet _valueTimerDelay: any\nconst _emitChangeDelay = (value: string) => {\n if (_valueTimerDelay) {\n clearTimeout(_valueTimerDelay)\n _valueTimerDelay = null\n }\n _pageData.valueDelayRun = true\n _valueTimerDelay = setTimeout(() => {\n _pageData.valueDelayRun = false\n if (_pageData.prevDelayValue !== value) {\n _pageData.prevDelayValue = value\n emit('onChangeDelay', value)\n }\n }, props.changDelayTime || 200)\n}\n\nconst _initMain = () => {\n nextTick(() => {\n emit('onInit')\n })\n}\n\nwatch(\n () => props.value,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n optTextValue.value = newValue || ''\n _pageData.lastValue = newValue || ''\n _calculationHeight()\n if (!_pageData.valueDelayRun) {\n _pageData.prevDelayValue = newValue || ''\n }\n }\n },\n)\n\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\nconst onInputText = (e: Event) => {\n const value = (e.target as HTMLTextAreaElement).value\n _calculationHeight()\n _emitChange(value)\n}\n\nconst onKeydown = (e: KeyboardEvent) => {\n const keyCode = e.key\n if (keyCode === 'Enter') {\n emit('onKeydownEnter', e)\n }\n}\n\nconst onKeyup = (e: KeyboardEvent) => {\n const keyCode = e.key\n if (keyCode === 'Enter') {\n emit('onKeyupEnter', e)\n }\n}\n\nconst onClear = () => {\n optTextValue.value = ''\n _emitChange('')\n _focus()\n}\n\nconst onFocus = () => {\n emit('onFocus')\n}\n\nconst onBlur = () => {\n emit('onBlur')\n}\n\nexport interface ClInputTextareaExpose {\n getValue: () => string\n getValueData: () => { value: string; show: string }\n setValue: (value: string) => void\n initHeight: () => void\n focus: () => void\n getParentElement: () => HTMLElement | null\n}\n\nconst getValue = () => {\n return CommonBase.trim(optTextValue.value)\n}\n\nconst getValueData = () => {\n return { value: getValue(), show: optTextValue.value }\n}\n\nconst setValue = (value: any) => {\n const newValue = CommonBase.isEmpty(value) ? '' : value\n _pageData.lastValue = newValue\n _pageData.prevDelayValue = newValue\n optTextValue.value = newValue\n _calculationHeight()\n}\n\nconst initHeight = () => {\n optBase.height = props.height || '100px'\n}\n\nconst focus = () => {\n _focus()\n}\n\nconst getParentElement = () => {\n return refElTextarea.value?.parentElement || null\n}\n\ndefineExpose({\n getValue,\n getValueData,\n setValue,\n initHeight,\n focus,\n getParentElement,\n})\n</script>\n","<template>\n <div :class=\"clsParent\">\n <template v-if=\"optNewList.length > 0\">\n <slot name=\"head\"></slot>\n </template>\n <span\n v-for=\"(info, inx) in optNewList\"\n :key=\"`${optKeyIndex}-list-${inx}-${info.id}`\"\n :class=\"clsTag(info)\"\n :style=\"styTag(info)\"\n @click.stop=\"onClickTag($event, info)\"\n >\n <span v-if=\"info.isHtml || isFormatHtml\" v-html=\"optFunShowTextLabel(info)\"></span>\n <span v-else>{{ optFunShowTextLabel(info) }}</span>\n <i\n v-if=\"isRemove && !info.isShowDisabled\"\n class=\"tag-close clIconFont clIcon-close\"\n @click=\"onRemoveItem($event, info, inx)\"\n ></i>\n </span>\n <i\n v-if=\"isRemoveAll && optNewList.length > 0 && !disabled\"\n class=\"tag-closeAll clIconFont clIcon-close\"\n @click=\"onRemoveAll\"\n ></i>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, watch, onMounted, nextTick } from 'vue'\nimport CommonBase from '../../Common/base'\nimport './Index.css'\n\ndefineOptions({ name: 'ClTags' })\n\nconst props = defineProps({\n className: String,\n\n list: {\n type: Array,\n default: () => []\n },\n disabled: {\n type: Boolean,\n default: false\n },\n isRemove: {\n type: Boolean,\n default: true\n },\n showTextFormat: String, // \"${id} ${name}\"\n isRemoveAll: {\n type: Boolean,\n default: false\n },\n theme: {\n type: String,\n default: 'default' // default | code\n },\n isFormatHtml: {\n type: Boolean,\n default: false\n }\n})\n\nconst emit = defineEmits(['onRemove', 'onClickTag'])\n\nconst optKeyIndex = `tag-${CommonBase.getRandom(8)}`\nconst optIsShowDisabled = ref(props.disabled)\nconst optNewList = ref<any[]>([])\n\nconst optHlight = reactive({\n status: 0, // 1:初始,2:过渡中 0:结束\n startColor: '#FFFF80',\n endColor: 'rgba(0, 0, 0, 0)',\n hID: ''\n})\n\nconst clsParent = computed(() => {\n const { className, theme } = props\n const cls: Record<string, boolean> = {\n 'panel-tags': true\n }\n if (theme !== 'default') {\n cls[`tags-${theme}`] = true\n }\n if (props.isRemoveAll && optNewList.value.length > 0) {\n cls['tags-region'] = true\n }\n if (!CommonBase.isEmpty(className)) {\n className!.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\nconst clsTag = (info: any) => {\n const { theme } = props\n let cls: Record<string, boolean> = {}\n if (theme === 'default') {\n cls = {\n tag: true,\n 'tag-disabled': info.isShowDisabled,\n 'tag-remove': props.isRemove && !info.isShowDisabled\n }\n cls['tag-hlight'] = info.id.toString() === optHlight.hID && optHlight.status === 2\n } else if (theme === 'code') {\n cls['tag-code'] = true\n }\n return cls\n}\n\nconst styTag = (info: any) => {\n const sty: Record<string, string | undefined> = {}\n if (info.id.toString() === optHlight.hID) {\n switch (optHlight.status) {\n case 1:\n sty['background-color'] = optHlight.startColor\n break\n case 2:\n sty['background-color'] = optHlight.endColor\n break\n case 0:\n break\n }\n }\n return sty\n}\n\nconst optFunShowTextLabel = (info: any) => {\n return CommonBase.isEmpty(props.showTextFormat)\n ? info.name\n : CommonBase.convertStringFormat(props.showTextFormat as string, info)\n}\n\n// 内部方法\nconst _convertListInfoDisabled = (item: any) => {\n const disabled = optIsShowDisabled.value\n let isItemDisabled = false\n if (disabled) {\n isItemDisabled = true\n } else {\n isItemDisabled = CommonBase.isBoolean(item.isDisabled) ? item.isDisabled : false\n }\n item.isShowDisabled = isItemDisabled\n}\n\nconst _convertList = (list: any[]) => {\n const newList: any[] = []\n list.forEach((item: any) => {\n const newItem = CommonBase.getJsonClone(item)\n _convertListInfoDisabled(newItem)\n newList.push(newItem)\n })\n return newList\n}\n\nconst _changeDisabled = (isDisabled: boolean) => {\n optIsShowDisabled.value = isDisabled\n const newList = _convertList(optNewList.value)\n optNewList.value = newList\n}\n\nconst _bindHlight = (id: any) => {\n optHlight.hID = id.toString()\n optHlight.status = 1\n nextTick(() => {\n setTimeout(() => {\n optHlight.status = 2\n }, 10)\n setTimeout(() => {\n optHlight.status = 0\n optHlight.hID = ''\n }, 1500)\n })\n}\n\nconst _initMain = () => {\n const newList = _convertList(props.list)\n optNewList.value = newList\n}\n\n// watch\nwatch(\n () => props.disabled,\n (newValue: boolean) => {\n _changeDisabled(newValue)\n }\n)\n\nwatch(\n () => props.list,\n (newValue: any[]) => {\n const newList = _convertList(newValue)\n optNewList.value = newList\n },\n { deep: true }\n)\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 事件\nconst onClickTag = (_event: MouseEvent, info: any) => {\n emit('onClickTag', info)\n}\n\nconst onRemoveItem = (event: MouseEvent, info: any, inx: number) => {\n event.preventDefault()\n event.stopPropagation()\n if (props.isRemove && !info.isShowDisabled) {\n optNewList.value.splice(inx, 1)\n emit('onRemove', info.id.toString())\n }\n}\n\nconst onRemoveAll = () => {\n optNewList.value = []\n emit('onRemove', '')\n}\n\n// 外部调用\nconst setDisabled = (isDisabled = true) => {\n _changeDisabled(isDisabled)\n}\n\nconst addInfo = (item: any) => {\n const existInfo = CommonBase.getListExistValue(optNewList.value, item.name, 'name')\n if (CommonBase.isEmpty(existInfo)) {\n const newItem = CommonBase.getJsonClone(item)\n _convertListInfoDisabled(newItem)\n optNewList.value.push(newItem)\n } else {\n _bindHlight(existInfo.info.id)\n }\n}\n\nconst getData = () => {\n return optNewList.value\n}\n\ndefineExpose({\n setDisabled,\n addInfo,\n getData\n})\n</script>\n","<template>\n <div :class=\"clsParent\">\n <div ref=\"refElList\" class=\"waterfall-list\" :style=\"{ height: `${optBase.pHeight}px` }\">\n <div\n v-for=\"(info, inx) in optList\"\n :key=\"`${optBase.keyIndex}_${info[itemKey] || inx}`\"\n class=\"waterfall-item\"\n >\n <div>\n <slot :data=\"info\" :index=\"inx\"></slot>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, computed, watch, onMounted, onUnmounted, nextTick, provide } from 'vue'\nimport CommonBase from '../../Common/base'\nimport CommonElement from '../../Common/Element/index'\nimport { Resize as ResizeEvent } from '../../Common/Element/Event/index'\nimport { DelayFun } from '../../Common/Tools/index'\nimport './Index.css'\n\ndefineOptions({ name: 'ClWaterfall' })\n\nconst props = defineProps({\n className: String,\n list: {\n type: Array,\n default: () => []\n },\n itemKey: {\n type: String,\n default: 'id'\n },\n width: {\n type: Number,\n default: -1\n },\n colNum: {\n type: Number,\n default: -1\n },\n spacing: {\n type: Number,\n default: 10\n },\n animationName: {\n type: String,\n default: 'animated fadeIn'\n }\n})\n\nconst refElList = ref<HTMLElement | null>(null)\n\nconst optBase = reactive({\n keyIndex: `waterfall-${CommonBase.getRandom(8)}`,\n pWidth: 0,\n pHeight: 0\n})\n\nconst optList = ref<any[]>([])\n\nconst _pageData: any = {\n colPosY: [],\n resizeEvent: null,\n resizeDelayFun: null,\n isExistItemKey: true\n}\n\n// computed\nconst optColWidth = computed(() => {\n const pWidth = optBase.pWidth\n const { width, colNum, spacing } = props\n let newWidth = 300\n const isWidth = width > 0\n const isCols = colNum > 0\n const averageW = isCols ? parseInt(((pWidth + spacing) / colNum).toString()) - spacing : 0\n if (isWidth && isCols) {\n const useTotalW = (width + spacing) * colNum - spacing\n newWidth = pWidth >= useTotalW ? width : averageW\n } else if (!isWidth && isCols) {\n newWidth = averageW\n } else if (isWidth && !isCols) {\n newWidth = pWidth > width ? width : pWidth\n }\n return newWidth\n})\n\nconst optColNum = computed(() => {\n const pWidth = optBase.pWidth\n const boxWidth = optColWidth.value\n const { colNum, spacing } = props\n const isCols = colNum > 0\n let newCol = -1\n const maxCol = parseInt(((pWidth + spacing) / (boxWidth + spacing)).toString())\n if (isCols) {\n const useTotalW = (boxWidth + spacing) * colNum - spacing\n newCol = pWidth >= useTotalW ? colNum : maxCol\n } else {\n newCol = maxCol\n }\n return newCol\n})\n\nconst optOffsetX = computed(() => {\n const pWidth = optBase.pWidth\n const boxWidth = optColWidth.value\n const maxColNum = optColNum.value\n const { spacing } = props\n const useTotalW = (boxWidth + spacing) * maxColNum - spacing\n const newOffsetX = parseInt(((pWidth - useTotalW) / 2).toString())\n return newOffsetX\n})\n\nconst clsParent = computed(() => {\n const cls: Record<string, boolean> = {\n 'panel-waterfall': true\n }\n const { className } = props\n if (className && !CommonBase.isEmpty(className)) {\n className.split(' ').forEach((c: string) => {\n if (!CommonBase.isEmpty(c)) {\n cls[c] = true\n }\n })\n }\n return cls\n})\n\n// 内部方法\nconst _checkExistItemKey = () => {\n const { list, itemKey } = props\n list.forEach((info: any) => {\n if (_pageData.isExistItemKey) {\n _pageData.isExistItemKey = CommonBase.isExistJsonKey(info, itemKey)\n }\n })\n}\n\nconst _initList = () => {\n optList.value = props.list\n}\n\nconst _initColPosY = () => {\n const { spacing } = props\n _pageData.colPosY = new Array(optColNum.value).fill(spacing)\n}\n\nconst _getColItemX = (inx: number) => {\n const { spacing } = props\n const w = optColWidth.value\n const x = optOffsetX.value\n return x + (w + spacing) * inx\n}\n\nconst _initLayoutItems = () => {\n let elItems: NodeListOf<HTMLElement> | undefined\n if (refElList.value) {\n elItems = refElList.value.querySelectorAll('.waterfall-item')\n }\n if (CommonBase.isUndefined(elItems) || !elItems) {\n return\n }\n if (elItems.length === 0) {\n return\n }\n\n _initColPosY()\n const w = optColWidth.value\n const { spacing, animationName } = props\n for (let i = 0; i < elItems.length; i++) {\n const el = elItems[i]\n const h = CommonElement.getPositionView(el).height\n const y = Math.min.apply(null, _pageData.colPosY)\n const yInx = _pageData.colPosY.indexOf(y)\n const x = _getColItemX(yInx)\n\n el.style.width = `${w}px`\n el.style.transform = `translate3d(${x}px,${y}px, 0)`\n _pageData.colPosY[yInx] += h + spacing\n\n const elChild = el.firstChild as HTMLElement\n const sty = elChild.style as any\n elChild.style.visibility = 'visible'\n if (!CommonElement.checkHasClass(elChild.className, animationName)) {\n sty['animation-duration'] = '1000ms'\n sty['animation-delay'] = '200ms'\n sty['animation-fill-mode'] = 'both'\n elChild.className = CommonElement.getAddClass(elChild.className, animationName)\n }\n }\n optBase.pHeight = Math.max.apply(null, _pageData.colPosY)\n}\n\nconst _initRender = () => {\n if (_pageData.isExistItemKey) {\n _initList()\n _pageData.resizeDelayFun.run(() => {\n _initLayoutItems()\n })\n } else {\n _pageData.resizeDelayFun.run(() => {\n _initList()\n nextTick(() => {\n _initLayoutItems()\n })\n })\n }\n}\n\nconst _initMain = () => {\n _pageData.resizeDelayFun = new DelayFun(null, 200)\n _pageData.resizeEvent = new ResizeEvent({\n element: refElList.value,\n callback: (item: any) => {\n optBase.pWidth = item.contentRect.width\n }\n })\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\nonUnmounted(() => {\n if (_pageData.resizeEvent) {\n _pageData.resizeEvent.destroy()\n }\n})\n\n// watch\nwatch(\n () => [optBase.pWidth, optColWidth, props.list],\n () => {\n _checkExistItemKey()\n _initRender()\n },\n { deep: true }\n)\n\n// provide\nprovide('$WaterfallTop', {\n imgCallback: _initRender\n})\n\n// 外部调用\nconst deleteItem = (inx: number) => {\n const elItems = refElList.value?.querySelectorAll('.waterfall-item')\n if (elItems && elItems[inx]) {\n const el = elItems[inx] as HTMLElement\n if (el.firstChild) {\n (el.firstChild as HTMLElement).style.visibility = 'hidden'\n }\n }\n}\n\ndefineExpose({\n deleteItem\n})\n</script>\n","<template>\n <div class=\"waterfall-imageBox\">\n <img ref=\"refElImage\" class=\"waterfall-image\" alt=\"\">\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, ref, watch } from 'vue'\nimport { useLazyload } from '../LazyImage/use'\n\ndefineOptions({ name: 'ClWaterfallImage' })\n\nconst props = defineProps({\n url: {\n type: String,\n default: ''\n }\n})\n\nconst _selfTop: any = inject('$WaterfallTop')\nconst optSrcUrl = ref(props.url)\nconst refElImage = ref<HTMLElement | null>(null)\n\nuseLazyload(refElImage, optSrcUrl, {\n callback: {\n loaded: () => {\n _selfTop.imgCallback()\n },\n error: () => {\n _selfTop.imgCallback()\n }\n }\n})\n\nwatch(\n () => props.url,\n (newValue) => {\n optSrcUrl.value = newValue\n }\n)\n</script>\n","<template>\n <div\n :class=\"clsParent\"\n @mouseenter=\"onHoverIn\"\n @mouseleave=\"onHoverOut\"\n @click.stop=\"onClick\"\n >\n <div class=\"clipboard-btn\">\n <slot><i\n :class=\"clsIcon\"\n :title=\"'复制'\"\n ></i></slot>\n </div>\n <div\n v-if=\"isUseSuccess&& optBase.isHover && optBase.isShowSuccess\"\n class=\"clipboard-operate-result\"\n ><i class=\"clIconFont clIcon-check\"></i></div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css'\nimport { onMounted, nextTick, computed, reactive } from 'vue'\nimport CommonBase from '../../Common/base'\nimport Clipboard from './index'\n\n// defineOptions\ndefineOptions({ name: 'ClClipboard' })\n\n// props\nconst props = defineProps({\n // 必填属性\n textLabel: {\n type: [String, Function],\n required: true\n },\n // 简单属性(无默认值、非必填、无需验证)\n className: String,\n iconColorClass: String,\n isUseSuccess: Boolean,\n})\n\n// emit\nconst emit = defineEmits<{\n (e: 'onCopySuccess'): void\n (e: 'onCopyError', text: string): void\n}>()\n\n// reactive\nconst optBase = reactive({\n isHover: false,\n isShowSuccess: false,\n})\n\n// 内部数据\nlet clipboard: any = null\n\n// computed\nconst clsParent = computed(() => {\n const clsTemp:any = {\n 'panel-clipboard': true,\n }\n const { className } = props\n if (className && !CommonBase.isEmpty(className)) {\n className.split(' ').forEach((cls) => {\n if (!CommonBase.isEmpty(cls)) {\n clsTemp[cls] = true\n }\n })\n }\n return clsTemp\n})\n\nconst clsIcon = computed(() => {\n const clsTemp:any = {\n clIconFont: true,\n 'clIcon-copy': true,\n }\n\n const { iconColorClass } = props\n if (iconColorClass && !CommonBase.isEmpty(iconColorClass)) {\n clsTemp[iconColorClass] = true\n }\n return clsTemp\n})\n\n// 内部方法\nconst _initMain = () => {\n clipboard = Clipboard()\n}\n\n// 生命周期\nonMounted(() => {\n nextTick(() => {\n _initMain()\n })\n})\n\n// 内部触发的事件 on\nconst onClick = () => {\n let text = ''\n const { textLabel } = props\n if (textLabel) {\n switch (typeof textLabel) {\n case 'function':\n text = textLabel()\n break\n case 'string':\n text = textLabel\n break\n }\n }\n if (!CommonBase.isEmpty(text)) {\n clipboard.copy({\n text,\n successCallback: () => {\n optBase.isShowSuccess = true\n emit('onCopySuccess')\n },\n errorCallback: () => {\n optBase.isShowSuccess = false\n emit('onCopyError', text)\n },\n })\n } else {\n emit('onCopyError', text)\n }\n}\n\nconst onHoverIn = () => {\n optBase.isHover = true\n}\n\nconst onHoverOut = () => {\n optBase.isShowSuccess = false\n optBase.isHover = false\n}\n</script>\n","import { createApp } from 'vue'\nimport ElementLoadScreen from './Index.vue'\n\nexport default (options: Record<string, any> = {}) => {\n const VLoadScreen = createApp(ElementLoadScreen, options)\n const tempParent = document.createElement('div')\n const loadScreen: any = VLoadScreen.mount(tempParent)\n return {\n show: (text?: string) => {\n loadScreen.show(text)\n },\n hide: (t: number = 1000) => {\n loadScreen.hide(t)\n }\n }\n}\n","//// component\nimport Input from \"./Input/Index.vue\";\nimport IconFont from \"./IconFont/Index.vue\";\nimport Load from \"./Load/Index.vue\";\nimport LoadFullCenter from \"./Load/FullCenter.vue\";\nimport LoadWarp from \"./Load/Warp.vue\";\nimport LoadIng from \"./Load/Ing.vue\";\nimport LoadScreenComponent from \"./LoadScreen/Index.vue\";\nimport Progress from \"./Progress/Index.vue\";\nimport Slider from \"./Slider/Index.vue\";\nimport Button from \"./Button/Index.vue\";\nimport Link from \"./Link/Index.vue\";\nimport Modal from \"./Modal/Index.vue\";\nimport SlideUpDown from \"./Transition/SlideUpDown.vue\";\nimport Radio from \"./Radio/Index.vue\";\nimport RadioOne from \"./Radio/One.vue\";\nimport Checkbox from \"./CheckBox/Index.vue\";\nimport CheckboxOne from \"./CheckBox/One.vue\";\nimport Badge from \"./Badge/Index.vue\";\nimport CountUp from \"./CountUp/Index.vue\";\nimport Cropper from \"./Cropper/Index.vue\";\nimport Darg from \"./Darg/Index.vue\";\nimport Ellipsis from \"./Ellipsis/Index.vue\";\nimport Form from \"./Form/Index.vue\";\nimport FormGroup from \"./FormGroup/Index.vue\";\nimport FormValidate from \"./Form/Validate.vue\";\nimport Image from \"./Image/Index.vue\";\nimport InputCaptcha from \"./InputCaptcha/Index.vue\";\nimport InputNumber from \"./InputNumber/Index.vue\";\nimport InputNumberButton from \"./InputNumber/Button.vue\";\nimport InputSearch from \"./InputSearch/Index.vue\";\nimport AnchorNav from \"./AnchorNav/Index.vue\";\nimport InputTextarea from \"./InputTextarea/Index.vue\";\nimport Switchery from \"./Switchery/Index.vue\";\nimport Tags from \"./Tags/Index.vue\";\nimport Waterfall from \"./Waterfall/Index.vue\";\nimport WaterfallImage from \"./Waterfall/Image.vue\";\nimport ClipboardComponent from \"./Clipboard/Index.vue\";\n\nexport const components = [\n Input,\n IconFont,\n Load,\n LoadFullCenter,\n LoadWarp,\n LoadIng,\n LoadScreenComponent,\n Progress,\n Slider,\n Button,\n Link,\n Modal,\n SlideUpDown,\n Radio,\n RadioOne,\n Checkbox,\n CheckboxOne,\n Badge,\n CountUp,\n Cropper,\n Darg,\n Ellipsis,\n Form,\n FormGroup,\n FormValidate,\n Image,\n InputCaptcha,\n InputNumber,\n InputNumberButton,\n InputSearch,\n AnchorNav,\n InputTextarea,\n Switchery,\n Tags,\n Waterfall,\n WaterfallImage,\n ClipboardComponent];\n\n//// directive (empty, directives are in Web)\nexport const directives: any = {};\n\n//// provide\nimport Clipboard from \"./Clipboard\";\nimport LoadScreen from \"./LoadScreen\";\nimport { languagePack } from \"./LanguagePack\";\n\nexport const provides: any = {\n clipboard: Clipboard,\n loadScreen: LoadScreen,\n languagePack,\n};\n","//// component\nimport PullToRefresh from \"./PullToRefresh/Index.vue\";\nimport Cell from \"./Cell/Index.vue\";\n\nexport const components: any[] = [PullToRefresh, Cell];\n\n//// directive\nexport const directives: any = {};\n\n//// provide\nexport const provides: any = {};\n","import * as element from \"../Element/componentsInstalls\";\nimport * as mobile from \"./componentsInstalls\";\n\nconst components = [...element.components, ...mobile.components];\nconst directives: any = { ...element.directives, ...mobile.directives };\nconst provides: any = { ...element.provides, ...mobile.provides };\n\nexport default (Vue: any, options: any = {}) => {\n components.forEach((item: any) => {\n Vue.component(item.name, item);\n });\n\n Object.keys(directives).forEach((dk: string) => {\n Vue.directive(directives[dk].name, directives[dk].directive(options[dk] || {}));\n });\n\n const optProvides: any = {};\n Object.keys(provides).forEach((dp: string) => {\n optProvides[dp] = provides[dp](options[dp] || {});\n });\n\n Vue.provide(\"$ClGlobals\", optProvides);\n};\n"],"names":["_formatHandlers","registerFormatHandler","type","handler","CommonBase","value","b","check","obj","arr","lng","lat","lngRegex","latRegex","def","objType","strValue","strDef","value1","value2","arr1","arr2","isInOrder","isEmpty1","isEmpty2","i","json2","list1","list2","key","info1","k","info2","k2","v","json","ua","isAndroid","isFireFox","isTablet","isIOS","newValue","str","sign","newStr","len","isDeep","opt","exclude","clone","newJson","sourceJson","keyArr","tempFormValue","keyJson","removeArr","temp","target","json1","map","isDef","valueType","arrValue","arrTemp","tempValue","vi","tt","isE","list","isFormat","newKey","info","blob","resolve","reject","reader","error","files","file","e","tree","topId","group","id","pId","tId","isShowSelf","pInfo","cId","idKey","cKey","pKey","topPV","isUndefinedCKey","tempList","newList","oldList","oldJson","initJson","newInfo","result","strPId","tempInfo","newStrPid","tempResult","inx","a","ids","newArr","arrParam","jsonParam","min","max","hash","elem","funAsc","funDesc","s1","s2","res","char1","char1Type","char2","char2Type","char","zero","around","lens","r","isRound","range","rand","digits","captcha","extInfo","useValue","fixedNum","newFormat","start","end","newE","arrNum","numValue","isMinus","absValue","isLess1","zeroLenL","indexDot","tempLess1","isCeil","inxPos","isEndFive","isRounding","l","newL","strL","lastL","f","newR","zeroLenR","reg","mapKey","optExt","defEmpty","defUndefined","newOptExt","isEmptyExtUndefinedDef","isMultiply","strFormat","$1","url","name","source","nextCb","rAF","handle","cAF","PromiseCommit","callback","promises","count","keyLen","errors","run","err","CommonPromise","Element$1","cls","c","classs","exist","element","eventName","eventFun","useCapture","text","font","context","tempCls","classTotal","arrRemove","className","arrTotal","arrCls","el","rect","box","winHeight","winWidth","ownerDocument","OwnElement","sty","overflow","overflowX","overflowY","isHide","current","isStop","parent","isCheckContains","newParentEl","parentAttr","elUpperLimit","isLimitReturnSelf","pEl","isLimit","newAttr","isContainsSelf","scrollList","attr","pre","compare","viewEl","docEl","winEl","tempBox","viewBox","newViewEl","tempViewBox","parentEl","newEl","arrEl","prevEl","targetEl","position","select","controlEl","textEl","dropDownEl","arrowEl","containerEl","newContainerEl","isAppendWindow","textWidth","textHeight","dropDownWidth","dropDownHeight","arrowWidth","arrowHeight","arrowWidthHalf","containerWidth","containerHeight","containerScrollWidth","controlOffset","controlPosView","controlViewTop","controlDropDownTotalWidth","controlDropDownTotalHeight","controlTotalHeight","posDown","posUp","posLeft","posRight","arrowPosLeft","arrowPosRight","arrowPosCenterLR","arrowPosCenterLRInfo","textOffset","textOffsetControl","textWidthHalf","textOffsetLeft","textOffsetRight","centerDropDownLeft","centerDiffLeft","centerDiffRight","data","n","fi","listOne","t","newTxt","clientX","clientY","CommonElement","Element","props","__props","emit","__emit","slots","useSlots","refElInput","ref","optIsFocusIng","optIsShowPassword","optTextValue","optLastValueChange","optLastValueFocus","_pageData","optInputType","computed","inputType","isNumber","isPassword","optElName","optIsGroupPrepend","optIsGroupAppend","optIsShowClean","clsParent","clsTemp","styParent","clsContainer","clsGroup","clsPasswordIcon","_valueTimerDelay","_emitChangeDelay","_emitChange","_convertUseValue","_emitFocus","_emitBlur","_emitKeyupEnter","_emitKeydown","_emitKeyup","_emitClear","_emitInit","nextTick","_checkValueNumber","_convertValue","prevValue","isTofixed","isThousand","decimal","decimalValue","_getFocusIndexByLeftValue","showValue","leftValue","arrLeft","regLeft","newLeft","focusIdx","_setFocusSelection","inputValue","focusInfo","inputValueLeft","inputValueRight","checkLeftNum","_getTextValue","textValue","newTextValue","newUserValue","_focus","watch","oldValue","isRun","tempNewValue","tempTextValue","isEmptyNew","isEmptyText","newShowText","_initMain","onMounted","onInputText","onKeydown","onKeyup","keyCode","onInputFocus","onInputBlur","onClear","onShowPasswordValue","getValue","__expose","_createElementBlock","_createElementVNode","_openBlock","_hoisted_1","_hoisted_2","_renderSlot","_ctx","$event","_hoisted_4","_hoisted_5","_cache","color","_createBlock","ClLoadRotaryLine","ClLoadCircleNotch","ClLoadCircleBubble","ClLoadBallColor4","window","factory","this","Waves","$$","toString","isTouchAvailable","isWindow","getWindow","isObject","isDOMNode","getWavesElements","nodes","stringRepr","offset","docElem","win","doc","convertStyle","styleObj","style","prop","Effect","velocity","ripple","pos","relativeY","relativeX","scale","translate","rippleStyle","duration","ripples","removeRipple","TagWrapper","wrapper","elementStyle","backgroundColor","diff","delay","TouchHandler","allow","eType","getWavesEffectElement","showEffect","hidden","timer","hideEffect","hideEvent","removeListeners","touchMove","moveEvent","options","body","elements","classes","tagName","elementsLen","off","centre","mousedown","hideRipple","mouseup","_waves","binding","newOptions","isEmpty","colorBg","wavesBind","refElTopParent","optIsRunLoading","optIsShowBackDrop","optIsBackDropRunLoading","optIsShowLabel","optIsShowIcon","optIsDisabled","optIsShowBackDropLoad","optWavesColor","optLoadPos","optLoadSize","size","clsIcon","clsBodyBackdropMain","styBtnChild","_runLoading","_runLoadEnd","_emitClick","onClick","_hoisted_3","_toDisplayString","_createVNode","ClLoad","_Fragment","_hoisted_6","optIsLink","event","_emitHoverIn","_emitHoverOut","onHoverIn","onHoverOut","_component_router_link","_getIconClass","iconClass","iconStyle","_normalizeClass","refElDialog","refElWrapper","optBase","reactive","clsModal","styWrapper","styDialog","_emitClickBack","_closeHide","_calculationAlignTop","_calculationAlignLeft","onClickBack","onTransitionEnter","onTransitionLeave","_Transition","_vShow","_withDirectives","refElTransition","refElBtnSubmit","_emitClickSubmit","_emitClickClose","onSubmit","onClose","isDisabled","ClModalTransition","ClButton","height","minHeight","isLoadIng","ClLoadIng","defaultTrigger","defaultClass","defaultOptions","Tooltip","eventInfo","on","triggers","container","elWrap","popperOptions","createPopper","arrAdd","tempDiv","newBodyHtml","isInitShow","header","headerValue","relatedEl","isRunTrigger","func","_tooltip","bodyHtml","newOption","tooltip","bindingValue","kp","vp","trigger","theme","isHtml","isFixedVisible","isStopPropagation","newIsInit","isValueObject","isUpdContent","newRefreshInx","oldRefreshInx","newRunTrigger","oldRunTrigger","tooltipDirectives","tooltipCommon","_optKeyIndex","_listDataToJson","_optIsFirstDataFinish","clsTipFun","item","styContainerFun","width","_emitModelValue","_getValue","_convertListToJson","_checkValueInList","selectValue","_setValue","_renderList","_cbIndex","_normalizeStyle","_directive_cltooltip","_createTextVNode","optForId","clsTip","tipIcon","checked","_unref","optKeyIndex","dataList","isAll","_getEffectiveValue","effectiveValue","isExist","selectArr","selectValueStr","tempCheck","clsCheckbox","validateProps","optTextNum","refElText","optValue","_initValue","animationTime","separator","objCountUp","CountUp","refElCropper","refElFileLabel","ran","optCropper","optPreview","optAlignLine","alignLine","clsPreview","previewShape","_setFixedNumber","fixedNumber","_setCropperImgSrc","src","newSrc","joinStr","onRealTime","imgData","onImgLoad","isSuccess","onChangeFileAgain","onClickFileLabel","onLarge","onSmall","onRotateLeft","onRotateRight","onReduction","onSave","cropperData","_mergeProps","ClLoadFullCenter","_hoisted_8","_hoisted_10","refElModal","_getOutImageBase64","onImgSave","ClModal","ClCropperBase","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread2","_defineProperty","_typeof","_extends","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","version","userAgent","pattern","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","fn","matches","selector","getParentOrHost","closest","ctx","includeCTX","R_SPACE","toggleClass","state","css","val","matrix","selfOnly","appliedTransforms","transform","matrixFn","find","iterator","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","elRect","top","left","bottom","right","containerRect","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","includeDragEl","currentChild","children","Sortable","lastChild","last","index","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","indexOfObject","includeSelf","gotSelf","elemCSS","extend","dst","isRectEqual","rect1","rect2","_throttleTimeout","throttle","ms","args","_this","cancelThrottle","scrollBy","x","y","Polymer","$","expando","AnimationStateManager","animationStates","animationCallbackId","child","fromRect","childMatrix","animating","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","currentRect","translateX","translateY","repaint","plugins","defaults","PluginManager","plugin","option","p","sortable","evt","eventNameGlobal","pluginName","initialized","modified","eventProperties","modifiedValue","dispatchEvent","_ref","rootEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","allEventProperties","_excluded","pluginEvent","dragEl","ghostEl","nextEl","lastDownEl","cloneHidden","moved","_hideGhostForTarget","_unhideGhostForTarget","_dispatchEvent","dragElClone","ghostElClone","ghostMatrixLast","activeGroup","awaitingDragStarted","ignoreNextClick","sortables","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","pastFirstInvertThresh","isCircumstantialInvert","targetMoveDistance","ghostRelativeParent","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","_detectDirection","elCSS","elWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","secondChildWidth","touchingSideChild2","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","ret","threshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","to","from","sameGroup","otherGroup","originalGroup","nearestEmptyInsertDetectEvent","nearest","_checkOutsideTargetEl","dataTransfer","preventOnFilter","touch","originalTarget","filter","_saveInputCheckedState","criteria","dragStartFn","_disableDraggable","_nextTick","fallback","inserted","fallbackTolerance","fallbackOffset","ghostMatrix","relativeScrollOffset","dx","dy","boundaryCheckInfo","SortableExt","cssMatrix","revert","activeSortable","isOwner","canSort","fromSortable","completedFired","dragOverEvent","extra","completed","after","_onMove","changed","capture","insertion","elLastChild","_ghostIsLast","_ghostIsFirst","firstChild","direction","targetBeforeFirstSwap","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","_getSwapDirection","sibling","dragIndex","nextSibling","moveVector","_unsilent","crossResult","_cancelNextTick","_globalDragOver","order","_generateId","useAnimation","items","store","willInsertAfter","onMoveFn","retVal","spacer","swapThreshold","invertedSwapThreshold","invertSwap","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","sum","root","inputs","idx","_len","_key","autoScrolls","scrollEl","scrollRootEl","scrolling","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","AutoScrollPlugin","AutoScroll","_ref2","clearPointerElemChangedInterval","clearAutoScrolls","autoScroll","ogElemScroller","newElem","isFallback","sens","speed","scrollThisInstance","scrollCustomFn","layersOut","currentParent","canScrollX","canScrollY","scrollWidth","scrollHeight","scrollPosX","scrollPosY","vx","vy","scrollOffsetY","scrollOffsetX","drop","dispatchSortableEvent","hideGhostForTarget","unhideGhostForTarget","toSortable","Revert","_ref3","Remove","_ref4","parentSortable","tempElBox","attrData","moveEl","isCheck","boundary","isOut","elOffset","boundaryEl","moveElOffset","checkTop","checkRight","checkBottom","checkLeft","wrapBody","isWrap","cross","isCross","isSameStruct","newCls","clsArr","s","td","isRunCb","assistData","arrSortId","checkCb","checkResult","isAdd","loadEl","refElTop","_emitChangeSort","arrSort","_initSortable","placeholderCls","handleCls","selectCls","isBoundaryOut","boundaryElement","isWrapBody","wrapBodyElement","isDisabledInner","isDisabledOutsideInto","isGroupSameStruct","groupDropEndBeforeCallback","keyAttrId","refElParent","refElSpan","optTitle","title","_initTipPos","pW","cW","isPosSpan","isPosParent","DelayFun","cb","newCb","AnimateEasing","d","startPos","endPos","easing","self","fnCb","optParent","_validateEl","_runScrollErrorEl","errEl","preScroll","pElError","isErrElP","isErrElF","tempEL","pScrolls","validateEl","dayjs","localeData","objectSupport","isSameOrAfter","isSameOrBefore","isoWeek","utc","timezone","lunar","CommDay","day","optionBase","objDay","num","time1","timeDiff2","format","ZHCN","EN","LanguagePack","isEmptyType","packageData","typeInfo","ki","kv","dataDef","common","jsonDef","jsonValue","pageJson","pageCommon","keyTemp","jsonTempDef","jsonTempValue","CommonDay","Language","useLanguage","optPageLanguage","page","getPageLanguage","getLanguageType","_clGlobals","inject","refElMsg","_pageElement","clsErr","_initRules","rules","messages","tempR","isCheckOne","_mergeRules","cancel","param","message","arrKey","newRules","newMessages","m","_getErrData","errData","totalRules","_getTotalMessages","lang","toRaw","vMsg","langTypeInfo","msg","_getErrMsg","totalMessages","rMsg","_getForm","_setThemeType","_checkRun","_setMsg","msgEl","_validate","msgList","_newValue","defOption","Lazy","loading","elImage","observerOptions","entries","entry","timeoutId","useLazyload","refEl","lazy","onUnmounted","newVal","optSrcUrl","refElImage","styImg","fit","clsSendBtn","_emitSend","onChange","onKeyupEnter","onSend","countdownMax","countdown","isSend","isCountdown","_component_cl_input","Drag","clientXYInfo","tempRun","Resize","refElButton","_emitLongDownStart","_emitLongDownEnd","_checkLongDownStart","_stopLongDownInterval","_runLongDownStart","_runLongDownEnd","_runLongDownIng","dragConfig","DragEvent","optBtn","optIsShowTextPrepend","optTextDecimal","step","newDecimal","optIsFillZero","clsIconSubtract","icon","btnTheme","clsIconAdd","_calculationOperateValue","subtractDisabled","addDisabled","tempValueInfo","isLoop","minIsEmpty","maxIsEmpty","tempNum","tempStr","_setFocus","isFocus","_searchTimerDelay","onInputChange","onInputKeydown","onInputKeyup","onButtonLongDown","onButtonLongDownEnd","_component_cl_inputnumber_button","_prevValue","optSearchValue","optSlotAttrName","_stopRunDelay","_emitSearch","onFocus","onBlur","onClickIcon","ClInput","onBeforeEnter","onEnter","done","elHeight","onTransitionDone","onAfterEnter","onBeforeLeave","onLeave","onAfterLeave","AxiosRequest","optionsAll","newExtInfo","startTime","axios","response","initResData","errCbResult","errCode","errMsg","initErrData","headers","formData","pk","pv","methodType","fr","resFr","resData","contentDisposition","fileName","fileType","lastIndex","blobOption","link","extOptions","reqHeaders","headerData","ext","timeStart","timeout","extCode","successCode","code","config","requestKeyMerge","isRequestCancelRepeat","qs","requestKey","arrKeys","arrCancel","sk","retryDelay","refElContainer","optColorChecked","colorChecked","strColor","optColorUnChecked","colorUnChecked","styContainer","isOpen","styButton","_initMergeGlobalsOption","_calculationBtnLeft","buttonWidth","onToggle","changeCb","isEmitChange","Clipboard","_clearSelection","_clipboardBase","clipboardObj","ClipboardJS","tempEl","objClipboard","languagePack","refElContent","pullDistance","_startY","_isTracking","_isPulling","_scrollTop","_rafId","_pendingDeltaY","_isVirtual","indicatorStyle","indicatorText","_isAtTop","_getClientY","onScrollerScroll","onScrollEnd","_startMouseListeners","onPullMove","onPullEnd","_stopMouseListeners","onPullStart","_resetPull","DynamicScroller","active","DynamicScrollerItem","router","useRouter","$slots","_hoisted_7","_hoisted_9","_timeOutDestroyContainer","_getBody","_getTopEl","_checkContainer","_creatorContainer","_destroyContainer","_creatorItem","refElBar","optShowNumText","txt","showNumText","isShowNum","showNumTrigger","clsBar","styBar","justifyContent","styNum","showNumColor","styCircularBarRight","styCircularBarLeft","_initPost","showNumPos","_initRatio","ratio","newRatio","rotate","rotateRight","rotateLeft","isIncrease","timeRight","timeLeft","diffRight","diffLeft","ResizeEvent","elBar","elNum","barW","numW","isOverflow","_selfTop","_runDragStart","_e","_runDraggIng","move","_runDragEnd","onMouseOver","onMouseOut","vCltooltip","optTooltipValue","optTooltipPos","_showTooltip","_hideTooltip","_getDraggIngInfo","_runMoveIng","onMoveLeft","onMoveRight","onDblClick","refElTrack","refBtnStart","refBtnEnd","optBar","optDotsList","optMarksList","optTotalNumTrack","optIsShowMarks","optIsBarDrag","isRange","isBarDrag","newIsBarDrag","optFunMarkStyle","mInfo","tempStart","tempEnd","_calculationPercentage","_calculationRatioByValue","total","_calculationValueByRatio","numType","_checkMinMax","_initMarks","_initDots","intervalRatio","halfRatio","valueRatio","_refreshDotsStatus","isShowDot","isShowDotActive","isShowForever","barStart","barEnd","dInfo","isActive","isShow","_bindBar","_setBtnTooltipByBarMove","_bindValue","tempArr","tempStartInfo","tempEndInfo","startRatio","endRatio","_getCheckUseRatio","listDots","_calculationTrackClickValue","updType","isInit","temp0","temp1","onClickTrack","elTrack","trackClientItem","newValueInfo","onButtonMoveIng","moveInfo","btnType","onButtonMoveEnd","onButtonDblClick","onBarMoveStart","onBarMoveIng","onBarMoveEnd","onBarHoverIn","onBarHoverOut","onHoverMarkIn","onHoverMarkOut","provide","moveRatio","moveType","startNum","listLen","startIndex","ClSliderBar","ClSliderButton","dIndex","ClSliderDot","mIndex","clsLabel","clsContent","currentAnchor","isFixed","scrollToAnchor","anchorId","handleScroll","scrollTop","windowHeight","anchorElements","refElTextarea","heightMax","_calculationHeight","optIsShowDisabled","optNewList","optHlight","clsTag","styTag","optFunShowTextLabel","_convertListInfoDisabled","disabled","isItemDisabled","_convertList","newItem","_changeDisabled","_bindHlight","onClickTag","_event","onRemoveItem","onRemoveAll","existInfo","_withModifiers","refElList","optList","optColWidth","pWidth","colNum","spacing","newWidth","isWidth","isCols","averageW","useTotalW","optColNum","boxWidth","newCol","maxCol","optOffsetX","maxColNum","_checkExistItemKey","itemKey","_initList","_initColPosY","_getColItemX","w","_initLayoutItems","elItems","animationName","h","yInx","elChild","_initRender","clipboard","iconColorClass","textLabel","LoadScreen","VLoadScreen","createApp","ElementLoadScreen","tempParent","loadScreen","components","Input","IconFont","Load","LoadFullCenter","LoadWarp","LoadIng","LoadScreenComponent","Progress","Slider","Button","Link","Modal","SlideUpDown","Radio","RadioOne","Checkbox","CheckboxOne","Badge","Cropper","Darg","Ellipsis","Form","FormGroup","FormValidate","Image","InputCaptcha","InputNumber","InputNumberButton","InputSearch","AnchorNav","InputTextarea","Switchery","Tags","Waterfall","WaterfallImage","ClipboardComponent","directives","provides","PullToRefresh","Cell","element.components","mobile.components","element.directives","mobile.directives","element.provides","mobile.provides","installs","Vue","dk","optProvides","dp"],"mappings":"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"}
|