react-native-full-calendars
Version:
React Native Full Calendar (RNFC) is an intuitive and powerful calendar component library designed for React Native.
98 lines (97 loc) • 3.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
var _reactNativeGestureHandler = require("react-native-gesture-handler");
var _reactNativeReanimated = require("react-native-reanimated");
var _usePanGesture = require("../hooks/usePanGesture");
var _useSwiperController = require("../hooks/useSwiperController");
var _store = require("../store");
var _Page = require("./Page");
var _jsxRuntime = require("react/jsx-runtime");
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 && {}.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 Swiper = /*#__PURE__*/_react.default.forwardRef((_, ref) => {
const {
props
} = (0, _react.useContext)(_store.SwiperContext);
const {
vertical,
buffer,
style,
pageWrapperStyle,
width,
height,
initialIndex
} = props;
const pageWidth = (0, _reactNativeReanimated.useSharedValue)(width || 0);
const pageHeight = (0, _reactNativeReanimated.useSharedValue)(height || 0);
const viewSize = vertical ? pageHeight : pageWidth;
const [pageLayout, setPageLayout] = (0, _react.useState)(0);
const translate = (0, _reactNativeReanimated.useSharedValue)(0);
const pageAnim = (0, _reactNativeReanimated.useSharedValue)(initialIndex);
(0, _reactNativeReanimated.useDerivedValue)(() => {
if (viewSize.value) {
pageAnim.value = initialIndex + translate.value / viewSize.value * -1;
}
}, [viewSize, pageAnim, translate, initialIndex]);
const {
setPage,
prevPage,
nextPage,
getCurrIndex
} = (0, _useSwiperController.useSwiperController)({
layoutPage: pageLayout,
viewSize,
translate,
pageAnim
});
(0, _react.useImperativeHandle)(ref, () => ({
setPage,
nextPage,
prevPage,
getCurrIndex
}));
const curIndex = getCurrIndex();
const pageIndices = [...Array(buffer * 2 + 1)].map((_, i) => {
const bufferIndex = i - buffer;
return curIndex - bufferIndex;
});
const panGesture = (0, _usePanGesture.usePanGesture)({
curIndex,
translate,
viewSize
});
const handleLayout = (0, _react.useCallback)(e => {
const {
height: layoutHeight,
width: layoutWidth
} = e.nativeEvent.layout;
pageWidth.value = layoutWidth;
pageHeight.value = layoutHeight;
setPageLayout(vertical ? layoutHeight : layoutWidth);
}, [vertical, pageWidth, pageHeight]);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector, {
gesture: panGesture,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
style: [style],
onLayout: handleLayout,
children: pageIndices.map(pageIndex => {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Page.Page, {
pageAnim: pageAnim,
index: pageIndex,
pageWidth: pageWidth,
pageHeight: pageHeight,
viewSize: viewSize,
isActive: pageIndex === curIndex,
style: pageWrapperStyle
}, pageIndex);
})
})
});
});
var _default = exports.default = (0, _store.WithWrappedProvider)(Swiper);
//# sourceMappingURL=Swiper.js.map