@react-hive/honey-utils 3.30.0 → 3.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -648,7 +648,8 @@ function divide(a: number, b: number): number {
648
648
 
649
649
  #### Layout
650
650
 
651
- - `calculateCenterOffset(options: CalculateCenterOffsetOptions): number` - Calculates a clamped offset value that centers an element within a container along a single axis. Returns a negative value suitable for use in a CSS `translate` transform, or `0` when no overflow exists.
651
+ - `calculateCenterOffset(options: CalculateCenterOffsetOptions): number` - Calculates the raw offset required to center an element within a container along a single axis. Returns a negative value suitable for use in a CSS `translate` transform.
652
+ - `clampOffsetToOverflow(offset: number, overflowSize: number): number` - Clamps a negative translate offset to the available overflow bounds. Returns `0` when no overflow exists.
652
653
 
653
654
  ### DOM Utilities
654
655
 
package/dist/README.md CHANGED
@@ -648,7 +648,8 @@ function divide(a: number, b: number): number {
648
648
 
649
649
  #### Layout
650
650
 
651
- - `calculateCenterOffset(options: CalculateCenterOffsetOptions): number` - Calculates a clamped offset value that centers an element within a container along a single axis. Returns a negative value suitable for use in a CSS `translate` transform, or `0` when no overflow exists.
651
+ - `calculateCenterOffset(options: CalculateCenterOffsetOptions): number` - Calculates the raw offset required to center an element within a container along a single axis. Returns a negative value suitable for use in a CSS `translate` transform.
652
+ - `clampOffsetToOverflow(offset: number, overflowSize: number): number` - Clamps a negative translate offset to the available overflow bounds. Returns `0` when no overflow exists.
652
653
 
653
654
  ### DOM Utilities
654
655
 
@@ -6,6 +6,13 @@ export interface CenterElementInContainerOptions {
6
6
  * @default 'both'
7
7
  */
8
8
  axis?: Axis;
9
+ /**
10
+ * Whether the calculated translate offset should be clamped
11
+ * to the container overflow bounds.
12
+ *
13
+ * @default true
14
+ */
15
+ shouldClamp?: boolean;
9
16
  }
10
17
  /**
11
18
  * Translates a container so that a target element is visually centered within its visible bounds.
@@ -15,16 +22,15 @@ export interface CenterElementInContainerOptions {
15
22
  *
16
23
  * ### Behavior
17
24
  * - Centering is calculated independently for each enabled axis.
18
- * - Translation is applied only when the container content overflows on that axis.
19
- * - When no overflow exists, the container remains untransformed for that axis.
25
+ * - Raw centering offset is always calculated first.
26
+ * - Offset clamping is optional and controlled by `shouldClamp`.
20
27
  *
21
28
  * ### Notes
22
29
  * - This function performs immediate DOM reads and writes.
23
- * - The resulting transform is clamped to valid scrollable bounds.
24
30
  *
25
31
  * @param containerElement - The container whose content is translated.
26
32
  * @param elementToCenter - The descendant element to align to the container’s center.
27
- * @param options - Optional configuration controlling which axis or axes are centered.
33
+ * @param options - Optional configuration controlling centering behavior.
28
34
  */
29
- export declare const centerElementInContainer: (containerElement: HTMLElement, elementToCenter: HTMLElement, { axis }?: CenterElementInContainerOptions) => void;
35
+ export declare const centerElementInContainer: (containerElement: HTMLElement, elementToCenter: HTMLElement, { axis, shouldClamp }?: CenterElementInContainerOptions) => void;
30
36
  export {};
@@ -1,11 +1,4 @@
1
1
  export interface CalculateCenterOffsetOptions {
2
- /**
3
- * Total overflow size for the axis.
4
- *
5
- * Represents how much larger the content is compared to the visible
6
- * container size (e.g. scroll width minus client width).
7
- */
8
- overflowSize: number;
9
2
  /**
10
3
  * Visible size of the container along the axis.
11
4
  *
@@ -26,14 +19,8 @@ export interface CalculateCenterOffsetOptions {
26
19
  elementSize: number;
27
20
  }
28
21
  /**
29
- * Calculates the offset required to center an element within a container along a single axis.
30
- *
31
- * The returned value is clamped so that the resulting translation does not
32
- * exceed the container's scrollable bounds.
33
- *
34
- * This function performs pure math only and does not access the DOM.
22
+ * Calculates the raw offset required to center an element within a container along a single axis.
35
23
  *
36
- * @returns A negative offset value suitable for use in a CSS `translate`
37
- * transform, or `0` when no overflow exists on the axis.
24
+ * @returns A negative offset value suitable for use in a CSS `translate` transform.
38
25
  */
39
- export declare const calculateCenterOffset: ({ overflowSize, containerSize, elementOffset, elementSize, }: CalculateCenterOffsetOptions) => number;
26
+ export declare const calculateCenterOffset: ({ containerSize, elementOffset, elementSize, }: CalculateCenterOffsetOptions) => number;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Clamps a negative translation offset to the available overflow bounds.
3
+ *
4
+ * @param offset - Negative translate offset.
5
+ * @param overflowSize - Maximum overflow size along the axis.
6
+ *
7
+ * @returns Clamped negative offset, or `0` when no overflow exists.
8
+ */
9
+ export declare const clampOffsetToOverflow: (offset: number, overflowSize: number) => number;
@@ -1 +1,2 @@
1
1
  export * from './calculate-center-offset';
2
+ export * from './clamp-offset-to-overflow';
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- (()=>{"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={};e.r(t),e.d(t,{DATA_TRANSFER_JSON_MIME:()=>ne,FOCUSABLE_HTML_TAGS:()=>i,applyInertiaStep:()=>xe,assert:()=>p,blobToFile:()=>we,calculateCenterOffset:()=>he,calculateEuclideanDistance:()=>Oe,calculateMovingSpeed:()=>Ce,calculatePercentage:()=>Te,camelToDashCase:()=>_e,camelToWords:()=>Le,centerElementInContainer:()=>fe,chunk:()=>N,cloneBlob:()=>n,compact:()=>k,compose:()=>h,definedProps:()=>Pe,delay:()=>Q,difference:()=>f,downloadFile:()=>ie,everyAsync:()=>G,fileListToFiles:()=>ye,filterParallel:()=>q,filterSequential:()=>J,findAsync:()=>K,findCharIndices:()=>je,flattenTree:()=>$e,forEachChar:()=>Xe,generateEphemeralId:()=>Ie,getAdjacentItems:()=>X,getDOMRectIntersectionRatio:()=>Me,getDataTransferJson:()=>ae,getElementOffsetRect:()=>r,getFocusableHtmlElements:()=>s,getLocalStorageCapabilities:()=>pe,getTreeChildren:()=>He,getWordsInitials:()=>We,getXOverflowWidth:()=>se,getYOverflowHeight:()=>ue,hasXOverflow:()=>oe,hasYOverflow:()=>ce,hashString:()=>Fe,hexWithAlpha:()=>Ue,intersection:()=>m,invokeIfFunction:()=>ve,isAnchorHtmlElement:()=>a,isArray:()=>R,isBlob:()=>M,isBool:()=>v,isContentEditableHtmlElement:()=>l,isDate:()=>I,isDecimal:()=>L,isDefined:()=>w,isEmptyArray:()=>j,isEmptyObject:()=>x,isError:()=>E,isFile:()=>ge,isFiniteNumber:()=>D,isFunction:()=>Y,isHtmlElementFocusable:()=>o,isInteger:()=>_,isLocalStorageReadable:()=>me,isMap:()=>T,isNil:()=>y,isNilOrEmptyString:()=>ke,isNull:()=>g,isNumber:()=>S,isObject:()=>A,isPromise:()=>z,isRegExp:()=>C,isSet:()=>F,isString:()=>le,isSymbol:()=>P,isUndefined:()=>b,isValidDate:()=>O,moveFocusWithinContainer:()=>c,noop:()=>W,not:()=>$,once:()=>H,parse2DMatrix:()=>de,parseFileName:()=>Re,pipe:()=>u,readFilesFromDataTransfer:()=>Se,reduceAsync:()=>Z,resolveAxisDelta:()=>Ee,resolveBoundedDelta:()=>Ae,retry:()=>te,runParallel:()=>B,runSequential:()=>U,searchTree:()=>ze,setDataTransferJson:()=>re,someAsync:()=>V,splitMapJoin:()=>Ye,splitStringIntoWords:()=>Ne,timeout:()=>ee,toKebabCase:()=>De,traverseFileSystemDirectory:()=>be,unique:()=>d});const n=e=>new Blob([e],{type:e.type}),r=e=>new DOMRect(e.offsetLeft,e.offsetTop,e.clientWidth,e.clientHeight),a=e=>"A"===e.tagName,l=e=>"true"===e.getAttribute("contenteditable"),i=["INPUT","SELECT","TEXTAREA","BUTTON","A"],o=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&&(i.includes(e.tagName)?!a(e)||""!==e.href:!!l(e)||null!==n)},s=e=>Array.from(e.querySelectorAll("*")).filter(o),c=(e,t=null,{wrap:n=!0,getNextIndex:r}={})=>{const a=document.activeElement,l=t??a?.parentElement;if(!a||!l)return;const i=s(l);if(0===i.length)return;const o=i.indexOf(a);if(-1===o)return;let c;r?c=r(o,e,i):"next"===e?(c=o+1,c>=i.length&&(c=n?0:null)):(c=o-1,c<0&&(c=n?i.length-1:null)),null!==c&&i[c]?.focus()},u=(...e)=>t=>e.reduce((e,t)=>t(e),t),h=(...e)=>t=>e.reduceRight((e,t)=>t(e),t),f=(e,t)=>e.filter(e=>!t.includes(e)),d=e=>[...new Set(e)],m=(...e)=>{if(0===e.length)return[];if(1===e.length)return[...e[0]];const[t,...n]=e;return d(t).filter(e=>n.every(t=>t.includes(e)))};function p(e,t){if(!e)throw new Error(t)}const g=e=>null===e,y=e=>null==e,w=e=>null!=e,b=e=>void 0===e,S=e=>"number"==typeof e,v=e=>"boolean"==typeof e,A=e=>"object"==typeof e,x=e=>A(e)&&!g(e)&&0===Object.keys(e).length,I=e=>e instanceof Date,M=e=>e instanceof Blob,E=e=>e instanceof Error,O=e=>I(e)&&!isNaN(e.getTime()),C=e=>e instanceof RegExp,T=e=>e instanceof Map,F=e=>e instanceof Set,P=e=>"symbol"==typeof e,D=e=>S(e)&&isFinite(e),_=e=>S(e)&&Number.isInteger(e),L=e=>D(e)&&!Number.isInteger(e),N=(e,t)=>(p(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))),k=e=>e.filter(Boolean),R=e=>Array.isArray(e),j=e=>R(e)&&0===e.length,X=(e,t,n)=>{if(!e?.length||!t)return{previousItem:null,currentItem:null,nextItem:null};const r=e.findIndex(e=>n(e,t));return-1===r?{previousItem:null,currentItem:null,nextItem:null}:{previousItem:r>0?e[r-1]:null,currentItem:e[r],nextItem:r<e.length-1?e[r+1]:null}},W=()=>{},Y=e=>"function"==typeof e,$=e=>(...t)=>!e(...t),H=e=>{let t,n=!1;return function(...r){return n||(n=!0,t=e.apply(this,r)),t}},z=e=>Y(e?.then),U=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++)n.push(await t(e[r],r,e));return n},B=async(e,t)=>Promise.all(e.map(t)),J=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++){const a=e[r];await t(a,r,e)&&n.push(a)}return n},q=async(e,t)=>{const n=await B(e,async(e,n,r)=>!!await t(e,n,r)&&e);return k(n)},V=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return!0;return!1},G=async(e,t)=>{for(let n=0;n<e.length;n++)if(!await t(e[n],n,e))return!1;return!0},Z=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},K=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return e[n];return null},Q=e=>new Promise(t=>setTimeout(t,e)),ee=async(e,t,n="Operation timed out")=>{try{return await Promise.race([e,Q(t).then(()=>Promise.reject(new Error(n)))])}finally{}},te=(e,{maxAttempts:t=3,delayMs:n=300,backoff:r=!0,onRetry:a}={})=>async(...l)=>{let i;for(let o=1;o<=t;o++)try{return await e(...l)}catch(e){if(i=e,o<t){a?.(o,e);const t=r?n*2**(o-1):n;await Q(t)}}throw i},ne="application/json",re=(e,t)=>{e.setData(ne,JSON.stringify(t))},ae=e=>{const t=e.getData(ne);if(t)try{return JSON.parse(t)}catch{return}},le=e=>"string"==typeof e,ie=(e,{fileName:t,target:n}={})=>{if(b(document))return;const r=document.createElement("a");let a=null;try{const l=le(e)?e:a=URL.createObjectURL(e);r.href=l,t&&(r.download=t),n&&(r.target=n),document.body.appendChild(r),r.click()}finally{r.remove(),a&&setTimeout(()=>{p(a,"Object URL should not be null"),URL.revokeObjectURL(a)},0)}},oe=e=>e.scrollWidth>e.clientWidth,se=e=>Math.max(0,e.scrollWidth-e.clientWidth),ce=e=>e.scrollHeight>e.clientHeight,ue=e=>Math.max(0,e.scrollHeight-e.clientHeight),he=({overflowSize:e,containerSize:t,elementOffset:n,elementSize:r})=>{if(e<=0)return 0;const a=n+r/2-t/2;return-Math.max(0,Math.min(a,e))},fe=(e,t,{axis:n="both"}={})=>{let r=0,a=0;"x"!==n&&"both"!==n||(r=he({overflowSize:se(e),containerSize:e.clientWidth,elementOffset:t.offsetLeft,elementSize:t.clientWidth})),"y"!==n&&"both"!==n||(a=he({overflowSize:ue(e),containerSize:e.clientHeight,elementOffset:t.offsetTop,elementSize:t.clientHeight})),e.style.transform=`translate(${r}px, ${a}px)`},de=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,a,l,i,o]=t[1].split(", ").map(parseFloat);return{translateX:i,translateY:o,scaleX:n,scaleY:l,skewX:a,skewY:r}},me=()=>{if("undefined"==typeof window||!window.localStorage)return!1;try{return window.localStorage.getItem("__non_existing_key__"),!0}catch{return!1}},pe=()=>{if(!me())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}},ge=e=>e instanceof File,ye=e=>{if(!e)return[];const t=[];for(let n=0;n<e.length;n++)t.push(e[n]);return t},we=(e,t)=>new File([e],t,{type:e.type}),be=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 B(r,async e=>e.isDirectory?be(e,{skipFiles:t}):n.has(e.name)?[]:[await new Promise((t,n)=>{e.file(t,n)})])).flat()},Se=async(e,t={})=>{const n=e?.items;if(!n)return[];const r=[];for(let e=0;e<n.length;e++){const a=n[e];if("webkitGetAsEntry"in a){const e=a.webkitGetAsEntry?.();if(e?.isDirectory){r.push(be(e,t));continue}if(e?.isFile){r.push(new Promise((t,n)=>e.file(e=>t([e]),n)));continue}}const l=a.getAsFile();l&&r.push(Promise.resolve([l]))}return(await Promise.all(r)).flat()},ve=(e,...t)=>"function"==typeof e?e(...t):e,Ae=({delta:e,value:t,min:n,max:r})=>{if(0===e)return null;const a=t+e;return e<0?t<=n?null:Math.max(a,n):e>0?t>=r?null:Math.min(a,r):null},xe=({value:e,min:t,max:n,velocityPxMs:r,deltaTimeMs:a,friction:l=.002,minVelocityPxMs:i=.01,emaAlpha:o=.2})=>{if(Math.abs(r)<i)return null;const s=Ae({delta:r*a,value:e,min:t,max:n});if(null===s)return null;const c=r*Math.exp(-l*a),u=o>0?r*(1-o)+c*o:c;return Math.abs(u)<i?null:{value:s,velocityPxMs:u}},Ie=()=>`${Math.floor(1e3*performance.now()).toString(36)}${Math.random().toString(36).slice(2,10)}`,Me=(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),Ee=(e,t,{allowFallback:n=!0,invert:r=!0}={})=>{const a=r?-1:1;switch(t){case"x":return{deltaX:a*(0!==e.deltaX?e.deltaX:n?e.deltaY:0),deltaY:0};case"y":return{deltaX:0,deltaY:a*e.deltaY};default:return{deltaX:a*e.deltaX,deltaY:a*e.deltaY}}},Oe=(e,t,n,r)=>{const a=n-e,l=r-t;return Math.hypot(a,l)},Ce=(e,t)=>Math.abs(e/t),Te=(e,t)=>e*t/100,Fe=e=>{let t=5381;for(let n=0;n<e.length;n++)t=33*t^e.charCodeAt(n);return(t>>>0).toString(36)},Pe=e=>Object.entries(e).reduce((e,[t,n])=>(void 0!==n&&(e[t]=n),e),{}),De=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),_e=e=>{const t=e.charAt(0),n=e.slice(1);return t.toLowerCase()+n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)},Le=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),Ne=e=>0===e.length?[]:e.split(" ").filter(Boolean),ke=e=>""===e||y(e),Re=e=>{const t=e.lastIndexOf(".");return t<=0||t===e.length-1?[e,""]:[e.slice(0,t),e.slice(t+1).toLowerCase()]},je=(e,t)=>{if(0===e.length)return[];const n=t.charCodeAt(0),r=[];for(let t=0;t<e.length;t++)e.charCodeAt(t)===n&&r.push(t);return r},Xe=(e,t,n)=>{if(0===e.length)return;const r=e.length;for(let a=0;a<r;a++){const l=e[a],i={charIndex:a,prevChar:a>0?e[a-1]:null,nextChar:a<r-1?e[a+1]:null};n?.(l,i)||t(l,i)}},We=(e,t=1/0)=>0===e.length?"":Ne(e).slice(0,t).map(e=>e[0]).join("").toUpperCase(),Ye=(e,t,n,r=t)=>e.split(t).map((e,t)=>n(e.trim(),t)).join(r),$e=(e,t,n,r=[],a=void 0,l=0)=>(e?.forEach(e=>{const{[n]:i,...o}=e,s=e[n],c=Array.isArray(s);if(r.push({...o,parentId:a,depthLevel:l,childCount:c?s.length:0}),c){const a=e[t];$e(s,t,n,r,a,l+1)}}),r),He=(e,t,n)=>e.filter(e=>e.parentId===t&&(!n||n(e))),ze=(e,t,n,r)=>{const a=Ne(r.toLowerCase());if(!a.length)return e;const l=e.reduce((e,n,r)=>(e[n[t]]=r,e),{});return e.reduce((r,i)=>{const o=i[n];if(!o)return r;if(r.some(e=>e[t]===i[t]))return r;const s=Ne(o.toLowerCase());if(a.every(e=>s.some(t=>t.startsWith(e))))if(b(i.parentId)){r.push(i);const n=a=>{a.childCount&&e.forEach(e=>{e.parentId===a[t]&&(r.push(e),n(e))})};n(i)}else{const t=n=>{const a=l[n.parentId],i=e[a];b(i.parentId)||t(i);const o=r.length?r[r.length-1].parentId:null;(g(o)||o!==n.parentId)&&(p(i,"[@react-hive/honey-utils]: Parent node was not found."),r.push(i))};t(i),r.push(i)}return r},[])},Ue=(e,t)=>{p(t>=0&&t<=1,`[@react-hive/honey-utils]: Alpha "${t}" must be a number between 0 and 1.`);const n=e.match(/^#?([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/);p(n,`[@react-hive/honey-utils]: Invalid hex format: ${e}`);const r=n[1];return`#${(3===r.length?r[0]+r[0]+r[1]+r[1]+r[2]+r[2]:r)+Math.round(255*t).toString(16).toUpperCase().padStart(2,"0")}`};module.exports=t})();
1
+ (()=>{"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={};e.r(t),e.d(t,{DATA_TRANSFER_JSON_MIME:()=>ne,FOCUSABLE_HTML_TAGS:()=>i,applyInertiaStep:()=>Ie,assert:()=>p,blobToFile:()=>be,calculateCenterOffset:()=>he,calculateEuclideanDistance:()=>Ce,calculateMovingSpeed:()=>Te,calculatePercentage:()=>Fe,camelToDashCase:()=>Le,camelToWords:()=>Ne,centerElementInContainer:()=>de,chunk:()=>N,clampOffsetToOverflow:()=>fe,cloneBlob:()=>n,compact:()=>k,compose:()=>h,definedProps:()=>De,delay:()=>Q,difference:()=>f,downloadFile:()=>ie,everyAsync:()=>G,fileListToFiles:()=>we,filterParallel:()=>q,filterSequential:()=>J,findAsync:()=>K,findCharIndices:()=>Xe,flattenTree:()=>He,forEachChar:()=>We,generateEphemeralId:()=>Me,getAdjacentItems:()=>X,getDOMRectIntersectionRatio:()=>Oe,getDataTransferJson:()=>ae,getElementOffsetRect:()=>r,getFocusableHtmlElements:()=>s,getLocalStorageCapabilities:()=>ge,getTreeChildren:()=>Ue,getWordsInitials:()=>Ye,getXOverflowWidth:()=>se,getYOverflowHeight:()=>ue,hasXOverflow:()=>oe,hasYOverflow:()=>ce,hashString:()=>Pe,hexWithAlpha:()=>ze,intersection:()=>m,invokeIfFunction:()=>Ae,isAnchorHtmlElement:()=>a,isArray:()=>R,isBlob:()=>M,isBool:()=>v,isContentEditableHtmlElement:()=>l,isDate:()=>I,isDecimal:()=>L,isDefined:()=>w,isEmptyArray:()=>j,isEmptyObject:()=>x,isError:()=>O,isFile:()=>ye,isFiniteNumber:()=>D,isFunction:()=>Y,isHtmlElementFocusable:()=>o,isInteger:()=>_,isLocalStorageReadable:()=>pe,isMap:()=>T,isNil:()=>y,isNilOrEmptyString:()=>Re,isNull:()=>g,isNumber:()=>S,isObject:()=>A,isPromise:()=>U,isRegExp:()=>C,isSet:()=>F,isString:()=>le,isSymbol:()=>P,isUndefined:()=>b,isValidDate:()=>E,moveFocusWithinContainer:()=>c,noop:()=>W,not:()=>$,once:()=>H,parse2DMatrix:()=>me,parseFileName:()=>je,pipe:()=>u,readFilesFromDataTransfer:()=>ve,reduceAsync:()=>Z,resolveAxisDelta:()=>Ee,resolveBoundedDelta:()=>xe,retry:()=>te,runParallel:()=>z,runSequential:()=>B,searchTree:()=>Be,setDataTransferJson:()=>re,someAsync:()=>V,splitMapJoin:()=>$e,splitStringIntoWords:()=>ke,timeout:()=>ee,toKebabCase:()=>_e,traverseFileSystemDirectory:()=>Se,unique:()=>d});const n=e=>new Blob([e],{type:e.type}),r=e=>new DOMRect(e.offsetLeft,e.offsetTop,e.clientWidth,e.clientHeight),a=e=>"A"===e.tagName,l=e=>"true"===e.getAttribute("contenteditable"),i=["INPUT","SELECT","TEXTAREA","BUTTON","A"],o=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&&(i.includes(e.tagName)?!a(e)||""!==e.href:!!l(e)||null!==n)},s=e=>Array.from(e.querySelectorAll("*")).filter(o),c=(e,t=null,{wrap:n=!0,getNextIndex:r}={})=>{const a=document.activeElement,l=t??a?.parentElement;if(!a||!l)return;const i=s(l);if(0===i.length)return;const o=i.indexOf(a);if(-1===o)return;let c;r?c=r(o,e,i):"next"===e?(c=o+1,c>=i.length&&(c=n?0:null)):(c=o-1,c<0&&(c=n?i.length-1:null)),null!==c&&i[c]?.focus()},u=(...e)=>t=>e.reduce((e,t)=>t(e),t),h=(...e)=>t=>e.reduceRight((e,t)=>t(e),t),f=(e,t)=>e.filter(e=>!t.includes(e)),d=e=>[...new Set(e)],m=(...e)=>{if(0===e.length)return[];if(1===e.length)return[...e[0]];const[t,...n]=e;return d(t).filter(e=>n.every(t=>t.includes(e)))};function p(e,t){if(!e)throw new Error(t)}const g=e=>null===e,y=e=>null==e,w=e=>null!=e,b=e=>void 0===e,S=e=>"number"==typeof e,v=e=>"boolean"==typeof e,A=e=>"object"==typeof e,x=e=>A(e)&&!g(e)&&0===Object.keys(e).length,I=e=>e instanceof Date,M=e=>e instanceof Blob,O=e=>e instanceof Error,E=e=>I(e)&&!isNaN(e.getTime()),C=e=>e instanceof RegExp,T=e=>e instanceof Map,F=e=>e instanceof Set,P=e=>"symbol"==typeof e,D=e=>S(e)&&isFinite(e),_=e=>S(e)&&Number.isInteger(e),L=e=>D(e)&&!Number.isInteger(e),N=(e,t)=>(p(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))),k=e=>e.filter(Boolean),R=e=>Array.isArray(e),j=e=>R(e)&&0===e.length,X=(e,t,n)=>{if(!e?.length||!t)return{previousItem:null,currentItem:null,nextItem:null};const r=e.findIndex(e=>n(e,t));return-1===r?{previousItem:null,currentItem:null,nextItem:null}:{previousItem:r>0?e[r-1]:null,currentItem:e[r],nextItem:r<e.length-1?e[r+1]:null}},W=()=>{},Y=e=>"function"==typeof e,$=e=>(...t)=>!e(...t),H=e=>{let t,n=!1;return function(...r){return n||(n=!0,t=e.apply(this,r)),t}},U=e=>Y(e?.then),B=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++)n.push(await t(e[r],r,e));return n},z=async(e,t)=>Promise.all(e.map(t)),J=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++){const a=e[r];await t(a,r,e)&&n.push(a)}return n},q=async(e,t)=>{const n=await z(e,async(e,n,r)=>!!await t(e,n,r)&&e);return k(n)},V=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return!0;return!1},G=async(e,t)=>{for(let n=0;n<e.length;n++)if(!await t(e[n],n,e))return!1;return!0},Z=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},K=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return e[n];return null},Q=e=>new Promise(t=>setTimeout(t,e)),ee=async(e,t,n="Operation timed out")=>{try{return await Promise.race([e,Q(t).then(()=>Promise.reject(new Error(n)))])}finally{}},te=(e,{maxAttempts:t=3,delayMs:n=300,backoff:r=!0,onRetry:a}={})=>async(...l)=>{let i;for(let o=1;o<=t;o++)try{return await e(...l)}catch(e){if(i=e,o<t){a?.(o,e);const t=r?n*2**(o-1):n;await Q(t)}}throw i},ne="application/json",re=(e,t)=>{e.setData(ne,JSON.stringify(t))},ae=e=>{const t=e.getData(ne);if(t)try{return JSON.parse(t)}catch{return}},le=e=>"string"==typeof e,ie=(e,{fileName:t,target:n}={})=>{if(b(document))return;const r=document.createElement("a");let a=null;try{const l=le(e)?e:a=URL.createObjectURL(e);r.href=l,t&&(r.download=t),n&&(r.target=n),document.body.appendChild(r),r.click()}finally{r.remove(),a&&setTimeout(()=>{p(a,"Object URL should not be null"),URL.revokeObjectURL(a)},0)}},oe=e=>e.scrollWidth>e.clientWidth,se=e=>Math.max(0,e.scrollWidth-e.clientWidth),ce=e=>e.scrollHeight>e.clientHeight,ue=e=>Math.max(0,e.scrollHeight-e.clientHeight),he=({containerSize:e,elementOffset:t,elementSize:n})=>-(t+n/2-e/2),fe=(e,t)=>t<=0?0:Math.max(-t,Math.min(e,0)),de=(e,t,{axis:n="both",shouldClamp:r=!0}={})=>{let a=0,l=0;if("x"===n||"both"===n){const n=he({containerSize:e.clientWidth,elementOffset:t.offsetLeft,elementSize:t.clientWidth});a=r?fe(n,se(e)):n}if("y"===n||"both"===n){const n=he({containerSize:e.clientHeight,elementOffset:t.offsetTop,elementSize:t.clientHeight});l=r?fe(n,ue(e)):n}e.style.transform=`translate(${a}px, ${l}px)`},me=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,a,l,i,o]=t[1].split(", ").map(parseFloat);return{translateX:i,translateY:o,scaleX:n,scaleY:l,skewX:a,skewY:r}},pe=()=>{if("undefined"==typeof window||!window.localStorage)return!1;try{return window.localStorage.getItem("__non_existing_key__"),!0}catch{return!1}},ge=()=>{if(!pe())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}},ye=e=>e instanceof File,we=e=>{if(!e)return[];const t=[];for(let n=0;n<e.length;n++)t.push(e[n]);return t},be=(e,t)=>new File([e],t,{type:e.type}),Se=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 z(r,async e=>e.isDirectory?Se(e,{skipFiles:t}):n.has(e.name)?[]:[await new Promise((t,n)=>{e.file(t,n)})])).flat()},ve=async(e,t={})=>{const n=e?.items;if(!n)return[];const r=[];for(let e=0;e<n.length;e++){const a=n[e];if("webkitGetAsEntry"in a){const e=a.webkitGetAsEntry?.();if(e?.isDirectory){r.push(Se(e,t));continue}if(e?.isFile){r.push(new Promise((t,n)=>e.file(e=>t([e]),n)));continue}}const l=a.getAsFile();l&&r.push(Promise.resolve([l]))}return(await Promise.all(r)).flat()},Ae=(e,...t)=>"function"==typeof e?e(...t):e,xe=({delta:e,value:t,min:n,max:r})=>{if(0===e)return null;const a=t+e;return e<0?t<=n?null:Math.max(a,n):e>0?t>=r?null:Math.min(a,r):null},Ie=({value:e,min:t,max:n,velocityPxMs:r,deltaTimeMs:a,friction:l=.002,minVelocityPxMs:i=.01,emaAlpha:o=.2})=>{if(Math.abs(r)<i)return null;const s=xe({delta:r*a,value:e,min:t,max:n});if(null===s)return null;const c=r*Math.exp(-l*a),u=o>0?r*(1-o)+c*o:c;return Math.abs(u)<i?null:{value:s,velocityPxMs:u}},Me=()=>`${Math.floor(1e3*performance.now()).toString(36)}${Math.random().toString(36).slice(2,10)}`,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),Ee=(e,t,{allowFallback:n=!0,invert:r=!0}={})=>{const a=r?-1:1;switch(t){case"x":return{deltaX:a*(0!==e.deltaX?e.deltaX:n?e.deltaY:0),deltaY:0};case"y":return{deltaX:0,deltaY:a*e.deltaY};default:return{deltaX:a*e.deltaX,deltaY:a*e.deltaY}}},Ce=(e,t,n,r)=>{const a=n-e,l=r-t;return Math.hypot(a,l)},Te=(e,t)=>Math.abs(e/t),Fe=(e,t)=>e*t/100,Pe=e=>{let t=5381;for(let n=0;n<e.length;n++)t=33*t^e.charCodeAt(n);return(t>>>0).toString(36)},De=e=>Object.entries(e).reduce((e,[t,n])=>(void 0!==n&&(e[t]=n),e),{}),_e=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Le=e=>{const t=e.charAt(0),n=e.slice(1);return t.toLowerCase()+n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)},Ne=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),ke=e=>0===e.length?[]:e.split(" ").filter(Boolean),Re=e=>""===e||y(e),je=e=>{const t=e.lastIndexOf(".");return t<=0||t===e.length-1?[e,""]:[e.slice(0,t),e.slice(t+1).toLowerCase()]},Xe=(e,t)=>{if(0===e.length)return[];const n=t.charCodeAt(0),r=[];for(let t=0;t<e.length;t++)e.charCodeAt(t)===n&&r.push(t);return r},We=(e,t,n)=>{if(0===e.length)return;const r=e.length;for(let a=0;a<r;a++){const l=e[a],i={charIndex:a,prevChar:a>0?e[a-1]:null,nextChar:a<r-1?e[a+1]:null};n?.(l,i)||t(l,i)}},Ye=(e,t=1/0)=>0===e.length?"":ke(e).slice(0,t).map(e=>e[0]).join("").toUpperCase(),$e=(e,t,n,r=t)=>e.split(t).map((e,t)=>n(e.trim(),t)).join(r),He=(e,t,n,r=[],a=void 0,l=0)=>(e?.forEach(e=>{const{[n]:i,...o}=e,s=e[n],c=Array.isArray(s);if(r.push({...o,parentId:a,depthLevel:l,childCount:c?s.length:0}),c){const a=e[t];He(s,t,n,r,a,l+1)}}),r),Ue=(e,t,n)=>e.filter(e=>e.parentId===t&&(!n||n(e))),Be=(e,t,n,r)=>{const a=ke(r.toLowerCase());if(!a.length)return e;const l=e.reduce((e,n,r)=>(e[n[t]]=r,e),{});return e.reduce((r,i)=>{const o=i[n];if(!o)return r;if(r.some(e=>e[t]===i[t]))return r;const s=ke(o.toLowerCase());if(a.every(e=>s.some(t=>t.startsWith(e))))if(b(i.parentId)){r.push(i);const n=a=>{a.childCount&&e.forEach(e=>{e.parentId===a[t]&&(r.push(e),n(e))})};n(i)}else{const t=n=>{const a=l[n.parentId],i=e[a];b(i.parentId)||t(i);const o=r.length?r[r.length-1].parentId:null;(g(o)||o!==n.parentId)&&(p(i,"[@react-hive/honey-utils]: Parent node was not found."),r.push(i))};t(i),r.push(i)}return r},[])},ze=(e,t)=>{p(t>=0&&t<=1,`[@react-hive/honey-utils]: Alpha "${t}" must be a number between 0 and 1.`);const n=e.match(/^#?([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/);p(n,`[@react-hive/honey-utils]: Invalid hex format: ${e}`);const r=n[1];return`#${(3===r.length?r[0]+r[0]+r[1]+r[1]+r[2]+r[2]:r)+Math.round(255*t).toString(16).toUpperCase().padStart(2,"0")}`};module.exports=t})();
2
2
  //# sourceMappingURL=index.cjs.map