UNPKG

@kiwicom/smart-faq

Version:

Smart FAQ

182 lines (153 loc) 5.53 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.withLogout = exports.BookingState = exports.getFAQSection = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread")); var React = _interopRequireWildcard(require("react")); // @flow /* eslint-disable react/no-unused-state */ var getFAQSection = function getFAQSection(_ref) { var hasBooking = _ref.hasBooking, isPastBooking = _ref.isPastBooking, isUrgent = _ref.isUrgent; if (!hasBooking) return 'BEFORE_BOOKING'; if (isPastBooking) return 'PAST_BOOKING'; if (isUrgent) return 'URGENT_BOOKING'; return 'UPCOMING_BOOKING'; }; exports.getFAQSection = getFAQSection; var initialState = { FAQSection: 'BEFORE_BOOKING', selectedBooking: null, showBooking: true }; var BookingState /*: React.Context<State>*/ = React.createContext((0, _objectSpread2.default)({}, initialState, { onSetFAQSection: function onSetFAQSection(isUrgent /*: boolean*/ , isPastBooking /*: boolean*/ ) {}, // eslint-disable-line no-unused-vars onLogout: function onLogout() { return Promise.resolve(null); } })); exports.BookingState = BookingState; var BookingStateProvider = /*#__PURE__*/ function (_React$Component) { (0, _inherits2.default)(BookingStateProvider, _React$Component); (0, _createClass2.default)(BookingStateProvider, null, [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(nextProps /*: Props*/ , state /*: State*/ ) { if (nextProps.showBooking !== state.showBooking) { return { showBooking: nextProps.showBooking }; } return null; } }]); function BookingStateProvider(props /*: Props*/ ) { var _this; (0, _classCallCheck2.default)(this, BookingStateProvider); _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BookingStateProvider).call(this, props)); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "onLogout", /*#__PURE__*/ (0, _asyncToGenerator2.default)( /*#__PURE__*/ _regenerator.default.mark(function _callee() { return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return _this.props.onLogout(); case 2: _this.setState({ FAQSection: 'BEFORE_BOOKING' }); case 3: case "end": return _context.stop(); } } }, _callee, this); }))); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "onSetFAQSection", function (isUrgent /*: boolean*/ , isPastBooking /*: boolean*/ ) { var section = getFAQSection({ isUrgent: isUrgent, isPastBooking: isPastBooking, hasBooking: true }); _this.setState(function (_ref3) { var FAQSection = _ref3.FAQSection; if (FAQSection !== section) { return { FAQSection: section }; } }); }); _this.state = (0, _objectSpread2.default)({}, initialState, { showBooking: props.showBooking, onSetFAQSection: _this.onSetFAQSection, FAQSection: getFAQSection({ hasBooking: false }), onLogout: _this.onLogout }); return _this; } (0, _createClass2.default)(BookingStateProvider, [{ key: "render", value: function render() { return React.createElement(BookingState.Provider, { value: this.state }, this.props.children); } }]); return BookingStateProvider; }(React.Component); var withLogout = function withLogout(Component /*: React.ComponentType<{} & Props>*/ ) { return function withLogoutHOC(props /*: Props*/ ) { return React.createElement(BookingState.Consumer, null, function (_ref4) { var onLogout = _ref4.onLogout; return React.createElement(Component, (0, _extends2.default)({}, props, { onLogout: onLogout })); }); }; }; exports.withLogout = withLogout; var _default = BookingStateProvider; exports.default = _default;