UNPKG

4.17 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports._r = _r;
9exports._u = _u;
10exports.render = render;
11exports.unmount = unmount;
12var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
13var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
16var ReactDOM = _interopRequireWildcard(require("react-dom"));
17// Let compiler not to search module usage
18var fullClone = (0, _objectSpread2.default)({}, ReactDOM);
19var version = fullClone.version,
20 reactRender = fullClone.render,
21 unmountComponentAtNode = fullClone.unmountComponentAtNode;
22var createRoot;
23try {
24 var mainVersion = Number((version || '').split('.')[0]);
25 if (mainVersion >= 18) {
26 createRoot = fullClone.createRoot;
27 }
28} catch (e) {
29 // Do nothing;
30}
31function toggleWarning(skip) {
32 var __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = fullClone.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
33 if (__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && (0, _typeof2.default)(__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === 'object') {
34 __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = skip;
35 }
36}
37var MARK = '__rc_react_root__';
38
39// ========================== Render ==========================
40
41function modernRender(node, container) {
42 toggleWarning(true);
43 var root = container[MARK] || createRoot(container);
44 toggleWarning(false);
45 root.render(node);
46 container[MARK] = root;
47}
48function legacyRender(node, container) {
49 reactRender(node, container);
50}
51
52/** @private Test usage. Not work in prod */
53function _r(node, container) {
54 if (process.env.NODE_ENV !== 'production') {
55 return legacyRender(node, container);
56 }
57}
58function render(node, container) {
59 if (createRoot) {
60 modernRender(node, container);
61 return;
62 }
63 legacyRender(node, container);
64}
65
66// ========================= Unmount ==========================
67function modernUnmount(_x) {
68 return _modernUnmount.apply(this, arguments);
69}
70function _modernUnmount() {
71 _modernUnmount = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(container) {
72 return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
73 while (1) switch (_context.prev = _context.next) {
74 case 0:
75 return _context.abrupt("return", Promise.resolve().then(function () {
76 var _container$MARK;
77 (_container$MARK = container[MARK]) === null || _container$MARK === void 0 || _container$MARK.unmount();
78 delete container[MARK];
79 }));
80 case 1:
81 case "end":
82 return _context.stop();
83 }
84 }, _callee);
85 }));
86 return _modernUnmount.apply(this, arguments);
87}
88function legacyUnmount(container) {
89 unmountComponentAtNode(container);
90}
91
92/** @private Test usage. Not work in prod */
93function _u(container) {
94 if (process.env.NODE_ENV !== 'production') {
95 return legacyUnmount(container);
96 }
97}
98function unmount(_x2) {
99 return _unmount.apply(this, arguments);
100}
101function _unmount() {
102 _unmount = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2(container) {
103 return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
104 while (1) switch (_context2.prev = _context2.next) {
105 case 0:
106 if (!(createRoot !== undefined)) {
107 _context2.next = 2;
108 break;
109 }
110 return _context2.abrupt("return", modernUnmount(container));
111 case 2:
112 legacyUnmount(container);
113 case 3:
114 case "end":
115 return _context2.stop();
116 }
117 }, _callee2);
118 }));
119 return _unmount.apply(this, arguments);
120}
\No newline at end of file