UNPKG

@kiwicom/smart-faq

Version:

Smart FAQ

452 lines (378 loc) 14.5 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.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("react-tree-walker")); var _reactRelay = require("react-relay"); var _relayRuntime = require("relay-runtime"); var _reactRouterDom = require("react-router-dom"); var _styledComponents = require("styled-components"); var _orbitDesignTokens = require("@kiwicom/orbit-design-tokens"); var intlContext = _interopRequireWildcard(require("@kiwicom/nitro/lib/services/intl/context")); var _InitIntl = _interopRequireDefault(require("@kiwicom/nitro/lib/components/InitIntl")); var _SSRContext = _interopRequireDefault(require("../shared/ssr/SSRContext")); var _helpers = require("../shared/helpers"); var _RelayProvider = _interopRequireDefault(require("../shared/ssr/RelayProvider")); var _environment = _interopRequireDefault(require("../shared/relay/environment")); var _langInfos = require("../translations/langInfos"); var _enKeys = _interopRequireDefault(require("../translations/enKeys.json")); // @flow var TRANSLATION_FILES = require('../../data/translationsFiles.json'); var theme = { orbit: (0, _orbitDesignTokens.getTokens)() }; exports.theme = theme; var collectQueryDefinitions = /*#__PURE__*/ function () { var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/ _regenerator.default.mark(function _callee(Component /*: React.ComponentType<Object>*/ ) { var fetchers; return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: fetchers = []; _context.next = 3; return (0, _reactTreeWalker.default)(React.createElement(Component, null), function (element, instance) { var fetcher = function (value) { return value && value.fetchSSRData; }(instance || element); if (fetcher) { fetchers.push(fetcher); } }); case 3: return _context.abrupt("return", fetchers.map(function (fetcher) { return fetcher(); })); case 4: case "end": return _context.stop(); } } }, _callee, this); })); return function collectQueryDefinitions(_x) { 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; var langInfo = _langInfos.langInfos[this.props.lng]; var translations = this.props.translations ? this.props.translations : _enKeys.default; var intl = { language: langInfo, translations: translations }; return React.createElement(_app.Container, null, React.createElement(_RelayProvider.default, { environment: this.environment, variables: this.props.variablesFromSSR }, React.createElement(_SSRContext.default.Provider, { value: { data: this.props.dataProps } }, React.createElement(_InitIntl.default, { raw: intl }, function (intl) { return React.createElement(intlContext.Provider, { value: intl }, React.createElement(_reactRouterDom.MemoryRouter, null, React.createElement(_styledComponents.ThemeProvider, { theme: theme }, React.createElement(Component, pageProps)))); })))); } }], [{ 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(_x2, _x3, _x4) { 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(_x5, _x6) { 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(_x7, _x8, _x9, _x10) { 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(_x11) { return _getTranslationData.apply(this, arguments); }; }() }, { key: "getInitialProps", value: function () { var _getInitialProps = (0, _asyncToGenerator2.default)( /*#__PURE__*/ _regenerator.default.mark(function _callee6(_ref2) { var Component, ctx, 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; _context6.next = 3; return collectQueryDefinitions(Component); case 3: queryDefinitions = _context6.sent; _context6.t0 = _objectSpread2.default; _context6.next = 7; return this.getPageProps(Component, ctx); case 7: _context6.t1 = _context6.sent; _context6.t2 = { pageProps: _context6.t1 }; _context6.next = 11; return this.getTranslationData(ctx); case 11: _context6.t3 = _context6.sent; Props = (0, _context6.t0)(_context6.t2, _context6.t3); environment = (0, _environment.default)(null, null, Props.lng); if (!(queryDefinitions.length === 0)) { _context6.next = 18; break; } _context6.next = 17; return this.getStaticInitialProps(environment, Props); case 17: return _context6.abrupt("return", _context6.sent); case 18: _context6.next = 20; return this.getDynamicInitialProps(queryDefinitions, environment, ctx, Props); case 20: return _context6.abrupt("return", _context6.sent); case 21: case "end": return _context6.stop(); } } }, _callee6, this); })); return function getInitialProps(_x12) { 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(_x13, _x14) { return _getPageProps.apply(this, arguments); }; }() }]); return MyApp; }(_app.default); var _default = MyApp; exports.default = _default;