| import type { CSSProperties } from 'vue'; | 
| import _ from 'lodash'; | 
|   | 
| export const hasClass = (ele: RefType<any>, cls: string): any => { | 
|   return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')); | 
| }; | 
|   | 
| export const addClass = (ele: RefType<any>, cls: string, extracls?: string): any => { | 
|   if (!hasClass(ele, cls)) ele.className += ' ' + cls; | 
|   if (extracls) { | 
|     if (!hasClass(ele, extracls)) ele.className += ' ' + extracls; | 
|   } | 
| }; | 
|   | 
| export const removeClass = (ele: RefType<any>, cls: string, extracls?: string): any => { | 
|   if (hasClass(ele, cls)) { | 
|     const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)'); | 
|     ele.className = ele.className.replace(reg, ' ').trim(); | 
|   } | 
|   if (extracls) { | 
|     if (hasClass(ele, extracls)) { | 
|       const regs = new RegExp('(\\s|^)' + extracls + '(\\s|$)'); | 
|       ele.className = ele.className.replace(regs, ' ').trim(); | 
|     } | 
|   } | 
| }; | 
|   | 
| export const toggleClass = (flag: boolean, clsName: string, target?: RefType<any>): any => { | 
|   const targetEl = target || document.body; | 
|   let { className } = targetEl; | 
|   className = className.replace(clsName, ''); | 
|   targetEl.className = flag ? `${className} ${clsName} ` : className; | 
| }; | 
|   | 
| export function getStyle(el: Element, attr: keyof CSSStyleDeclaration) { | 
|   //@ts-ignore | 
|   return el.currentStyle ? el.currentStyle[attr] : getComputedStyle(el, null)[attr]; | 
| } | 
|   | 
| export const setStyle = ( | 
|   element: HTMLElement, | 
|   styleName: CSSProperties | keyof CSSProperties, | 
|   value?: string | number | 
| ) => { | 
|   if (!element || !styleName) return; | 
|   | 
|   if (_.isObject(styleName)) { | 
|     //@ts-ignore | 
|     Object.entries(styleName).forEach(([prop, value]) => setStyle(element, prop, value)); | 
|   } else { | 
|     const key: any = _.camelCase(styleName); | 
|     element.style[key] = value as any; | 
|   } | 
| }; |