@react-hive/honey-layout 11.1.0 → 12.0.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.
@@ -7945,9 +7945,9 @@ __webpack_require__.r(__webpack_exports__);
7945
7945
  /* harmony export */ centerElementInContainer: () => (/* binding */ we),
7946
7946
  /* harmony export */ chunk: () => (/* binding */ O),
7947
7947
  /* harmony export */ cloneBlob: () => (/* binding */ oe),
7948
- /* harmony export */ compact: () => (/* binding */ v),
7948
+ /* harmony export */ compact: () => (/* binding */ A),
7949
7949
  /* harmony export */ compose: () => (/* binding */ E),
7950
- /* harmony export */ definedProps: () => (/* binding */ Ae),
7950
+ /* harmony export */ definedProps: () => (/* binding */ ve),
7951
7951
  /* harmony export */ delay: () => (/* binding */ H),
7952
7952
  /* harmony export */ difference: () => (/* binding */ C),
7953
7953
  /* harmony export */ downloadFile: () => (/* binding */ fe),
@@ -8007,7 +8007,7 @@ __webpack_require__.r(__webpack_exports__);
8007
8007
  /* harmony export */ parse2DMatrix: () => (/* binding */ pe),
8008
8008
  /* harmony export */ parseFileName: () => (/* binding */ K),
8009
8009
  /* harmony export */ pipe: () => (/* binding */ P),
8010
- /* harmony export */ readFilesFromDataTransfer: () => (/* binding */ ve),
8010
+ /* harmony export */ readFilesFromDataTransfer: () => (/* binding */ Ae),
8011
8011
  /* harmony export */ reduceAsync: () => (/* binding */ U),
8012
8012
  /* harmony export */ resolveAxisDelta: () => (/* binding */ Pe),
8013
8013
  /* harmony export */ resolveBoundedDelta: () => (/* binding */ Oe),
@@ -8019,9 +8019,9 @@ __webpack_require__.r(__webpack_exports__);
8019
8019
  /* harmony export */ timeout: () => (/* binding */ W),
8020
8020
  /* harmony export */ toKebabCase: () => (/* binding */ V),
8021
8021
  /* harmony export */ traverseFileSystemDirectory: () => (/* binding */ Se),
8022
- /* harmony export */ unique: () => (/* binding */ A)
8022
+ /* harmony export */ unique: () => (/* binding */ v)
8023
8023
  /* harmony export */ });
8024
- var e={};function t(e,t){if(!e)throw new Error(t)}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]})},e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const n=e=>null===e,r=e=>null==e,l=e=>null!=e,a=e=>void 0===e,i=e=>"number"==typeof e,o=e=>"boolean"==typeof e,s=e=>"object"==typeof e,c=e=>s(e)&&!n(e)&&0===Object.keys(e).length,u=e=>e instanceof Date,f=e=>e instanceof Blob,h=e=>e instanceof Error,d=e=>u(e)&&!isNaN(e.getTime()),m=e=>e instanceof RegExp,y=e=>e instanceof Map,g=e=>e instanceof Set,w=e=>"symbol"==typeof e,p=e=>i(e)&&isFinite(e),b=e=>i(e)&&Number.isInteger(e),x=e=>p(e)&&!Number.isInteger(e),M=e=>Array.isArray(e),S=e=>M(e)&&0===e.length,v=e=>e.filter(Boolean),A=e=>[...new Set(e)],O=(e,n)=>(t(n>0,"Chunk size must be greater than 0"),Array.from({length:Math.ceil(e.length/n)},(t,r)=>e.slice(r*n,(r+1)*n))),k=(...e)=>{if(0===e.length)return[];if(1===e.length)return[...e[0]];const[t,...n]=e;return A(t).filter(e=>n.every(t=>t.includes(e)))},C=(e,t)=>e.filter(e=>!t.includes(e)),P=(...e)=>t=>e.reduce((e,t)=>t(e),t),E=(...e)=>t=>e.reduceRight((e,t)=>t(e),t),T=()=>{},X=e=>"function"==typeof e,_=e=>(...t)=>!e(...t),z=e=>{let t,n=!1;return function(...r){return n||(n=!0,t=e.apply(this,r)),t}},L=e=>X(e?.then),Y=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++)n.push(await t(e[r],r,e));return n},R=async(e,t)=>Promise.all(e.map(t)),j=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++){const l=e[r];await t(l,r,e)&&n.push(l)}return n},N=async(e,t)=>{const n=await R(e,async(e,n,r)=>!!await t(e,n,r)&&e);return v(n)},F=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return!0;return!1},I=async(e,t)=>{for(let n=0;n<e.length;n++)if(!await t(e[n],n,e))return!1;return!0},U=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},$=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return e[n];return null},H=e=>new Promise(t=>setTimeout(t,e)),W=async(e,t,n="Operation timed out")=>{try{return await Promise.race([e,H(t).then(()=>Promise.reject(new Error(n)))])}finally{}},B=(e,{maxAttempts:t=3,delayMs:n=300,backoff:r=!0,onRetry:l}={})=>async(...a)=>{let i;for(let o=1;o<=t;o++)try{return await e(...a)}catch(e){if(i=e,o<t){l?.(o,e);const t=r?n*2**(o-1):n;await H(t)}}throw i},D=e=>"string"==typeof e,V=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Z=e=>{const t=e.charAt(0),n=e.slice(1);return t.toLowerCase()+n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)},G=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),q=e=>0===e.length?[]:e.split(" ").filter(Boolean),J=e=>""===e||r(e),K=e=>{const t=e.lastIndexOf(".");return t<=0||t===e.length-1?[e,""]:[e.slice(0,t),e.slice(t+1).toLowerCase()]},Q=(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},ee=(e,t,n)=>{if(0===e.length)return;const r=e.length;for(let l=0;l<r;l++){const a=e[l],i={charIndex:l,prevChar:l>0?e[l-1]:null,nextChar:l<r-1?e[l+1]:null};n?.(a,i)||t(a,i)}},te=(e,t=1/0)=>0===e.length?"":q(e).slice(0,t).map(e=>e[0]).join("").toUpperCase(),ne=(e,...t)=>"function"==typeof e?e(...t):e,re=(e,t,n,r)=>{const l=n-e,a=r-t;return Math.hypot(l,a)},le=(e,t)=>Math.abs(e/t),ae=(e,t)=>e*t/100,ie=e=>{let t=5381;for(let n=0;n<e.length;n++)t=33*t^e.charCodeAt(n);return(t>>>0).toString(36)},oe=e=>new Blob([e],{type:e.type}),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,{fileName:n,target:r}={})=>{if(a(document))return;const l=document.createElement("a");let i=null;try{const t=D(e)?e:i=URL.createObjectURL(e);l.href=t,n&&(l.download=n),r&&(l.target=r),document.body.appendChild(l),l.click()}finally{l.remove(),i&&setTimeout(()=>{t(i,"Object URL should not be null"),URL.revokeObjectURL(i)},0)}},he=e=>e.scrollWidth>e.clientWidth,de=e=>Math.max(0,e.scrollWidth-e.clientWidth),me=e=>e.scrollHeight>e.clientHeight,ye=e=>Math.max(0,e.scrollHeight-e.clientHeight),ge=({overflowSize:e,containerSize:t,elementOffset:n,elementSize:r})=>{if(e<=0)return 0;const l=n+r/2-t/2;return-Math.max(0,Math.min(l,e))},we=(e,t,{axis:n="both"}={})=>{let r=0,l=0;"x"!==n&&"both"!==n||(r=ge({overflowSize:de(e),containerSize:e.clientWidth,elementOffset:t.offsetLeft,elementSize:t.clientWidth})),"y"!==n&&"both"!==n||(l=ge({overflowSize:ye(e),containerSize:e.clientHeight,elementOffset:t.offsetTop,elementSize:t.clientHeight})),e.style.transform=`translate(${r}px, ${l}px)`},pe=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,l,a,i,o]=t[1].split(", ").map(parseFloat);return{translateX:i,translateY:o,scaleX:n,scaleY:a,skewX:l,skewY:r}},be=e=>e instanceof File,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}),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 R(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 l=n[e];if("webkitGetAsEntry"in l){const e=l.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 a=l.getAsFile();a&&r.push(Promise.resolve([a]))}return(await Promise.all(r)).flat()},Ae=e=>Object.entries(e).reduce((e,[t,n])=>(void 0!==n&&(e[t]=n),e),{}),Oe=({delta:e,value:t,min:n,max:r})=>{if(0===e)return null;const l=t+e;return e<0?t<=n?null:Math.max(l,n):e>0?t>=r?null:Math.min(l,r):null},ke=({value:e,min:t,max:n,velocityPxMs:r,deltaTimeMs:l,friction:a=.002,minVelocityPxMs:i=.01})=>{if(Math.abs(r)<i)return null;const o=Oe({delta:r*l,value:e,min:t,max:n});return null===o?null:{value:o,velocityPxMs:r*Math.exp(-a*l)}},Ce=(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),Pe=(e,t,{allowFallback:n=!0,invert:r=!0}={})=>{const l=r?-1:1;switch(t){case"x":return{deltaX:l*(0!==e.deltaX?e.deltaX:n?e.deltaY:0),deltaY:0};case"y":return{deltaX:0,deltaY:l*e.deltaY};default:return{deltaX:l*e.deltaX,deltaY:l*e.deltaY}}},Ee=["INPUT","SELECT","TEXTAREA","BUTTON","A"],Te=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&&(Ee.includes(e.tagName)?!ce(e)||""!==e.href:!!ue(e)||null!==n)},Xe=e=>Array.from(e.querySelectorAll("*")).filter(Te),_e=(e,t=null,{wrap:n=!0,getNextIndex:r}={})=>{const l=document.activeElement,a=t??l?.parentElement;if(!l||!a)return;const i=Xe(a);if(0===i.length)return;const o=i.indexOf(l);if(-1===o)return;let s;r?s=r(o,e,i):"next"===e?(s=o+1,s>=i.length&&(s=n?0:null)):(s=o-1,s<0&&(s=n?i.length-1:null)),null!==s&&i[s]?.focus()},ze=()=>{if("undefined"==typeof window||!window.localStorage)return!1;try{return window.localStorage.getItem("__non_existing_key__"),!0}catch{return!1}},Le=()=>{if(!ze())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}};
8024
+ var e={};function t(e,t){if(!e)throw new Error(t)}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]})},e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const n=e=>null===e,r=e=>null==e,l=e=>null!=e,a=e=>void 0===e,i=e=>"number"==typeof e,o=e=>"boolean"==typeof e,s=e=>"object"==typeof e,c=e=>s(e)&&!n(e)&&0===Object.keys(e).length,u=e=>e instanceof Date,f=e=>e instanceof Blob,h=e=>e instanceof Error,d=e=>u(e)&&!isNaN(e.getTime()),m=e=>e instanceof RegExp,y=e=>e instanceof Map,g=e=>e instanceof Set,w=e=>"symbol"==typeof e,p=e=>i(e)&&isFinite(e),b=e=>i(e)&&Number.isInteger(e),x=e=>p(e)&&!Number.isInteger(e),M=e=>Array.isArray(e),S=e=>M(e)&&0===e.length,A=e=>e.filter(Boolean),v=e=>[...new Set(e)],O=(e,n)=>(t(n>0,"Chunk size must be greater than 0"),Array.from({length:Math.ceil(e.length/n)},(t,r)=>e.slice(r*n,(r+1)*n))),k=(...e)=>{if(0===e.length)return[];if(1===e.length)return[...e[0]];const[t,...n]=e;return v(t).filter(e=>n.every(t=>t.includes(e)))},C=(e,t)=>e.filter(e=>!t.includes(e)),P=(...e)=>t=>e.reduce((e,t)=>t(e),t),E=(...e)=>t=>e.reduceRight((e,t)=>t(e),t),T=()=>{},X=e=>"function"==typeof e,_=e=>(...t)=>!e(...t),z=e=>{let t,n=!1;return function(...r){return n||(n=!0,t=e.apply(this,r)),t}},L=e=>X(e?.then),Y=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++)n.push(await t(e[r],r,e));return n},R=async(e,t)=>Promise.all(e.map(t)),j=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++){const l=e[r];await t(l,r,e)&&n.push(l)}return n},N=async(e,t)=>{const n=await R(e,async(e,n,r)=>!!await t(e,n,r)&&e);return A(n)},F=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return!0;return!1},I=async(e,t)=>{for(let n=0;n<e.length;n++)if(!await t(e[n],n,e))return!1;return!0},U=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},$=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return e[n];return null},H=e=>new Promise(t=>setTimeout(t,e)),W=async(e,t,n="Operation timed out")=>{try{return await Promise.race([e,H(t).then(()=>Promise.reject(new Error(n)))])}finally{}},B=(e,{maxAttempts:t=3,delayMs:n=300,backoff:r=!0,onRetry:l}={})=>async(...a)=>{let i;for(let o=1;o<=t;o++)try{return await e(...a)}catch(e){if(i=e,o<t){l?.(o,e);const t=r?n*2**(o-1):n;await H(t)}}throw i},D=e=>"string"==typeof e,V=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Z=e=>{const t=e.charAt(0),n=e.slice(1);return t.toLowerCase()+n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)},G=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),q=e=>0===e.length?[]:e.split(" ").filter(Boolean),J=e=>""===e||r(e),K=e=>{const t=e.lastIndexOf(".");return t<=0||t===e.length-1?[e,""]:[e.slice(0,t),e.slice(t+1).toLowerCase()]},Q=(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},ee=(e,t,n)=>{if(0===e.length)return;const r=e.length;for(let l=0;l<r;l++){const a=e[l],i={charIndex:l,prevChar:l>0?e[l-1]:null,nextChar:l<r-1?e[l+1]:null};n?.(a,i)||t(a,i)}},te=(e,t=1/0)=>0===e.length?"":q(e).slice(0,t).map(e=>e[0]).join("").toUpperCase(),ne=(e,...t)=>"function"==typeof e?e(...t):e,re=(e,t,n,r)=>{const l=n-e,a=r-t;return Math.hypot(l,a)},le=(e,t)=>Math.abs(e/t),ae=(e,t)=>e*t/100,ie=e=>{let t=5381;for(let n=0;n<e.length;n++)t=33*t^e.charCodeAt(n);return(t>>>0).toString(36)},oe=e=>new Blob([e],{type:e.type}),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,{fileName:n,target:r}={})=>{if(a(document))return;const l=document.createElement("a");let i=null;try{const t=D(e)?e:i=URL.createObjectURL(e);l.href=t,n&&(l.download=n),r&&(l.target=r),document.body.appendChild(l),l.click()}finally{l.remove(),i&&setTimeout(()=>{t(i,"Object URL should not be null"),URL.revokeObjectURL(i)},0)}},he=e=>e.scrollWidth>e.clientWidth,de=e=>Math.max(0,e.scrollWidth-e.clientWidth),me=e=>e.scrollHeight>e.clientHeight,ye=e=>Math.max(0,e.scrollHeight-e.clientHeight),ge=({overflowSize:e,containerSize:t,elementOffset:n,elementSize:r})=>{if(e<=0)return 0;const l=n+r/2-t/2;return-Math.max(0,Math.min(l,e))},we=(e,t,{axis:n="both"}={})=>{let r=0,l=0;"x"!==n&&"both"!==n||(r=ge({overflowSize:de(e),containerSize:e.clientWidth,elementOffset:t.offsetLeft,elementSize:t.clientWidth})),"y"!==n&&"both"!==n||(l=ge({overflowSize:ye(e),containerSize:e.clientHeight,elementOffset:t.offsetTop,elementSize:t.clientHeight})),e.style.transform=`translate(${r}px, ${l}px)`},pe=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,l,a,i,o]=t[1].split(", ").map(parseFloat);return{translateX:i,translateY:o,scaleX:n,scaleY:a,skewX:l,skewY:r}},be=e=>e instanceof File,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}),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 R(r,async e=>e.isDirectory?Se(e,{skipFiles:t}):n.has(e.name)?[]:[await new Promise((t,n)=>{e.file(t,n)})])).flat()},Ae=async(e,t={})=>{const n=e?.items;if(!n)return[];const r=[];for(let e=0;e<n.length;e++){const l=n[e];if("webkitGetAsEntry"in l){const e=l.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 a=l.getAsFile();a&&r.push(Promise.resolve([a]))}return(await Promise.all(r)).flat()},ve=e=>Object.entries(e).reduce((e,[t,n])=>(void 0!==n&&(e[t]=n),e),{}),Oe=({delta:e,value:t,min:n,max:r})=>{if(0===e)return null;const l=t+e;return e<0?t<=n?null:Math.max(l,n):e>0?t>=r?null:Math.min(l,r):null},ke=({value:e,min:t,max:n,velocityPxMs:r,deltaTimeMs:l,friction:a=.002,minVelocityPxMs:i=.01,emaAlpha:o=.2})=>{if(Math.abs(r)<i)return null;const s=Oe({delta:r*l,value:e,min:t,max:n});if(null===s)return null;const c=r*Math.exp(-a*l),u=o>0?r*(1-o)+c*o:c;return Math.abs(u)<i?null:{value:s,velocityPxMs:u}},Ce=(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),Pe=(e,t,{allowFallback:n=!0,invert:r=!0}={})=>{const l=r?-1:1;switch(t){case"x":return{deltaX:l*(0!==e.deltaX?e.deltaX:n?e.deltaY:0),deltaY:0};case"y":return{deltaX:0,deltaY:l*e.deltaY};default:return{deltaX:l*e.deltaX,deltaY:l*e.deltaY}}},Ee=["INPUT","SELECT","TEXTAREA","BUTTON","A"],Te=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&&(Ee.includes(e.tagName)?!ce(e)||""!==e.href:!!ue(e)||null!==n)},Xe=e=>Array.from(e.querySelectorAll("*")).filter(Te),_e=(e,t=null,{wrap:n=!0,getNextIndex:r}={})=>{const l=document.activeElement,a=t??l?.parentElement;if(!l||!a)return;const i=Xe(a);if(0===i.length)return;const o=i.indexOf(l);if(-1===o)return;let s;r?s=r(o,e,i):"next"===e?(s=o+1,s>=i.length&&(s=n?0:null)):(s=o-1,s<0&&(s=n?i.length-1:null)),null!==s&&i[s]?.focus()},ze=()=>{if("undefined"==typeof window||!window.localStorage)return!1;try{return window.localStorage.getItem("__non_existing_key__"),!0}catch{return!1}},Le=()=>{if(!ze())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}};
8025
8025
  //# sourceMappingURL=index.mjs.map
8026
8026
 
8027
8027
  /***/ },
@@ -13723,8 +13723,9 @@ __webpack_require__.r(__webpack_exports__);
13723
13723
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13724
13724
  /* harmony export */ resolveAxisTranslate: () => (/* reexport safe */ _use_honey_synthetic_scroll__WEBPACK_IMPORTED_MODULE_8__.resolveAxisTranslate),
13725
13725
  /* harmony export */ useHoneyDecay: () => (/* reexport safe */ _use_honey_decay__WEBPACK_IMPORTED_MODULE_13__.useHoneyDecay),
13726
- /* harmony export */ useHoneyDocumentKeyUpHandler: () => (/* reexport safe */ _use_honey_document_key_up_handler__WEBPACK_IMPORTED_MODULE_3__.useHoneyDocumentKeyUpHandler),
13726
+ /* harmony export */ useHoneyDocumentKeyUp: () => (/* reexport safe */ _use_honey_document_key_up__WEBPACK_IMPORTED_MODULE_3__.useHoneyDocumentKeyUp),
13727
13727
  /* harmony export */ useHoneyDrag: () => (/* reexport safe */ _use_honey_drag__WEBPACK_IMPORTED_MODULE_2__.useHoneyDrag),
13728
+ /* harmony export */ useHoneyLatest: () => (/* reexport safe */ _use_honey_latest__WEBPACK_IMPORTED_MODULE_14__.useHoneyLatest),
13728
13729
  /* harmony export */ useHoneyLayout: () => (/* reexport safe */ _use_honey_layout__WEBPACK_IMPORTED_MODULE_4__.useHoneyLayout),
13729
13730
  /* harmony export */ useHoneyMediaQuery: () => (/* reexport safe */ _use_honey_media_query__WEBPACK_IMPORTED_MODULE_1__.useHoneyMediaQuery),
13730
13731
  /* harmony export */ useHoneyOnChange: () => (/* reexport safe */ _use_honey_on_change__WEBPACK_IMPORTED_MODULE_0__.useHoneyOnChange),
@@ -13740,7 +13741,7 @@ __webpack_require__.r(__webpack_exports__);
13740
13741
  /* harmony import */ var _use_honey_on_change__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./use-honey-on-change */ "./src/hooks/use-honey-on-change.ts");
13741
13742
  /* harmony import */ var _use_honey_media_query__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-honey-media-query */ "./src/hooks/use-honey-media-query.ts");
13742
13743
  /* harmony import */ var _use_honey_drag__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-honey-drag */ "./src/hooks/use-honey-drag.ts");
13743
- /* harmony import */ var _use_honey_document_key_up_handler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./use-honey-document-key-up-handler */ "./src/hooks/use-honey-document-key-up-handler.ts");
13744
+ /* harmony import */ var _use_honey_document_key_up__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./use-honey-document-key-up */ "./src/hooks/use-honey-document-key-up.ts");
13744
13745
  /* harmony import */ var _use_honey_layout__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./use-honey-layout */ "./src/hooks/use-honey-layout.ts");
13745
13746
  /* harmony import */ var _use_register_honey_overlay__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./use-register-honey-overlay */ "./src/hooks/use-register-honey-overlay.ts");
13746
13747
  /* harmony import */ var _use_honey_overlay__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./use-honey-overlay */ "./src/hooks/use-honey-overlay.ts");
@@ -13751,6 +13752,8 @@ __webpack_require__.r(__webpack_exports__);
13751
13752
  /* harmony import */ var _use_honey_raf_loop__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./use-honey-raf-loop */ "./src/hooks/use-honey-raf-loop.ts");
13752
13753
  /* harmony import */ var _use_honey_timer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./use-honey-timer */ "./src/hooks/use-honey-timer.ts");
13753
13754
  /* harmony import */ var _use_honey_decay__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./use-honey-decay */ "./src/hooks/use-honey-decay.ts");
13755
+ /* harmony import */ var _use_honey_latest__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./use-honey-latest */ "./src/hooks/use-honey-latest.ts");
13756
+
13754
13757
 
13755
13758
 
13756
13759
 
@@ -13783,12 +13786,13 @@ __webpack_require__.r(__webpack_exports__);
13783
13786
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
13784
13787
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
13785
13788
  /* harmony import */ var _react_hive_honey_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @react-hive/honey-utils */ "./node_modules/@react-hive/honey-utils/dist/index.mjs");
13786
- /* harmony import */ var _use_honey_raf_loop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-honey-raf-loop */ "./src/hooks/use-honey-raf-loop.ts");
13789
+ /* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ~/hooks */ "./src/hooks/index.ts");
13787
13790
 
13788
13791
 
13789
13792
 
13790
13793
  /**
13791
- * A bounded, velocity-based inertia (decay) hook built on top of {@link useHoneyRafLoop} and {@link applyInertiaStep}.
13794
+ * A bounded, velocity-based inertia (decay) hook built on top
13795
+ * of {@link useHoneyRafLoop} and {@link applyInertiaStep}.
13792
13796
  *
13793
13797
  * This hook models **momentum-driven motion** where:
13794
13798
  * - Motion starts with an initial velocity
@@ -13846,14 +13850,20 @@ __webpack_require__.r(__webpack_exports__);
13846
13850
  * );
13847
13851
  * ```
13848
13852
  */
13849
- const useHoneyDecay = ({ initialValue, min, max, friction = 0.002, minVelocityPxMs = 0.01, }) => {
13853
+ const useHoneyDecay = ({ initialValue, min, max, friction = 0.002, minVelocityPxMs = 0.01, emaAlpha = 0.2, onStop, }) => {
13850
13854
  const [value, setValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initialValue);
13851
13855
  const valueRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(initialValue);
13852
13856
  const velocityPxMsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(0);
13857
+ const hasActiveInertiaRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);
13853
13858
  const minRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(min);
13854
13859
  const maxRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(max);
13860
+ const onStopRef = (0,_hooks__WEBPACK_IMPORTED_MODULE_2__.useHoneyLatest)(onStop);
13855
13861
  const frameHandler = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((deltaTimeMs, frameContext) => {
13856
- const result = (0,_react_hive_honey_utils__WEBPACK_IMPORTED_MODULE_1__.applyInertiaStep)({
13862
+ // Ignore the first RAF tick
13863
+ if (deltaTimeMs === 0) {
13864
+ return;
13865
+ }
13866
+ const inertia = (0,_react_hive_honey_utils__WEBPACK_IMPORTED_MODULE_1__.applyInertiaStep)({
13857
13867
  value: valueRef.current,
13858
13868
  velocityPxMs: velocityPxMsRef.current,
13859
13869
  min: minRef.current,
@@ -13861,66 +13871,82 @@ const useHoneyDecay = ({ initialValue, min, max, friction = 0.002, minVelocityPx
13861
13871
  deltaTimeMs,
13862
13872
  friction,
13863
13873
  minVelocityPxMs,
13874
+ emaAlpha,
13864
13875
  });
13865
- if (!result) {
13876
+ if (inertia === null) {
13866
13877
  velocityPxMsRef.current = 0;
13878
+ if (hasActiveInertiaRef.current) {
13879
+ hasActiveInertiaRef.current = false;
13880
+ onStopRef.current?.();
13881
+ }
13867
13882
  frameContext.stop();
13868
13883
  return;
13869
13884
  }
13870
- valueRef.current = result.value;
13871
- velocityPxMsRef.current = result.velocityPxMs;
13872
- setValue(result.value);
13873
- }, [friction, minVelocityPxMs]);
13874
- const rafLoop = (0,_use_honey_raf_loop__WEBPACK_IMPORTED_MODULE_2__.useHoneyRafLoop)(frameHandler);
13885
+ hasActiveInertiaRef.current = true;
13886
+ valueRef.current = inertia.value;
13887
+ velocityPxMsRef.current = inertia.velocityPxMs;
13888
+ setValue(inertia.value);
13889
+ }, [friction, minVelocityPxMs, emaAlpha]);
13890
+ const rafLoop = (0,_hooks__WEBPACK_IMPORTED_MODULE_2__.useHoneyRafLoop)(frameHandler);
13875
13891
  const setBounds = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((nextMin, nextMax) => {
13876
13892
  minRef.current = nextMin;
13877
13893
  maxRef.current = nextMax;
13878
- if (valueRef.current < nextMin) {
13879
- valueRef.current = nextMin;
13880
- setValue(nextMin);
13881
- }
13882
- else if (valueRef.current > nextMax) {
13883
- valueRef.current = nextMax;
13884
- setValue(nextMax);
13894
+ const currentValue = valueRef.current;
13895
+ if (currentValue < nextMin || currentValue > nextMax) {
13896
+ const nextValue = Math.min(Math.max(currentValue, nextMin), nextMax);
13897
+ valueRef.current = nextValue;
13898
+ velocityPxMsRef.current = 0;
13899
+ setValue(nextValue);
13900
+ if (hasActiveInertiaRef.current) {
13901
+ hasActiveInertiaRef.current = false;
13902
+ onStopRef.current?.();
13903
+ }
13904
+ rafLoop.stop();
13885
13905
  }
13886
- }, []);
13906
+ }, [rafLoop.stop]);
13887
13907
  const start = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((velocityPxMs) => {
13888
13908
  velocityPxMsRef.current = velocityPxMs;
13909
+ hasActiveInertiaRef.current = true;
13910
+ rafLoop.start();
13911
+ }, [rafLoop.start]);
13912
+ const startFrom = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((nextValue, velocityPxMs) => {
13913
+ valueRef.current = nextValue;
13914
+ velocityPxMsRef.current = velocityPxMs;
13915
+ hasActiveInertiaRef.current = true;
13916
+ setValue(nextValue);
13889
13917
  rafLoop.start();
13890
13918
  }, [rafLoop.start]);
13891
13919
  const stop = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
13920
+ if (hasActiveInertiaRef.current) {
13921
+ hasActiveInertiaRef.current = false;
13922
+ onStopRef.current?.();
13923
+ }
13892
13924
  velocityPxMsRef.current = 0;
13893
13925
  rafLoop.stop();
13894
13926
  }, [rafLoop.stop]);
13895
- const snapTo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((nextValue) => {
13896
- velocityPxMsRef.current = 0;
13897
- valueRef.current = nextValue;
13898
- rafLoop.stop();
13899
- setValue(nextValue);
13900
- }, [rafLoop.stop]);
13901
13927
  return {
13902
13928
  value,
13903
13929
  isRunning: rafLoop.isRunning,
13904
13930
  setBounds,
13905
13931
  start,
13932
+ startFrom,
13906
13933
  stop,
13907
- snapTo,
13908
13934
  };
13909
13935
  };
13910
13936
 
13911
13937
 
13912
13938
  /***/ },
13913
13939
 
13914
- /***/ "./src/hooks/use-honey-document-key-up-handler.ts"
13915
- /*!********************************************************!*\
13916
- !*** ./src/hooks/use-honey-document-key-up-handler.ts ***!
13917
- \********************************************************/
13940
+ /***/ "./src/hooks/use-honey-document-key-up.ts"
13941
+ /*!************************************************!*\
13942
+ !*** ./src/hooks/use-honey-document-key-up.ts ***!
13943
+ \************************************************/
13918
13944
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
13919
13945
 
13920
13946
  "use strict";
13921
13947
  __webpack_require__.r(__webpack_exports__);
13922
13948
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13923
- /* harmony export */ useHoneyDocumentKeyUpHandler: () => (/* binding */ useHoneyDocumentKeyUpHandler)
13949
+ /* harmony export */ useHoneyDocumentKeyUp: () => (/* binding */ useHoneyDocumentKeyUp)
13924
13950
  /* harmony export */ });
13925
13951
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
13926
13952
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
@@ -13931,13 +13957,13 @@ __webpack_require__.r(__webpack_exports__);
13931
13957
  * This hook adds a `keyup` event listener at the document level and triggers the provided `keyUpHandler`
13932
13958
  * when one of the specified `listenKeys` is released.
13933
13959
  *
13934
- * @param keyUpHandler - The callback function invoked when a matching key is released.
13960
+ * @param onKeyUp - The callback function invoked when a matching key is released.
13935
13961
  * @param listenKeys - An array of key codes (`KeyboardEvent.code`) to listen for.
13936
13962
  * @param options - Optional configuration to control event behavior and listener activation.
13937
13963
  *
13938
13964
  * @example
13939
13965
  * ```tsx
13940
- * useHoneyDocumentKeyUpHandler(
13966
+ * useHoneyDocumentKeyUp(
13941
13967
  * (keyCode, event) => {
13942
13968
  * console.log('Key released:', keyCode);
13943
13969
  * },
@@ -13945,7 +13971,7 @@ __webpack_require__.r(__webpack_exports__);
13945
13971
  * );
13946
13972
  * ```
13947
13973
  */
13948
- const useHoneyDocumentKeyUpHandler = (keyUpHandler, listenKeys, { enabled = true, preventDefault = true } = {}) => {
13974
+ const useHoneyDocumentKeyUp = (onKeyUp, listenKeys, { enabled = true, preventDefault = true } = {}) => {
13949
13975
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
13950
13976
  if (!enabled) {
13951
13977
  return;
@@ -13956,14 +13982,14 @@ const useHoneyDocumentKeyUpHandler = (keyUpHandler, listenKeys, { enabled = true
13956
13982
  if (preventDefault) {
13957
13983
  e.preventDefault();
13958
13984
  }
13959
- keyUpHandler(keyCode, e);
13985
+ onKeyUp(keyCode, e);
13960
13986
  }
13961
13987
  };
13962
13988
  document.addEventListener('keyup', handleKeyUp);
13963
13989
  return () => {
13964
13990
  document.removeEventListener('keyup', handleKeyUp);
13965
13991
  };
13966
- }, [keyUpHandler, enabled, preventDefault]);
13992
+ }, [onKeyUp, enabled, preventDefault]);
13967
13993
  };
13968
13994
 
13969
13995
 
@@ -14128,6 +14154,40 @@ const useHoneyDrag = (draggableElementRef, { skipOnEndDragWhenStopped = false, e
14128
14154
  };
14129
14155
 
14130
14156
 
14157
+ /***/ },
14158
+
14159
+ /***/ "./src/hooks/use-honey-latest.ts"
14160
+ /*!***************************************!*\
14161
+ !*** ./src/hooks/use-honey-latest.ts ***!
14162
+ \***************************************/
14163
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
14164
+
14165
+ "use strict";
14166
+ __webpack_require__.r(__webpack_exports__);
14167
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
14168
+ /* harmony export */ useHoneyLatest: () => (/* binding */ useHoneyLatest)
14169
+ /* harmony export */ });
14170
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
14171
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
14172
+
14173
+ /**
14174
+ * Stores the latest value in a stable ref.
14175
+ *
14176
+ * Guarantees that:
14177
+ * - `ref.current` always points to the latest value
14178
+ * - the ref object identity never changes
14179
+ *
14180
+ * Overload behavior:
14181
+ * - If a non-optional value is provided, `.current` is non-optional
14182
+ * - If an optional value is provided, `.current` is optional
14183
+ */
14184
+ const useHoneyLatest = (value) => {
14185
+ const ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(value);
14186
+ ref.current = value;
14187
+ return ref;
14188
+ };
14189
+
14190
+
14131
14191
  /***/ },
14132
14192
 
14133
14193
  /***/ "./src/hooks/use-honey-layout.ts"
@@ -14144,7 +14204,7 @@ __webpack_require__.r(__webpack_exports__);
14144
14204
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
14145
14205
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
14146
14206
  /* harmony import */ var _react_hive_honey_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @react-hive/honey-utils */ "./node_modules/@react-hive/honey-utils/dist/index.mjs");
14147
- /* harmony import */ var _contexts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../contexts */ "./src/contexts/index.ts");
14207
+ /* harmony import */ var _contexts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ~/contexts */ "./src/contexts/index.ts");
14148
14208
 
14149
14209
 
14150
14210
 
@@ -14179,7 +14239,7 @@ __webpack_require__.r(__webpack_exports__);
14179
14239
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
14180
14240
  /* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash.throttle */ "./node_modules/lodash.throttle/index.js");
14181
14241
  /* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_1__);
14182
- /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers */ "./src/helpers/index.ts");
14242
+ /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ~/helpers */ "./src/helpers/index.ts");
14183
14243
 
14184
14244
 
14185
14245
 
@@ -14285,7 +14345,7 @@ __webpack_require__.r(__webpack_exports__);
14285
14345
  /* harmony export */ });
14286
14346
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
14287
14347
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
14288
- /* harmony import */ var _use_honey_layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-honey-layout */ "./src/hooks/use-honey-layout.ts");
14348
+ /* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ~/hooks */ "./src/hooks/index.ts");
14289
14349
 
14290
14350
 
14291
14351
  /**
@@ -14313,7 +14373,7 @@ __webpack_require__.r(__webpack_exports__);
14313
14373
  * ```
14314
14374
  */
14315
14375
  const useHoneyOverlay = (targetOverlayId, { onKeyUp } = {}) => {
14316
- const { overlays } = (0,_use_honey_layout__WEBPACK_IMPORTED_MODULE_1__.useHoneyLayout)();
14376
+ const { overlays } = (0,_hooks__WEBPACK_IMPORTED_MODULE_1__.useHoneyLayout)();
14317
14377
  const overlay = overlays.find(overlay => overlay.id === targetOverlayId);
14318
14378
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
14319
14379
  // If no overlay is found or no `onKeyUp` handler is provided, skip setting up the listener
@@ -14344,6 +14404,10 @@ __webpack_require__.r(__webpack_exports__);
14344
14404
  /* harmony export */ });
14345
14405
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
14346
14406
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
14407
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ~/constants */ "./src/constants.ts");
14408
+ /* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ~/hooks */ "./src/hooks/index.ts");
14409
+
14410
+
14347
14411
 
14348
14412
  /**
14349
14413
  * A hook for running a controlled `requestAnimationFrame` loop.
@@ -14401,11 +14465,25 @@ const useHoneyRafLoop = (onFrame, { autoStart = false, resumeOnVisibility = fals
14401
14465
  onError, } = {}) => {
14402
14466
  const rafIdRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
14403
14467
  const lastTimeMsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
14404
- const onFrameRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(onFrame);
14405
- // Always keep the latest callback without restarting RAF
14406
- onFrameRef.current = onFrame;
14468
+ const onFrameRef = (0,_hooks__WEBPACK_IMPORTED_MODULE_2__.useHoneyLatest)(onFrame);
14407
14469
  const [isRunning, setIsRunning] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
14470
+ const isRunningRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);
14471
+ const stop = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
14472
+ if (!isRunningRef.current) {
14473
+ return;
14474
+ }
14475
+ isRunningRef.current = false;
14476
+ if (rafIdRef.current !== null) {
14477
+ cancelAnimationFrame(rafIdRef.current);
14478
+ rafIdRef.current = null;
14479
+ }
14480
+ lastTimeMsRef.current = null;
14481
+ setIsRunning(false);
14482
+ }, []);
14408
14483
  const loop = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(timeMs => {
14484
+ if (!isRunningRef.current) {
14485
+ return;
14486
+ }
14409
14487
  if (lastTimeMsRef.current === null) {
14410
14488
  lastTimeMsRef.current = timeMs;
14411
14489
  }
@@ -14419,36 +14497,33 @@ onError, } = {}) => {
14419
14497
  onFrameRef.current(deltaTimeMs, {
14420
14498
  stop,
14421
14499
  });
14422
- rafIdRef.current = requestAnimationFrame(loop);
14500
+ if (isRunningRef.current) {
14501
+ rafIdRef.current = requestAnimationFrame(loop);
14502
+ }
14423
14503
  }
14424
14504
  catch (e) {
14505
+ if (_constants__WEBPACK_IMPORTED_MODULE_1__.__DEV__) {
14506
+ console.error(e);
14507
+ }
14425
14508
  stop();
14426
14509
  onError?.(e);
14427
14510
  }
14428
- }, [maxDeltaMs, onError]);
14511
+ }, [maxDeltaMs, stop, onError]);
14429
14512
  const start = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
14430
- if (rafIdRef.current !== null) {
14513
+ if (isRunningRef.current) {
14431
14514
  return;
14432
14515
  }
14433
14516
  lastTimeMsRef.current = null;
14517
+ isRunningRef.current = true;
14434
14518
  setIsRunning(true);
14435
14519
  rafIdRef.current = requestAnimationFrame(loop);
14436
14520
  }, [loop]);
14437
- const stop = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
14438
- if (rafIdRef.current === null) {
14439
- return;
14440
- }
14441
- cancelAnimationFrame(rafIdRef.current);
14442
- rafIdRef.current = null;
14443
- lastTimeMsRef.current = null;
14444
- setIsRunning(false);
14445
- }, []);
14446
14521
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
14447
14522
  if (autoStart) {
14448
14523
  start();
14449
14524
  }
14450
14525
  return stop;
14451
- }, [autoStart, start, stop]);
14526
+ }, [autoStart]);
14452
14527
  // Pause when a tab is hidden (important for mobile)
14453
14528
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
14454
14529
  const onVisibilityChange = () => {
@@ -14792,7 +14867,7 @@ __webpack_require__.r(__webpack_exports__);
14792
14867
  /* harmony export */ });
14793
14868
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
14794
14869
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
14795
- /* harmony import */ var _use_honey_raf_loop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-honey-raf-loop */ "./src/hooks/use-honey-raf-loop.ts");
14870
+ /* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ~/hooks */ "./src/hooks/index.ts");
14796
14871
 
14797
14872
 
14798
14873
  /**
@@ -14823,10 +14898,8 @@ __webpack_require__.r(__webpack_exports__);
14823
14898
  */
14824
14899
  const useHoneyTimer = ({ initialTimeMs, targetTimeMs = 0, mode = 'countdown', autoStart = false, onEnd, }) => {
14825
14900
  const [timeMs, setTimeMs] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initialTimeMs);
14826
- const timeRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(timeMs);
14827
- timeRef.current = timeMs;
14828
- const onEndRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(onEnd);
14829
- onEndRef.current = onEnd;
14901
+ const timeRef = (0,_hooks__WEBPACK_IMPORTED_MODULE_1__.useHoneyLatest)(timeMs);
14902
+ const onEndRef = (0,_hooks__WEBPACK_IMPORTED_MODULE_1__.useHoneyLatest)(onEnd);
14830
14903
  /**
14831
14904
  * RAF frame handler responsible for advancing the timer.
14832
14905
  *
@@ -14854,7 +14927,7 @@ const useHoneyTimer = ({ initialTimeMs, targetTimeMs = 0, mode = 'countdown', au
14854
14927
  onEndRef.current?.();
14855
14928
  }
14856
14929
  }, [mode, targetTimeMs]);
14857
- const rafLoop = (0,_use_honey_raf_loop__WEBPACK_IMPORTED_MODULE_1__.useHoneyRafLoop)(frameHandler);
14930
+ const rafLoop = (0,_hooks__WEBPACK_IMPORTED_MODULE_1__.useHoneyRafLoop)(frameHandler);
14858
14931
  const start = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
14859
14932
  timeRef.current = initialTimeMs;
14860
14933
  setTimeMs(initialTimeMs);
@@ -14877,7 +14950,7 @@ const useHoneyTimer = ({ initialTimeMs, targetTimeMs = 0, mode = 'countdown', au
14877
14950
  if (autoStart) {
14878
14951
  start();
14879
14952
  }
14880
- }, [autoStart, start]);
14953
+ }, [autoStart]);
14881
14954
  return {
14882
14955
  timeMs,
14883
14956
  isRunning: rafLoop.isRunning,
@@ -14904,7 +14977,7 @@ __webpack_require__.r(__webpack_exports__);
14904
14977
  /* harmony export */ });
14905
14978
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
14906
14979
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
14907
- /* harmony import */ var _use_honey_layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-honey-layout */ "./src/hooks/use-honey-layout.ts");
14980
+ /* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ~/hooks */ "./src/hooks/index.ts");
14908
14981
 
14909
14982
 
14910
14983
  /**
@@ -14916,7 +14989,7 @@ __webpack_require__.r(__webpack_exports__);
14916
14989
  * @returns The registered overlay instance, or null if not registered.
14917
14990
  */
14918
14991
  const useRegisterHoneyOverlay = (isRegister, overlayConfig) => {
14919
- const { registerOverlay, unregisterOverlay } = (0,_use_honey_layout__WEBPACK_IMPORTED_MODULE_1__.useHoneyLayout)();
14992
+ const { registerOverlay, unregisterOverlay } = (0,_hooks__WEBPACK_IMPORTED_MODULE_1__.useHoneyLayout)();
14920
14993
  const overlayRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
14921
14994
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
14922
14995
  if (!isRegister) {
@@ -15670,9 +15743,10 @@ __webpack_require__.r(__webpack_exports__);
15670
15743
  /* harmony export */ resolveSpacing: () => (/* binding */ resolveSpacing),
15671
15744
  /* harmony export */ searchFlattenedItems: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_6__.searchFlattenedItems),
15672
15745
  /* harmony export */ useHoneyDecay: () => (/* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_5__.useHoneyDecay),
15673
- /* harmony export */ useHoneyDocumentKeyUpHandler: () => (/* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_5__.useHoneyDocumentKeyUpHandler),
15746
+ /* harmony export */ useHoneyDocumentKeyUp: () => (/* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_5__.useHoneyDocumentKeyUp),
15674
15747
  /* harmony export */ useHoneyDrag: () => (/* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_5__.useHoneyDrag),
15675
15748
  /* harmony export */ useHoneyGridContext: () => (/* reexport safe */ _components__WEBPACK_IMPORTED_MODULE_3__.useHoneyGridContext),
15749
+ /* harmony export */ useHoneyLatest: () => (/* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_5__.useHoneyLatest),
15676
15750
  /* harmony export */ useHoneyLayout: () => (/* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_5__.useHoneyLayout),
15677
15751
  /* harmony export */ useHoneyMediaQuery: () => (/* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_5__.useHoneyMediaQuery),
15678
15752
  /* harmony export */ useHoneyOnChange: () => (/* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_5__.useHoneyOnChange),