81 lines
4.2 KiB
JavaScript
81 lines
4.2 KiB
JavaScript
"use strict";
|
|
/**
|
|
* ⚠️ Be careful when refactoring this file!
|
|
* This gets injected into every file of the browser.
|
|
* You cannot have returns, optional chains, inverse the if statement etc.
|
|
* Check the Typescript output in dist/ to see that no extra `var` statements were produced
|
|
*/
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
// This file is copied from the @vercel/next.js, with removed TS annotations
|
|
//
|
|
// https://github.com/vercel/next.js/blob/canary/packages/react-refresh-utils/loader.ts
|
|
// This function gets unwrapped into global scope, which is why we don't invert
|
|
// if-blocks. Also, you cannot use `return`.
|
|
function RefreshModuleRuntime() {
|
|
var _a, _b;
|
|
// Legacy CSS implementations will `eval` browser code in a Node.js context
|
|
// to extract CSS. For backwards compatibility, we need to check we're in a
|
|
// browser context before continuing.
|
|
if (typeof self !== 'undefined' &&
|
|
// AMP / No-JS mode does not inject these helpers:
|
|
'$RefreshHelpers$' in self) {
|
|
const currentExports = __webpack_module__.exports;
|
|
const prevExports = (_b = (_a = __webpack_module__.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;
|
|
// This cannot happen in MainTemplate because the exports mismatch between
|
|
// templating and execution.
|
|
self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, __webpack_module__.id);
|
|
// A module can be accepted automatically based on its exports, e.g. when
|
|
// it is a Refresh Boundary.
|
|
if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {
|
|
// Save the previous exports on update so we can compare the boundary
|
|
// signatures.
|
|
__webpack_module__.hot.dispose((data) => {
|
|
data.prevExports = currentExports;
|
|
});
|
|
// Unconditionally accept an update to this module, we'll check if it's
|
|
// still a Refresh Boundary later.
|
|
__webpack_module__.hot.accept();
|
|
// This field is set when the previous version of this module was a
|
|
// Refresh Boundary, letting us know we need to check for invalidation or
|
|
// enqueue an update.
|
|
if (prevExports !== null) {
|
|
// A boundary can become ineligible if its exports are incompatible
|
|
// with the previous exports.
|
|
//
|
|
// For example, if you add/remove/change exports, we'll want to
|
|
// re-execute the importing modules, and force those components to
|
|
// re-render. Similarly, if you convert a class component to a
|
|
// function, we want to invalidate the boundary.
|
|
if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {
|
|
__webpack_module__.hot.invalidate();
|
|
}
|
|
else {
|
|
self.$RefreshHelpers$.scheduleUpdate();
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
// Since we just executed the code for the module, it's possible that the
|
|
// new exports made it ineligible for being a boundary.
|
|
// We only care about the case when we were _previously_ a boundary,
|
|
// because we already accepted this update (accidental side effect).
|
|
const isNoLongerABoundary = prevExports !== null;
|
|
if (isNoLongerABoundary) {
|
|
__webpack_module__.hot.invalidate();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
let refreshModuleRuntime = RefreshModuleRuntime.toString();
|
|
refreshModuleRuntime = refreshModuleRuntime.slice(refreshModuleRuntime.indexOf('{') + 1, refreshModuleRuntime.lastIndexOf('}'));
|
|
const ReactRefreshLoader = function (source, inputSourceMap) {
|
|
// Importing a module that declares the global variables _a and _b
|
|
// will conflict with the global variables that React Fast Refresh uses.
|
|
// https://github.com/remotion-dev/remotion/issues/3699
|
|
const renamedSymbols = refreshModuleRuntime
|
|
.replace(/_a/g, '_remotion_globalVariableA')
|
|
.replace(/_b/g, '_remotion_globalVariableB');
|
|
this.callback(null, `${source}\n;${renamedSymbols}`, inputSourceMap);
|
|
};
|
|
exports.default = ReactRefreshLoader;
|