'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })(); exports['default'] = proxyReactComponents; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _reactProxy = require('react-proxy'); var _globalWindow = require('global/window'); var _globalWindow2 = _interopRequireDefault(_globalWindow); var componentProxies = undefined; if (_globalWindow2['default'].__reactComponentProxies) { componentProxies = _globalWindow2['default'].__reactComponentProxies; } else { componentProxies = {}; Object.defineProperty(_globalWindow2['default'], '__reactComponentProxies', { configurable: true, enumerable: false, writable: false, value: componentProxies }); } function proxyReactComponents(_ref) { var filename = _ref.filename; var components = _ref.components; var imports = _ref.imports; var locals = _ref.locals; var _imports = _slicedToArray(imports, 1); var React = _imports[0]; var _locals = _slicedToArray(locals, 1); var hot = _locals[0].hot; if (!React.Component) { throw new Error('imports[0] for react-transform-hmr does not look like React.'); } if (!hot || typeof hot.accept !== 'function') { throw new Error('locals[0] does not appear to be a `module` object with Hot Module ' + 'replacement API enabled. You should disable react-transform-hmr in ' + 'production by using `env` section in Babel configuration. See the ' + 'example in README: https://github.com/gaearon/react-transform-hmr'); } if (Object.keys(components).some(function (key) { return !components[key].isInFunction; })) { hot.accept(function (err) { if (err) { console.warn('[React Transform HMR] There was an error updating ' + filename + ':'); console.error(err); } }); } var forceUpdate = (0, _reactProxy.getForceUpdate)(React); return function wrapWithProxy(ReactClass, uniqueId) { var _components$uniqueId = components[uniqueId]; var _components$uniqueId$isInFunction = _components$uniqueId.isInFunction; var isInFunction = _components$uniqueId$isInFunction === undefined ? false : _components$uniqueId$isInFunction; var _components$uniqueId$displayName = _components$uniqueId.displayName; var displayName = _components$uniqueId$displayName === undefined ? uniqueId : _components$uniqueId$displayName; if (isInFunction) { return ReactClass; } var globalUniqueId = filename + '$' + uniqueId; if (componentProxies[globalUniqueId]) { (function () { console.info('[React Transform HMR] Patching ' + displayName); var instances = componentProxies[globalUniqueId].update(ReactClass); setTimeout(function () { return instances.forEach(forceUpdate); }); })(); } else { componentProxies[globalUniqueId] = (0, _reactProxy.createProxy)(ReactClass); } return componentProxies[globalUniqueId].get(); }; } module.exports = exports['default'];