UNPKG

@jecloud/utils

Version:

JECloud 工具库

1 lines 4.16 kB
var t=this&&this.__assign||function(){return t=Object.assign||function(t){for(var e,o=1,n=arguments.length;o<n;o++)for(var r in e=arguments[o])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},t.apply(this,arguments)};import{upperFirst as e,isString as o,toNumber as n,isNumber as r,isPlainObject as i}from"lodash-es";import{isNumeric as s}from"../base";export function highlightElement(t){var e="is--highlight";hasClass(t,e)||(addClass(t,e),setTimeout((function(){removeClass(t,e)}),1e3))}export function getOffsetBox(t,e){var o={x:t.offsetLeft,y:t.offsetTop};if(e&&t.offsetParent!=e){var n=getOffsetBox(t.offsetParent,e);o.x+=n.x,o.y+=n.y}return o}export function getBoundingClientRect(t){return t&&t.getBoundingClientRect?t.getBoundingClientRect():0}function a(t){return(t||"").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g,"")}export function hasClass(t,e){if(!t||!e)return!1;if(-1!==e.indexOf(" "))throw new Error("className should not contain space.");return t.classList?t.classList.contains(e):(" "+t.className+" ").indexOf(" "+e+" ")>-1}export function addClass(t,e){if(t){for(var o=t.className,n=(e||"").split(" "),r=0,i=n.length;r<i;r++){var s=n[r];s&&(t.classList?t.classList.add(s):hasClass(t,s)||(o+=" "+s))}t.classList||(t.className=o)}}export function removeClass(t,e){if(t&&e){for(var o=e.split(" "),n=" "+t.className+" ",r=0,i=o.length;r<i;r++){var s=o[r];s&&(t.classList?t.classList.remove(s):hasClass(t,s)&&(n=n.replace(" "+s+" "," ")))}t.classList||(t.className=a(n))}}export function toggleClass(t,e,n){o(t)&&(n=e,e=t,t=document.body),(null!=n?n:!hasClass(t,e))?!hasClass(t,e)&&addClass(t,e):hasClass(t,e)&&removeClass(t,e)}export function getViewportOffset(t){var e=document.documentElement,o=e.scrollLeft,n=e.scrollTop,r=e.clientLeft,i=e.clientTop,s=window.pageXOffset,a=window.pageYOffset,c=getBoundingClientRect(t),l=c.left,d=c.top,f=c.width,u=c.height,p=l+s-((s||o)-(r||0)),m=d+a-((a||n)-(i||0)),g=window.document.documentElement.clientWidth,h=window.document.documentElement.clientHeight;return{left:p,top:m,right:g-f-p,bottom:h-u-m,rightIncludeBody:g-p,bottomIncludeBody:h-m}}export function hackCss(o,n){var r,i={};return["webkit","Moz","ms","OT"].forEach((function(t){i[""+t+e(o)]=n})),t(t({},i),((r={})[o]=n,r))}export function on(t,e,o){t&&e&&o&&t.addEventListener(e,o,!1)}export function off(t,e,o){t&&e&&o&&t.removeEventListener(e,o,!1)}export function copy(t){var e=window.clipboardData;if(e)e.setData("Text",t);else{var o=document.createElement("textarea");o.value=t,document.body.appendChild(o),o.select(),document.execCommand("copy"),document.body.removeChild(o)}}export function getBodyHeight(){return getDomNode().height}export function getBodyWidth(){return getDomNode().width}export function getDomNode(){var t=document.documentElement,e=document.body;return{scrollTop:t.scrollTop||e.scrollTop,scrollLeft:t.scrollLeft||e.scrollLeft,height:t.clientHeight||e.clientHeight,width:t.clientWidth||e.clientWidth}}export function getEventTargetNode(t,e,o,n){for(var r,i=t.target;i&&i.nodeType&&i!==document;){if(o&&hasClass(i,o)&&(!n||n(i)))r=i;else if(i===e)return{flag:!o||!!r,container:e,targetElem:r};i=i.parentNode}return{flag:!1}}export function getPaddingSize(t){var e={top:0,bottom:0,left:0,right:0};if(t){var o=getComputedStyle(t);return Object.assign(e,{top:computedDomSize(o.paddingTop),bottom:computedDomSize(o.paddingBottom),left:computedDomSize(o.paddingLeft),right:computedDomSize(o.paddingRight)})}return e}export function getBorderSize(t){var e={top:0,bottom:0,left:0,right:0};if(t){var o=getComputedStyle(t);return Object.assign(e,{top:computedDomSize(o.borderTopWidth),bottom:computedDomSize(o.borderBottomWidth),left:computedDomSize(o.borderLeftWidth),right:computedDomSize(o.borderRightWidth)})}return e}export function getOffsetWidth(t){return t?t.offsetWidth:0}export function getOffsetHeight(t){return t?t.offsetHeight:0}export function computedDomSize(t){i(t)||(t={size:t});var e=t.size,a=t.unit,c=t.parentSize,l=0;return o(e)&&"auto"!==e?(e=e.toLocaleLowerCase()).endsWith("px")?l=n(e.replace("px","")):e.endsWith("%")?l=r(c)?n(e.replace("%",""))*c/100:e:s(e)&&(l=n(e)):l=e,isNaN(l)?e:a?""+l+a:l}