JSFiddle - React, Tailwind, and code Playground

CSS

body{
  overflow: hidden;
  margin: 0;
}

JavaScript

import * as THREE from 'https://threejs.org/build/three.module.js';

import { GUI } from 'https://threejs.org/examples/jsm/libs/dat.gui.module.js';

import { OrbitControls } from 'https://threejs.org/examples/jsm/controls/OrbitControls.js';

let camera, scene, renderer, material, uniforms;
const params = {
	minAngle: - 90,
  maxAngle: 90,  
};

let clock = new THREE.Clock();
init();
renderer.setAnimationLoop(render);

function init() {

  renderer = new THREE.WebGLRenderer( { antialias: true } );
  renderer.setPixelRatio( window.devicePixelRatio );
  renderer.setSize( window.innerWidth, window.innerHeight );
  renderer.localClippingEnabled = true;
  document.body.appendChild( renderer.domElement );

  scene = new THREE.Scene();

  camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 200 );

  camera.position.set( - 3.0, 2.5, 3.0 ).multiplyScalar(10);

  const controls = new OrbitControls( camera, renderer.domElement );
  controls.enablePan = false;

  const light = new THREE.DirectionalLight( 0xffffff, 1.5 );
  light.position.set( - 1.25, 1, 1.25 );
  scene.add( light );
  
  const amb = new THREE.AmbientLight( 0xffffff, 0.25 );
  scene.add( amb );

  const geometry = new THREE.TorusGeometry( 10, 3, 16, 100 );
  geometry.rotateX(Math.PI * -0.5);
  geometry.rotateY(Math.PI * -0.5);
    
  uniforms = {
    minAngle: {value: 0.0},
    maxAngle: {value: 0.0}
  };

  material = new THREE.MeshLambertMaterial( {

    side: THREE.DoubleSide,
    color: 'red',
    onBeforeCompile: shader => {
      Object.assign(shader.uniforms, uniforms);

      shader.vertexShader = `
          varying vec4 _worldPos;
          ${shader.vertexShader}
        `.replace(
          `#include <worldpos_vertex>`,
          `
            #include <worldpos_vertex>
            _worldPos = modelMatrix * vec4( transformed, 1.0 );
          `
        );
        shader.fragmentShader = `
        	varying vec4 _worldPos;
          uniform float minAngle;
         ...