UNPKG

@remotion/bundler

Version:

Bundle Remotion compositions using Webpack

81 lines (80 loc) 4.33 kB
"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;