UNPKG

react-native-dates-picker

Version:
114 lines (113 loc) 4.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var _CalendarContext = require("../../../CalendarContext"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } const WheelPickerItem = ({ height, option, index, visibleRest, currentScrollIndex, opacityFunction, rotationFunction, scaleFunction }) => { const { theme } = (0, _CalendarContext.useCalendarContext)(); const relativeScrollIndex = (0, _react.useMemo)(() => _reactNative.Animated.subtract(index, currentScrollIndex), [index, currentScrollIndex]); const interpolInputRange = (0, _react.useMemo)(() => { const range = [0]; for (let i = 1; i <= visibleRest + 1; i++) { range.unshift(-i); range.push(i); } return range; }, [visibleRest]); const translateYOutputRange = (0, _react.useMemo)(() => { const range = [0]; for (let i = 1; i <= visibleRest + 1; i++) { let y = height / 2 * (1 - Math.sin(Math.PI / 2 - rotationFunction(i))); for (let j = 1; j < i; j++) { y += height * (1 - Math.sin(Math.PI / 2 - rotationFunction(j))); } range.unshift(y); range.push(-y); } return range; }, [height, visibleRest, rotationFunction]); const opacityOutputRange = (0, _react.useMemo)(() => { const range = [1]; for (let x = 1; x <= visibleRest + 1; x++) { const val = opacityFunction(x); range.unshift(val); range.push(val); } return range; }, [visibleRest, opacityFunction]); const scaleOutputRange = (0, _react.useMemo)(() => { const range = [1]; for (let x = 1; x <= visibleRest + 1; x++) { const val = scaleFunction(x); range.unshift(val); range.push(val); } return range; }, [visibleRest, scaleFunction]); const rotateXOutputRange = (0, _react.useMemo)(() => { const range = ['0deg']; for (let x = 1; x <= visibleRest + 1; x++) { const deg = `${rotationFunction(x)}deg`; range.unshift(deg); range.push(deg); } return range; }, [visibleRest, rotationFunction]); const translateY = relativeScrollIndex.interpolate({ inputRange: interpolInputRange, outputRange: translateYOutputRange }); const opacity = relativeScrollIndex.interpolate({ inputRange: interpolInputRange, outputRange: opacityOutputRange }); const scale = relativeScrollIndex.interpolate({ inputRange: interpolInputRange, outputRange: scaleOutputRange }); const rotateX = relativeScrollIndex.interpolate({ inputRange: interpolInputRange, outputRange: rotateXOutputRange }); return /*#__PURE__*/_react.default.createElement(_reactNative.Animated.View, { style: [styles.option, { height, opacity, transform: [{ translateY }, { rotateX }, { scale }] }, theme.wheelPickerItemStyle] }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, { style: theme.wheelPickerTextStyle }, option === null || option === void 0 ? void 0 : option.text)); }; const styles = _reactNative.StyleSheet.create({ option: { alignItems: 'center', justifyContent: 'center', paddingHorizontal: 10, zIndex: 100 } }); var _default = exports.default = /*#__PURE__*/(0, _react.memo)(WheelPickerItem); //# sourceMappingURL=wheel-picker-item.js.map