@kiwicom/smart-faq
Version:
Smart FAQ
574 lines (486 loc) • 19.2 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 = exports.theme = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var React = _interopRequireWildcard(require("react"));
var _app = _interopRequireWildcard(require("next/app"));
var _reactTreeWalker = _interopRequireDefault(require("@jaredlunde/react-tree-walker"));
var _reactRelay = require("react-relay");
var _relayRuntime = require("relay-runtime");
var _orbitDesignTokens = require("@kiwicom/orbit-design-tokens");
var _NavBar = _interopRequireDefault(require("@kiwicom/nitro/lib/components/NavBar"));
var _Heading = _interopRequireDefault(require("@kiwicom/orbit-components/lib/Heading"));
var _Translate = _interopRequireDefault(require("@kiwicom/nitro/lib/components/Translate"));
var _InputField = _interopRequireDefault(require("@kiwicom/orbit-components/lib/InputField"));
var _Search = _interopRequireDefault(require("@kiwicom/orbit-components/lib/icons/Search"));
var _Stack = _interopRequireDefault(require("@kiwicom/orbit-components/lib/Stack"));
var _context8 = require("@kiwicom/nitro/lib/services/intl/context");
var _mobileDetect = _interopRequireDefault(require("mobile-detect"));
var _enKeys = _interopRequireDefault(require("../translations/enKeys.json"));
var _langInfos = require("../translations/langInfos");
var _environment = _interopRequireDefault(require("../shared/relay/environment"));
var _Contexts = _interopRequireDefault(require("../shared/ssr/Contexts"));
var _helpers = require("../shared/helpers");
var _SSRContext = _interopRequireDefault(require("../shared/ssr/SSRContext"));
var _countries = _interopRequireDefault(require("../../data/countries.json"));
var _languages = _interopRequireDefault(require("../../data/languages.json"));
var _airlines = _interopRequireDefault(require("../../data/airlines.json"));
var _continents = _interopRequireDefault(require("../../data/continents.json"));
var _brands = _interopRequireDefault(require("../../data/brands.json"));
var _brandLanguages = _interopRequireDefault(require("../../data/brandLanguages.json"));
var _GlobalStyles = _interopRequireDefault(require("../FullPage/GlobalStyles"));
// @flow
var TRANSLATION_FILES = require('../../data/translationsFiles.json');
var theme = {
orbit: (0, _orbitDesignTokens.getTokens)()
};
exports.theme = theme;
var userContext = {
user: null,
brand: 'kiwicom',
loginToken: null,
simpleToken: null,
kwAuthToken: null,
onLogin: function onLogin() {},
onLogout: function onLogout() {
return Promise.resolve(null);
}
};
var collectQueryDefinitions =
/*#__PURE__*/
function () {
var _ref = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(Component
/*: React.ComponentType<Object>*/
, location, screenWidth) {
var fetchers, WrappedComponent;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
fetchers = [];
WrappedComponent = function WrappedComponent() {
return React.createElement(_Contexts.default, {
location: location,
lng: "en",
userContext: userContext,
theme: theme,
currencyId: "",
countries: {},
brand: {},
language: {},
fetched: {},
intl: {},
screenWidth: screenWidth
}, React.createElement(Component, null));
};
_context.next = 4;
return (0, _reactTreeWalker.default)(React.createElement(WrappedComponent, null), function (element, instance) {
var fetcher = function (value) {
return value && value.fetchSSRData;
}(instance || element);
if (fetcher) {
fetchers.push(fetcher);
}
});
case 4:
return _context.abrupt("return", fetchers.map(function (fetcher) {
return fetcher();
}));
case 5:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return function collectQueryDefinitions(_x, _x2, _x3) {
return _ref.apply(this, arguments);
};
}();
var getTranslations = function getTranslations(phraseAppLanguageCode
/*: string*/
) {
// eslint-disable-next-line import/no-dynamic-require
return require("../../data/".concat(TRANSLATION_FILES[phraseAppLanguageCode]));
};
/*:: type QueryDefinition = {|
query: string,
variables: {
[string]: mixed,
},
|};*/
var MyApp =
/*#__PURE__*/
function (_App) {
(0, _inherits2.default)(MyApp, _App);
function MyApp() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, MyApp);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(MyApp)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "environment", (0, _environment.default)(null, null, _this.props.lng, _this.props.recordStoreFromSSR));
return _this;
}
(0, _createClass2.default)(MyApp, [{
key: "render",
value: function render() {
var _this$props = this.props,
Component = _this$props.Component,
pageProps = _this$props.pageProps,
location = _this$props.location,
screenWidth = _this$props.screenWidth;
var langInfo = _langInfos.langInfos[this.props.lng];
var translations = this.props.translations ? this.props.translations : _enKeys.default;
var intl = {
language: langInfo,
translations: translations
};
var brandId = 'kiwicom';
var localeId = 'en';
var brand = _brands.default[brandId];
var language = _languages.default[localeId];
var fetched = {
brandLanguage: _brandLanguages.default[brandId][localeId],
countries: _countries.default,
airlines: _airlines.default,
continents: _continents.default
};
var currencyId = 'eur';
return React.createElement(_app.Container, null, React.createElement(_reactRelay.ReactRelayContext.Provider, {
value: {
environment: this.environment,
variables: this.props.variablesFromSSR
}
}, React.createElement(_SSRContext.default.Provider, {
value: {
data: this.props.dataProps
}
}, React.createElement(_Contexts.default, {
location: location,
lng: this.props.lng,
userContext: userContext,
theme: theme,
currencyId: currencyId,
language: language,
countries: _countries.default,
brand: brand,
fetched: fetched,
intl: intl,
screenWidth: screenWidth
}, React.createElement("div", null, React.createElement(_NavBar.default, {
headerLinks: React.createElement("div", null),
chat: React.createElement("h1", null, "Chat"),
subscription: React.createElement("h1", null, "Subscription"),
debug: React.createElement("h1", null, "Debug"),
portal: "modal-portal",
starred: "",
onOpenFaq: function onOpenFaq() {
return undefined;
},
onSetModal: function onSetModal() {
return undefined;
},
onLogoClick: function onLogoClick() {
return undefined;
},
onSaveLanguage: function onSaveLanguage() {
return undefined;
},
onSelectTrip: function onSelectTrip() {
return undefined;
}
}), React.createElement("div", {
className: "SmartFAQ"
}, React.createElement(_Stack.default, {
spaceAfter: "largest"
}, React.createElement(_Heading.default, {
type: "display",
element: "h1",
spaceAfter: "medium"
}, React.createElement(_Translate.default, {
t: "smartfaq.full_page.how_can_we_help_you"
})), React.createElement(_context8.Consumer, null, function (intl) {
return React.createElement(_InputField.default, {
size: "small",
type: "text",
value: "",
onChange: function onChange() {},
placeholder: intl.translate("smartfaq.full_page.search.placeholder"),
prefix: React.createElement(_Search.default, null)
});
})), React.createElement(Component, pageProps)), React.createElement(_GlobalStyles.default, null))), React.createElement("div", {
id: "modal-portal"
}))));
}
}], [{
key: "fetchData",
value: function () {
var _fetchData = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee2(environment
/*: Environment*/
, query
/*: string*/
, variablesMap
/*: Object*/
) {
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.prev = 0;
_context2.next = 3;
return (0, _reactRelay.fetchQuery)(environment, query, variablesMap);
case 3:
return _context2.abrupt("return", _context2.sent);
case 6:
_context2.prev = 6;
_context2.t0 = _context2["catch"](0);
console.warn('GraphQL error:', _context2.t0); // eslint-disable-line no-console
return _context2.abrupt("return", {
relayFetchError: true
});
case 10:
case "end":
return _context2.stop();
}
}
}, _callee2, this, [[0, 6]]);
}));
return function fetchData(_x4, _x5, _x6) {
return _fetchData.apply(this, arguments);
};
}()
}, {
key: "getStaticInitialProps",
value: function () {
var _getStaticInitialProps = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee3(environment
/*: Environment*/
, Props
/*: { [string]: mixed }*/
) {
return _regenerator.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
return _context3.abrupt("return", (0, _objectSpread2.default)({
dataProps: {},
variablesFromSSR: {},
recordStoreFromSSR: (0, _helpers.isBrowser)() ? {} : environment.getStore().getSource().toJSON()
}, Props));
case 1:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
return function getStaticInitialProps(_x7, _x8) {
return _getStaticInitialProps.apply(this, arguments);
};
}()
}, {
key: "getDynamicInitialProps",
value: function () {
var _getDynamicInitialProps = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee4(queryDefinitions
/*: Array<QueryDefinition>*/
, environment
/*: Environment*/
, ctx
/*: Object*/
, Props
/*: { [string]: mixed }*/
) {
var variables, dataProps;
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
variables = queryDefinitions[0].variables;
_context4.next = 3;
return this.fetchData(environment, queryDefinitions[0].query, variables);
case 3:
dataProps = _context4.sent;
if (dataProps.relayFetchError && ctx.res) {
ctx.res.status(500);
}
return _context4.abrupt("return", (0, _objectSpread2.default)({
dataProps: dataProps,
variablesFromSSR: variables,
recordStoreFromSSR: (0, _helpers.isBrowser)() ? {} : environment.getStore().getSource().toJSON()
}, Props));
case 6:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
return function getDynamicInitialProps(_x9, _x10, _x11, _x12) {
return _getDynamicInitialProps.apply(this, arguments);
};
}()
}, {
key: "getPhraseAppLanguageCode",
value: function getPhraseAppLanguageCode(lng
/*: string*/
) {
try {
return _langInfos.langInfos[lng].phraseApp;
} catch (e) {
return 'en-GB';
}
}
}, {
key: "getTranslationData",
value: function () {
var _getTranslationData = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee5(ctx
/*: Object*/
) {
var lng, phraseAppLanguageCode;
return _regenerator.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
lng = ctx.query.lng || 'en';
phraseAppLanguageCode = this.getPhraseAppLanguageCode(lng);
return _context5.abrupt("return", {
lng: lng,
phraseAppLanguageCode: phraseAppLanguageCode,
translations: getTranslations(phraseAppLanguageCode)
});
case 3:
case "end":
return _context5.stop();
}
}
}, _callee5, this);
}));
return function getTranslationData(_x13) {
return _getTranslationData.apply(this, arguments);
};
}()
}, {
key: "getInitialProps",
value: function () {
var _getInitialProps = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee6(_ref2) {
var _ctx$req;
var Component, ctx, fullPath, location, device, screenWidth, queryDefinitions, Props, environment;
return _regenerator.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
Component = _ref2.Component, ctx = _ref2.ctx;
fullPath = (0, _helpers.isBrowser)() ? window.location.pathname : ctx === null || ctx === void 0 ? void 0 : (_ctx$req = ctx.req) === null || _ctx$req === void 0 ? void 0 : _ctx$req.url;
location = fullPath.slice(3);
device = new _mobileDetect.default(ctx.req.headers['user-agent']);
screenWidth = device.is('mobile') ? 320 : device.is('tablet') ? 640 : 1280;
_context6.next = 7;
return collectQueryDefinitions(Component, location, screenWidth);
case 7:
queryDefinitions = _context6.sent;
_context6.t0 = _objectSpread2.default;
_context6.t1 = location;
_context6.next = 12;
return this.getPageProps(Component, ctx);
case 12:
_context6.t2 = _context6.sent;
_context6.t3 = screenWidth;
_context6.t4 = {
location: _context6.t1,
pageProps: _context6.t2,
screenWidth: _context6.t3
};
_context6.next = 17;
return this.getTranslationData(ctx);
case 17:
_context6.t5 = _context6.sent;
Props = (0, _context6.t0)(_context6.t4, _context6.t5);
environment = (0, _environment.default)(null, null, Props.lng);
if (!(queryDefinitions.length === 0)) {
_context6.next = 24;
break;
}
_context6.next = 23;
return this.getStaticInitialProps(environment, Props);
case 23:
return _context6.abrupt("return", _context6.sent);
case 24:
_context6.next = 26;
return this.getDynamicInitialProps(queryDefinitions, environment, ctx, Props);
case 26:
return _context6.abrupt("return", _context6.sent);
case 27:
case "end":
return _context6.stop();
}
}
}, _callee6, this);
}));
return function getInitialProps(_x14) {
return _getInitialProps.apply(this, arguments);
};
}()
}, {
key: "getPageProps",
value: function () {
var _getPageProps = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee7(Component
/*: Object*/
, ctx
/*: Object*/
) {
return _regenerator.default.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
if (!Component.getInitialProps) {
_context7.next = 2;
break;
}
return _context7.abrupt("return", Component.getInitialProps(ctx));
case 2:
return _context7.abrupt("return", {});
case 3:
case "end":
return _context7.stop();
}
}
}, _callee7, this);
}));
return function getPageProps(_x15, _x16) {
return _getPageProps.apply(this, arguments);
};
}()
}]);
return MyApp;
}(_app.default);
var _default = MyApp;
exports.default = _default;