-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
101 lines (101 loc) · 3.28 KB
/
index.js
File metadata and controls
101 lines (101 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
"use strict";
/*
* React hot reload runtime
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.register = exports.hot = exports.listen = void 0;
// supporting either `react-proxy` or `react-stand-in` aliasing for ES6
var reactProxy = require('react-proxy');
var createProxy = reactProxy.default || reactProxy.createProxy;
var getForceUpdate = require('react-deep-force-update');
var g = global;
var proxies = (g._hmr_proxies_ = g._hmr_proxies_ || {});
var updateTimer = 0;
var updateCallback;
__exportStar(require("./lib/transformer"), exports);
/** Notification that some component was updated */
function listen(cb) {
if (updateTimer)
resetTimer();
updateCallback = cb;
}
exports.listen = listen;
/** Hot update helper */
function hot(module, accept) {
if (accept) {
accept(module, proxies);
}
else if (module && module.hot) {
module.hot.accept();
}
return function (element) {
listen(function (forceUpdate) {
forceUpdate(element);
});
return element;
};
}
exports.hot = hot;
/** Register types to be proxied - name must be unique for the fileName */
function register(type, name, fileName) {
if (typeof type !== 'function')
return;
// enable react components proxying
patchReact();
// ensure display name
if (!type.name && !type.displayName && name !== 'default') {
type.displayName = name;
}
// tag type
var key = name + '@' + fileName;
type._proxy_id_ = key;
// create/update proxy
var proxy = proxies[key];
if (proxy) {
proxy.update(type);
resetTimer();
}
}
exports.register = register;
function resetTimer() {
clearTimeout(updateTimer);
updateTimer = window.setTimeout(notify, 100);
}
function notify() {
updateTimer = 0;
updateCallback && updateCallback(getForceUpdate(require('react')));
}
function patchReact() {
var React = require('react');
if (!!React._hmr_createElement)
return;
React._hmr_createElement = React.createElement;
// override createElement to return the proxy
React.createElement = function () {
var type = arguments[0];
if (typeof type === 'function' && type._proxy_id_) {
var proxy = proxies[type._proxy_id_];
if (!proxy) {
proxy = proxies[type._proxy_id_] = createProxy(type);
}
var args = Array.prototype.slice.call(arguments, 1);
args.unshift(proxy.get());
return React._hmr_createElement.apply(React, args);
}
return React._hmr_createElement.apply(React, arguments);
};
}