@kiwicom/smart-faq
Version:
137 lines (111 loc) • 4.48 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.SelectedBooking = exports.processUrl = void 0;
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 initialState
/*: StateValues*/
= {
selectedBooking: null,
userSelectedBooking: false,
bookingPage: 'SINGLE_BOOKING'
};
var processUrl = function processUrl(selectedBooking
/*: ?number*/
) {
if (typeof window === 'undefined') {
return null;
}
var urlMatch = window.location.href.match(/.*(?:kiwi.com|localhost:\d*)\/.*\/(?:account\/bookings|manage)\/(\d*)\?.*$/);
var bookingId = urlMatch && Number(urlMatch[1]);
if (bookingId && bookingId !== selectedBooking) {
return {
selectedBooking: bookingId
};
}
return null;
};
exports.processUrl = processUrl;
var SelectedBooking = React.createContext((0, _objectSpread2.default)({}, initialState, {
closeAllBooking: function closeAllBooking() {},
onDisplayAll: function onDisplayAll() {},
onSelectBooking: function onSelectBooking(id
/*: number*/
) {} // eslint-disable-line no-unused-vars
}));
exports.SelectedBooking = SelectedBooking;
var SelectedBookingProvider =
/*#__PURE__*/
function (_React$Component) {
(0, _inherits2.default)(SelectedBookingProvider, _React$Component);
(0, _createClass2.default)(SelectedBookingProvider, null, [{
key: "getDerivedStateFromProps",
value: function getDerivedStateFromProps(props
/*: Props*/
, state
/*: State*/
) {
// when user specifically selected one booking, don't change his settings by this
return state.userSelectedBooking ? null : processUrl(state.selectedBooking);
}
}]);
function SelectedBookingProvider(props
/*: Props*/
) {
var _this;
(0, _classCallCheck2.default)(this, SelectedBookingProvider);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(SelectedBookingProvider).call(this, props));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "onClickSelect", function (id
/*: number*/
) {
_this.setState({
bookingPage: 'SINGLE_BOOKING',
selectedBooking: id,
userSelectedBooking: true
});
var Body = document.querySelector('#SmartFAQ_Body');
if (!Body) return;
Body.dispatchEvent(new Event('scroll'));
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "closeAllBooking", function () {
_this.setState({
bookingPage: 'SINGLE_BOOKING'
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "onClickAllBooking", function () {
_this.setState({
bookingPage: 'ALL_BOOKINGS'
});
});
_this.state = (0, _objectSpread2.default)({}, initialState, {
onSelectBooking: _this.onClickSelect,
closeAllBooking: _this.closeAllBooking,
onDisplayAll: _this.onClickAllBooking
});
return _this;
}
(0, _createClass2.default)(SelectedBookingProvider, [{
key: "render",
value: function render() {
return React.createElement(SelectedBooking.Provider, {
value: this.state
}, this.props.children);
}
}]);
return SelectedBookingProvider;
}(React.Component);
var _default = SelectedBookingProvider;
exports.default = _default;