49 lines
1.1 KiB
JavaScript
49 lines
1.1 KiB
JavaScript
var createProxy = require('react-proxy').default;
|
|
var deepForceUpdate = require('react-deep-force-update');
|
|
var React = require('react');
|
|
|
|
/* COMPONENT PROXY */
|
|
|
|
var proxies = {};
|
|
|
|
function register(classRef, name, file)
|
|
{
|
|
if (classRef == null || name == null || file == null) return;
|
|
var key = name + '@' + file;
|
|
if (proxies[key]) {
|
|
classRef.__hx_proxy__ = key;
|
|
classRef.displayName = name;
|
|
proxies[key].update(classRef);
|
|
}
|
|
else {
|
|
classRef.__hx_proxy__ = key;
|
|
classRef.displayName = name;
|
|
}
|
|
}
|
|
|
|
function refresh(rootElement)
|
|
{
|
|
deepForceUpdate(rootElement);
|
|
}
|
|
|
|
/* REACT OVERRIDE */
|
|
|
|
var _createElement = React.createElement;
|
|
|
|
React.createElement = function(type) {
|
|
if (type && type.__hx_proxy__) {
|
|
var proxy = proxies[type.__hx_proxy__];
|
|
if (!proxy) proxy = proxies[type.__hx_proxy__] = createProxy(type);
|
|
var args = Array.prototype.slice.call(arguments, 1);
|
|
args.unshift(proxy.get());
|
|
return _createElement.apply(React, args);
|
|
}
|
|
|
|
return _createElement.apply(React, arguments);
|
|
}
|
|
|
|
module.exports = { register: register, refresh: refresh };
|
|
|
|
if (!window.__REACT_HOT_LOADER__)
|
|
window.__REACT_HOT_LOADER__ = module.exports;
|