UNPKG

plotly-icons

Version:
437 lines (327 loc) 13.7 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.renderError = exports.render = exports.emitter = exports.ErrorComponent = exports.router = undefined; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _getIterator2 = require('babel-runtime/core-js/get-iterator'); var _getIterator3 = _interopRequireDefault(_getIterator2); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var render = exports.render = function () { var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(props) { return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: if (!props.err) { _context2.next = 4; break; } _context2.next = 3; return renderError(props.err); case 3: return _context2.abrupt('return'); case 4: _context2.prev = 4; _context2.next = 7; return doRender(props); case 7: _context2.next = 15; break; case 9: _context2.prev = 9; _context2.t0 = _context2['catch'](4); if (!_context2.t0.abort) { _context2.next = 13; break; } return _context2.abrupt('return'); case 13: _context2.next = 15; return renderError(_context2.t0); case 15: case 'end': return _context2.stop(); } } }, _callee2, this, [[4, 9]]); })); return function render(_x2) { return _ref6.apply(this, arguments); }; }(); // This method handles all runtime and debug errors. // 404 and 500 errors are special kind of errors // and they are still handle via the main render method. var renderError = exports.renderError = function () { var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(error) { var prod, errorMessage, initProps, _props; return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: prod = process.env.NODE_ENV === 'production'; // We need to unmount the current app component because it's // in the inconsistant state. // Otherwise, we need to face issues when the issue is fixed and // it's get notified via HMR _reactDom2.default.unmountComponentAtNode(appContainer); errorMessage = error.message + '\n' + error.stack; console.error(stripAnsi(errorMessage)); if (!prod) { _context3.next = 12; break; } initProps = { err: error, pathname: pathname, query: query, asPath: asPath }; _context3.next = 8; return (0, _utils.loadGetInitialProps)(ErrorComponent, initProps); case 8: _props = _context3.sent; renderReactElement((0, _react.createElement)(ErrorComponent, _props), errorContainer); _context3.next = 13; break; case 12: renderReactElement((0, _react.createElement)(ErrorDebugComponent, { error: error }), errorContainer); case 13: case 'end': return _context3.stop(); } } }, _callee3, this); })); return function renderError(_x3) { return _ref7.apply(this, arguments); }; }(); var doRender = function () { var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(_ref8) { var Component = _ref8.Component, props = _ref8.props, hash = _ref8.hash, err = _ref8.err, _ref8$emitter = _ref8.emitter, emitterProp = _ref8$emitter === undefined ? emitter : _ref8$emitter; var _router, _pathname, _query, _asPath, appProps; return _regenerator2.default.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: if (!(!props && Component && Component !== ErrorComponent && lastAppProps.Component === ErrorComponent)) { _context4.next = 5; break; } // fetch props if ErrorComponent was replaced with a page component by HMR _router = router, _pathname = _router.pathname, _query = _router.query, _asPath = _router.asPath; _context4.next = 4; return (0, _utils.loadGetInitialProps)(Component, { err: err, pathname: _pathname, query: _query, asPath: _asPath }); case 4: props = _context4.sent; case 5: Component = Component || lastAppProps.Component; props = props || lastAppProps.props; appProps = { Component: Component, props: props, hash: hash, err: err, router: router, headManager: headManager // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error. }; lastAppProps = appProps; emitterProp.emit('before-reactdom-render', { Component: Component, ErrorComponent: ErrorComponent, appProps: appProps }); // We need to clear any existing runtime error messages _reactDom2.default.unmountComponentAtNode(errorContainer); renderReactElement((0, _react.createElement)(_app2.default, appProps), appContainer); emitterProp.emit('after-reactdom-render', { Component: Component, ErrorComponent: ErrorComponent, appProps: appProps }); case 13: case 'end': return _context4.stop(); } } }, _callee4, this); })); return function doRender(_x4) { return _ref9.apply(this, arguments); }; }(); var _react = require('react'); var _reactDom = require('react-dom'); var _reactDom2 = _interopRequireDefault(_reactDom); var _headManager = require('./head-manager'); var _headManager2 = _interopRequireDefault(_headManager); var _router2 = require('../lib/router'); var _EventEmitter = require('../lib/EventEmitter'); var _EventEmitter2 = _interopRequireDefault(_EventEmitter); var _app = require('../lib/app'); var _app2 = _interopRequireDefault(_app); var _utils = require('../lib/utils'); var _pageLoader = require('../lib/page-loader'); var _pageLoader2 = _interopRequireDefault(_pageLoader); var _asset = require('../lib/asset'); var asset = _interopRequireWildcard(_asset); var _runtimeConfig = require('../lib/runtime-config'); var envConfig = _interopRequireWildcard(_runtimeConfig); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // Polyfill Promise globally // This is needed because Webpack2's dynamic loading(common chunks) code // depends on Promise. // So, we need to polyfill it. // See: https://github.com/webpack/webpack/issues/4254 if (!window.Promise) { window.Promise = _promise2.default; } var _window = window, _window$__NEXT_DATA__ = _window.__NEXT_DATA__, props = _window$__NEXT_DATA__.props, err = _window$__NEXT_DATA__.err, page = _window$__NEXT_DATA__.page, pathname = _window$__NEXT_DATA__.pathname, query = _window$__NEXT_DATA__.query, buildId = _window$__NEXT_DATA__.buildId, chunks = _window$__NEXT_DATA__.chunks, assetPrefix = _window$__NEXT_DATA__.assetPrefix, runtimeConfig = _window$__NEXT_DATA__.runtimeConfig, location = _window.location; // With dynamic assetPrefix it's no longer possible to set assetPrefix at the build time // So, this is how we do it in the client side at runtime __webpack_public_path__ = assetPrefix + '/_next/webpack/'; //eslint-disable-line // Initialize next/asset with the assetPrefix asset.setAssetPrefix(assetPrefix); // Initialize next/config with the environment configuration envConfig.setConfig({ serverRuntimeConfig: {}, publicRuntimeConfig: runtimeConfig }); var asPath = (0, _utils.getURL)(); var pageLoader = new _pageLoader2.default(buildId, assetPrefix); window.__NEXT_LOADED_PAGES__.forEach(function (_ref) { var route = _ref.route, fn = _ref.fn; pageLoader.registerPage(route, fn); }); delete window.__NEXT_LOADED_PAGES__; window.__NEXT_LOADED_CHUNKS__.forEach(function (_ref2) { var chunkName = _ref2.chunkName, fn = _ref2.fn; pageLoader.registerChunk(chunkName, fn); }); delete window.__NEXT_LOADED_CHUNKS__; window.__NEXT_REGISTER_PAGE = pageLoader.registerPage.bind(pageLoader); window.__NEXT_REGISTER_CHUNK = pageLoader.registerChunk.bind(pageLoader); var headManager = new _headManager2.default(); var appContainer = document.getElementById('__next'); var errorContainer = document.getElementById('__next-error'); var lastAppProps = void 0; var router = exports.router = void 0; var ErrorComponent = exports.ErrorComponent = void 0; var ErrorDebugComponent = void 0; var Component = void 0; var stripAnsi = function stripAnsi(s) { return s; }; var emitter = exports.emitter = new _EventEmitter2.default(); exports.default = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, passedDebugComponent = _ref4.ErrorDebugComponent, passedStripAnsi = _ref4.stripAnsi; var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunkName, hash; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: // Wait for all the dynamic chunks to get loaded _iteratorNormalCompletion = true; _didIteratorError = false; _iteratorError = undefined; _context.prev = 3; _iterator = (0, _getIterator3.default)(chunks); case 5: if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { _context.next = 12; break; } chunkName = _step.value; _context.next = 9; return pageLoader.waitForChunk(chunkName); case 9: _iteratorNormalCompletion = true; _context.next = 5; break; case 12: _context.next = 18; break; case 14: _context.prev = 14; _context.t0 = _context['catch'](3); _didIteratorError = true; _iteratorError = _context.t0; case 18: _context.prev = 18; _context.prev = 19; if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } case 21: _context.prev = 21; if (!_didIteratorError) { _context.next = 24; break; } throw _iteratorError; case 24: return _context.finish(21); case 25: return _context.finish(18); case 26: stripAnsi = passedStripAnsi || stripAnsi; ErrorDebugComponent = passedDebugComponent; _context.next = 30; return pageLoader.loadPage('/_error'); case 30: exports.ErrorComponent = ErrorComponent = _context.sent; _context.prev = 31; _context.next = 34; return pageLoader.loadPage(page); case 34: Component = _context.sent; _context.next = 41; break; case 37: _context.prev = 37; _context.t1 = _context['catch'](31); console.error(stripAnsi(_context.t1.message + '\n' + _context.t1.stack)); Component = ErrorComponent; case 41: exports.router = router = (0, _router2.createRouter)(pathname, query, asPath, { pageLoader: pageLoader, Component: Component, ErrorComponent: ErrorComponent, err: err }); router.subscribe(function (_ref5) { var Component = _ref5.Component, props = _ref5.props, hash = _ref5.hash, err = _ref5.err; render({ Component: Component, props: props, err: err, hash: hash, emitter: emitter }); }); hash = location.hash.substring(1); render({ Component: Component, props: props, hash: hash, err: err, emitter: emitter }); return _context.abrupt('return', emitter); case 46: case 'end': return _context.stop(); } } }, _callee, undefined, [[3, 14, 18, 26], [19,, 21, 25], [31, 37]]); })); var isInitialRender = true; function renderReactElement(reactEl, domEl) { // The check for `.hydrate` is there to support React alternatives like preact if (isInitialRender && typeof _reactDom2.default.hydrate === 'function') { _reactDom2.default.hydrate(reactEl, domEl); isInitialRender = false; } else { _reactDom2.default.render(reactEl, domEl); } }