UNPKG

react-native-full-calendars

Version:

React Native Full Calendar (RNFC) is an intuitive and powerful calendar component library designed for React Native.

113 lines (112 loc) 3.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DayWrapper = void 0; var _dateFns = require("date-fns"); var _react = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var _store = require("../../store"); var _Day = require("./Day"); 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 handleItems = items => { return items.map(v => { if (!v) { return null; } const { metadata: _metadata, ...data } = v; return data; }); }; const DayWrapper = exports.DayWrapper = /*#__PURE__*/_react.default.memo(({ date, isDisabled }) => { const dateRef = (0, _react.useRef)(date); const memoDate = (0, _react.useMemo)(() => { if ((0, _dateFns.isSameDay)(dateRef.current, date)) { return dateRef.current; } else { dateRef.current = date; return date; } }, [date]); const { selectedDate, onDatePress, renderDate, weekStartDay, dataMap, theme, renderMoreItemText, maxVisibleCount } = (0, _react.useContext)(_store.CalendarContext); const isSelected = (0, _react.useMemo)(() => { return !!selectedDate && (0, _dateFns.isSameDay)(memoDate, selectedDate); }, [memoDate, selectedDate]); const isToday = (0, _react.useMemo)(() => (0, _dateFns.isSameDay)(memoDate, new Date()), [memoDate]); const onDateSelectRef = (0, _react.useRef)(onDatePress); onDateSelectRef.current = onDatePress; const onDateSelectCb = (0, _react.useCallback)((_date, options) => { return onDateSelectRef.current?.(_date, options); }, []); const items = dataMap[(0, _dateFns.format)(date, 'yyyy-MM-dd')] || []; if (renderDate) { return renderDate({ date, isDisabled, isSelected, isToday, itemsWithMetadata: items, items: handleItems(items) }); } const onPress = () => { onDateSelectCb(date, { isSelected, isToday, isDisabled, items: handleItems(items), itemsWithMetadata: items }); }; const zIndex = 100 - (0, _dateFns.getDate)(date); return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, { style: [styleSheet.flex, { zIndex }], children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, { onPress: onPress, style: styleSheet.coverContainer }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Day.Day, { date: memoDate, isToday: isToday, isDisabled: isDisabled, theme: theme, items: items, weekStartDay: weekStartDay, renderMoreItemText: renderMoreItemText, maxVisibleCount: maxVisibleCount, isSelected: isSelected })] }); }); const styleSheet = _reactNative.StyleSheet.create({ flex: { flex: 1 }, coverContainer: { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, zIndex: 101 } }); //# sourceMappingURL=DayWrapper.js.map