UNPKG

@ozen-ui/kit

Version:

React component library

61 lines (60 loc) 2.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.bottomSheetCalculateSnaps = exports.cnBottomSheetBase = void 0; var tslib_1 = require("tslib"); var logger_1 = require("@ozen-ui/logger"); var classname_1 = require("../../../utils/classname"); var isFunction_1 = require("../../../utils/isFunction"); var math_1 = require("../../../utils/math"); var number_1 = require("../../../utils/number"); exports.cnBottomSheetBase = (0, classname_1.cn)('BottomSheetBase'); var bottomSheetCalculateSnaps = function (_a) { var minHeight = _a.minHeight, maxHeight = _a.maxHeight, snapsProp = _a.snaps, isReady = _a.isReady, defaultSnapProp = _a.defaultSnap; var getSnapParams = { minHeight: minHeight, maxHeight: maxHeight, }; var snapsRaw = (function () { if (!isReady) { return [0]; } if ((0, isFunction_1.isFunction)(snapsProp)) { return snapsProp(getSnapParams); } return snapsProp; })(); var snapsSet = snapsRaw.reduce(function (acc, snapPoint) { if ((0, number_1.isNaN)(snapPoint)) { logger_1.logger.error('Компонент "BottomSheetBase" имеет NaN в prop "snaps"'); return acc; } acc.add((0, math_1.clamp)(snapPoint, 0, maxHeight)); return acc; }, new Set()); var snaps = tslib_1.__spreadArray([], tslib_1.__read(snapsSet), false); var minSnap = Math.min.apply(Math, tslib_1.__spreadArray([], tslib_1.__read(snaps), false)); var maxSnap = Math.min(maxHeight, Math.max.apply(Math, tslib_1.__spreadArray([], tslib_1.__read(snaps), false))); var findClosestSnap = function (point) { return snaps.reduce(function (prev, curr) { return Math.abs(curr - point) < Math.abs(prev - point) ? curr : prev; }, minSnap); }; var defaultSnapRaw = (function () { if ((0, isFunction_1.isFunction)(defaultSnapProp)) { return defaultSnapProp(getSnapParams); } if ((0, number_1.isNumber)(defaultSnapProp)) { return defaultSnapProp; } return minSnap; })(); var defaultSnap = findClosestSnap((0, math_1.clamp)(defaultSnapRaw, minSnap, maxSnap)); return { minSnap: minSnap, maxSnap: maxSnap, snaps: snaps, defaultSnap: defaultSnap, findClosestSnap: findClosestSnap, }; }; exports.bottomSheetCalculateSnaps = bottomSheetCalculateSnaps;