JSFiddle - React, Tailwind, and code Playground

HTML

<script src="//cdn.rawgit.com/mrdoob/three.js/master/build/three.min.js"></script>
<input type="range" min="1" max="200" value="50" id="slider">

CSS

body {
	  margin: 0;
}

JavaScript

var camera, scene, renderer, startTime, object;

init();
animate();

function init() {

	camera = new THREE.PerspectiveCamera( 36, window.innerWidth / window.innerHeight, 0.25, 16 );
	camera.position.set( 0, 0.8, 3 );
	scene = new THREE.Scene();
	
	// Lights
	
	scene.add( new THREE.AmbientLight( 0x505050 ) );
	var spotLight = new THREE.SpotLight( 0xffffff );
	spotLight.angle = Math.PI / 5;
	spotLight.penumbra = 0.2;
	spotLight.position.set( 2, 3, 3 );
	spotLight.castShadow = true;
	spotLight.shadow.camera.near = 3;
	spotLight.shadow.camera.far = 10;
	spotLight.shadow.mapSize.width = 1024;
	spotLight.shadow.mapSize.height = 1024;
	scene.add( spotLight );
	
	var dirLight = new THREE.DirectionalLight( 0x55505a, 1 );
	dirLight.position.set( 0, 3, 0 );
	dirLight.castShadow = true;
	dirLight.shadow.camera.near = 1;
	dirLight.shadow.camera.far = 10;
	dirLight.shadow.camera.right = 1;
	dirLight.shadow.camera.left = - 1;
	dirLight.shadow.camera.top	= 1;
	dirLight.shadow.camera.bottom = - 1;
	dirLight.shadow.mapSize.width = 1024;
	dirLight.shadow.mapSize.height = 1024;
	scene.add( dirLight );
	
	// ***** Clipping planes: *****
	
	var localPlane = new THREE.Plane( new THREE.Vector3( 0, - 1, 0 ), 0.8 );

	// Geometry
	
	var material = new THREE.MeshPhongMaterial( {
		color: 0x80ee10,
		shininess: 100,
		side: THREE.DoubleSide,
		clippingPlanes: [ localPlane ],
		clipShadows: true
	} );
	
	var geometry = new THREE.TorusKnotBufferGeometry( 0.4, 0.08, 95, 20 );
	object = new THREE.Mesh( geometry, material );
	object.castShadow = true;
	scene.add( object );
	
	var ground = new THREE.Mesh(
		new THREE.PlaneBufferGeometry( 9, 9, 1, 1 ),
		new THREE.MeshPhongMaterial( { color: 0xa0adaf, shininess: 150 } )
	);
	ground.rotation.x = - Math.PI / 2; // rotates X/Y to X/Z
	ground.receiveShadow = true;
	scene.add( ground );
	

	// Renderer
	renderer = new THREE.WebGLRenderer();
	renderer.shadowMap.enabled = true;
	renderer.setPixelRatio( window.devicePixelRatio );
	renderer.setSize(...