react-refresh-runtime.development.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. /**
  2. * @license React
  3. * react-refresh-runtime.development.js
  4. *
  5. * Copyright (c) Meta Platforms, Inc. and affiliates.
  6. *
  7. * This source code is licensed under the MIT license found in the
  8. * LICENSE file in the root directory of this source tree.
  9. */
  10. "use strict";
  11. "production" !== process.env.NODE_ENV &&
  12. (function () {
  13. function computeFullKey(signature) {
  14. if (null !== signature.fullKey) return signature.fullKey;
  15. var fullKey = signature.ownKey;
  16. try {
  17. var hooks = signature.getCustomHooks();
  18. } catch (err) {
  19. return (signature.forceReset = !0), (signature.fullKey = fullKey);
  20. }
  21. for (var i = 0; i < hooks.length; i++) {
  22. var hook = hooks[i];
  23. if ("function" !== typeof hook)
  24. return (signature.forceReset = !0), (signature.fullKey = fullKey);
  25. hook = allSignaturesByType.get(hook);
  26. if (void 0 !== hook) {
  27. var nestedHookKey = computeFullKey(hook);
  28. hook.forceReset && (signature.forceReset = !0);
  29. fullKey += "\n---\n" + nestedHookKey;
  30. }
  31. }
  32. return (signature.fullKey = fullKey);
  33. }
  34. function resolveFamily(type) {
  35. return updatedFamiliesByType.get(type);
  36. }
  37. function cloneMap(map) {
  38. var clone = new Map();
  39. map.forEach(function (value, key) {
  40. clone.set(key, value);
  41. });
  42. return clone;
  43. }
  44. function cloneSet(set) {
  45. var clone = new Set();
  46. set.forEach(function (value) {
  47. clone.add(value);
  48. });
  49. return clone;
  50. }
  51. function getProperty(object, property) {
  52. try {
  53. return object[property];
  54. } catch (err) {}
  55. }
  56. function register(type, id) {
  57. if (
  58. !(
  59. null === type ||
  60. ("function" !== typeof type && "object" !== typeof type) ||
  61. allFamiliesByType.has(type)
  62. )
  63. ) {
  64. var family = allFamiliesByID.get(id);
  65. void 0 === family
  66. ? ((family = { current: type }), allFamiliesByID.set(id, family))
  67. : pendingUpdates.push([family, type]);
  68. allFamiliesByType.set(type, family);
  69. if ("object" === typeof type && null !== type)
  70. switch (getProperty(type, "$$typeof")) {
  71. case REACT_FORWARD_REF_TYPE:
  72. register(type.render, id + "$render");
  73. break;
  74. case REACT_MEMO_TYPE:
  75. register(type.type, id + "$type");
  76. }
  77. }
  78. }
  79. function setSignature(type, key) {
  80. var forceReset =
  81. 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : !1,
  82. getCustomHooks = 3 < arguments.length ? arguments[3] : void 0;
  83. allSignaturesByType.has(type) ||
  84. allSignaturesByType.set(type, {
  85. forceReset: forceReset,
  86. ownKey: key,
  87. fullKey: null,
  88. getCustomHooks:
  89. getCustomHooks ||
  90. function () {
  91. return [];
  92. }
  93. });
  94. if ("object" === typeof type && null !== type)
  95. switch (getProperty(type, "$$typeof")) {
  96. case REACT_FORWARD_REF_TYPE:
  97. setSignature(type.render, key, forceReset, getCustomHooks);
  98. break;
  99. case REACT_MEMO_TYPE:
  100. setSignature(type.type, key, forceReset, getCustomHooks);
  101. }
  102. }
  103. function collectCustomHooksForSignature(type) {
  104. type = allSignaturesByType.get(type);
  105. void 0 !== type && computeFullKey(type);
  106. }
  107. var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"),
  108. REACT_MEMO_TYPE = Symbol.for("react.memo"),
  109. PossiblyWeakMap = "function" === typeof WeakMap ? WeakMap : Map,
  110. allFamiliesByID = new Map(),
  111. allFamiliesByType = new PossiblyWeakMap(),
  112. allSignaturesByType = new PossiblyWeakMap(),
  113. updatedFamiliesByType = new PossiblyWeakMap(),
  114. pendingUpdates = [],
  115. helpersByRendererID = new Map(),
  116. helpersByRoot = new Map(),
  117. mountedRoots = new Set(),
  118. failedRoots = new Set(),
  119. rootElements = "function" === typeof WeakMap ? new WeakMap() : null,
  120. isPerformingRefresh = !1;
  121. exports._getMountedRootCount = function () {
  122. return mountedRoots.size;
  123. };
  124. exports.collectCustomHooksForSignature = collectCustomHooksForSignature;
  125. exports.createSignatureFunctionForTransform = function () {
  126. var savedType,
  127. hasCustomHooks,
  128. didCollectHooks = !1;
  129. return function (type, key, forceReset, getCustomHooks) {
  130. if ("string" === typeof key)
  131. return (
  132. savedType ||
  133. ((savedType = type),
  134. (hasCustomHooks = "function" === typeof getCustomHooks)),
  135. null == type ||
  136. ("function" !== typeof type && "object" !== typeof type) ||
  137. setSignature(type, key, forceReset, getCustomHooks),
  138. type
  139. );
  140. !didCollectHooks &&
  141. hasCustomHooks &&
  142. ((didCollectHooks = !0), collectCustomHooksForSignature(savedType));
  143. };
  144. };
  145. exports.getFamilyByID = function (id) {
  146. return allFamiliesByID.get(id);
  147. };
  148. exports.getFamilyByType = function (type) {
  149. return allFamiliesByType.get(type);
  150. };
  151. exports.hasUnrecoverableErrors = function () {
  152. return !1;
  153. };
  154. exports.injectIntoGlobalHook = function (globalObject) {
  155. var hook = globalObject.__REACT_DEVTOOLS_GLOBAL_HOOK__;
  156. if (void 0 === hook) {
  157. var nextID = 0;
  158. globalObject.__REACT_DEVTOOLS_GLOBAL_HOOK__ = hook = {
  159. renderers: new Map(),
  160. supportsFiber: !0,
  161. inject: function () {
  162. return nextID++;
  163. },
  164. onScheduleFiberRoot: function () {},
  165. onCommitFiberRoot: function () {},
  166. onCommitFiberUnmount: function () {}
  167. };
  168. }
  169. if (hook.isDisabled)
  170. console.warn(
  171. "Something has shimmed the React DevTools global hook (__REACT_DEVTOOLS_GLOBAL_HOOK__). Fast Refresh is not compatible with this shim and will be disabled."
  172. );
  173. else {
  174. var oldInject = hook.inject;
  175. hook.inject = function (injected) {
  176. var id = oldInject.apply(this, arguments);
  177. "function" === typeof injected.scheduleRefresh &&
  178. "function" === typeof injected.setRefreshHandler &&
  179. helpersByRendererID.set(id, injected);
  180. return id;
  181. };
  182. hook.renderers.forEach(function (injected, id) {
  183. "function" === typeof injected.scheduleRefresh &&
  184. "function" === typeof injected.setRefreshHandler &&
  185. helpersByRendererID.set(id, injected);
  186. });
  187. var oldOnCommitFiberRoot = hook.onCommitFiberRoot,
  188. oldOnScheduleFiberRoot = hook.onScheduleFiberRoot || function () {};
  189. hook.onScheduleFiberRoot = function (id, root, children) {
  190. isPerformingRefresh ||
  191. (failedRoots.delete(root),
  192. null !== rootElements && rootElements.set(root, children));
  193. return oldOnScheduleFiberRoot.apply(this, arguments);
  194. };
  195. hook.onCommitFiberRoot = function (
  196. id,
  197. root,
  198. maybePriorityLevel,
  199. didError
  200. ) {
  201. var helpers = helpersByRendererID.get(id);
  202. if (void 0 !== helpers) {
  203. helpersByRoot.set(root, helpers);
  204. helpers = root.current;
  205. var alternate = helpers.alternate;
  206. null !== alternate
  207. ? ((alternate =
  208. null != alternate.memoizedState &&
  209. null != alternate.memoizedState.element &&
  210. mountedRoots.has(root)),
  211. (helpers =
  212. null != helpers.memoizedState &&
  213. null != helpers.memoizedState.element),
  214. !alternate && helpers
  215. ? (mountedRoots.add(root), failedRoots.delete(root))
  216. : (alternate && helpers) ||
  217. (alternate && !helpers
  218. ? (mountedRoots.delete(root),
  219. didError
  220. ? failedRoots.add(root)
  221. : helpersByRoot.delete(root))
  222. : alternate ||
  223. helpers ||
  224. (didError && failedRoots.add(root))))
  225. : mountedRoots.add(root);
  226. }
  227. return oldOnCommitFiberRoot.apply(this, arguments);
  228. };
  229. }
  230. };
  231. exports.isLikelyComponentType = function (type) {
  232. switch (typeof type) {
  233. case "function":
  234. if (null != type.prototype) {
  235. if (type.prototype.isReactComponent) return !0;
  236. var ownNames = Object.getOwnPropertyNames(type.prototype);
  237. if (
  238. 1 < ownNames.length ||
  239. "constructor" !== ownNames[0] ||
  240. type.prototype.__proto__ !== Object.prototype
  241. )
  242. return !1;
  243. }
  244. type = type.name || type.displayName;
  245. return "string" === typeof type && /^[A-Z]/.test(type);
  246. case "object":
  247. if (null != type)
  248. switch (getProperty(type, "$$typeof")) {
  249. case REACT_FORWARD_REF_TYPE:
  250. case REACT_MEMO_TYPE:
  251. return !0;
  252. }
  253. return !1;
  254. default:
  255. return !1;
  256. }
  257. };
  258. exports.performReactRefresh = function () {
  259. if (0 === pendingUpdates.length || isPerformingRefresh) return null;
  260. isPerformingRefresh = !0;
  261. try {
  262. var staleFamilies = new Set(),
  263. updatedFamilies = new Set(),
  264. updates = pendingUpdates;
  265. pendingUpdates = [];
  266. updates.forEach(function (_ref) {
  267. var family = _ref[0];
  268. _ref = _ref[1];
  269. var prevType = family.current;
  270. updatedFamiliesByType.set(prevType, family);
  271. updatedFamiliesByType.set(_ref, family);
  272. family.current = _ref;
  273. (prevType.prototype && prevType.prototype.isReactComponent) ||
  274. (_ref.prototype && _ref.prototype.isReactComponent)
  275. ? (_ref = !1)
  276. : ((prevType = allSignaturesByType.get(prevType)),
  277. (_ref = allSignaturesByType.get(_ref)),
  278. (_ref =
  279. (void 0 === prevType && void 0 === _ref) ||
  280. (void 0 !== prevType &&
  281. void 0 !== _ref &&
  282. computeFullKey(prevType) === computeFullKey(_ref) &&
  283. !_ref.forceReset)
  284. ? !0
  285. : !1));
  286. _ref ? updatedFamilies.add(family) : staleFamilies.add(family);
  287. });
  288. var update = {
  289. updatedFamilies: updatedFamilies,
  290. staleFamilies: staleFamilies
  291. };
  292. helpersByRendererID.forEach(function (helpers) {
  293. helpers.setRefreshHandler(resolveFamily);
  294. });
  295. var didError = !1,
  296. firstError = null,
  297. failedRootsSnapshot = cloneSet(failedRoots),
  298. mountedRootsSnapshot = cloneSet(mountedRoots),
  299. helpersByRootSnapshot = cloneMap(helpersByRoot);
  300. failedRootsSnapshot.forEach(function (root) {
  301. var helpers = helpersByRootSnapshot.get(root);
  302. if (void 0 === helpers)
  303. throw Error(
  304. "Could not find helpers for a root. This is a bug in React Refresh."
  305. );
  306. failedRoots.has(root);
  307. if (null !== rootElements && rootElements.has(root)) {
  308. var element = rootElements.get(root);
  309. try {
  310. helpers.scheduleRoot(root, element);
  311. } catch (err) {
  312. didError || ((didError = !0), (firstError = err));
  313. }
  314. }
  315. });
  316. mountedRootsSnapshot.forEach(function (root) {
  317. var helpers = helpersByRootSnapshot.get(root);
  318. if (void 0 === helpers)
  319. throw Error(
  320. "Could not find helpers for a root. This is a bug in React Refresh."
  321. );
  322. mountedRoots.has(root);
  323. try {
  324. helpers.scheduleRefresh(root, update);
  325. } catch (err) {
  326. didError || ((didError = !0), (firstError = err));
  327. }
  328. });
  329. if (didError) throw firstError;
  330. return update;
  331. } finally {
  332. isPerformingRefresh = !1;
  333. }
  334. };
  335. exports.register = register;
  336. exports.setSignature = setSignature;
  337. })();