@react-hive/honey-utils
Version:
A lightweight TypeScript utility library providing a collection of helper functions for common programming tasks
2 lines • 8.55 kB
JavaScript
(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function n(e,t){if(!e)throw new Error(t)}e.r(t),e.d(t,{FOCUSABLE_HTML_TAGS:()=>ie,assert:()=>n,blobToFile:()=>Me,calculateCenterOffset:()=>we,calculateEuclideanDistance:()=>te,calculateMovingSpeed:()=>ne,calculatePercentage:()=>re,camelToDashCase:()=>K,camelToWords:()=>J,centerElementInContainer:()=>be,chunk:()=>M,cloneBlob:()=>le,compact:()=>v,compose:()=>C,definedProps:()=>Pe,delay:()=>R,difference:()=>T,downloadFile:()=>Oe,everyAsync:()=>Y,fileListToFiles:()=>xe,filterParallel:()=>B,filterSequential:()=>X,findAsync:()=>q,getDOMRectIntersectionRatio:()=>oe,getElementOffsetRect:()=>se,getFocusableHtmlElements:()=>me,getLocalStorageCapabilities:()=>Ae,getXOverflowWidth:()=>ye,getYOverflowHeight:()=>pe,hasXOverflow:()=>de,hasYOverflow:()=>ge,hashString:()=>ee,intersection:()=>F,invokeIfFunction:()=>N,isAnchorHtmlElement:()=>ce,isArray:()=>O,isBlob:()=>m,isBool:()=>s,isContentEditableHtmlElement:()=>ue,isDate:()=>f,isDecimal:()=>A,isDefined:()=>a,isEmptyArray:()=>E,isEmptyObject:()=>u,isError:()=>h,isFile:()=>Ee,isFiniteNumber:()=>b,isFunction:()=>k,isHtmlElementFocusable:()=>fe,isInteger:()=>S,isLocalStorageReadable:()=>Se,isMap:()=>g,isNil:()=>i,isNilOrEmptyString:()=>V,isNull:()=>r,isNumber:()=>o,isObject:()=>c,isPromise:()=>I,isRegExp:()=>y,isSet:()=>p,isString:()=>G,isSymbol:()=>w,isUndefined:()=>l,isValidDate:()=>d,moveFocusWithinContainer:()=>he,noop:()=>_,not:()=>L,once:()=>H,parse2DMatrix:()=>ae,parseFileName:()=>ve,pipe:()=>P,readFilesFromDataTransfer:()=>Te,reduceAsync:()=>$,retry:()=>j,runParallel:()=>W,runSequential:()=>z,someAsync:()=>U,splitStringIntoWords:()=>Q,timeout:()=>D,toKebabCase:()=>Z,traverseFileSystemDirectory:()=>Fe,unique:()=>x});const r=e=>null===e,i=e=>null==e,a=e=>null!=e,l=e=>void 0===e,o=e=>"number"==typeof e,s=e=>"boolean"==typeof e,c=e=>"object"==typeof e,u=e=>c(e)&&!r(e)&&0===Object.keys(e).length,f=e=>e instanceof Date,m=e=>e instanceof Blob,h=e=>e instanceof Error,d=e=>f(e)&&!isNaN(e.getTime()),y=e=>e instanceof RegExp,g=e=>e instanceof Map,p=e=>e instanceof Set,w=e=>"symbol"==typeof e,b=e=>o(e)&&isFinite(e),S=e=>o(e)&&Number.isInteger(e),A=e=>b(e)&&!Number.isInteger(e),O=e=>Array.isArray(e),E=e=>O(e)&&0===e.length,v=e=>e.filter(Boolean),x=e=>[...new Set(e)],M=(e,t)=>(n(t>0,"Chunk size must be greater than 0"),Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,(r+1)*t))),F=(...e)=>{if(0===e.length)return[];if(1===e.length)return[...e[0]];const[t,...n]=e;return x(t).filter(e=>n.every(t=>t.includes(e)))},T=(e,t)=>e.filter(e=>!t.includes(e)),P=(...e)=>t=>e.reduce((e,t)=>t(e),t),C=(...e)=>t=>e.reduceRight((e,t)=>t(e),t),_=()=>{},k=e=>"function"==typeof e,L=e=>(...t)=>!e(...t),N=(e,...t)=>"function"==typeof e?e(...t):e,R=e=>new Promise(t=>setTimeout(t,e)),D=async(e,t,n="Operation timed out")=>{try{return await Promise.race([e,R(t).then(()=>Promise.reject(new Error(n)))])}finally{}},j=(e,{maxAttempts:t=3,delayMs:n=300,backoff:r=!0,onRetry:i}={})=>async(...a)=>{let l;for(let o=1;o<=t;o++)try{return await e(...a)}catch(e){if(l=e,o<t){i?.(o,e);const t=r?n*2**(o-1):n;await R(t)}}throw l},H=e=>{let t,n=!1;return function(...r){return n||(n=!0,t=e.apply(this,r)),t}},I=e=>k(e?.then),z=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++)n.push(await t(e[r],r,e));return n},W=async(e,t)=>Promise.all(e.map(t)),X=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++){const i=e[r];await t(i,r,e)&&n.push(i)}return n},B=async(e,t)=>{const n=await W(e,async(e,n,r)=>!!await t(e,n,r)&&e);return v(n)},U=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return!0;return!1},Y=async(e,t)=>{for(let n=0;n<e.length;n++)if(!await t(e[n],n,e))return!1;return!0},$=async(e,t,n)=>{let r=n;for(let n=0;n<e.length;n++)r=await t(r,e[n],n,e);return r},q=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return e[n];return null},G=e=>"string"==typeof e,V=e=>""===e||i(e),Z=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),K=e=>{const t=e.charAt(0),n=e.slice(1);return t.toLowerCase()+n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)},J=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),Q=e=>e.split(" ").filter(Boolean),ee=e=>{let t=5381;for(let n=0;n<e.length;n++)t=33*t^e.charCodeAt(n);return(t>>>0).toString(36)},te=(e,t,n,r)=>{const i=n-e,a=r-t;return Math.hypot(i,a)},ne=(e,t)=>Math.abs(e/t),re=(e,t)=>e*t/100,ie=["INPUT","SELECT","TEXTAREA","BUTTON","A"],ae=e=>{const t=window.getComputedStyle(e).getPropertyValue("transform").match(/^matrix\((.+)\)$/);if(!t)return{translateX:0,translateY:0,scaleX:1,scaleY:1,skewX:0,skewY:0};const[n,r,i,a,l,o]=t[1].split(", ").map(parseFloat);return{translateX:l,translateY:o,scaleX:n,scaleY:a,skewX:i,skewY:r}},le=e=>new Blob([e],{type:e.type}),oe=(e,t)=>Math.max(0,Math.min(e.right,t.right)-Math.max(e.left,t.left))*Math.max(0,Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top))/(t.width*t.height),se=e=>new DOMRect(e.offsetLeft,e.offsetTop,e.clientWidth,e.clientHeight),ce=e=>"A"===e.tagName,ue=e=>"true"===e.getAttribute("contenteditable"),fe=e=>{if(!e)return!1;const t=window.getComputedStyle(e);if("hidden"===t.visibility||"none"===t.display)return!1;if("disabled"in e&&e.disabled)return!1;const n=e.getAttribute("tabindex");return"-1"!==n&&(ie.includes(e.tagName)?!ce(e)||""!==e.href:!!ue(e)||null!==n)},me=e=>Array.from(e.querySelectorAll("*")).filter(fe),he=(e,t=null,{wrap:n=!0,getNextIndex:r}={})=>{const i=document.activeElement,a=t??i?.parentElement;if(!i||!a)return;const l=me(a);if(0===l.length)return;const o=l.indexOf(i);if(-1===o)return;let s;r?s=r(o,e,l):"next"===e?(s=o+1,s>=l.length&&(s=n?0:null)):(s=o-1,s<0&&(s=n?l.length-1:null)),null!==s&&l[s]?.focus()},de=e=>e.scrollWidth>e.clientWidth,ye=e=>Math.max(0,e.scrollWidth-e.clientWidth),ge=e=>e.scrollHeight>e.clientHeight,pe=e=>Math.max(0,e.scrollHeight-e.clientHeight),we=({overflowSize:e,containerSize:t,elementOffset:n,elementSize:r})=>{if(e<=0)return 0;const i=n+r/2-t/2;return-Math.max(0,Math.min(i,e))},be=(e,t,{axis:n="both"}={})=>{let r=0,i=0;"x"!==n&&"both"!==n||(r=we({overflowSize:ye(e),containerSize:e.clientWidth,elementOffset:t.offsetLeft,elementSize:t.clientWidth})),"y"!==n&&"both"!==n||(i=we({overflowSize:pe(e),containerSize:e.clientHeight,elementOffset:t.offsetTop,elementSize:t.clientHeight})),e.style.transform=`translate(${r}px, ${i}px)`},Se=()=>{if("undefined"==typeof window||!window.localStorage)return!1;try{return window.localStorage.getItem("__non_existing_key__"),!0}catch{return!1}},Ae=()=>{if(!Se())return{readable:!1,writable:!1};try{const e="__test_write__";return window.localStorage.setItem(e,"1"),window.localStorage.removeItem(e),{readable:!0,writable:!0}}catch{}return{readable:!0,writable:!1}},Oe=(e,{fileName:t,target:r}={})=>{if(l(document))return;const i=document.createElement("a");let a=null;try{const n=G(e)?e:a=URL.createObjectURL(e);i.href=n,t&&(i.download=t),r&&(i.target=r),document.body.appendChild(i),i.click()}finally{i.remove(),a&&setTimeout(()=>{n(a,"Object URL should not be null"),URL.revokeObjectURL(a)},0)}},Ee=e=>e instanceof File,ve=e=>{const t=e.lastIndexOf(".");return t<=0||t===e.length-1?[e,""]:[e.slice(0,t),e.slice(t+1).toLowerCase()]},xe=e=>{if(!e)return[];const t=[];for(let n=0;n<e.length;n++)t.push(e[n]);return t},Me=(e,t)=>new File([e],t,{type:e.type}),Fe=async(e,{skipFiles:t=[".DS_Store","Thumbs.db","desktop.ini","ehthumbs.db",".Spotlight-V100",".Trashes",".fseventsd","__MACOSX"]}={})=>{const n=new Set(t),r=await(async e=>{const t=e.createReader(),n=async()=>new Promise((e,r)=>{t.readEntries(async t=>{if(t.length)try{const r=await n();e([...t,...r])}catch(e){r(e)}else e([])},r)});return n()})(e);return(await W(r,async e=>e.isDirectory?Fe(e,{skipFiles:t}):n.has(e.name)?[]:[await new Promise((t,n)=>{e.file(t,n)})])).flat()},Te=async(e,t={})=>{const n=e?.items;if(!n)return[];const r=[];for(let e=0;e<n.length;e++){const i=n[e];if("webkitGetAsEntry"in i){const e=i.webkitGetAsEntry?.();if(e?.isDirectory){r.push(Fe(e,t));continue}if(e?.isFile){r.push(new Promise((t,n)=>e.file(e=>t([e]),n)));continue}}const a=i.getAsFile();a&&r.push(Promise.resolve([a]))}return(await Promise.all(r)).flat()},Pe=e=>Object.entries(e).reduce((e,[t,n])=>(void 0!==n&&(e[t]=n),e),{});module.exports=t})();
//# sourceMappingURL=index.cjs.map