diff --git a/ghost/admin/app/modifiers/react-render.js b/ghost/admin/app/modifiers/react-render.js index 46942a442e..e13809f8c1 100644 --- a/ghost/admin/app/modifiers/react-render.js +++ b/ghost/admin/app/modifiers/react-render.js @@ -1,6 +1,12 @@ -/* global ReactDOM */ import Modifier from 'ember-modifier'; -import {createElement} from 'react'; +import React from 'react'; +import ReactDOM from 'react-dom'; +import {createRoot} from 'react-dom/client'; + +// make globals available for any pulled in UMD components +// - avoids external components needing to bundle React and running into multiple version errors +window.React = React; +window.ReactDOM = ReactDOM; export default class ReactRenderModifier extends Modifier { didInstall() { @@ -8,9 +14,9 @@ export default class ReactRenderModifier extends Modifier { const props = this.args.named; if (!this.root) { - this.root = ReactDOM.createRoot(this.element); + this.root = createRoot(this.element); } - this.root.render(createElement(reactComponent, {...props})); + this.root.render(React.createElement(reactComponent, {...props})); } willDestroy() { diff --git a/ghost/admin/ember-cli-build.js b/ghost/admin/ember-cli-build.js index e1dc594a45..4c44b0f82a 100644 --- a/ghost/admin/ember-cli-build.js +++ b/ghost/admin/ember-cli-build.js @@ -265,16 +265,5 @@ module.exports = function (defaults) { app.import('vendor/simplemde/debug/simplemde.js', {type: 'test'}); } - // Support react components - // adds React and ReactDOM to window. - app.import({ - development: 'node_modules/react/umd/react.development.js', - production: 'node_modules/react/umd/react.production.min.js' - }); - app.import({ - development: 'node_modules/react-dom/umd/react-dom.development.js', - production: 'node_modules/react-dom/umd/react-dom.production.min.js' - }); - return app.toTree(); };