html/html_initialise.js

//Initialise functions
{
	if (!global.HTML) global.HTML = {};
	
	/**
	 * Initialises HTML related fields and functions.
	 * @alias HTML.initialise
	 */
	HTML.initialise = function () {
		//Add event listeners
		{
			document.addEventListener("keydown", (e) => {
				if (e.keyCode === 17) { //Ctrl
					if (window.is_naissance)
						try { 
							map.scrollWheelZoom.disable(); 
						} catch (e) { console.log(e); } //Disable map zoom upon Ctrl down
					/**
					 * Whether the `Ctrl` key is currently pressed.
					 * @type {boolean}
					 */
					HTML.ctrl_pressed = true;
				}
			});
			document.addEventListener("keyup", (e) => {
				if (e.keyCode === 17) { //Ctrl
					if (window.is_naissance) {
						try { 
							map.scrollWheelZoom.enable(); 
						} catch (e) { console.log(e); } //Re-enable map zoom upon Ctrl up
					}
					delete HTML.ctrl_pressed;
				}
			});
			document.addEventListener("mousemove", (e) => {
				/**
				 * The current mouse X position.
				 * @type {number}
				 */
				HTML.mouse_x = e.clientX;
				/**
				 * The current mouse Y position.
				 * @type {number}
				 */
				HTML.mouse_y = e.clientY;
			});
		}
	}
	
	//Vercengen CSS handler
	{
		//Flag to ensure only one RAF loop is running
		if (!HTML.ve_css_active_loops) {
			HTML.ve_css_active_loops = true;
			HTML.ve_css_global_loop = () => {
				let ve_css_registry = HTML.ve_css_registry;
				
				//Iterate over all elements in ve_css_registry
				for (let [local_el, local_entry] of ve_css_registry.entries()) {
					if (!document.body.contains(local_el)) {
						//Cleanup elements removed from DOM
						ve_css_registry.delete(local_el);
						continue;
					}
					
					//Reapply only dynamic (function) styles
					HTML.applyDynamicTelestyle(local_el, local_entry.dynamic);
				}
				requestAnimationFrame(HTML.ve_css_global_loop);
			};
			
			//Jumpstart RAF loop
			requestAnimationFrame(HTML.ve_css_global_loop);
		}
		if (!HTML.ve_css_registry)
			HTML.ve_css_registry = new Map();
	}
}