MCPcopy Create free account
hub / github.com/gaearon/react-hot-loader / patch

Function patch

src/reactHotLoader.js:134–228  ·  view source on GitHub ↗
(React, ReactDOM)

Source from the content-addressed store, hash-verified

132 },
133
134 patch(React, ReactDOM) {
135 let typeResolver = resolveType;
136 /* eslint-disable no-console */
137 if (ReactDOM && !ReactDOM.render) {
138 logger.error(
139 'React-Hot-Loader: broken state detected, please import React-Hot-Loader before react-dom, see https://github.com/gaearon/react-hot-loader/issues/1315',
140 );
141 }
142 if (ReactDOM && ReactDOM.setHotElementComparator) {
143 ReactDOM.setHotElementComparator(hotComponentCompare);
144 configuration.disableHotRenderer = configuration.disableHotRendererWhenInjected;
145
146 configuration.ignoreSFC = configuration.ignoreSFCWhenInjected;
147
148 configuration.IS_REACT_MERGE_ENABLED = true;
149 configuration.showReactDomPatchNotification = false;
150 configuration.integratedComparator = true;
151
152 if (ReactDOM.setHotTypeResolver) {
153 configuration.integratedResolver = true;
154 typeResolver = resolveSimpleType;
155 ReactDOM.setHotTypeResolver(resolveType);
156 }
157 }
158
159 // PATCH REACT METHODS
160
161 /* eslint-enable */
162 if (!React.createElement.isPatchedByReactHotLoader) {
163 const originalCreateElement = React.createElement;
164 // Trick React into rendering a proxy so that
165 // its state is preserved when the class changes.
166 // This will update the proxy if it's for a known type.
167 React.createElement = (type, ...args) => originalCreateElement(typeResolver(type), ...args);
168 React.createElement.isPatchedByReactHotLoader = true;
169 }
170
171 if (!React.cloneElement.isPatchedByReactHotLoader) {
172 const originalCloneElement = React.cloneElement;
173
174 React.cloneElement = (element, ...args) => {
175 const newType = element.type && typeResolver(element.type);
176 if (newType && newType !== element.type) {
177 return originalCloneElement(
178 {
179 ...element,
180 type: newType,
181 },
182 ...args,
183 );
184 }
185 return originalCloneElement(element, ...args);
186 };
187
188 React.cloneElement.isPatchedByReactHotLoader = true;
189 }
190
191 if (!React.createFactory.isPatchedByReactHotLoader) {

Callers 2

copyFileFunction · 0.85
transformFunction · 0.85

Calls 1

hookWrapperFunction · 0.85

Tested by

no test coverage detected