@react-hive/honey-utils 3.17.0 → 3.19.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 +1 -1
- package/dist/README.md +1 -1
- package/dist/geometry/apply-inertia-step.d.ts +88 -81
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.dev.cjs +38 -59
- package/dist/index.dev.cjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -636,7 +636,7 @@ function divide(a: number, b: number): number {
|
|
|
636
636
|
---
|
|
637
637
|
|
|
638
638
|
- `resolveBoundedDelta(options: ResolveBoundedDeltaOptions): Nullable<number>` – Resolves the next numeric value by consuming a delta within fixed bounds. Prevents overshoot, partially consumes deltas at boundaries, and returns `null` when movement in the given direction is no longer possible. Useful for drag constraints, sliders, synthetic scrolling, and inertia systems.
|
|
639
|
-
- `applyInertiaStep(options: ApplyInertiaStepOptions): Nullable<
|
|
639
|
+
- `applyInertiaStep(options: ApplyInertiaStepOptions): Nullable<InertiaStepResult>` - Advances a value by **a single momentum (inertia) step** using velocity integration, exponential friction, optional velocity smoothing, and hard bounds. This function models momentum-driven motion and is intended to be called repeatedly from an animation loop (e.g. `requestAnimationFrame`). Returns the updated value and velocity while inertia remains active, or `null` when inertia has naturally completed or further movement is blocked by bounds. Common use cases include momentum scrolling, drag-to-scroll interactions, carousels, sliders, and timelines.
|
|
640
640
|
|
|
641
641
|
#### Layout
|
|
642
642
|
|
package/dist/README.md
CHANGED
|
@@ -636,7 +636,7 @@ function divide(a: number, b: number): number {
|
|
|
636
636
|
---
|
|
637
637
|
|
|
638
638
|
- `resolveBoundedDelta(options: ResolveBoundedDeltaOptions): Nullable<number>` – Resolves the next numeric value by consuming a delta within fixed bounds. Prevents overshoot, partially consumes deltas at boundaries, and returns `null` when movement in the given direction is no longer possible. Useful for drag constraints, sliders, synthetic scrolling, and inertia systems.
|
|
639
|
-
- `applyInertiaStep(options: ApplyInertiaStepOptions): Nullable<
|
|
639
|
+
- `applyInertiaStep(options: ApplyInertiaStepOptions): Nullable<InertiaStepResult>` - Advances a value by **a single momentum (inertia) step** using velocity integration, exponential friction, optional velocity smoothing, and hard bounds. This function models momentum-driven motion and is intended to be called repeatedly from an animation loop (e.g. `requestAnimationFrame`). Returns the updated value and velocity while inertia remains active, or `null` when inertia has naturally completed or further movement is blocked by bounds. Common use cases include momentum scrolling, drag-to-scroll interactions, carousels, sliders, and timelines.
|
|
640
640
|
|
|
641
641
|
#### Layout
|
|
642
642
|
|
|
@@ -1,35 +1,33 @@
|
|
|
1
1
|
import type { Nullable } from '~/types';
|
|
2
2
|
export interface InertiaOptions {
|
|
3
3
|
/**
|
|
4
|
-
* Current velocity of the motion
|
|
4
|
+
* Current velocity of the inertial motion.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* - `px/ms` for scrolling or dragging
|
|
8
|
-
* - arbitrary units for sliders or timelines
|
|
6
|
+
* Expressed in **pixels per millisecond (`px/ms`)**.
|
|
9
7
|
*
|
|
10
|
-
* The sign
|
|
8
|
+
* The sign determines direction:
|
|
9
|
+
* - Positive → movement toward the upper bound
|
|
10
|
+
* - Negative → movement toward the lower bound
|
|
11
11
|
*/
|
|
12
|
-
|
|
12
|
+
velocityPxMs: number;
|
|
13
13
|
/**
|
|
14
14
|
* Time elapsed since the previous inertia step, in milliseconds.
|
|
15
|
-
*
|
|
16
|
-
* This value is typically derived from a high-resolution clock such as `performance.now()`
|
|
17
|
-
* and allows inertia behavior to remain frame-rate independent.
|
|
18
15
|
*/
|
|
19
|
-
|
|
16
|
+
deltaTimeMs: number;
|
|
20
17
|
/**
|
|
21
|
-
* Exponential friction coefficient controlling
|
|
18
|
+
* Exponential friction coefficient controlling velocity decay.
|
|
19
|
+
*
|
|
20
|
+
* Friction is applied per millisecond using an exponential model:
|
|
22
21
|
*
|
|
23
|
-
*
|
|
24
|
-
* deceleration when used with an exponential decay model.
|
|
22
|
+
* `velocityPxMs *= exp(-friction * deltaTimeMs)`
|
|
25
23
|
*
|
|
26
|
-
* Smaller values result in
|
|
27
|
-
*
|
|
24
|
+
* Smaller values result in longer, floatier inertia;
|
|
25
|
+
* larger values cause quicker deceleration.
|
|
28
26
|
*
|
|
29
27
|
* Typical values:
|
|
30
|
-
* - `0.001`
|
|
31
|
-
* - `0.002`
|
|
32
|
-
* - `0.005`
|
|
28
|
+
* - `0.001` — very long, floaty inertia
|
|
29
|
+
* - `0.002` — balanced, natural decay (default)
|
|
30
|
+
* - `0.005` — short, snappy stop
|
|
33
31
|
*
|
|
34
32
|
* @default 0.002
|
|
35
33
|
*/
|
|
@@ -37,21 +35,39 @@ export interface InertiaOptions {
|
|
|
37
35
|
/**
|
|
38
36
|
* Minimum absolute velocity below which inertia is considered complete.
|
|
39
37
|
*
|
|
40
|
-
* When
|
|
41
|
-
* no further movement is applied and inertia terminates.
|
|
38
|
+
* When `|velocityPxMs| < minVelocityPxMs`, inertia terminates and no further movement is applied.
|
|
42
39
|
*
|
|
43
|
-
* This prevents unnecessary micro-updates and jitter near rest.
|
|
40
|
+
* This prevents unnecessary micro-updates and visual jitter near rest.
|
|
44
41
|
*
|
|
45
42
|
* @default 0.01
|
|
46
43
|
*/
|
|
47
|
-
|
|
44
|
+
minVelocityPxMs?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Exponential Moving Average (EMA) factor used to smooth velocity changes.
|
|
47
|
+
*
|
|
48
|
+
* This is applied **after friction**, blending the previous velocity
|
|
49
|
+
* with the newly decayed velocity to reduce jitter and sudden spikes.
|
|
50
|
+
*
|
|
51
|
+
* Value range: `0..1`
|
|
52
|
+
*
|
|
53
|
+
* - `0` → EMA disabled (raw exponential decay only)
|
|
54
|
+
* - `0.2` → light smoothing (recommended for scroll / drag inertia)
|
|
55
|
+
* - `0.5` → heavy smoothing (very soft, less responsive)
|
|
56
|
+
*
|
|
57
|
+
* Formula:
|
|
58
|
+
* `vNext = vPrev * (1 - emaAlpha) + vDecayed * emaAlpha`
|
|
59
|
+
*
|
|
60
|
+
* @default 0.2
|
|
61
|
+
*/
|
|
62
|
+
emaAlpha?: number;
|
|
48
63
|
}
|
|
49
64
|
interface ApplyInertiaStepOptions extends InertiaOptions {
|
|
50
65
|
/**
|
|
51
|
-
* Current value before applying the inertia step.
|
|
66
|
+
* Current numeric value before applying the inertia step.
|
|
52
67
|
*
|
|
53
|
-
* This
|
|
54
|
-
*
|
|
68
|
+
* This commonly represents a translated position
|
|
69
|
+
* (e.g. scroll offset or `translateX` value),
|
|
70
|
+
* but may be any numeric value constrained by bounds.
|
|
55
71
|
*/
|
|
56
72
|
value: number;
|
|
57
73
|
/**
|
|
@@ -64,71 +80,62 @@ interface ApplyInertiaStepOptions extends InertiaOptions {
|
|
|
64
80
|
max: number;
|
|
65
81
|
}
|
|
66
82
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* This utility models **inertial motion** (momentum + decay) on top of
|
|
70
|
-
* {@link resolveBoundedDelta}, which acts as the authoritative constraint layer.
|
|
71
|
-
*
|
|
72
|
-
* The function:
|
|
73
|
-
* - Integrates velocity over the elapsed time to produce a movement delta
|
|
74
|
-
* - Resolves that delta against fixed bounds
|
|
75
|
-
* - Applies exponential friction to gradually reduce velocity
|
|
76
|
-
* - Stops immediately when a bound is hit or velocity falls below a threshold
|
|
77
|
-
*
|
|
78
|
-
* ⚠️ This function performs **one step only** and is intended to be called
|
|
79
|
-
* repeatedly from an animation loop (e.g. `requestAnimationFrame`).
|
|
83
|
+
* Result of a single inertia simulation step.
|
|
80
84
|
*
|
|
81
|
-
*
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
* Returned when inertia is still active and further movement in the current direction is possible.
|
|
86
|
+
*/
|
|
87
|
+
export interface InertiaStepResult {
|
|
88
|
+
/**
|
|
89
|
+
* Updated value after applying this inertia step.
|
|
90
|
+
*
|
|
91
|
+
* Guaranteed to be within `[min, max]`.
|
|
92
|
+
*/
|
|
93
|
+
value: number;
|
|
94
|
+
/**
|
|
95
|
+
* Updated velocity after friction decay and optional EMA smoothing.
|
|
96
|
+
*
|
|
97
|
+
* Expressed in pixels per millisecond (`px/ms`).
|
|
98
|
+
*/
|
|
99
|
+
velocityPxMs: number;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Applies a **single step** of bounded, velocity-based inertia.
|
|
86
103
|
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* @param friction - Exponential friction coefficient controlling decay rate.
|
|
93
|
-
* @param minVelocity - Minimum velocity below which inertia stops.
|
|
104
|
+
* This function models **momentum-driven motion** by:
|
|
105
|
+
* - integrating velocity over elapsed time
|
|
106
|
+
* - applying exponential friction
|
|
107
|
+
* - optionally smoothing velocity using EMA
|
|
108
|
+
* - enforcing hard bounds via {@link resolveBoundedDelta}
|
|
94
109
|
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
110
|
+
* Boundary handling guarantees:
|
|
111
|
+
* - no overshoot
|
|
112
|
+
* - no oscillation at limits
|
|
113
|
+
* - deterministic stopping behavior
|
|
97
114
|
*
|
|
98
|
-
*
|
|
99
|
-
* ```ts
|
|
100
|
-
* let value = translateX;
|
|
101
|
-
* let velocity = releaseVelocity; // px/ms from drag end
|
|
102
|
-
* let lastTime = performance.now();
|
|
115
|
+
* ---
|
|
103
116
|
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
117
|
+
* ### Termination conditions
|
|
118
|
+
* Inertia ends immediately when:
|
|
119
|
+
* - the absolute velocity falls below `minVelocityPxMs`, or
|
|
120
|
+
* - movement in the current direction is blocked by a bound
|
|
107
121
|
*
|
|
108
|
-
*
|
|
109
|
-
* value,
|
|
110
|
-
* velocity,
|
|
111
|
-
* min: -maxOverflow,
|
|
112
|
-
* max: 0,
|
|
113
|
-
* deltaTime,
|
|
114
|
-
* });
|
|
122
|
+
* ---
|
|
115
123
|
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
124
|
+
* ⚠️ **Single-step function**
|
|
125
|
+
* This function advances inertia **once only**.
|
|
126
|
+
* It must be invoked repeatedly from an animation loop
|
|
127
|
+
* (e.g. `requestAnimationFrame`) to produce continuous motion.
|
|
119
128
|
*
|
|
120
|
-
*
|
|
121
|
-
* velocity = result.velocity;
|
|
129
|
+
* ---
|
|
122
130
|
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
131
|
+
* ### Common use cases
|
|
132
|
+
* - Synthetic scrolling with momentum
|
|
133
|
+
* - Drag-to-scroll interactions
|
|
134
|
+
* - Carousels and sliders
|
|
135
|
+
* - Timelines and scrubbers
|
|
126
136
|
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
137
|
+
* @returns An {@link InertiaStepResult} while inertia remains active,
|
|
138
|
+
* or `null` when inertia has completed or cannot proceed.
|
|
129
139
|
*/
|
|
130
|
-
export declare const applyInertiaStep: ({ value, min, max,
|
|
131
|
-
value: number;
|
|
132
|
-
velocity: number;
|
|
133
|
-
}>;
|
|
140
|
+
export declare const applyInertiaStep: ({ value, min, max, velocityPxMs, deltaTimeMs, friction, minVelocityPxMs, emaAlpha, }: ApplyInertiaStepOptions) => Nullable<InertiaStepResult>;
|
|
134
141
|
export {};
|
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={};function n(e,t){if(!e)throw new Error(t)}e.r(t),e.d(t,{FOCUSABLE_HTML_TAGS:()=>
|
|
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={};function n(e,t){if(!e)throw new Error(t)}e.r(t),e.d(t,{FOCUSABLE_HTML_TAGS:()=>Te,applyInertiaStep:()=>Ce,assert:()=>n,blobToFile:()=>xe,calculateCenterOffset:()=>pe,calculateEuclideanDistance:()=>le,calculateMovingSpeed:()=>ie,calculatePercentage:()=>ae,camelToDashCase:()=>G,camelToWords:()=>Z,centerElementInContainer:()=>we,chunk:()=>E,cloneBlob:()=>se,compact:()=>M,compose:()=>T,definedProps:()=>Oe,delay:()=>B,difference:()=>F,downloadFile:()=>he,everyAsync:()=>H,fileListToFiles:()=>ve,filterParallel:()=>j,filterSequential:()=>X,findAsync:()=>W,findCharIndices:()=>ee,forEachChar:()=>te,getDOMRectIntersectionRatio:()=>Fe,getElementOffsetRect:()=>ce,getFocusableHtmlElements:()=>_e,getLocalStorageCapabilities:()=>Le,getWordsInitials:()=>ne,getXOverflowWidth:()=>me,getYOverflowHeight:()=>ge,hasXOverflow:()=>de,hasYOverflow:()=>ye,hashString:()=>oe,intersection:()=>C,invokeIfFunction:()=>re,isAnchorHtmlElement:()=>ue,isArray:()=>x,isBlob:()=>h,isBool:()=>s,isContentEditableHtmlElement:()=>fe,isDate:()=>f,isDecimal:()=>v,isDefined:()=>i,isEmptyArray:()=>A,isEmptyObject:()=>u,isError:()=>d,isFile:()=>Se,isFiniteNumber:()=>b,isFunction:()=>_,isHtmlElementFocusable:()=>ke,isInteger:()=>S,isLocalStorageReadable:()=>Ie,isMap:()=>g,isNil:()=>l,isNilOrEmptyString:()=>J,isNull:()=>r,isNumber:()=>o,isObject:()=>c,isPromise:()=>L,isRegExp:()=>y,isSet:()=>p,isString:()=>q,isSymbol:()=>w,isUndefined:()=>a,isValidDate:()=>m,moveFocusWithinContainer:()=>De,noop:()=>k,not:()=>D,once:()=>I,parse2DMatrix:()=>be,parseFileName:()=>Q,pipe:()=>P,readFilesFromDataTransfer:()=>Me,reduceAsync:()=>z,resolveAxisDelta:()=>Pe,resolveBoundedDelta:()=>Ee,retry:()=>$,runParallel:()=>R,runSequential:()=>N,someAsync:()=>Y,splitStringIntoWords:()=>K,timeout:()=>U,toKebabCase:()=>V,traverseFileSystemDirectory:()=>Ae,unique:()=>O});const r=e=>null===e,l=e=>null==e,i=e=>null!=e,a=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,h=e=>e instanceof Blob,d=e=>e instanceof Error,m=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),v=e=>b(e)&&!Number.isInteger(e),x=e=>Array.isArray(e),A=e=>x(e)&&0===e.length,M=e=>e.filter(Boolean),O=e=>[...new Set(e)],E=(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))),C=(...e)=>{if(0===e.length)return[];if(1===e.length)return[...e[0]];const[t,...n]=e;return O(t).filter(e=>n.every(t=>t.includes(e)))},F=(e,t)=>e.filter(e=>!t.includes(e)),P=(...e)=>t=>e.reduce((e,t)=>t(e),t),T=(...e)=>t=>e.reduceRight((e,t)=>t(e),t),k=()=>{},_=e=>"function"==typeof e,D=e=>(...t)=>!e(...t),I=e=>{let t,n=!1;return function(...r){return n||(n=!0,t=e.apply(this,r)),t}},L=e=>_(e?.then),N=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)),X=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},j=async(e,t)=>{const n=await R(e,async(e,n,r)=>!!await t(e,n,r)&&e);return M(n)},Y=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return!0;return!1},H=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},W=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return e[n];return null},B=e=>new Promise(t=>setTimeout(t,e)),U=async(e,t,n="Operation timed out")=>{try{return await Promise.race([e,B(t).then(()=>Promise.reject(new Error(n)))])}finally{}},$=(e,{maxAttempts:t=3,delayMs:n=300,backoff:r=!0,onRetry:l}={})=>async(...i)=>{let a;for(let o=1;o<=t;o++)try{return await e(...i)}catch(e){if(a=e,o<t){l?.(o,e);const t=r?n*2**(o-1):n;await B(t)}}throw a},q=e=>"string"==typeof e,V=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),G=e=>{const t=e.charAt(0),n=e.slice(1);return t.toLowerCase()+n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)},Z=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),K=e=>0===e.length?[]:e.split(" ").filter(Boolean),J=e=>""===e||l(e),Q=e=>{const t=e.lastIndexOf(".");return t<=0||t===e.length-1?[e,""]:[e.slice(0,t),e.slice(t+1).toLowerCase()]},ee=(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},te=(e,t,n)=>{if(0===e.length)return;const r=e.length;for(let l=0;l<r;l++){const i=e[l],a={charIndex:l,prevChar:l>0?e[l-1]:null,nextChar:l<r-1?e[l+1]:null};n?.(i,a)||t(i,a)}},ne=(e,t=1/0)=>0===e.length?"":K(e).slice(0,t).map(e=>e[0]).join("").toUpperCase(),re=(e,...t)=>"function"==typeof e?e(...t):e,le=(e,t,n,r)=>{const l=n-e,i=r-t;return Math.hypot(l,i)},ie=(e,t)=>Math.abs(e/t),ae=(e,t)=>e*t/100,oe=e=>{let t=5381;for(let n=0;n<e.length;n++)t=33*t^e.charCodeAt(n);return(t>>>0).toString(36)},se=e=>new Blob([e],{type:e.type}),ce=e=>new DOMRect(e.offsetLeft,e.offsetTop,e.clientWidth,e.clientHeight),ue=e=>"A"===e.tagName,fe=e=>"true"===e.getAttribute("contenteditable"),he=(e,{fileName:t,target:r}={})=>{if(a(document))return;const l=document.createElement("a");let i=null;try{const n=q(e)?e:i=URL.createObjectURL(e);l.href=n,t&&(l.download=t),r&&(l.target=r),document.body.appendChild(l),l.click()}finally{l.remove(),i&&setTimeout(()=>{n(i,"Object URL should not be null"),URL.revokeObjectURL(i)},0)}},de=e=>e.scrollWidth>e.clientWidth,me=e=>Math.max(0,e.scrollWidth-e.clientWidth),ye=e=>e.scrollHeight>e.clientHeight,ge=e=>Math.max(0,e.scrollHeight-e.clientHeight),pe=({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=pe({overflowSize:me(e),containerSize:e.clientWidth,elementOffset:t.offsetLeft,elementSize:t.clientWidth})),"y"!==n&&"both"!==n||(l=pe({overflowSize:ge(e),containerSize:e.clientHeight,elementOffset:t.offsetTop,elementSize:t.clientHeight})),e.style.transform=`translate(${r}px, ${l}px)`},be=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,i,a,o]=t[1].split(", ").map(parseFloat);return{translateX:a,translateY:o,scaleX:n,scaleY:i,skewX:l,skewY:r}},Se=e=>e instanceof File,ve=e=>{if(!e)return[];const t=[];for(let n=0;n<e.length;n++)t.push(e[n]);return t},xe=(e,t)=>new File([e],t,{type:e.type}),Ae=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?Ae(e,{skipFiles:t}):n.has(e.name)?[]:[await new Promise((t,n)=>{e.file(t,n)})])).flat()},Me=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(Ae(e,t));continue}if(e?.isFile){r.push(new Promise((t,n)=>e.file(e=>t([e]),n)));continue}}const i=l.getAsFile();i&&r.push(Promise.resolve([i]))}return(await Promise.all(r)).flat()},Oe=e=>Object.entries(e).reduce((e,[t,n])=>(void 0!==n&&(e[t]=n),e),{}),Ee=({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},Ce=({value:e,min:t,max:n,velocityPxMs:r,deltaTimeMs:l,friction:i=.002,minVelocityPxMs:a=.01,emaAlpha:o=.2})=>{if(Math.abs(r)<a)return null;const s=Ee({delta:r*l,value:e,min:t,max:n});if(null===s)return null;const c=r*Math.exp(-i*l),u=o>0?r*(1-o)+c*o:c;return Math.abs(u)<a?null:{value:s,velocityPxMs:u}},Fe=(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}}},Te=["INPUT","SELECT","TEXTAREA","BUTTON","A"],ke=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&&(Te.includes(e.tagName)?!ue(e)||""!==e.href:!!fe(e)||null!==n)},_e=e=>Array.from(e.querySelectorAll("*")).filter(ke),De=(e,t=null,{wrap:n=!0,getNextIndex:r}={})=>{const l=document.activeElement,i=t??l?.parentElement;if(!l||!i)return;const a=_e(i);if(0===a.length)return;const o=a.indexOf(l);if(-1===o)return;let s;r?s=r(o,e,a):"next"===e?(s=o+1,s>=a.length&&(s=n?0:null)):(s=o-1,s<0&&(s=n?a.length-1:null)),null!==s&&a[s]?.focus()},Ie=()=>{if("undefined"==typeof window||!window.localStorage)return!1;try{return window.localStorage.getItem("__non_existing_key__"),!0}catch{return!1}},Le=()=>{if(!Ie())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}};module.exports=t})();
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|