import { Vector2 } from 'mz-math'; import { ISettings } from '../interfaces'; // breakpoints for device resolutions ----------- export const SM_BREAK_POINT = 640; export const MD_BREAK_POINT = 768; export const LG_BREAK_POINT = 1024; export const XL_BREAK_POINT = 1280; export const getViewPortSize = () : Vector2 => { const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0); const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0); return [vw, vh]; }; export const getConnectionSizePerViewport = (options: ISettings, placeholderWidth: number) : number => { const viewport = getViewPortSize(); const vw = viewport[0]; if(options.smConnectionSize !== undefined && vw <= SM_BREAK_POINT){ return options.smConnectionSize * placeholderWidth; } if(options.mdConnectionSize !== undefined && vw <= MD_BREAK_POINT){ return options.mdConnectionSize * placeholderWidth; } if(options.lgConnectionSize !== undefined && vw <= LG_BREAK_POINT){ return options.lgConnectionSize * placeholderWidth; } // --- XL ---- return options.connectionSize as number * placeholderWidth; }; export const getParticlesNumberPerViewport = (options: ISettings) : number => { const viewport = getViewPortSize(); const vw = viewport[0]; if(options.smParticlesNumber !== undefined && vw <= SM_BREAK_POINT){ return options.smParticlesNumber; } if(options.mdParticlesNumber !== undefined && vw <= MD_BREAK_POINT){ return options.mdParticlesNumber; } if(options.lgParticlesNumber !== undefined && vw <= LG_BREAK_POINT){ return options.lgParticlesNumber; } // --- XL ---- return options.particlesNumber as number; };