nl_tokens: Create renderer and initialize event listeners once image is loaded .
pl_tokens: function onImageLoad ( ) { if ( ! renderer ) renderer = <mask> libpannellum . renderer ( renderContainer ) ; // Only add event listeners once if ( ! listenersAdded ) { listenersAdded = true ; dragFix . addEventListener ( 'mousedown' , onDocumentMouseDown , false ) ; document . addEventListener ( 'mousemove' , onDocumentMouseMove , false ) ; document . addEventListener ( 'mouseup' , onDocumentMouseUp , false ) ; if ( config . mouseZoom ) { uiContainer . addEventListener ( 'mousewheel' , onDocumentMouseWheel , false ) ; uiContainer . addEventListener ( 'DOMMouseScroll' , onDocumentMouseWheel , false ) ; } if ( config . doubleClickZoom ) { dragFix . addEventListener ( 'dblclick' , onDocumentDoubleClick , false ) ; } container . addEventListener ( 'mozfullscreenchange' , onFullScreenChange , false ) ; container . addEventListener ( 'webkitfullscreenchange' , onFullScreenChange , false ) ; container . addEventListener ( 'msfullscreenchange' , onFullScreenChange , false ) ; container . addEventListener ( 'fullscreenchange' , onFullScreenChange , false ) ; window . addEventListener ( 'resize' , onDocumentResize , false ) ; window . addEventListener ( 'orientationchange' , onDocumentResize , false ) ; if ( ! config . disableKeyboardCtrl ) { container . addEventListener ( 'keydown' , onDocumentKeyPress , false ) ; container . addEventListener ( 'keyup' , onDocumentKeyUp , false ) ; container . addEventListener ( 'blur' , clearKeys , false ) ; } document . addEventListener ( 'mouseleave' , onDocumentMouseUp , false ) ; if ( document . documentElement . style . pointerAction === '' && document . documentElement . style . touchAction === '' ) { dragFix . addEventListener ( 'pointerdown' , onDocumentPointerDown , false ) ; dragFix . addEventListener ( 'pointermove' , onDocumentPointerMove , false ) ; dragFix . addEventListener ( 'pointerup' , onDocumentPointerUp , false ) ; dragFix . addEventListener ( 'pointerleave' , onDocumentPointerUp , false ) ; } else { dragFix . addEventListener ( 'touchstart' , onDocumentTouchStart , false ) ; dragFix . addEventListener ( 'touchmove' , onDocumentTouchMove , false ) ; dragFix . addEventListener ( 'touchend' , onDocumentTouchEnd , false ) ; } // Deal with MS pointer events if ( window . navigator . pointerEnabled ) container . style . touchAction = 'none' ; } renderInit ( ) ; setHfov ( config . hfov ) ; // possibly adapt hfov after configuration and canvas is complete; prevents empty space on top or bottom by zomming out too much setTimeout ( function ( ) { isTimedOut = true ; } , 500 ) ; }