Source code

Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
// Vendor bundle that exposes React 19 and related libraries as globals
// This is used by both the main page and the cache.worker.js for SSR
import React from "react";
import * as ReactDOMNamespace from "react-dom";
import { createRoot, hydrateRoot } from "react-dom/client";
import { renderToString, renderToStaticMarkup } from "react-dom/server.browser";
import PropTypes from "prop-types";
import * as ReactTransitionGroup from "react-transition-group";
import * as ReactRedux from "react-redux";
import * as Redux from "redux";
// Detect if we're in a worker or window context
const globalScope = typeof window !== "undefined" ? window : self;
// Export as globals
// React 19 splits functionality across react-dom, react-dom/client, and react-dom/server
// We need to export them separately and as a merged ReactDOM for compatibility
globalScope.React = React;
// Export the merged ReactDOM (includes both react-dom and react-dom/client functions)
const mergedReactDOM = Object.assign({}, ReactDOMNamespace, {
createRoot,
hydrateRoot,
});
globalScope.ReactDOM = mergedReactDOM;
globalScope.ReactDOMServer = {
renderToString,
renderToStaticMarkup,
};
globalScope.PropTypes = PropTypes;
// Export react-transition-group compatible with React 19
globalScope.ReactTransitionGroup = ReactTransitionGroup;
// Export react-redux compatible with React 19
globalScope.ReactRedux = ReactRedux;
// Export redux
globalScope.Redux = Redux;