@kiwicom/smart-faq
Version:
225 lines (184 loc) • 8.73 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _style = _interopRequireDefault(require("styled-jsx/style"));
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 React = _interopRequireWildcard(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
require("url-search-params-polyfill");
var _reactEventListener = _interopRequireWildcard(require("react-event-listener"));
var _reactFocusTrap = _interopRequireDefault(require("react-focus-trap"));
var intlContext = _interopRequireWildcard(require("@kiwicom/nitro/lib/services/intl/context"));
var _Routes = _interopRequireDefault(require("./Routes"));
var _Close = require("./context/Close");
var _Language = require("./context/Language");
var _User = require("./context/User");
var _BookingState = _interopRequireDefault(require("./context/BookingState"));
var _SearchState = _interopRequireDefault(require("./context/SearchState"));
var _SelectedBooking = _interopRequireDefault(require("./context/SelectedBooking"));
var _ExtraInfoState = _interopRequireDefault(require("./context/ExtraInfoState"));
var _Emergencies = _interopRequireDefault(require("./context/Emergencies"));
var _ErrorBoundary = _interopRequireDefault(require("./common/ErrorBoundary"));
var _trackers = require("./helpers/analytics/trackers");
var _MobileSafariScroll = _interopRequireDefault(require("./helpers/MobileSafariScroll"));
var _GuaranteeChatInfo = _interopRequireDefault(require("./context/GuaranteeChatInfo"));
var _langInfos = require("./translations/langInfos");
var _translationUtils = require("./helpers/translationUtils");
// @flow
/* eslint-disable jsx-a11y/no-static-element-interactions */
var style = new String(".smartFAQ{display:none;position:fixed;min-width:480px;top:0;bottom:0;right:0;background-color:#fff;font-family:'Roboto',sans-serif;}.smartFAQ.open{display:block;}.smartFAQ *{box-sizing:border-box;font-family:'Roboto',sans-serif;}@media only screen and (max-width:901px){.smartFAQ{min-width:100%;}}");
style.__hash = "3449904117";
style.__scoped = ".smartFAQ.jsx-2556846004{display:none;position:fixed;min-width:480px;top:0;bottom:0;right:0;background-color:#fff;font-family:'Roboto',sans-serif;}.smartFAQ.open.jsx-2556846004{display:block;}.smartFAQ.jsx-2556846004 *.jsx-2556846004{box-sizing:border-box;font-family:'Roboto',sans-serif;}@media only screen and (max-width:901px){.smartFAQ.jsx-2556846004{min-width:100%;}}";
style.__scopedHash = "2556846004";
/*:: type State = {|
userContext: UserContextType,
|};*/
var App =
/*#__PURE__*/
function (_React$PureComponent) {
(0, _inherits2.default)(App, _React$PureComponent);
(0, _createClass2.default)(App, null, [{
key: "getDerivedStateFromProps",
value: function getDerivedStateFromProps(nextProps
/*: AppProps*/
) {
return {
userContext: {
user: nextProps.user,
onLogin: nextProps.onLogin,
onLogout: nextProps.onLogout,
onSocialLogin: nextProps.onSocialLogin,
loginToken: nextProps.loginToken,
simpleToken: nextProps.simpleToken
}
};
}
}]);
function App(props
/*: AppProps*/
) {
var _this;
(0, _classCallCheck2.default)(this, App);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(App).call(this, props));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "onKeyDown", function (e
/*: KeyboardEvent*/
) {
// $FlowExpectedError: I know "noInputFocus" property doesn't exist...
e.noInputFocus = true;
});
_this.state = {
userContext: {
user: props.user,
onLogin: props.onLogin,
onLogout: props.onLogout,
onSocialLogin: props.onSocialLogin,
loginToken: props.loginToken,
simpleToken: props.simpleToken
}
};
return _this;
}
(0, _createClass2.default)(App, [{
key: "renderApp",
value: function renderApp() {
var _this$props = this.props,
route = _this$props.route,
emergencies = _this$props.emergencies,
language = _this$props.language;
var isOpen = Boolean(route);
var langInfo = _langInfos.langInfos[language];
var translations = (0, _translationUtils.loadStaticTranslations)(language);
return React.createElement(_reactFocusTrap.default, {
active: isOpen
}, React.createElement("div", {
"data-test": "SmartFAQHelp",
className: _style.default.dynamic([["1903295685", [isOpen ? 'hidden' : 'auto']]]) + " " + ((0, _classnames.default)('smartFAQ', {
open: isOpen
}) || "")
}, React.createElement("meta", {
name: "viewport",
content: "width=device-width, initial-scale=1 shrink-to-fit=no",
className: _style.default.dynamic([["1903295685", [isOpen ? 'hidden' : 'auto']]])
}), React.createElement("meta", {
httpEquiv: "X-UA-Compatible",
content: "IE=edge",
className: _style.default.dynamic([["1903295685", [isOpen ? 'hidden' : 'auto']]])
}), React.createElement("link", {
href: "https://fonts.googleapis.com/css?family=Roboto",
rel: "stylesheet",
className: _style.default.dynamic([["1903295685", [isOpen ? 'hidden' : 'auto']]])
}), React.createElement(_ErrorBoundary.default, null, React.createElement(intlContext.Provider, {
language: langInfo,
translations: translations
}, React.createElement(_Language.LanguageContext.Provider, {
value: language
}, React.createElement(_Close.CloseContext.Provider, {
value: this.props.onClose
}, React.createElement(_User.UserContext.Provider, {
value: this.state.userContext
}, React.createElement(_SearchState.default, null, React.createElement(_Emergencies.default.Provider, {
value: emergencies
}, React.createElement(_SelectedBooking.default, {
isOpen: isOpen
}, React.createElement(_BookingState.default, {
onLogout: this.props.onLogout
}, React.createElement(_ExtraInfoState.default, null, React.createElement(_GuaranteeChatInfo.default, {
enableChat: this.props.enableChat,
chatConfig: this.props.chatConfig,
onAppWithOpenChatClose: this.props.onAppWithOpenChatClose
}, isOpen && route && React.createElement(_reactEventListener.default, {
target: "window",
onKeydown: (0, _reactEventListener.withOptions)(this.onKeyDown, {
capture: true
})
}, React.createElement(_Routes.default, {
route: route
}))))))))))))), React.createElement(_style.default, {
styleId: style.__hash,
css: style
}), React.createElement(_style.default, {
styleId: "1903295685",
css: "body{overflow-y:".concat(isOpen ? 'hidden' : 'auto', ";}"),
dynamic: [isOpen ? 'hidden' : 'auto']
}), React.createElement(_MobileSafariScroll.default, {
isOpen: isOpen
})));
}
}, {
key: "render",
value: function render() {
var _this2 = this;
if (typeof window !== 'undefined' && window.Raven) {
return window.Raven.context(function () {
return _this2.renderApp();
});
}
return this.renderApp();
}
}]);
return App;
}(React.PureComponent);
var EnterTrackedApp = (0, _trackers.EnterTracker)(App, 'smartFAQ', function (props) {
return {
action: 'clickOnHelp',
loggedIn: props ? !!props.user || !!props.simpleToken : false
};
});
var TimeTrackedApp = (0, _trackers.TimeTracker)(EnterTrackedApp, 'smartFAQ', function (props) {
return {
action: 'close',
loggedIn: props ? !!props.user || !!props.simpleToken : false
};
});
var _default = TimeTrackedApp;
exports.default = _default;