@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/dist/index.d.ts
CHANGED
package/dist/index.dev.cjs
CHANGED
|
@@ -1335,35 +1335,38 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1335
1335
|
*
|
|
1336
1336
|
* ### Behavior
|
|
1337
1337
|
* - Centering is calculated independently for each enabled axis.
|
|
1338
|
-
* -
|
|
1339
|
-
* -
|
|
1338
|
+
* - Raw centering offset is always calculated first.
|
|
1339
|
+
* - Offset clamping is optional and controlled by `shouldClamp`.
|
|
1340
1340
|
*
|
|
1341
1341
|
* ### Notes
|
|
1342
1342
|
* - This function performs immediate DOM reads and writes.
|
|
1343
|
-
* - The resulting transform is clamped to valid scrollable bounds.
|
|
1344
1343
|
*
|
|
1345
1344
|
* @param containerElement - The container whose content is translated.
|
|
1346
1345
|
* @param elementToCenter - The descendant element to align to the container’s center.
|
|
1347
|
-
* @param options - Optional configuration controlling
|
|
1346
|
+
* @param options - Optional configuration controlling centering behavior.
|
|
1348
1347
|
*/
|
|
1349
|
-
const centerElementInContainer = (containerElement, elementToCenter, { axis = 'both' } = {}) => {
|
|
1348
|
+
const centerElementInContainer = (containerElement, elementToCenter, { axis = 'both', shouldClamp = true } = {}) => {
|
|
1350
1349
|
let translateX = 0;
|
|
1351
1350
|
let translateY = 0;
|
|
1352
1351
|
if (axis === 'x' || axis === 'both') {
|
|
1353
|
-
|
|
1354
|
-
overflowSize: (0,_dom__WEBPACK_IMPORTED_MODULE_0__.getXOverflowWidth)(containerElement),
|
|
1352
|
+
const offsetX = (0,_geometry__WEBPACK_IMPORTED_MODULE_1__.calculateCenterOffset)({
|
|
1355
1353
|
containerSize: containerElement.clientWidth,
|
|
1356
1354
|
elementOffset: elementToCenter.offsetLeft,
|
|
1357
1355
|
elementSize: elementToCenter.clientWidth,
|
|
1358
1356
|
});
|
|
1357
|
+
translateX = shouldClamp
|
|
1358
|
+
? (0,_geometry__WEBPACK_IMPORTED_MODULE_1__.clampOffsetToOverflow)(offsetX, (0,_dom__WEBPACK_IMPORTED_MODULE_0__.getXOverflowWidth)(containerElement))
|
|
1359
|
+
: offsetX;
|
|
1359
1360
|
}
|
|
1360
1361
|
if (axis === 'y' || axis === 'both') {
|
|
1361
|
-
|
|
1362
|
-
overflowSize: (0,_dom__WEBPACK_IMPORTED_MODULE_0__.getYOverflowHeight)(containerElement),
|
|
1362
|
+
const offsetY = (0,_geometry__WEBPACK_IMPORTED_MODULE_1__.calculateCenterOffset)({
|
|
1363
1363
|
containerSize: containerElement.clientHeight,
|
|
1364
1364
|
elementOffset: elementToCenter.offsetTop,
|
|
1365
1365
|
elementSize: elementToCenter.clientHeight,
|
|
1366
1366
|
});
|
|
1367
|
+
translateY = shouldClamp
|
|
1368
|
+
? (0,_geometry__WEBPACK_IMPORTED_MODULE_1__.clampOffsetToOverflow)(offsetY, (0,_dom__WEBPACK_IMPORTED_MODULE_0__.getYOverflowHeight)(containerElement))
|
|
1369
|
+
: offsetY;
|
|
1367
1370
|
}
|
|
1368
1371
|
containerElement.style.transform = `translate(${translateX}px, ${translateY}px)`;
|
|
1369
1372
|
};
|
|
@@ -1517,6 +1520,82 @@ const parse2DMatrix = (element) => {
|
|
|
1517
1520
|
};
|
|
1518
1521
|
|
|
1519
1522
|
|
|
1523
|
+
/***/ },
|
|
1524
|
+
|
|
1525
|
+
/***/ "./src/encoding/decode-base64-json.ts"
|
|
1526
|
+
/*!********************************************!*\
|
|
1527
|
+
!*** ./src/encoding/decode-base64-json.ts ***!
|
|
1528
|
+
\********************************************/
|
|
1529
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
1530
|
+
|
|
1531
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1532
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1533
|
+
/* harmony export */ decodeBase64Json: () => (/* binding */ decodeBase64Json)
|
|
1534
|
+
/* harmony export */ });
|
|
1535
|
+
/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ~/json */ "./src/json/index.ts");
|
|
1536
|
+
/* harmony import */ var _decode_base64__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./decode-base64 */ "./src/encoding/decode-base64.ts");
|
|
1537
|
+
|
|
1538
|
+
|
|
1539
|
+
const decodeBase64Json = (value) => {
|
|
1540
|
+
const decodedValue = (0,_decode_base64__WEBPACK_IMPORTED_MODULE_1__.decodeBase64)(value);
|
|
1541
|
+
if (decodedValue === null) {
|
|
1542
|
+
return null;
|
|
1543
|
+
}
|
|
1544
|
+
return (0,_json__WEBPACK_IMPORTED_MODULE_0__.parseJson)(decodedValue);
|
|
1545
|
+
};
|
|
1546
|
+
|
|
1547
|
+
|
|
1548
|
+
/***/ },
|
|
1549
|
+
|
|
1550
|
+
/***/ "./src/encoding/decode-base64.ts"
|
|
1551
|
+
/*!***************************************!*\
|
|
1552
|
+
!*** ./src/encoding/decode-base64.ts ***!
|
|
1553
|
+
\***************************************/
|
|
1554
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
1555
|
+
|
|
1556
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1557
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1558
|
+
/* harmony export */ decodeBase64: () => (/* binding */ decodeBase64)
|
|
1559
|
+
/* harmony export */ });
|
|
1560
|
+
const BASE64_PATTERN = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
|
|
1561
|
+
const decodeBase64 = (value) => {
|
|
1562
|
+
try {
|
|
1563
|
+
if (!BASE64_PATTERN.test(value)) {
|
|
1564
|
+
return null;
|
|
1565
|
+
}
|
|
1566
|
+
if (typeof Buffer !== 'undefined') {
|
|
1567
|
+
return Buffer.from(value, 'base64').toString('utf-8');
|
|
1568
|
+
}
|
|
1569
|
+
return decodeURIComponent(atob(value)
|
|
1570
|
+
.split('')
|
|
1571
|
+
.map(char => `%${char.charCodeAt(0).toString(16).padStart(2, '0')}`)
|
|
1572
|
+
.join(''));
|
|
1573
|
+
}
|
|
1574
|
+
catch {
|
|
1575
|
+
return null;
|
|
1576
|
+
}
|
|
1577
|
+
};
|
|
1578
|
+
|
|
1579
|
+
|
|
1580
|
+
/***/ },
|
|
1581
|
+
|
|
1582
|
+
/***/ "./src/encoding/index.ts"
|
|
1583
|
+
/*!*******************************!*\
|
|
1584
|
+
!*** ./src/encoding/index.ts ***!
|
|
1585
|
+
\*******************************/
|
|
1586
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
1587
|
+
|
|
1588
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1589
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1590
|
+
/* harmony export */ decodeBase64: () => (/* reexport safe */ _decode_base64__WEBPACK_IMPORTED_MODULE_0__.decodeBase64),
|
|
1591
|
+
/* harmony export */ decodeBase64Json: () => (/* reexport safe */ _decode_base64_json__WEBPACK_IMPORTED_MODULE_1__.decodeBase64Json)
|
|
1592
|
+
/* harmony export */ });
|
|
1593
|
+
/* harmony import */ var _decode_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decode-base64 */ "./src/encoding/decode-base64.ts");
|
|
1594
|
+
/* harmony import */ var _decode_base64_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./decode-base64-json */ "./src/encoding/decode-base64-json.ts");
|
|
1595
|
+
|
|
1596
|
+
|
|
1597
|
+
|
|
1598
|
+
|
|
1520
1599
|
/***/ },
|
|
1521
1600
|
|
|
1522
1601
|
/***/ "./src/env/index.ts"
|
|
@@ -2033,6 +2112,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2033
2112
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2034
2113
|
/* harmony export */ applyInertiaStep: () => (/* reexport safe */ _apply_inertia_step__WEBPACK_IMPORTED_MODULE_2__.applyInertiaStep),
|
|
2035
2114
|
/* harmony export */ calculateCenterOffset: () => (/* reexport safe */ _layout__WEBPACK_IMPORTED_MODULE_0__.calculateCenterOffset),
|
|
2115
|
+
/* harmony export */ clampOffsetToOverflow: () => (/* reexport safe */ _layout__WEBPACK_IMPORTED_MODULE_0__.clampOffsetToOverflow),
|
|
2036
2116
|
/* harmony export */ resolveBoundedDelta: () => (/* reexport safe */ _resolve_bounded_delta__WEBPACK_IMPORTED_MODULE_1__.resolveBoundedDelta)
|
|
2037
2117
|
/* harmony export */ });
|
|
2038
2118
|
/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./layout */ "./src/geometry/layout/index.ts");
|
|
@@ -2056,24 +2136,43 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2056
2136
|
/* harmony export */ calculateCenterOffset: () => (/* binding */ calculateCenterOffset)
|
|
2057
2137
|
/* harmony export */ });
|
|
2058
2138
|
/**
|
|
2059
|
-
* Calculates the offset required to center an element within a container along a single axis.
|
|
2139
|
+
* Calculates the raw offset required to center an element within a container along a single axis.
|
|
2060
2140
|
*
|
|
2061
|
-
*
|
|
2062
|
-
|
|
2141
|
+
* @returns A negative offset value suitable for use in a CSS `translate` transform.
|
|
2142
|
+
*/
|
|
2143
|
+
const calculateCenterOffset = ({ containerSize, elementOffset, elementSize, }) => {
|
|
2144
|
+
const containerCenter = containerSize / 2;
|
|
2145
|
+
const elementCenter = elementOffset + elementSize / 2;
|
|
2146
|
+
const targetOffset = elementCenter - containerCenter;
|
|
2147
|
+
return -targetOffset;
|
|
2148
|
+
};
|
|
2149
|
+
|
|
2150
|
+
|
|
2151
|
+
/***/ },
|
|
2152
|
+
|
|
2153
|
+
/***/ "./src/geometry/layout/clamp-offset-to-overflow.ts"
|
|
2154
|
+
/*!*********************************************************!*\
|
|
2155
|
+
!*** ./src/geometry/layout/clamp-offset-to-overflow.ts ***!
|
|
2156
|
+
\*********************************************************/
|
|
2157
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
2158
|
+
|
|
2159
|
+
__webpack_require__.r(__webpack_exports__);
|
|
2160
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2161
|
+
/* harmony export */ clampOffsetToOverflow: () => (/* binding */ clampOffsetToOverflow)
|
|
2162
|
+
/* harmony export */ });
|
|
2163
|
+
/**
|
|
2164
|
+
* Clamps a negative translation offset to the available overflow bounds.
|
|
2063
2165
|
*
|
|
2064
|
-
*
|
|
2166
|
+
* @param offset - Negative translate offset.
|
|
2167
|
+
* @param overflowSize - Maximum overflow size along the axis.
|
|
2065
2168
|
*
|
|
2066
|
-
* @returns
|
|
2067
|
-
* transform, or `0` when no overflow exists on the axis.
|
|
2169
|
+
* @returns Clamped negative offset, or `0` when no overflow exists.
|
|
2068
2170
|
*/
|
|
2069
|
-
const
|
|
2171
|
+
const clampOffsetToOverflow = (offset, overflowSize) => {
|
|
2070
2172
|
if (overflowSize <= 0) {
|
|
2071
2173
|
return 0;
|
|
2072
2174
|
}
|
|
2073
|
-
|
|
2074
|
-
const elementCenter = elementOffset + elementSize / 2;
|
|
2075
|
-
const targetOffset = elementCenter - containerCenter;
|
|
2076
|
-
return -Math.max(0, Math.min(targetOffset, overflowSize));
|
|
2175
|
+
return Math.max(-overflowSize, Math.min(offset, 0));
|
|
2077
2176
|
};
|
|
2078
2177
|
|
|
2079
2178
|
|
|
@@ -2087,9 +2186,12 @@ const calculateCenterOffset = ({ overflowSize, containerSize, elementOffset, ele
|
|
|
2087
2186
|
|
|
2088
2187
|
__webpack_require__.r(__webpack_exports__);
|
|
2089
2188
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2090
|
-
/* harmony export */ calculateCenterOffset: () => (/* reexport safe */ _calculate_center_offset__WEBPACK_IMPORTED_MODULE_0__.calculateCenterOffset)
|
|
2189
|
+
/* harmony export */ calculateCenterOffset: () => (/* reexport safe */ _calculate_center_offset__WEBPACK_IMPORTED_MODULE_0__.calculateCenterOffset),
|
|
2190
|
+
/* harmony export */ clampOffsetToOverflow: () => (/* reexport safe */ _clamp_offset_to_overflow__WEBPACK_IMPORTED_MODULE_1__.clampOffsetToOverflow)
|
|
2091
2191
|
/* harmony export */ });
|
|
2092
2192
|
/* harmony import */ var _calculate_center_offset__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calculate-center-offset */ "./src/geometry/layout/calculate-center-offset.ts");
|
|
2193
|
+
/* harmony import */ var _clamp_offset_to_overflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./clamp-offset-to-overflow */ "./src/geometry/layout/clamp-offset-to-overflow.ts");
|
|
2194
|
+
|
|
2093
2195
|
|
|
2094
2196
|
|
|
2095
2197
|
|
|
@@ -2578,6 +2680,44 @@ const resolveAxisDelta = (delta, axis, { allowFallback = true, invert = true } =
|
|
|
2578
2680
|
};
|
|
2579
2681
|
|
|
2580
2682
|
|
|
2683
|
+
/***/ },
|
|
2684
|
+
|
|
2685
|
+
/***/ "./src/json/index.ts"
|
|
2686
|
+
/*!***************************!*\
|
|
2687
|
+
!*** ./src/json/index.ts ***!
|
|
2688
|
+
\***************************/
|
|
2689
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
2690
|
+
|
|
2691
|
+
__webpack_require__.r(__webpack_exports__);
|
|
2692
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2693
|
+
/* harmony export */ parseJson: () => (/* reexport safe */ _parse_json__WEBPACK_IMPORTED_MODULE_0__.parseJson)
|
|
2694
|
+
/* harmony export */ });
|
|
2695
|
+
/* harmony import */ var _parse_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parse-json */ "./src/json/parse-json.ts");
|
|
2696
|
+
|
|
2697
|
+
|
|
2698
|
+
|
|
2699
|
+
/***/ },
|
|
2700
|
+
|
|
2701
|
+
/***/ "./src/json/parse-json.ts"
|
|
2702
|
+
/*!********************************!*\
|
|
2703
|
+
!*** ./src/json/parse-json.ts ***!
|
|
2704
|
+
\********************************/
|
|
2705
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
2706
|
+
|
|
2707
|
+
__webpack_require__.r(__webpack_exports__);
|
|
2708
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2709
|
+
/* harmony export */ parseJson: () => (/* binding */ parseJson)
|
|
2710
|
+
/* harmony export */ });
|
|
2711
|
+
const parseJson = (value) => {
|
|
2712
|
+
try {
|
|
2713
|
+
return JSON.parse(value);
|
|
2714
|
+
}
|
|
2715
|
+
catch {
|
|
2716
|
+
return null;
|
|
2717
|
+
}
|
|
2718
|
+
};
|
|
2719
|
+
|
|
2720
|
+
|
|
2581
2721
|
/***/ },
|
|
2582
2722
|
|
|
2583
2723
|
/***/ "./src/math/hash-string.ts"
|
|
@@ -3562,9 +3702,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3562
3702
|
/* harmony export */ camelToWords: () => (/* reexport safe */ _string__WEBPACK_IMPORTED_MODULE_13__.camelToWords),
|
|
3563
3703
|
/* harmony export */ centerElementInContainer: () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.centerElementInContainer),
|
|
3564
3704
|
/* harmony export */ chunk: () => (/* reexport safe */ _array__WEBPACK_IMPORTED_MODULE_1__.chunk),
|
|
3705
|
+
/* harmony export */ clampOffsetToOverflow: () => (/* reexport safe */ _geometry__WEBPACK_IMPORTED_MODULE_7__.clampOffsetToOverflow),
|
|
3565
3706
|
/* harmony export */ cloneBlob: () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.cloneBlob),
|
|
3566
3707
|
/* harmony export */ compact: () => (/* reexport safe */ _array__WEBPACK_IMPORTED_MODULE_1__.compact),
|
|
3567
3708
|
/* harmony export */ compose: () => (/* reexport safe */ _array__WEBPACK_IMPORTED_MODULE_1__.compose),
|
|
3709
|
+
/* harmony export */ decodeBase64: () => (/* reexport safe */ _encoding__WEBPACK_IMPORTED_MODULE_18__.decodeBase64),
|
|
3710
|
+
/* harmony export */ decodeBase64Json: () => (/* reexport safe */ _encoding__WEBPACK_IMPORTED_MODULE_18__.decodeBase64Json),
|
|
3568
3711
|
/* harmony export */ definedProps: () => (/* reexport safe */ _object__WEBPACK_IMPORTED_MODULE_12__.definedProps),
|
|
3569
3712
|
/* harmony export */ delay: () => (/* reexport safe */ _async__WEBPACK_IMPORTED_MODULE_2__.delay),
|
|
3570
3713
|
/* harmony export */ difference: () => (/* reexport safe */ _array__WEBPACK_IMPORTED_MODULE_1__.difference),
|
|
@@ -3630,6 +3773,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3630
3773
|
/* harmony export */ once: () => (/* reexport safe */ _function__WEBPACK_IMPORTED_MODULE_6__.once),
|
|
3631
3774
|
/* harmony export */ parse2DMatrix: () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.parse2DMatrix),
|
|
3632
3775
|
/* harmony export */ parseFileName: () => (/* reexport safe */ _string__WEBPACK_IMPORTED_MODULE_13__.parseFileName),
|
|
3776
|
+
/* harmony export */ parseJson: () => (/* reexport safe */ _json__WEBPACK_IMPORTED_MODULE_17__.parseJson),
|
|
3633
3777
|
/* harmony export */ pipe: () => (/* reexport safe */ _array__WEBPACK_IMPORTED_MODULE_1__.pipe),
|
|
3634
3778
|
/* harmony export */ readFilesFromDataTransfer: () => (/* reexport safe */ _file__WEBPACK_IMPORTED_MODULE_5__.readFilesFromDataTransfer),
|
|
3635
3779
|
/* harmony export */ reduceAsync: () => (/* reexport safe */ _async__WEBPACK_IMPORTED_MODULE_2__.reduceAsync),
|
|
@@ -3665,6 +3809,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3665
3809
|
/* harmony import */ var _tree__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./tree */ "./src/tree/index.ts");
|
|
3666
3810
|
/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./types */ "./src/types.ts");
|
|
3667
3811
|
/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./color */ "./src/color/index.ts");
|
|
3812
|
+
/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./json */ "./src/json/index.ts");
|
|
3813
|
+
/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./encoding */ "./src/encoding/index.ts");
|
|
3814
|
+
|
|
3815
|
+
|
|
3668
3816
|
|
|
3669
3817
|
|
|
3670
3818
|
|