HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux vm8 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: afleverb (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //var/www/aspa/three/addons/renderers/common/ChainMap.js
export default class ChainMap {

	constructor() {

		this.weakMap = new WeakMap();

	}

	get( keys ) {

		if ( Array.isArray( keys ) ) {

			let map = this.weakMap;

			for ( let i = 0; i < keys.length; i ++ ) {

				map = map.get( keys[ i ] );

				if ( map === undefined ) return undefined;

			}

			return map.get( keys[ keys.length - 1 ] );

		} else {

			return super.get( keys );

		}

	}

	set( keys, value ) {

		if ( Array.isArray( keys ) ) {

			let map = this.weakMap;

			for ( let i = 0; i < keys.length; i ++ ) {

				const key = keys[ i ];

				if ( map.has( key ) === false ) map.set( key, new WeakMap() );

				map = map.get( key );

			}

			return map.set( keys[ keys.length - 1 ], value );

		} else {

			return super.set( keys, value );

		}

	}

	delete( keys ) {

		if ( Array.isArray( keys ) ) {

			let map = this.weakMap;

			for ( let i = 0; i < keys.length; i ++ ) {

				map = map.get( keys[ i ] );

				if ( map === undefined ) return false;

			}

			return map.delete( keys[ keys.length - 1 ] );

		} else {

			return super.delete( keys );

		}

	}

	dispose() {

		this.weakMap.clear();

	}

}