Spaces:
Running
Running
File size: 1,649 Bytes
6bcb42f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
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(<WrappedGUI
isEmbedded
projectId={projectId}
onVmInit={onVmInit}
onProjectLoaded={onProjectLoaded}
routingStyle="none"
/>, appTarget);
if (urlParams.has('addons')) {
runAddons();
}
|