three.js dev template - module

HTML

<script type="importmap">
	{
		"imports": {
			"three": "https://unpkg.com/three/build/three.module.js",
      "three/addons/": "https://unpkg.com/three/examples/jsm/"
		}
	}
</script>

CSS

body {
	margin: 0px;
}

JavaScript

import * as THREE from 'three';
		import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
		import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
		import Stats from 'three/addons/libs/stats.module.js';

		let camera, scene, renderer, object, stats;
		let planes, planeObjects;
		let clock;


		init();

		function createPlaneStencilGroup(geo, plane, renderOrder) {

			const group = new THREE.Group();
			const baseMat = new THREE.MeshBasicMaterial();
			baseMat.depthWrite = false;
			baseMat.depthTest = false;
			baseMat.colorWrite = false;
			baseMat.stencilWrite = true
			baseMat.stencilFunc = THREE.AlwaysStencilFunc;

			// back faces
			const mat0 = baseMat.clone();
			mat0.side = THREE.BackSide;
			mat0.clippingPlanes = [plane];
			mat0.stencilFail = THREE.IncrementWrapStencilOp;
			mat0.stencilZFail = THREE.IncrementWrapStencilOp;
			mat0.stencilZPass = THREE.IncrementWrapStencilOp;

			const mesh0 = new THREE.Mesh(geo, mat0);
			mesh0.renderOrder = renderOrder;
			group.add(mesh0);

			// front faces
			const mat1 = baseMat.clone();
			mat1.side = THREE.FrontSide;
			mat1.clippingPlanes = [plane];
			mat1.stencilFail = THREE.DecrementWrapStencilOp;
			mat1.stencilZFail = THREE.DecrementWrapStencilOp;
			mat1.stencilZPass = THREE.DecrementWrapStencilOp;

			const mesh1 = new THREE.Mesh(geo, mat1);
			mesh1.renderOrder = renderOrder;

			group.add(mesh1);

			return group;

		}

		function init() {

			clock = new THREE.Clock();

			scene = new THREE.Scene();

			camera = new THREE.PerspectiveCamera(36, window.innerWidth / window.innerHeight, 1, 100);
			camera.position.set(2, 2, 2);

			scene.add(new THREE.AmbientLight(0xffffff, 1.5));

			const dirLight = new THREE.DirectionalLight(0xffffff, 3);
			dirLight.position.set(5, 10, 7.5);
			dirLight.castShadow = true;
			dirLight.shadow.camera.right = 2;
			dirLight.shadow.camera.left = - 2;
			dirLight.shadow.camera.top =...