JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/96/three.js"></script>
<div id="divThreeSixtyView">
    <div class="col-md-6" id="flybyMain">
    </div>
</div>

JavaScript

var camera, scene, renderer;
    var isUserInteracting = false,

    onMouseDownMouseX = 0, onMouseDownMouseY = 0,
    lon = 0, onMouseDownLon = 0,
    lat = 0, onMouseDownLat = 0,
    phi = 0, theta = 0, totalAngle = 0, currentImg = 0, 
    angleDiff = 0;

    isImageLoaded = false;

    axis = new THREE.Vector3(0, 1, 0);

    startVector = new THREE.Vector3(0, 0, 0);
    endVector = new THREE.Vector3(0, 0, 0);
    lookVector = new THREE.Vector3();
    init();

    function init() {

        var container;

        container = document.getElementById( 'flybyMain' );

        camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 1100 );
        camera.target = new THREE.Vector3( 0, 0, 0 );

        scene = new THREE.Scene();

        var geometry = new THREE.SphereBufferGeometry( 500, 60, 40 );
        // invert the geometry on the x-axis so that all of the faces point inward
        geometry.scale( - 1, 1, 1 );

        loader = new THREE.TextureLoader();
        material = new THREE.MeshBasicMaterial();

        mesh = new THREE.Mesh( geometry, material );

        loader.load('http://www.hdrone.com/wp-content/uploads/2012/11/001-final-image.jpg', function (texture) {
            material.map = texture;
            scene.add( mesh );
        });

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

        document.addEventListener( 'mousedown', onPointerStart, false );
        document.addEventListener( 'mousemove', onPointerMove, false );
        document.addEventListener( 'mouseup', onPointerUp, false );

        document.addEventListener( 'wheel', onDocumentMouseWheel, false );

        document.addEventListener( 'touchstart', onPointerStart, false );
        document.addEventListener( 'touchmove', onPointerMove, false );
        document.addEventListener(...