import './import-first'; import ReactDOM from 'react-dom'; import React from 'react'; import {compose} from 'redux'; import {setAppElement} from 'react-modal'; import AppStateHOC from '../lib/app-state-hoc.jsx'; import TWEmbedFullScreenHOC from '../lib/tw-embed-fullscreen-hoc.jsx'; import TWStateManagerHOC from '../lib/tw-state-manager-hoc.jsx'; import runAddons from '../addons/entry'; import GUI from './render-gui.jsx'; import appTarget from './app-target'; const getProjectId = () => { // For compatibility reasons, we first look at the hash. // eg. https://turbowarp.org/embed.html#1 const hashMatch = location.hash.slice(1); if (hashMatch !== '') { return hashMatch; } // Otherwise, we'll recreate what "wildcard" routing does. // eg. https://turbowarp.org/1/embed const pathMatch = location.pathname.match(/(\d+)\/embed/); if (pathMatch !== null) { return pathMatch[pathMatch.length - 1]; } return '0'; }; const projectId = getProjectId(); const urlParams = new URLSearchParams(location.search); let vm; const onVmInit = _vm => { vm = _vm; vm.runtime.renderer.setPrivateSkinAccess(false); }; const onProjectLoaded = () => { if (urlParams.has('autoplay')) { vm.start(); vm.greenFlag(); } }; const WrappedGUI = compose( AppStateHOC, TWStateManagerHOC, TWEmbedFullScreenHOC )(GUI); setAppElement(appTarget); ReactDOM.render(, appTarget); if (urlParams.has('addons')) { runAddons(); }