@react-hive/honey-utils 3.30.0 → 3.32.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 +81 -2
- package/dist/README.md +81 -2
- package/dist/dom/layout/center-element-in-container.d.ts +11 -5
- package/dist/encoding/decode-base64-json.d.ts +2 -0
- package/dist/encoding/decode-base64.d.ts +2 -0
- package/dist/encoding/index.d.ts +2 -0
- package/dist/geometry/layout/calculate-center-offset.d.ts +3 -16
- package/dist/geometry/layout/clamp-offset-to-overflow.d.ts +9 -0
- package/dist/geometry/layout/index.d.ts +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.dev.cjs +169 -21
- package/dist/index.dev.cjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/json/index.d.ts +1 -0
- package/dist/json/parse-json.d.ts +2 -0
- package/package.json +5 -6
package/README.md
CHANGED
|
@@ -17,6 +17,8 @@ A lightweight TypeScript utility library providing a collection of helper functi
|
|
|
17
17
|
- 🧮 **Math Utilities** - Common mathematical calculations
|
|
18
18
|
- 🎯 **Function Utilities** - Function handling helpers
|
|
19
19
|
- 🖥️ **DOM Utilities** - Browser DOM manipulation helpers
|
|
20
|
+
- 🧬 **Encoding Utilities** - Base64 decoding and encoded JSON helpers
|
|
21
|
+
- 🧾 **JSON Utilities** - Safe JSON parsing
|
|
20
22
|
- 📦 **Zero Dependencies** - Lightweight and dependency-free
|
|
21
23
|
- 📝 **TypeScript Support** - Full TypeScript type definitions
|
|
22
24
|
|
|
@@ -100,6 +102,69 @@ const hash = hashString('background-color: red;');
|
|
|
100
102
|
// ➜ 'e4k1z0x'
|
|
101
103
|
```
|
|
102
104
|
|
|
105
|
+
### Encoding Utilities
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
import { decodeBase64, decodeBase64Json } from '@react-hive/honey-utils';
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Decode a base64 string
|
|
112
|
+
*/
|
|
113
|
+
decodeBase64('SGVsbG8gd29ybGQ=');
|
|
114
|
+
// ➜ 'Hello world'
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Decode unicode text from base64
|
|
118
|
+
*/
|
|
119
|
+
decodeBase64('0J/RgNC40LLQtdGCINC80LjRgA==');
|
|
120
|
+
// ➜ 'Привет мир'
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Decode and parse base64-encoded JSON
|
|
124
|
+
*/
|
|
125
|
+
decodeBase64Json<{ name: string; age: number }>('eyJuYW1lIjoiTWlrZSIsImFnZSI6MzN9');
|
|
126
|
+
// ➜ { name: 'Mike', age: 33 }
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Invalid base64 or invalid decoded JSON returns null
|
|
130
|
+
*/
|
|
131
|
+
decodeBase64Json('invalid');
|
|
132
|
+
// ➜ null
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### JSON Utilities
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
import { parseJson } from '@react-hive/honey-utils';
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Safely parse JSON
|
|
142
|
+
*/
|
|
143
|
+
parseJson<{ name: string; age: number }>('{"name":"Mike","age":33}');
|
|
144
|
+
// ➜ { name: 'Mike', age: 33 }
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Parse array JSON
|
|
148
|
+
*/
|
|
149
|
+
parseJson<number[]>('[1,2,3]');
|
|
150
|
+
// ➜ [1, 2, 3]
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Parse primitive JSON values
|
|
154
|
+
*/
|
|
155
|
+
parseJson<boolean>('true');
|
|
156
|
+
// ➜ true
|
|
157
|
+
|
|
158
|
+
parseJson<null>('null');
|
|
159
|
+
// ➜ null
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Invalid JSON returns null
|
|
163
|
+
*/
|
|
164
|
+
parseJson('{name:"Mike"}');
|
|
165
|
+
// ➜ null
|
|
166
|
+
```
|
|
167
|
+
|
|
103
168
|
### Array Utilities
|
|
104
169
|
|
|
105
170
|
```ts
|
|
@@ -559,6 +624,19 @@ function divide(a: number, b: number): number {
|
|
|
559
624
|
- `getWordsInitials(input: string, maxWords?: number): string` - Returns the uppercase initials of the words in a string. The number of processed words can be limited via `maxWords`.
|
|
560
625
|
- `splitMapJoin(input: string, separator: string, mapFn: (part: string, index: number) => string, joinWith?: string): string` - Splits a string by a separator, applies a transformation function to each trimmed part, and joins the results back together. Useful for processing comma-separated selectors or any delimited string.
|
|
561
626
|
|
|
627
|
+
### Encoding Utilities
|
|
628
|
+
|
|
629
|
+
---
|
|
630
|
+
|
|
631
|
+
- `decodeBase64(value: string): Nullable<string>` - Decodes a base64-encoded string into UTF-8 text. Returns `null` when decoding fails.
|
|
632
|
+
- `decodeBase64Json<Value>(value: string): Nullable<Value>` - Decodes a base64-encoded string and safely parses the decoded result as JSON. Returns `null` when base64 decoding fails or when the decoded value is not valid JSON.
|
|
633
|
+
|
|
634
|
+
### JSON Utilities
|
|
635
|
+
|
|
636
|
+
---
|
|
637
|
+
|
|
638
|
+
- `parseJson<Value>(value: string): Nullable<Value>` - Safely parses a JSON string. Returns the parsed value when parsing succeeds, or `null` when parsing fails.
|
|
639
|
+
|
|
562
640
|
### Color Utilities
|
|
563
641
|
|
|
564
642
|
---
|
|
@@ -644,11 +722,12 @@ function divide(a: number, b: number): number {
|
|
|
644
722
|
---
|
|
645
723
|
|
|
646
724
|
- `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.
|
|
647
|
-
- `applyInertiaStep(options: ApplyInertiaStepOptions): Nullable<InertiaStepResult>` - Advances a value by
|
|
725
|
+
- `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.
|
|
648
726
|
|
|
649
727
|
#### Layout
|
|
650
728
|
|
|
651
|
-
- `calculateCenterOffset(options: CalculateCenterOffsetOptions): number` - Calculates
|
|
729
|
+
- `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.
|
|
730
|
+
- `clampOffsetToOverflow(offset: number, overflowSize: number): number` - Clamps a negative translate offset to the available overflow bounds. Returns `0` when no overflow exists.
|
|
652
731
|
|
|
653
732
|
### DOM Utilities
|
|
654
733
|
|
package/dist/README.md
CHANGED
|
@@ -17,6 +17,8 @@ A lightweight TypeScript utility library providing a collection of helper functi
|
|
|
17
17
|
- 🧮 **Math Utilities** - Common mathematical calculations
|
|
18
18
|
- 🎯 **Function Utilities** - Function handling helpers
|
|
19
19
|
- 🖥️ **DOM Utilities** - Browser DOM manipulation helpers
|
|
20
|
+
- 🧬 **Encoding Utilities** - Base64 decoding and encoded JSON helpers
|
|
21
|
+
- 🧾 **JSON Utilities** - Safe JSON parsing
|
|
20
22
|
- 📦 **Zero Dependencies** - Lightweight and dependency-free
|
|
21
23
|
- 📝 **TypeScript Support** - Full TypeScript type definitions
|
|
22
24
|
|
|
@@ -100,6 +102,69 @@ const hash = hashString('background-color: red;');
|
|
|
100
102
|
// ➜ 'e4k1z0x'
|
|
101
103
|
```
|
|
102
104
|
|
|
105
|
+
### Encoding Utilities
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
import { decodeBase64, decodeBase64Json } from '@react-hive/honey-utils';
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Decode a base64 string
|
|
112
|
+
*/
|
|
113
|
+
decodeBase64('SGVsbG8gd29ybGQ=');
|
|
114
|
+
// ➜ 'Hello world'
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Decode unicode text from base64
|
|
118
|
+
*/
|
|
119
|
+
decodeBase64('0J/RgNC40LLQtdGCINC80LjRgA==');
|
|
120
|
+
// ➜ 'Привет мир'
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Decode and parse base64-encoded JSON
|
|
124
|
+
*/
|
|
125
|
+
decodeBase64Json<{ name: string; age: number }>('eyJuYW1lIjoiTWlrZSIsImFnZSI6MzN9');
|
|
126
|
+
// ➜ { name: 'Mike', age: 33 }
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Invalid base64 or invalid decoded JSON returns null
|
|
130
|
+
*/
|
|
131
|
+
decodeBase64Json('invalid');
|
|
132
|
+
// ➜ null
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### JSON Utilities
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
import { parseJson } from '@react-hive/honey-utils';
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Safely parse JSON
|
|
142
|
+
*/
|
|
143
|
+
parseJson<{ name: string; age: number }>('{"name":"Mike","age":33}');
|
|
144
|
+
// ➜ { name: 'Mike', age: 33 }
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Parse array JSON
|
|
148
|
+
*/
|
|
149
|
+
parseJson<number[]>('[1,2,3]');
|
|
150
|
+
// ➜ [1, 2, 3]
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Parse primitive JSON values
|
|
154
|
+
*/
|
|
155
|
+
parseJson<boolean>('true');
|
|
156
|
+
// ➜ true
|
|
157
|
+
|
|
158
|
+
parseJson<null>('null');
|
|
159
|
+
// ➜ null
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Invalid JSON returns null
|
|
163
|
+
*/
|
|
164
|
+
parseJson('{name:"Mike"}');
|
|
165
|
+
// ➜ null
|
|
166
|
+
```
|
|
167
|
+
|
|
103
168
|
### Array Utilities
|
|
104
169
|
|
|
105
170
|
```ts
|
|
@@ -559,6 +624,19 @@ function divide(a: number, b: number): number {
|
|
|
559
624
|
- `getWordsInitials(input: string, maxWords?: number): string` - Returns the uppercase initials of the words in a string. The number of processed words can be limited via `maxWords`.
|
|
560
625
|
- `splitMapJoin(input: string, separator: string, mapFn: (part: string, index: number) => string, joinWith?: string): string` - Splits a string by a separator, applies a transformation function to each trimmed part, and joins the results back together. Useful for processing comma-separated selectors or any delimited string.
|
|
561
626
|
|
|
627
|
+
### Encoding Utilities
|
|
628
|
+
|
|
629
|
+
---
|
|
630
|
+
|
|
631
|
+
- `decodeBase64(value: string): Nullable<string>` - Decodes a base64-encoded string into UTF-8 text. Returns `null` when decoding fails.
|
|
632
|
+
- `decodeBase64Json<Value>(value: string): Nullable<Value>` - Decodes a base64-encoded string and safely parses the decoded result as JSON. Returns `null` when base64 decoding fails or when the decoded value is not valid JSON.
|
|
633
|
+
|
|
634
|
+
### JSON Utilities
|
|
635
|
+
|
|
636
|
+
---
|
|
637
|
+
|
|
638
|
+
- `parseJson<Value>(value: string): Nullable<Value>` - Safely parses a JSON string. Returns the parsed value when parsing succeeds, or `null` when parsing fails.
|
|
639
|
+
|
|
562
640
|
### Color Utilities
|
|
563
641
|
|
|
564
642
|
---
|
|
@@ -644,11 +722,12 @@ function divide(a: number, b: number): number {
|
|
|
644
722
|
---
|
|
645
723
|
|
|
646
724
|
- `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.
|
|
647
|
-
- `applyInertiaStep(options: ApplyInertiaStepOptions): Nullable<InertiaStepResult>` - Advances a value by
|
|
725
|
+
- `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.
|
|
648
726
|
|
|
649
727
|
#### Layout
|
|
650
728
|
|
|
651
|
-
- `calculateCenterOffset(options: CalculateCenterOffsetOptions): number` - Calculates
|
|
729
|
+
- `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.
|
|
730
|
+
- `clampOffsetToOverflow(offset: number, overflowSize: number): number` - Clamps a negative translate offset to the available overflow bounds. Returns `0` when no overflow exists.
|
|
652
731
|
|
|
653
732
|
### DOM Utilities
|
|
654
733
|
|
|
@@ -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
|
-
* -
|
|
19
|
-
* -
|
|
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
|
|
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: ({
|
|
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;
|
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:()=>we,calculateCenterOffset:()=>fe,calculateEuclideanDistance:()=>Ee,calculateMovingSpeed:()=>Te,calculatePercentage:()=>Fe,camelToDashCase:()=>_e,camelToWords:()=>Le,centerElementInContainer:()=>de,chunk:()=>L,clampOffsetToOverflow:()=>he,cloneBlob:()=>n,compact:()=>R,compose:()=>f,decodeBase64:()=>qe,decodeBase64Json:()=>Ve,definedProps:()=>De,delay:()=>Q,difference:()=>h,downloadFile:()=>ie,everyAsync:()=>V,fileListToFiles:()=>be,filterParallel:()=>Z,filterSequential:()=>J,findAsync:()=>K,findCharIndices:()=>Xe,flattenTree:()=>Ye,forEachChar:()=>$e,generateEphemeralId:()=>Me,getAdjacentItems:()=>X,getDOMRectIntersectionRatio:()=>Oe,getDataTransferJson:()=>ae,getElementOffsetRect:()=>r,getFocusableHtmlElements:()=>s,getLocalStorageCapabilities:()=>ge,getTreeChildren:()=>He,getWordsInitials:()=>Be,getXOverflowWidth:()=>se,getYOverflowHeight:()=>ue,hasXOverflow:()=>oe,hasYOverflow:()=>ce,hashString:()=>Pe,hexWithAlpha:()=>Ue,intersection:()=>m,invokeIfFunction:()=>ve,isAnchorHtmlElement:()=>a,isArray:()=>j,isBlob:()=>M,isBool:()=>A,isContentEditableHtmlElement:()=>l,isDate:()=>I,isDecimal:()=>_,isDefined:()=>b,isEmptyArray:()=>k,isEmptyObject:()=>x,isError:()=>O,isFile:()=>ye,isFiniteNumber:()=>D,isFunction:()=>B,isHtmlElementFocusable:()=>o,isInteger:()=>N,isLocalStorageReadable:()=>pe,isMap:()=>T,isNil:()=>y,isNilOrEmptyString:()=>je,isNull:()=>g,isNumber:()=>S,isObject:()=>v,isPromise:()=>H,isRegExp:()=>E,isSet:()=>F,isString:()=>le,isSymbol:()=>P,isUndefined:()=>w,isValidDate:()=>C,moveFocusWithinContainer:()=>c,noop:()=>$,not:()=>W,once:()=>Y,parse2DMatrix:()=>me,parseFileName:()=>ke,parseJson:()=>Je,pipe:()=>u,readFilesFromDataTransfer:()=>Ae,reduceAsync:()=>G,resolveAxisDelta:()=>Ce,resolveBoundedDelta:()=>xe,retry:()=>te,runParallel:()=>U,runSequential:()=>z,searchTree:()=>ze,setDataTransferJson:()=>re,someAsync:()=>q,splitMapJoin:()=>We,splitStringIntoWords:()=>Re,timeout:()=>ee,toKebabCase:()=>Ne,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),f=(...e)=>t=>e.reduceRight((e,t)=>t(e),t),h=(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,b=e=>null!=e,w=e=>void 0===e,S=e=>"number"==typeof e,A=e=>"boolean"==typeof e,v=e=>"object"==typeof e,x=e=>v(e)&&!g(e)&&0===Object.keys(e).length,I=e=>e instanceof Date,M=e=>e instanceof Blob,O=e=>e instanceof Error,C=e=>I(e)&&!isNaN(e.getTime()),E=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),N=e=>S(e)&&Number.isInteger(e),_=e=>D(e)&&!Number.isInteger(e),L=(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))),R=e=>e.filter(Boolean),j=e=>Array.isArray(e),k=e=>j(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}},$=()=>{},B=e=>"function"==typeof e,W=e=>(...t)=>!e(...t),Y=e=>{let t,n=!1;return function(...r){return n||(n=!0,t=e.apply(this,r)),t}},H=e=>B(e?.then),z=async(e,t)=>{const n=[];for(let r=0;r<e.length;r++)n.push(await t(e[r],r,e));return n},U=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},Z=async(e,t)=>{const n=await U(e,async(e,n,r)=>!!await t(e,n,r)&&e);return R(n)},q=async(e,t)=>{for(let n=0;n<e.length;n++)if(await t(e[n],n,e))return!0;return!1},V=async(e,t)=>{for(let n=0;n<e.length;n++)if(!await t(e[n],n,e))return!1;return!0},G=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(w(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),fe=({containerSize:e,elementOffset:t,elementSize:n})=>-(t+n/2-e/2),he=(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=fe({containerSize:e.clientWidth,elementOffset:t.offsetLeft,elementSize:t.clientWidth});a=r?he(n,se(e)):n}if("y"===n||"both"===n){const n=fe({containerSize:e.clientHeight,elementOffset:t.offsetTop,elementSize:t.clientHeight});l=r?he(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,be=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}),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 U(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 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()},ve=(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),Ce=(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}}},Ee=(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),{}),Ne=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"),Re=e=>0===e.length?[]:e.split(" ").filter(Boolean),je=e=>""===e||y(e),ke=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},$e=(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)}},Be=(e,t=1/0)=>0===e.length?"":Re(e).slice(0,t).map(e=>e[0]).join("").toUpperCase(),We=(e,t,n,r=t)=>e.split(t).map((e,t)=>n(e.trim(),t)).join(r),Ye=(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];Ye(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=Re(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=Re(o.toLowerCase());if(a.every(e=>s.some(t=>t.startsWith(e))))if(w(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];w(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")}`},Je=e=>{try{return JSON.parse(e)}catch{return null}},Ze=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,qe=e=>{try{return Ze.test(e)?"undefined"!=typeof Buffer?Buffer.from(e,"base64").toString("utf-8"):decodeURIComponent(atob(e).split("").map(e=>`%${e.charCodeAt(0).toString(16).padStart(2,"0")}`).join("")):null}catch{return null}},Ve=e=>{const t=qe(e);return null===t?null:Je(t)};module.exports=t})();
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|