UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

2 lines (1 loc) • 944 B
export const DIM_INTENSITY=.5,VENUE_DIM_INTENSITY=1,DIM_TRANSITION_MS=300,DEFAULT_DIM_EASING="cubic";export function applyVenueDim(e,r){return!e||e.rootLayer.dim===r?!1:(e.rootLayer.dim=r,!0)}export function createDimmingAnimator(e,r=300,I=DEFAULT_DIM_EASING){let n=null,t=0,m=0,a=0,s=0;const l=Math.max(r,0);function c(){n===null||typeof cancelAnimationFrame!="function"||(cancelAnimationFrame(n),n=null)}function p(i){c(),t=i,e(t)}function f(i){const u=i-s,o=Math.min(u/l,1),T=A(o,I);if(t=m+(a-m)*T,e(t),o<1){n=requestAnimationFrame(f);return}n=null,t=a,e(t)}return{getValue(){return t},setTarget(i,u={}){const o=i?1:0;if(!(!u.immediate&&o===a&&n===null)){if(a=o,u.immediate||l===0||typeof requestAnimationFrame!="function"){p(a);return}c(),m=t,s=typeof performance>"u"?Date.now():performance.now(),n=requestAnimationFrame(f)}},stop(){c()}}}function A(e,r){return r==="linear"?e:M(e)}function M(e){return e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2}