JSFiddle - React, Tailwind, and code Playground

HTML

<script src="//cdn.rawgit.com/mrdoob/three.js/master/build/three.min.js"></script>

CSS

body {
	  margin: 0;
}

JavaScript

var container;

var camera, scene, renderer;

var cube, info;

var arrowUp = false;
var arrowDown = false;
var arrowLeft = false;
var arrowRight = false;

var speed = 4;

var targetRotation = 0;
var targetRotationOnMouseDown = 0;

var mouseX = 0;
var mouseXOnMouseDown = 0;

var windowHalfX = window.innerWidth / 2;
var windowHalfY = window.innerHeight / 2;

init();
animate();

function init() {
	// Initialisation.
	container = document.createElement('div');
	document.body.appendChild(container);

	// Définition de la caméra.
	camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000);
	camera.position.set( 0, 20, 30 );

	// Définition de la scène.
	scene = new THREE.Scene();
	scene.background = new THREE.Color(0x514d41);

	// plane
	var geometry = new THREE.PlaneBufferGeometry(40, 40);

	// Adding Cube to Scene
	var material = new THREE.MeshBasicMaterial( { color: 0xc0b99c } );

	cube = new THREE.Mesh(geometry, material);
	cube.position.set( 0, 10, 0 );
	cube.rotation.x = Math.PI * - 0.5;
	scene.add(cube);
	camera.lookAt( cube.position );

	renderer = new THREE.WebGLRenderer();
	renderer.setPixelRatio(window.devicePixelRatio);
	renderer.setSize(window.innerWidth, window.innerHeight);
	container.appendChild(renderer.domElement);

	window.addEventListener( 'resize', onWindowResize, false );

}

function onWindowResize() {
	windowHalfX = window.innerWidth / 2;
	windowHalfY = window.innerHeight / 2;

	camera.aspect = window.innerWidth / window.innerHeight;
	camera.updateProjectionMatrix();

	renderer.setSize( window.innerWidth, window.innerHeight );
}

function animate() {
	requestAnimationFrame(animate);

	render();
}

function render() {
	renderer.render(scene, camera);

	window.onkeydown = function(e) { 
		if(e.key == "ArrowUp") {
			arrowUp = true;
			arrowDown = false;
		} else if(e.key == "ArrowDown") {
			arrowUp = false;
			arrowDown = true;
		} else if(e.key == "ArrowLeft") {
			arrowLeft = true;
			arrowright = false;
		} else...