GT2/GT2-Android/node_modules/react-transform-hmr/lib/index.js

95 lines
3.6 KiB
JavaScript

'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'];