UNPKG

react-timekeeper

Version:

Time picker based on the style of the Google Keep app

93 lines (78 loc) 2.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = ClockWrapper; var _react = require("react"); var _reactSpring = require("react-spring"); var _ClockHand = _interopRequireDefault(require("./ClockHand")); var _Numbers = require("./Numbers"); var _constants = require("../helpers/constants"); var _utils = require("../helpers/utils"); var _clock = _interopRequireDefault(require("./styles/clock")); var _useConfigContext = _interopRequireDefault(require("../hooks/useConfigContext")); var _useStateContext = _interopRequireDefault(require("../hooks/useStateContext")); var _jsxRuntime = require("@emotion/react/jsx-runtime"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function exitPosition(mode) { return (0, _utils.isHourMode)(mode) ? _constants.INITIAL_HOUR_TRANSFORM : _constants.INITIAL_MINUTE_TRANSFORM; } function initialPosition(mode) { return (0, _utils.isMinuteMode)(mode) ? _constants.INITIAL_HOUR_TRANSFORM : _constants.INITIAL_MINUTE_TRANSFORM; } function ClockWrapper(_ref) { let { clockEl } = _ref; const firstRun = (0, _react.useRef)(true); const { hour24Mode } = (0, _useConfigContext.default)(); const { mode, time, meridiem, disabledTimeRangeValidator } = (0, _useStateContext.default)(); const transitions = (0, _reactSpring.useTransition)(mode, { unique: true, from: !firstRun.current && { opacity: 0, translate: initialPosition(mode), translateInner: _constants.INNER_NUMBER_POSITIONING.exit }, enter: { opacity: 1, translate: (0, _constants.getOuterNumberPosition)(mode), translateInner: _constants.INNER_NUMBER_POSITIONING.enter }, leave: { opacity: 0, translate: exitPosition(mode), translateInner: _constants.INNER_NUMBER_POSITIONING.exit } }); (0, _react.useEffect)(() => { // don't show intial animation on first render - ie: {from : ...} firstRun.current = false; }, []); return (0, _jsxRuntime.jsxs)("div", { className: "react-timekeeper__clock", css: _clock.default, ref: clockEl, children: [transitions((anim, currentMode) => (0, _utils.isMinuteMode)(currentMode) ? (0, _jsxRuntime.jsx)(_Numbers.MinuteNumbers, { anim: anim, disabledTimeRangeValidator: disabledTimeRangeValidator, hour: time.hour }) : (0, _jsxRuntime.jsx)(_Numbers.HourNumbers, { anim: anim, mode: currentMode, hour24Mode: hour24Mode, disabledTimeRangeValidator: disabledTimeRangeValidator, meridiem: meridiem })), (0, _jsxRuntime.jsx)(_ClockHand.default, { time: time, mode: mode })] }); }