@kiwicom/smart-faq
Version: 
256 lines (204 loc) • 9.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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var React = _interopRequireWildcard(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
require("url-search-params-polyfill");
var _InitIntl = _interopRequireDefault(require("@kiwicom/nitro/lib/components/InitIntl"));
var intlContext = _interopRequireWildcard(require("@kiwicom/nitro/lib/services/intl/context"));
var _Routes = _interopRequireDefault(require("./SmartFAQ/Routes"));
var _GlobalStyles = _interopRequireDefault(require("./SmartFAQ/GlobalStyles"));
var _Close = _interopRequireDefault(require("./SmartFAQ/context/Close"));
var _Language = require("./SmartFAQ/context/Language");
var _User = require("./SmartFAQ/context/User");
var _PageVariant = _interopRequireDefault(require("./SmartFAQ/context/PageVariant"));
var _BookingState = _interopRequireDefault(require("./SmartFAQ/context/BookingState"));
var _SearchState = _interopRequireDefault(require("./SmartFAQ/context/SearchState"));
var _SelectedBooking = _interopRequireDefault(require("./SmartFAQ/context/SelectedBooking"));
var _ExtraInfoState = _interopRequireDefault(require("./SmartFAQ/context/ExtraInfoState"));
var _Emergencies = _interopRequireDefault(require("./SmartFAQ/context/Emergencies"));
var _ErrorBoundary = _interopRequireDefault(require("./SmartFAQ/common/ErrorBoundary"));
var _trackers = require("./shared/helpers/analytics/trackers");
var _MobileSafariScroll = _interopRequireDefault(require("./SmartFAQ/helpers/MobileSafariScroll"));
var _GuaranteeChatInfo = _interopRequireDefault(require("./shared/context/GuaranteeChatInfo"));
var _langInfos = require("./translations/langInfos");
var _enKeys = _interopRequireDefault(require("./translations/enKeys.json"));
var _tracker = require("./shared/cuckoo/tracker");
// @flow
/* eslint-disable jsx-a11y/no-static-element-interactions */
var style = function style(theme) {
  var _defaultExport = new String(".smartFAQ{display:none;position:fixed;min-width:480px;top:0;bottom:0;right:0;background-color:".concat(theme.orbit.backgroundModal, ";font-family:").concat(theme.orbit.fontFamily, ";}.smartFAQ.open{display:block;}.smartFAQ *{box-sizing:border-box;font-family:").concat(theme.orbit.fontFamily, ";}@media only screen and (max-width:901px){.smartFAQ{min-width:100%;}}"));
  _defaultExport.__hash = "384609333";
  _defaultExport.__scoped = ".smartFAQ.jsx-1383444468{display:none;position:fixed;min-width:480px;top:0;bottom:0;right:0;background-color:".concat(theme.orbit.backgroundModal, ";font-family:").concat(theme.orbit.fontFamily, ";}.smartFAQ.open.jsx-1383444468{display:block;}.smartFAQ.jsx-1383444468 *.jsx-1383444468{box-sizing:border-box;font-family:").concat(theme.orbit.fontFamily, ";}@media only screen and (max-width:901px){.smartFAQ.jsx-1383444468{min-width:100%;}}");
  _defaultExport.__scopedHash = "1383444468";
  return _defaultExport;
};
/*:: type State = {|
  showBooking: boolean,
  userContext: UserContextType,
|};*/
var SmartFAQApp =
/*#__PURE__*/
function (_React$PureComponent) {
  (0, _inherits2.default)(SmartFAQApp, _React$PureComponent);
  (0, _createClass2.default)(SmartFAQApp, null, [{
    key: "getDerivedStateFromProps",
    value: function getDerivedStateFromProps(nextProps
    /*: SmartFAQProps*/
    ) {
      if (nextProps.cuckoo) {
        (0, _tracker.setTracker)(nextProps.cuckoo);
      }
      return {
        showBooking: !nextProps.openArticle,
        userContext: {
          user: nextProps.user,
          onLogin: nextProps.onLogin,
          onLogout: nextProps.onLogout,
          loginToken: nextProps.loginToken,
          simpleToken: nextProps.simpleToken,
          kwAuthToken: nextProps.kwAuthToken,
          brand: nextProps.brand
        }
      };
    }
  }]);
  function SmartFAQApp(props
  /*: SmartFAQProps*/
  ) {
    var _this;
    (0, _classCallCheck2.default)(this, SmartFAQApp);
    _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(SmartFAQApp).call(this, props));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleClose", function () {
      _this.props.onToggle(false);
    });
    _this.state = {
      showBooking: !props.openArticle,
      userContext: {
        user: props.user,
        onLogin: props.onLogin,
        onLogout: props.onLogout,
        loginToken: props.loginToken,
        simpleToken: props.simpleToken,
        kwAuthToken: props.kwAuthToken,
        brand: props.brand
      }
    };
    if (props.cuckoo) {
      (0, _tracker.setTracker)(props.cuckoo);
    }
    return _this;
  }
  (0, _createClass2.default)(SmartFAQApp, [{
    key: "renderApp",
    value: function renderApp() {
      var _this2 = this;
      var _this$props = this.props,
          isOpen = _this$props.isOpen,
          emergencies = _this$props.emergencies,
          language = _this$props.language;
      var langInfo = _langInfos.langInfos[language];
      var translations = this.props.translations ? this.props.translations : _enKeys.default;
      var intl = {
        language: langInfo,
        translations: translations
      };
      return React.createElement("div", {
        "data-test": "SmartFAQHelp",
        className: _style.default.dynamic([["1772301477", [isOpen ? 'hidden' : 'auto']]]) + " " + ((0, _classnames.default)('smartFAQ open') || "")
      }, React.createElement("meta", {
        name: "viewport",
        content: "width=device-width, initial-scale=1 shrink-to-fit=no",
        className: _style.default.dynamic([["1772301477", [isOpen ? 'hidden' : 'auto']]])
      }), React.createElement("meta", {
        httpEquiv: "X-UA-Compatible",
        content: "IE=edge",
        className: _style.default.dynamic([["1772301477", [isOpen ? 'hidden' : 'auto']]])
      }), React.createElement("link", {
        href: "https://fonts.googleapis.com/css?family=Roboto",
        rel: "stylesheet",
        className: _style.default.dynamic([["1772301477", [isOpen ? 'hidden' : 'auto']]])
      }), React.createElement(_ErrorBoundary.default, null, React.createElement(_InitIntl.default, {
        raw: intl
      }, function (intl) {
        return React.createElement(intlContext.Provider, {
          value: intl
        }, React.createElement(_Language.LanguageContext.Provider, {
          value: language
        }, React.createElement(_Close.default.Provider, {
          value: _this2.handleClose
        }, React.createElement(_User.UserContext.Provider, {
          value: _this2.state.userContext
        }, React.createElement(_SearchState.default, null, React.createElement(_Emergencies.default.Provider, {
          value: emergencies
        }, React.createElement(_SelectedBooking.default, {
          bid: _this2.props.bid
        }, React.createElement(_BookingState.default, {
          onLogout: _this2.props.onLogout,
          showBooking: _this2.state.showBooking
        }, React.createElement(_ExtraInfoState.default, null, React.createElement(_GuaranteeChatInfo.default, {
          enableChat: _this2.props.enableChat,
          chatConfig: _this2.props.chatConfig
        }, React.createElement(_PageVariant.default.Provider, {
          value: {
            variant: 'sidebar'
          }
        }, React.createElement(_Routes.default, {
          isOpen: isOpen,
          onToggle: _this2.props.onToggle,
          openArticle: _this2.props.openArticle
        }), React.createElement(_GlobalStyles.default, null))))))))))));
      })), React.createElement(_style.default, {
        styleId: "1772301477",
        css: "body{overflow-y:".concat(isOpen ? 'hidden' : 'auto', ";}"),
        dynamic: [isOpen ? 'hidden' : 'auto']
      }), React.createElement(_MobileSafariScroll.default, {
        isOpen: isOpen
      }));
    }
  }, {
    key: "render",
    value: function render() {
      var _this3 = this;
      if (typeof window !== 'undefined' && window.Raven) {
        return window.Raven.context(function () {
          return _this3.renderApp();
        });
      }
      return this.renderApp();
    }
  }]);
  return SmartFAQApp;
}(React.PureComponent);
var isLoggedIn = function isLoggedIn(props) {
  return !!props.user || !!props.simpleToken || !!props.kwAuthToken;
};
var EnterTrackedApp = (0, _trackers.EnterTracker)(SmartFAQApp, 'smartFAQ', function (props) {
  return {
    action: 'clickOnHelp',
    loggedIn: isLoggedIn(props)
  };
});
var TimeTrackedApp = (0, _trackers.TimeTracker)(EnterTrackedApp, 'smartFAQ', function (props) {
  return {
    action: 'close',
    loggedIn: isLoggedIn(props)
  };
});
if (typeof window !== 'undefined') {
  window.SmartFAQApp = TimeTrackedApp;
}
var _default = TimeTrackedApp;
exports.default = _default;