JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://threejs.org/build/three.min.js"></script>
<script src="http://threejs.org/examples/js/controls/OrbitControls.js"></script>

CSS

body {
	background-color: #000;
	margin: 0px;
	overflow: hidden;
}

JavaScript

var mesh, renderer, scene, camera, controls;

init();
animate();

function init() {

    // renderer
    renderer = new THREE.WebGLRenderer();
    renderer.setSize( window.innerWidth, window.innerHeight );
    document.body.appendChild( renderer.domElement );

    // scene
    scene = new THREE.Scene();
    
    // camera
    camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 10000 );
    camera.position.set( 20, 20, 30 );
    scene.add( camera );

    // controls
    controls = new THREE.OrbitControls( camera, renderer.domElement );
		controls.minDistance = 10;
		controls.maxDistance = 50;
    controls.enableDamping = true;
    
    // ambient
    scene.add( new THREE.AmbientLight( 0x222222 ) );
    
    // light
    var light = new THREE.PointLight( 0xffffff, 1 );
    camera.add( light );

		// non-indexed buffer geometry
		var geometry = new THREE.BufferGeometry();

		// number of triangles
		var NUM_TRIANGLES = 10;

		// attributes
		var positions = new Float32Array( NUM_TRIANGLES * 3 * 3 );
		var normals   = new Float32Array( NUM_TRIANGLES * 3 * 3 );
		var colors    = new Float32Array( NUM_TRIANGLES * 3 * 3 );
		var uvs       = new Float32Array( NUM_TRIANGLES * 3 * 2 );

		var color = new THREE.Color();
		var scale = 30;
		var size = 10;
		var x, y, z;

		for ( var i = 0, l = NUM_TRIANGLES * 3; i < l; i ++ ) {

			if ( i % 3 === 0 ) {

				x = ( Math.random() - 0.5 ) * scale;
				y = ( Math.random() - 0.5 ) * scale;
				z = ( Math.random() - 0.5 ) * scale;

			} else {

				x = x + size * ( Math.random() - 0.5 );
				y = y + size * ( Math.random() - 0.5 );
				z = z + size * ( Math.random() - 0.5 );

			}

			var index = 3 * i;

			// positions
			positions[ index     ] = x;
			positions[ index + 1 ] = y;
			positions[ index + 2 ] = z;

			//normals -- we will set normals later

			// colors
			color.setHSL( i / l, 1.0, 0.5 );
			colors[ index     ] = color.r;
			colors[ index + 1 ] = color.g;
			colors[ index + 2 ] =...