JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/98/three.min.js"></script>
        <script src="js/libs/three.js/orbitcontrols.js"></script>
        <script src="//rawgit.com/mrdoob/three.js/2b6505090d40d000606b29ba126d87397414633e/examples/js/controls/OrbitControls.js"></script>

CSS

body {
    width: 100%;
    height: 100%;
    padding: 0;
    margin: 0;
    overflow: hidden;
}

JavaScript

/*global THREE*/

var scene , camera , renderer , controls;
var mesh;

function init ( ) {
    "use strict";

    var SCREEN_WIDTH = window.innerWidth;
    var SCREEN_HEIGHT = window.innerHeight;
    var VIEW_ANGLE = 45;
    var ASPECT = SCREEN_WIDTH / SCREEN_HEIGHT;
    var NEAR = 0.1;
    var FAR = 1000;

    scene = new THREE.Scene ( );
    camera = new THREE.PerspectiveCamera ( VIEW_ANGLE , ASPECT , NEAR , FAR );
    camera.position.set ( 5 , 5 , 5 );
    camera.lookAt ( scene.position );
    renderer = new THREE.WebGLRenderer ( {
        antialias: true
    } );
    renderer.setPixelRatio ( window.devicePixelRatio );
    renderer.setSize ( SCREEN_WIDTH , SCREEN_HEIGHT );
    document.body.appendChild ( renderer.domElement );
    controls = new THREE.OrbitControls ( camera , renderer.domElement );

    var mergedGeometry = new THREE.Geometry ( );
    var geometry = new THREE.BoxGeometry ( 1 , 1 , 1 );
    var i;
    var k;
    var x;
    var y;
    var z;

    for ( i = 0; i < 2; i += 1 ) {

        for ( k = 0; k < 2; k += 1 ) {

            x = i;
            y = 0;
            z = k;
            geometry.translate ( x , y , z );
            mergedGeometry.merge ( geometry );
            geometry.translate ( -x , -y , -z );
        }
    }

    function removeDuplicateFaces ( geometry ) {
        var m;
        var n;
        var face;
        var face2;
        for ( m = 0; m < geometry.faces.length; m += 1 ) {
            face = geometry.faces[m];
            face.centroid = new THREE.Vector3 ( 0 , 0 , 0 );
            face.centroid.add ( geometry.vertices[ face.a ] );
            face.centroid.add ( geometry.vertices[ face.b ] );
            face.centroid.add ( geometry.vertices[ face.c ] );
            face.centroid.divideScalar ( 3 );
            console.log ( "[face] " + m + ", [vertices] " + face.a + ", " + face.b + ", " + face.c );
            for ( n = 0; n < m; n += 1 ) {
                face2 = geometry.faces[n];
                if ( face2 !==...