@react-hive/honey-utils 3.30.0 → 3.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/README.md +2 -1
- package/dist/dom/layout/center-element-in-container.d.ts +11 -5
- 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.dev.cjs +48 -21
- 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/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
|
};
|
|
@@ -2033,6 +2036,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2033
2036
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2034
2037
|
/* harmony export */ applyInertiaStep: () => (/* reexport safe */ _apply_inertia_step__WEBPACK_IMPORTED_MODULE_2__.applyInertiaStep),
|
|
2035
2038
|
/* harmony export */ calculateCenterOffset: () => (/* reexport safe */ _layout__WEBPACK_IMPORTED_MODULE_0__.calculateCenterOffset),
|
|
2039
|
+
/* harmony export */ clampOffsetToOverflow: () => (/* reexport safe */ _layout__WEBPACK_IMPORTED_MODULE_0__.clampOffsetToOverflow),
|
|
2036
2040
|
/* harmony export */ resolveBoundedDelta: () => (/* reexport safe */ _resolve_bounded_delta__WEBPACK_IMPORTED_MODULE_1__.resolveBoundedDelta)
|
|
2037
2041
|
/* harmony export */ });
|
|
2038
2042
|
/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./layout */ "./src/geometry/layout/index.ts");
|
|
@@ -2056,24 +2060,43 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2056
2060
|
/* harmony export */ calculateCenterOffset: () => (/* binding */ calculateCenterOffset)
|
|
2057
2061
|
/* harmony export */ });
|
|
2058
2062
|
/**
|
|
2059
|
-
* Calculates the offset required to center an element within a container along a single axis.
|
|
2063
|
+
* Calculates the raw offset required to center an element within a container along a single axis.
|
|
2060
2064
|
*
|
|
2061
|
-
*
|
|
2062
|
-
|
|
2065
|
+
* @returns A negative offset value suitable for use in a CSS `translate` transform.
|
|
2066
|
+
*/
|
|
2067
|
+
const calculateCenterOffset = ({ containerSize, elementOffset, elementSize, }) => {
|
|
2068
|
+
const containerCenter = containerSize / 2;
|
|
2069
|
+
const elementCenter = elementOffset + elementSize / 2;
|
|
2070
|
+
const targetOffset = elementCenter - containerCenter;
|
|
2071
|
+
return -targetOffset;
|
|
2072
|
+
};
|
|
2073
|
+
|
|
2074
|
+
|
|
2075
|
+
/***/ },
|
|
2076
|
+
|
|
2077
|
+
/***/ "./src/geometry/layout/clamp-offset-to-overflow.ts"
|
|
2078
|
+
/*!*********************************************************!*\
|
|
2079
|
+
!*** ./src/geometry/layout/clamp-offset-to-overflow.ts ***!
|
|
2080
|
+
\*********************************************************/
|
|
2081
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
2082
|
+
|
|
2083
|
+
__webpack_require__.r(__webpack_exports__);
|
|
2084
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2085
|
+
/* harmony export */ clampOffsetToOverflow: () => (/* binding */ clampOffsetToOverflow)
|
|
2086
|
+
/* harmony export */ });
|
|
2087
|
+
/**
|
|
2088
|
+
* Clamps a negative translation offset to the available overflow bounds.
|
|
2063
2089
|
*
|
|
2064
|
-
*
|
|
2090
|
+
* @param offset - Negative translate offset.
|
|
2091
|
+
* @param overflowSize - Maximum overflow size along the axis.
|
|
2065
2092
|
*
|
|
2066
|
-
* @returns
|
|
2067
|
-
* transform, or `0` when no overflow exists on the axis.
|
|
2093
|
+
* @returns Clamped negative offset, or `0` when no overflow exists.
|
|
2068
2094
|
*/
|
|
2069
|
-
const
|
|
2095
|
+
const clampOffsetToOverflow = (offset, overflowSize) => {
|
|
2070
2096
|
if (overflowSize <= 0) {
|
|
2071
2097
|
return 0;
|
|
2072
2098
|
}
|
|
2073
|
-
|
|
2074
|
-
const elementCenter = elementOffset + elementSize / 2;
|
|
2075
|
-
const targetOffset = elementCenter - containerCenter;
|
|
2076
|
-
return -Math.max(0, Math.min(targetOffset, overflowSize));
|
|
2099
|
+
return Math.max(-overflowSize, Math.min(offset, 0));
|
|
2077
2100
|
};
|
|
2078
2101
|
|
|
2079
2102
|
|
|
@@ -2087,9 +2110,12 @@ const calculateCenterOffset = ({ overflowSize, containerSize, elementOffset, ele
|
|
|
2087
2110
|
|
|
2088
2111
|
__webpack_require__.r(__webpack_exports__);
|
|
2089
2112
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2090
|
-
/* harmony export */ calculateCenterOffset: () => (/* reexport safe */ _calculate_center_offset__WEBPACK_IMPORTED_MODULE_0__.calculateCenterOffset)
|
|
2113
|
+
/* harmony export */ calculateCenterOffset: () => (/* reexport safe */ _calculate_center_offset__WEBPACK_IMPORTED_MODULE_0__.calculateCenterOffset),
|
|
2114
|
+
/* harmony export */ clampOffsetToOverflow: () => (/* reexport safe */ _clamp_offset_to_overflow__WEBPACK_IMPORTED_MODULE_1__.clampOffsetToOverflow)
|
|
2091
2115
|
/* harmony export */ });
|
|
2092
2116
|
/* harmony import */ var _calculate_center_offset__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calculate-center-offset */ "./src/geometry/layout/calculate-center-offset.ts");
|
|
2117
|
+
/* 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");
|
|
2118
|
+
|
|
2093
2119
|
|
|
2094
2120
|
|
|
2095
2121
|
|
|
@@ -3562,6 +3588,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3562
3588
|
/* harmony export */ camelToWords: () => (/* reexport safe */ _string__WEBPACK_IMPORTED_MODULE_13__.camelToWords),
|
|
3563
3589
|
/* harmony export */ centerElementInContainer: () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.centerElementInContainer),
|
|
3564
3590
|
/* harmony export */ chunk: () => (/* reexport safe */ _array__WEBPACK_IMPORTED_MODULE_1__.chunk),
|
|
3591
|
+
/* harmony export */ clampOffsetToOverflow: () => (/* reexport safe */ _geometry__WEBPACK_IMPORTED_MODULE_7__.clampOffsetToOverflow),
|
|
3565
3592
|
/* harmony export */ cloneBlob: () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.cloneBlob),
|
|
3566
3593
|
/* harmony export */ compact: () => (/* reexport safe */ _array__WEBPACK_IMPORTED_MODULE_1__.compact),
|
|
3567
3594
|
/* harmony export */ compose: () => (/* reexport safe */ _array__WEBPACK_IMPORTED_MODULE_1__.compose),
|